使用 PowerShell 修补机密

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

当使用 PowerShell 修补我的机密时,我包含此有效负载:

Payload: {
    "path":  "EncId",
    "value":  "MB34Changed"
}

对于此 URI:

https://ourvaulturi/v1/enginename/data/secretname

这是我的PS命令:

$response = Invoke-RestMethod -Headers $header -ContentType 'application/json' -Method PATCH -Uri $uri -Body $payload

($header 包括我的令牌和命名空间) 我得到一个
(415) Unsupported Media Type error

我什至尝试了本页卷曲示例中使用的内容类型

application/merge-patch+json
https://developer.hashicorp.com/vault/docs/commands/patch,这导致了错误:
(400) Bad Request

我不想使用 PUT,因为它会覆盖我的密钥中的所有值,而我只想更新单个值。

这里有什么想法或帮助吗?

更新。

运行 CLI,我能够使用此命令获得完整的补丁:

vault kv patch /enginename/secretname EncId=MB34Changed

如何将其转换为 PS Invoke-RestMethod 调用? 如果我将 URI 更改为

https://ourvaulturi/enginename/secretname
, 我收到 (404) 未找到。

powershell hashicorp-vault
1个回答
0
投票

看来,是的,URI 中需要 v1 和数据:

https://ourvaulturi/v1/enginename/data/secretname

需要在 header 中设置 Content-Type:

$header = @{
            "X-Vault-Token"="$($env:VAULT_TOKEN)"
            "X-Vault-Namespace"="$($env:VAULT_NAMESPACE)"
            "Content-Type"="application/merge-patch+json"
        }

有效负载需要格式化为:

$payload = 
        @{"data"= 
            @{"$($value)"="$($newvalue)"}
        } | ConvertTo-Json

然后,Invoke-RestMethod 需要如下所示:

Invoke-RestMethod -Headers $header -Method PATCH -Uri $uri -Body $payload

© www.soinside.com 2019 - 2024. All rights reserved.