使用 GitHub Actions 工作流中的工作负载标识
创建工作负载标识并为其分配访问 Azure 环境的权限后,就可以在 GitHub Actions 工作流中使用它了。 在本单元中,你将了解工作流定义所需的两项更改。
允许工作流请求令牌
需要允许部署工作流请求令牌。 在工作流中,添加 permissions
属性:
permissions:
id-token: write
contents: read
登录 Azure
你的部署工作流使用 azure/login
操作登录到 Azure。 在使用工作负载标识时,需要指定三个输入:
输入 | 说明 |
---|---|
client-id |
用于应用程序注册的客户端 ID。 确保使用应用程序 ID,而不是对象 ID。 |
tenant-id |
Microsoft Entra 租户(目录)的唯一标识符。 |
subscription-id |
要部署到的 Azure 订阅 ID。 |
这些值中的每一个都是 GUID。
当你定义值时,可以选择直接在工作流定义文件中指定它们:
- uses: azure/login@v1
with:
client-id: 'A123b4567c-1234-1a2b-2b1a-1234abc12345'
tenant-id: 'aaaabbbb-0000-cccc-1111-dddd2222eeee'
subscription-id: 'B123a4567c-1234-2b1a-1b2b-11a2b01b2b3c0'
但是,一些组织将这些标识符视为机密数据,或者不允许将标识符提交到 Git 存储库。 你也可以使用 GitHub 机密来指定值:
- uses: azure/login@v1
with:
client-id: ${{ secrets.AZURE_CLIENT_ID }}
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
在 Bicep 的整个学习路径中,我们使用机密来存储和管理这些标识符。 你可以决定哪种方法最适合你的组织。
部署到 Azure
当工作流登录到 Azure 后,腻可以使用 azure/arm-deploy
操作来部署 Bicep 文件。 以下工作流定义显示了一个使用工作流标识的完整 Bicep 部署工作流:
name: MyWorkflow
on: [workflow_dispatch]
permissions:
id-token: write
contents: read
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
path: repo
- uses: azure/login@v1
with:
client-id: ${{ secrets.AZURE_CLIENT_ID }}
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
- uses: azure/arm-deploy@v1
with:
resourceGroupName: ToyWebsite
template: ./deploy/main.bicep