從 GitHub Actions 工作流程使用工作負載身分識別
您建立工作負載身分識別並將其存取權指派給 Azure 環境後,即可在 GitHub Actions 工作流程中使用。 在此單元中,您將了解工作流程定義所需的兩項變更。
允許工作流程要求權杖
您必須允許部署工作流程以要求權杖。 在您的工作流程中,新增 permissions
屬性:
permissions:
id-token: write
contents: read
登入 Azure
您的部署工作流程會使用 azure/login
動作來登入 Azure。 使用工作負載身分識別時,您必須指定三個輸入:
輸入 | 描述 |
---|---|
client-id |
應用程式註冊的應用程式識別碼。 請務必使用應用程式識別碼,而非物件識別碼。 |
tenant-id |
Microsoft Entra 租用戶 (目錄) 的唯一識別碼。 |
subscription-id |
您將部署的 Azure 訂閱識別碼。 |
每個值都是 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