如何使用curl设置Azure KeyVault机密的值

x3n*_*r0s 3 azure azure-keyvault

我之前曾使用curl 从我的Azure KeyVault 检索机密。

首先,我检索我的令牌并获取我的 keyvault 的 url:

token=$(curl -s 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fvault.azure.net' -H Metadata:true | awk -F"[{,\":}]" '{print $6}')

keyvaulturl="https://myTestKeyVault-keyvault.vault.azure.net/secrets"
Run Code Online (Sandbox Code Playgroud)

然后我就可以访问我的 KeyVault

curl -s ${keyvaulturl}/xxx?api-version=2016-10-01 -H "Authorization: Bearer ${token}"
Run Code Online (Sandbox Code Playgroud)

然而这只是为了获取秘密。有没有办法通过curl来更新它们?或者使用 azure cli 更好?在这种情况下,最好的自动化身份验证形式是什么?

evi*_*obu 6

是的,是的,有。

# Add secret
$ curl -X PUT \
    -s "https://alice.vault.azure.net/secrets/SecretFromCurl?api-version=2016-10-01" \
    -H "Authorization: Bearer ${token}" \
    --data-ascii '{"value": "sup3rs3cr37v4lu3"}' \
    -H "Content-type: application/json"

{"value":"sup3rs3cr37v4lu3","id": ...


# Read back the secret
$ curl -s "https://alice.vault.azure.net/secrets/SecretFromCurl?api-version=2016-10-01" \
    -H "Authorization: Bearer ${token}"

{"value":"sup3rs3cr37v4lu3","id": ...
Run Code Online (Sandbox Code Playgroud)

用于jq解析 JSON,awkJSON 是否像我做瑜伽一样(不太优雅)-

$ curl -s "https://alice.vault.azure.net/secrets/SecretFromCurl?api-version=2016-10-01" \
    -H "Authorization: Bearer ${token}" | jq -r ".value"

sup3rs3cr37v4lu3
Run Code Online (Sandbox Code Playgroud)

不过,它有点麻烦,使用起来az keyvault secret ...更干净,更容易阅读,更不用说az它有自己内置的 JMESPath--query过滤器。例如:

# Login with Managed Service Identity
$ az login --identity

# Get secret value
$ az keyvault secret show --vault-name alice -n SecretFromCurl --query "value" --output tsv

sup3rs3cr37v4lu3
Run Code Online (Sandbox Code Playgroud)

万一您在生活中需要更多手动 JSON 探索,jpterm它不会让您失望 —

jpterm 截图