Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
Azure Key Vault 使开发人员能够安全地存储和管理敏感信息,例如密码、API 密钥和证书。 本文介绍如何在管道中查询和使用 Azure Key Vault 中的机密。
先决条件
产品 | 要求 |
---|---|
Azure DevOps | - 一个 Azure DevOps 项目。 - 权限: - 若要授予对项目中所有管道的访问权限:必须是 项目管理员组的成员。 - 若要创建服务连接:必须具有服务连接的管理员或创建者角色。 |
GitHub | - GitHub 帐户和 GitHub 存储库。 - 用于授权 Azure Pipelines 的 GitHub 服务连接 。 |
天蓝色 | - Azure 订阅。 |
创建密钥保管库
登录到Azure 门户,然后选择“创建资源”。
在密钥库下,选择“创建”以创建新的 Azure 密钥库。
从下拉菜单中选择订阅,然后选择现有资源组或创建新的资源组。 输入 Key Vault 名称,选择区域,选择定价层,如果想要配置其他属性,请选择“下一步”。 否则,请选择“ 查看 + 创建 ”以保留默认设置。
部署完成后,选择转到资源。
设置身份验证
创建用户分配的托管标识
登录到Azure 门户,然后在搜索栏中搜索托管标识服务。
选择“创建”,并填写必填字段,如下所示:
- 订阅:从下拉菜单中选择订阅。
- 资源组:选择现有资源组或创建新资源组。
- 区域:从下拉菜单中选择一个区域。
- 名称:输入用户分配的托管标识的名称。
完成后,选择“审阅 + 创建”。
部署完成后,选择“ 转到资源”,然后复制 “订阅 ”和 “客户端 ID”,后续步骤中将需要它们。
导航到“设置属性”>,并复制托管标识的租户 ID 以供以后使用。
设置密钥保管库访问策略
导航到Azure 门户,并使用搜索栏查找之前创建的密钥保管库。
选择“访问策略”,然后选择“创建”以添加新策略。
在 “机密权限”下,选中“ 获取 ”和 “列表 ”复选框。
选择“下一步”,然后将您之前创建的托管标识的客户端ID粘贴到搜索栏中。
选择托管标识,依次选择下一步和下一步。
查看您的新策略,然后选择创建完成操作。
创建服务连接
登录到 Azure DevOps 组织,并导航到你的项目。
选择 “项目设置>服务连接”,然后选择“ 新建服务连接”。
选择 Azure 资源管理器,然后选择“下一步”。
在 “标识类型”下,从下拉菜单中选择 “托管标识 ”。
对于“步骤 1:托管标识详细信息”,按如下所示填写字段:
托管标识的订阅:选择包含托管标识的订阅。
托管标识的资源组:选择托管标识所在的资源组。
托管标识:从下拉菜单中选择托管标识。
对于 步骤 2:Azure 作用域,请按以下方式填写字段:
服务连接的范围级别:选择 订阅。
服务连接订阅:选择托管标识将访问的订阅。
服务连接的资源组:(可选)如果要限制对特定资源组的访问,请指定此项。
对于 步骤 3:服务连接详细信息:
服务连接名称:提供服务连接的名称。
服务管理参考:(可选)包括 ITSM 数据库中的上下文信息。
说明:(可选) 添加说明。
在 “安全性”下,选中“ 授予对所有管道的访问权限 ”框,以允许所有管道使用此服务连接。 如果保持此未选中状态,则需要为每个管道手动授予访问权限。
选择保存以验证并创建服务连接。
在管道中查询和使用机密
使用 Azure Key Vault 任务,现在可以从 Azure Key Vault 查询和提取机密,并在管道中的后续任务中使用机密。 请注意,机密必须显式映射到环境变量,如以下示例所示:
pool:
vmImage: 'ubuntu-latest'
steps:
- task: AzureKeyVault@1
inputs:
azureSubscription: 'SERVICE_CONNECTION_NAME'
KeyVaultName: 'KEY_VAULT_NAME'
SecretsFilter: '*'
- bash: |
echo "Secret Found! $MY_MAPPED_ENV_VAR"
env:
MY_MAPPED_ENV_VAR: $(SECRET_NAME)
上一个 bash 步骤的输出应如下所示:
Secret Found! ***
注意
若要从 Azure Key Vault 查询多个机密,请使用SecretsFilter
输入并提供以逗号分隔的机密名称列表,例如:“secret1,secret2”。