当前位置: 首页 > 知识库问答 >
问题:

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

宦琪
2023-03-14

我以前曾使用curl从我的Azure 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"

然后我可以访问我的KeyVault

curl -s ${keyvaulturl}/xxx?api-version=2016-10-01 -H "Authorization: Bearer ${token}"

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

共有1个答案

公羊学义
2023-03-14

是的,是的,有。

# 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": ...

使用jq解析JSON,awk做JSON就像我做瑜伽一样(优雅度次优)-

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

sup3rs3cr37v4lu3

不过,使用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

以防你在生活中需要更多的手动JSON探索,jpterm不会让你失望-

 类似资料:
  • 在尝试使用AzureKeyVault保护密钥时,我遇到以下错误: 00:01:41错误]读取钥匙圈时出错。微软蔚蓝色的钥匙库。模型。KeyVaultErrorException:操作在Microsoft返回了无效的状态代码“禁止”。蔚蓝色的钥匙库。KeyVault客户端。WrapkeyWithTtpMessageAsync(String Vault BaseUrl、String keyName、S

  • 问题内容: 如何设置“ curl”以在终端中永久使用代理服务器? 问题答案: 您可以在〜/ .bashrc文件中创建别名: 另一个解决方案是使用(也许是更好的解决方案)文件(如果文件不存在,则创建它):

  • 目前似乎不可能在上传Azure Key Vault机密时设置该机密的版本。我在使用SetSecretAsync。我是不是漏掉了什么?即使在尝试从Azure Portal进行操作时,您也没有机会设置版本,也没有方法备份或还原机密。 这似乎是有意的(考虑到似乎缺乏这样做的方法),但请考虑我为什么这样做的背景。我们担心一个秘密被错误地删除,甚至保险库本身被错误地删除。当我们将机密用于加密/解密目的时,如

  • 顺便说一下,这是相机对GET/system/deviceinfo的响应: 之前,我尝试使用所有三种EOL类型(Mac、linux、DOS),然后将它们全部删除,如上面的代码所示。我知道身份验证是有效的,因为我能从摄像机里读到任何东西。我还可以成功地发送没有数据或XML块要求的PUT命令,例如重新启动。所以我怀疑通过curl发送XML的方式存在一些问题。另外,我可以在登录时通过网络浏览器更改设备名称

  • 如何在邮递员中设置curl摘要身份验证? 例如 curl 命令: 我尝试在邮递员中使用摘要式身份验证以及基本身份验证。摘要身份验证返回 401,而基本身份验证返回 500。所以我想说基本身份验证不是正确的。 在digest auth中,我设置了以下选项。 其他一切都保持默认。我还选中了“将帮助程序数据保存到请求”复选框和“更新请求”按钮。 仍然得到401。 根据响应,我得到了一个、和一个。我以前没

  • 我用扫描,这是结果: 看起来他们只支持ECDHE,从的输出来看,没有ECDHE密码!所以我的问题是如何使用PHP CURL客户端连接到远程服务器? 这是我的示例PHP代码,它返回false并返回消息: “列表中的未知密码:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128