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