首页 > 解决方案 > 如何以纯文本形式从 Azure KeyVault 获取密钥?

问题描述

我在 Key Vault 中创建了密钥并在其中手动导入了私钥。现在我想使用 shell 编程来检索。

我已关注https://docs.microsoft.com/en-us/rest/api/keyvault/getkey/getkey并尝试检索纯文本,但出现以下错误

curl https://test-poc-kv-31.vault.azure.net/keys/sftp/ec8368364d1844c908234396e8f50344e68?api-version=7.1
{"error":{"code":"Unauthorized","message":"Request is missing a Bearer or PoP token."}}

不确定如何获取我的 URL 的 Bearer 令牌?

标签: azureazure-keyvault

解决方案


错误信息很清楚,Request is missing a Bearar or Pop token.

创建令牌的步骤:

  1. 使用此命令创建服务主体 -
az ad sp create-for-rbac

从输出命令中获取appId并为此服务主体提供权限:

在此处输入图像描述

在此处输入图像描述

  1. 抓取passwordappIdtenant从上面的命令中替换为以下内容:
curl --location --request POST 'https://login.microsoftonline.com/{TenantID}/oauth2/v2.0/token' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'grant_type=client_credentials' \
--data-urlencode 'client_id={appId}' \
--data-urlencode 'client_secret={password}' \
--data-urlencode 'scope=https://vault.azure.net/.default'
  1. 从响应命令中获取 access_token 并将其传递给此命令:

    curl -s "https://test-poc-kv- 
    31.vault.azure.net/keys/sftp/ec8368364d1844c908234396e8f50344e68?api-version=7.1" -H 
    "Authorization: Bearer %access_token%"
    

除了使用 curl,您还可以使用 Azure CLI(让您的生活更轻松)

az keyvault key show --name "%KEY_NAME%" --vault-name "VAULT_NAME"

推荐阅读