【Azure Key Vault】使用Azure CLI获取Key Vault 机密遇见问题后使用curl命令来获取机密内容

发布时间 2023-11-28 21:12:03作者: 路边两盏灯

问题描述

在使用Azure Key Vault的过程中,遇见无法获取机密信息,在不方便直接写代码的情况下,快速使用Azure CLI指令来验证当前使用的认证是否可以获取到正确的机密值。

使用CLI的指令为:

第一步:设置azure 的云环境参数,指定为中国区云服务

az cloud set --name AzureChinaCloud

第二步:使用az login并且指定 servie principal来完成登录

az login --service-principal  --tenant <Tenant-ID>   --username <Client-ID>   --password <Client-secret>   --output table

第三步:获取azure key vault的机密,但是遇见server principal因为没有权限绑定订阅号而无法完成。

az keyvault secret show --name "ExamplePassword" --vault-name "<your-unique-keyvault-name>" --query "value"

 

结果却无法获取到机密值:

 

问题解答

因为需要快速的办法来使用Service Principal账号是否有权限,是否能成功获取到Key Vault机密信息,在不写代码的情况下,处理CLI指令外,还有REST API可以调用。所以想到了使用curl指令直接调用API。

第一步:安全curl

  • 在Windows系统中,下载到本地后即可使用:https://curl.se/windows/ 
  • 在Linux系统中,使用命令:sudo apt-get install curl 进行安装。

 

第二步:通过Service Principal的账号信息在AAD中获取到Token

curl https://login.partner.microsoftonline.cn/<Tenant-ID>/oauth2/token   --data "grant_type=client_credentials&client_id=<Client-ID>&client_secret=<Client-secret>&resource=https://vault.azure.cn"

  • 替换 <Tenant-ID>,<Client-ID>,<Client-secret>为真实值

 

第三步:调用Key Vault API获取结果

curl https://<your-key-vault-name>.vault.azure.cn/secrets/<your-secret-name>?api-version=7.4 -H "Authorization: Bearer <your-token-in-step-2>"

  • 替换 <your-key-vault-name>,<your-secret-name>,<your-token-in-step-2>为真实值

 

执行结果

 

附录:Azure CLI 和 CURL 合集

# Azure CLI:

az cloud set --name AzureChinaCloud
az login --service-principal  --tenant <Tenant-ID>   --username <Client-ID>   --password <Client-secret>   --output table
az keyvault secret show --name "ExamplePassword" --vault-name "<your-unique-keyvault-name>" --query "value"


# CURL:

curl https://login.partner.microsoftonline.cn/<Tenant-ID>/oauth2/token   --data "grant_type=client_credentials&client_id=<Client-ID>&client_secret=<Client-secret>&resource=https://vault.azure.cn"

curl https://<your-key-vault-name>.vault.azure.cn/secrets/<your-secret-name>?api-version=7.4 -H "Authorization: Bearer <your-token-in-step-2>"

 

 

 

参考资料

1: https://docs.azure.cn/zh-cn/key-vault/secrets/quick-create-cli

2: https://learn.microsoft.com/en-us/azure/databricks/dev-tools/azure-cli-login-service-principal

3: https://jiasli.github.io/azure-notes/aad/Service-Principal-get-token-with-curl.html

4: https://learn.microsoft.com/zh-cn/rest/api/keyvault/secrets/get-secrets/get-secrets?view=rest-keyvault-secrets-7.4&tabs=HTTP