GitHub Actions ワークフローからワークロード ID を使用する

完了

ワークロード ID を作成し、Azure 環境へのアクセス権を割り当てたら、それを GitHub Actions ワークフローで使いましょう。 このユニットでは、ワークフロー定義に対して加える必要がある 2 つの変更について学習します。

ワークフローによるトークンの要求を許可する

デプロイ ワークフローによるトークンの要求を許可する必要があります。 ワークフローに、permissions プロパティを追加します。

permissions:
  id-token: write
  contents: read

Azure へのサインイン

デプロイ ワークフローでは、azure/login アクションを使って Azure にサインインします。 ワークロード ID を使う場合は、次の 3 つの入力を指定する必要があります。

入力 説明
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 ファイルをデプロイできます。 次のワークフロー定義は、ワークフロー ID を使用した完全な 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