主题:将 API 凭据移动到 Azure Vault 并通过 Azure CLI 检索
嗨,团队,
我目前正在使用 RestAssured 框架进行 API 自动化,并将 API ID 和密码直接存储在我们的存储库中。我想通过从存储库中删除这些凭据并将它们存储在 Azure Key Vault 中来增强安全性。
您能否指导我如何使用 Azure CLI 从 Azure Key Vault 检索 API ID 和密码,同时在我的笔记本电脑和 Azure 管道中本地运行测试?
当前设置:
API 测试包括端点和 POST 请求主体。 我已经为请求添加了标头。 我计划用变量 {client-secret} 替换 API ID 和密码。 要求:
如何配置代码以使用 {client-secret} 变量发送 POST 请求。 确保 {client-secret} 变量从 Azure Key Vault 获取 API ID 和密码。 谢谢您的协助!
az keyvault secret download
”从 Azure Key Vault 获取机密。该命令会将秘密值保存到自动创建的指定文件中。然后您可以从文件中读取值以在后续命令行/脚本中使用。
例如,我有两个秘密(
myUsername
和 myPassword
)存储在 Azure Key Vault 中。
在本地计算机上,我可以运行以下命令行来下载机密值。
az login
az keyvault secret download --vault-name BrightRanKV --name myUsername --file myUsername.txt
az keyvault secret download --vault-name BrightRanKV --name myPassword --file myPassword.txt
在 Azure DevOps 管道中,有内置任务 AzureKeyVault@2 可用于从 Azure Key Vault 下载机密。
在管道所在的 Azure DevOps 项目中,转到 项目设置 > 服务连接,创建到 Azure Key Vault 所在的 Azure 订阅的 Azure 资源管理器服务连接(ARM 连接)在.
确保 ARM 连接使用的服务主体具有 Azure Key Vault 中秘密权限的 Get 和 List。
然后在管道中,您可以使用 AzureKeyVault@2 任务上的 ARM 连接进行授权。
steps:
# Download the specified secrets from Azure KeyVault.
# The task will set the secrets as pipeline secret variables using the same secret names.
- task: AzureKeyVault@2
displayName: 'Download Secrets from Azure KeyVault'
inputs:
azureSubscription: 'ArmConnection'
KeyVaultName: 'BrightRanKV'
SecretsFilter: 'myUsername, myPassword'
# In the subsequent script tasks (such as bash, powershell, etc..),
# you need to map the secret variables as environment variables.
# Then you can call the environment variables in the scripts.
- bash: |
echo "MY_USERNAME = $MY_USERNAME"
echo "MY_PASSWORD = $MY_PASSWORD"
env:
MY_USERNAME: $(myUsername)
MY_PASSWORD: $(myPassword)
- powershell: |
echo "MY_USERNAME = ${env:MY_USERNAME}"
echo "MY_PASSWORD = ${env:MY_PASSWORD}"
env:
MY_USERNAME: $(myUsername)
MY_PASSWORD: $(myPassword)
***
”。这是为了保护您存储在机密中的敏感信息。