如何使用 PowerCLI 连接到 Vault Hashicorp

问题描述 投票:0回答:2

我对 Vault 和 PowerShell 非常陌生,我需要连接到 Vault 并使用 PowerShell 获取密钥。

这是我的代码

$Vault_Address       = 'xxx'
$VAULT_ROOT          = $Vault_Address + '/v1'
$VAULT_LOGIN_APPROLE = $VAULT_ROOT+'/auth/approle/login'
$VAULT_KV_PATH       = $VAULT_ROOT+'/xx/xx/xx'

$RoleID              = 'default'
$SecretID            = 'default'

#Set env variable for vault address
$ENV:VAULT_ADDR = $Vault_Address

function Get-Vault
{
    [CmdletBinding()]
    [Alias()]
    [OutputType([PSCustomObject])]
    Param
    (
        # Server Address
        [Parameter(Position=0)]
        [String]
        $Address = $env:VAULT_ADDR,

        # Client token
        [Parameter(Position=1)]
        [String]
        $Token = $env:VAULT_TOKEN
    )


    [PSCustomObject]@{'uri'= $Address + $prefix
                      'auth_header' = @{'X-Vault-Token'=$Token}
                      } |
    Write-Output

}

它返回此错误消息:enter image description here

powershell hashicorp-vault powercli
2个回答
0
投票

让我向您展示什么对我有用,希望它能帮助您或其他人。

假设在您连接到

https://vault.domain/ui/vault/secrets?namespace=myVaultNamespace
的 UI 上并且您有一个秘密引擎
kvSecretEngine
,其中包含路径为
PROD
的键值秘密:

$namespace = "myVaultNamespace"
$mountpoint = "kvSecretEngine"
$vaultpath = "PROD"

$headers = @{
    'Accept' = 'application/json'
    'X-Vault-Namespace' = $namespace
    'X-Vault-Token' = $vault_token
    }
$uri = "https://vault.domain/v1/$mountpoint/$vaultpath"
$response = Invoke-RestMethod -Method Get -Headers $headers -Uri $uri

$secret = $response.data
    

$secret
将包含一个包含所有秘密键值的 JSON。 希望有帮助。


0
投票

不过,老话题了:出于某种原因,在某些情况下,您必须使用下面的语句让您的客户端使用 TLS1.2。如果不这样做,您可能会遇到 TLS 异常。只需将其放在您执行操作的行上方即可

Invoke-RestMethod
(或您正在使用的任何 cmdlet):

[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
© www.soinside.com 2019 - 2024. All rights reserved.