GitHub Actions を使用してカスタム ポリシーをデプロイする

GitHub Actions を使用すると、カスタムの継続的インテグレーション (CI) および継続的配置 (CD) ワークフローを GitHub リポジトリ内に直接作成できます。 この記事では、GitHub Actions を使用して、Azure Active Directory B2C (Azure AD B2C) カスタム ポリシーのデプロイを自動化する方法について説明します。

カスタム ポリシーのデプロイ プロセスを自動化するには、Azure AD B2C カスタム ポリシーを展開するための GitHub アクションを使用します。 この GitHub アクションは、Azure AD B2C コミュニティによって開発されました。

このアクションでは、Microsoft Graph API を使用して Azure AD B2C カスタム ポリシーを Azure AD B2C テナントにデプロイします。 このポリシーは、テナント内にまだ存在しない場合は作成されます。 それ以外の場合は置き換えられます。

重要

Azure Pipelines を使用した Azure AD B2C カスタム ポリシーの管理では、現在、Microsoft Graph API /beta エンドポイントで利用できるプレビュー操作を使用します。 実稼働アプリケーションにおけるこれらの API の使用はサポートされていません。 詳細については、「Microsoft Graph REST API ベータ版のエンドポイント リファレンス」を参照してください。

前提条件

カスタム ポリシーのフォルダーを選択する

GitHub リポジトリには、すべての Azure AD B2C ポリシー ファイルとその他のアセットを含めることができます。 リポジトリのルート ディレクトリで、カスタム ポリシーが含まれる既存のフォルダーを作成または選択します。

たとえば、policies という名前のフォルダーを選択します。 Azure AD B2C カスタム ポリシー ファイルを policies フォルダーに追加します。 次に、変更をコミットします。

変更をプッシュしないでください。 これは後で、デプロイ ワークフローの設定後に行います。

Microsoft Graph アプリケーションを登録する

GitHub アクションが Microsoft Graph API と対話できるようにするには、事前に Azure AD B2C テナント内にアプリケーションの登録を作成します。 まだ行っていない場合は、Microsoft Graph アプリケーションを登録します

GitHub アクションから Microsoft Graph のデータにアクセスするには、登録したアプリケーションに、関連するアプリケーションのアクセス許可を付与します。 アプリ登録の [API のアクセス許可] 内で [Microsoft Graph]>[ポリシー]>[Policy.ReadWrite.TrustFramework] アクセス許可を付与します。

暗号化された GitHub シークレットを作成する

GitHub シークレットは、組織、リポジトリ、またはリポジトリ環境内に作成する、暗号化された環境変数です。 この手順では、先ほど MS Graph アプリケーションを登録する手順で登録したアプリケーションのアプリケーション シークレットを格納します。

Azure AD B2C カスタム ポリシーをデプロイするための GitHub アクションでは、このシークレットを使用して、Microsoft Graph API との対話に使用するアクセス トークンを取得します。 詳細については、「リポジトリの暗号化されたシークレットの作成」を参照してください。

GitHub シークレットを作成するには、以下の手順に従います。

  1. GitHub で、リポジトリのメイン ページに移動します。
  2. リポジトリ名の下で、 [設定] を選択します。
  3. 左側のサイドバーで、 [シークレット] を選択す。
  4. [New repository secret]\(新しいリポジトリ シークレット\) を選択します。
  5. [名前] に「ClientSecret」と入力します。
  6. [値] には、前に成したアプリケーション シークレットを入力します。
  7. [Add secret]\(シークレットの追加\) を選択します。

GitHub ワークフローを作成する

GitHub ワークフローは、ユーザーがリポジトリに追加する自動化されたプロセスです。 ワークフローは 1 つ以上のジョブで構成され、イベントによってスケジュールまたはトリガーできます。 この手順では、カスタム ポリシーをデプロイするワークフローを作成します。

ワークフローを作成するには、以下の手順に従います。

  1. GitHub で、リポジトリのメイン ページに移動します。

  2. リポジトリ名の下で、 [アクション] を選択します。

    [GitHub Actions] タブを示すスクリーンショット

  3. 前にワークフローを構成していない場合は、 [ワークフローを自分で設定する] を選択します。 そうでない場合は、 [新しいワークフロー] を選択します。

    新しいワークフローを作成する方法を示すスクリーンショット

  4. GitHub では、.github/workflows フォルダー内に main.yml という名前のワークフロー ファイルを作成できます。 このファイルには、Azure AD B2C 環境やデプロイするカスタム ポリシーなどの、ワークフローに関する情報を含めます。 GitHub Web エディターで、以下の YAML コードを追加します。

    on: push
    
    env:
      clientId: 00000000-0000-0000-0000-000000000000
      tenant: your-tenant.onmicrosoft.com
    
    jobs:
      build-and-deploy:
        runs-on: ubuntu-latest
        steps:
        - uses: actions/checkout@v2
    
        - name: 'Upload TrustFrameworkBase Policy'
          uses: azure-ad-b2c/deploy-trustframework-policy@v3
          with:
            folder: "./Policies"
            files: "TrustFrameworkBase.xml,TrustFrameworkLocalization.xml,TrustFrameworkExtensions.xml,SignUpOrSignin.xml"
            tenant: ${{ env.tenant }}
            clientId: ${{ env.clientId }}
            clientSecret: ${{ secrets.clientSecret }}
    
  5. YAML ファイルの以下のプロパティを更新します。

    Section 名前
    env clientId MS Graph アプリケーションを登録する手順で登録したアプリケーションのアプリケーション (クライアント) ID
    env tenant Azure AD B2C テナントの名前 (例: contoso.onmicrosoft.com)。
    with folder カスタム ポリシー ファイルが格納されているフォルダー。例: ./Policies
    with files デプロイするポリシー ファイルのコンマ区切りリスト。例: TrustFrameworkBase.xml,TrustFrameworkLocalization.xml,TrustFrameworkExtensions.xml,SignUpOrSignin.xml

    重要

    エージェントを実行してポリシー ファイルをアップロードするときは、それらが次の正しい順序でアップロードされていることを確認します。

    1. TrustFrameworkBase.xml
    2. TrustFrameworkLocalization.xml
    3. TrustFrameworkExtensions.xml
    4. SignUpOrSignin.xml
    5. ProfileEdit.xml
    6. PasswordReset.xml
  6. [Start commit]\(コミットの開始\) を選択します。

  7. コミットのメッセージ フィールドの下で、コミットを現在のブランチに追加するか、新しいブランチに追加するかを指定します。 [新しいファイルをコミット] または [新しいファイルを提案] を選択して、プル要求を作成します。

ワークフローのテスト

作成したワークフローをテストするには、カスタム ポリシーの変更をプッシュします。 ジョブの実行が開始されると、実行の進行状況を示す視覚化グラフを表示し、GitHub での各ステップのアクティビティを参照することができます。

  1. GitHub で、リポジトリのメイン ページに移動します。

  2. リポジトリ名の下で、 [アクション] を選択します。

  3. 左側のサイドバーで、作成したワークフローを選択します。

  4. [ワークフローの実行] で、表示する実行の名前を選択します。

    ワークフロー アクティビティを選択する方法を示すスクリーンショット

  5. [ジョブ] または視覚化グラフで、表示するジョブを選択します。

  6. 各ステップの結果を表示します。 次のスクリーンショットは、 [Upload custom policy] ステップのログを示しています。

    [Upload custom policy] ステップのログ

省略可能: ワークフローをスケジュールする

作成したワークフローは、プッシュ イベントによってトリガーされます。 必要に応じて、プル要求などの別のイベントを選択してワークフローをトリガーすることを選択できます。

POSIX cron 構文を使用して特定の UTC 時刻に実行するようにワークフローをスケジュールすることもできます。 スケジュール イベントを使用すると、スケジュールした時刻にワークフローをトリガーできます。 詳細については、「スケジュールされたイベント」を参照してください。

次の例では、毎日 5:30 と 17:30 UTC にワークフローをトリガーしています。

on:
  schedule:
    # * is a special character in YAML so you have to quote this string
    - cron:  '30 5,17 * * *'

ワークフローを編集するには:

  1. GitHub で、リポジトリのメイン ページに移動します。

  2. リポジトリ名の下で、 [アクション] を選択します。

  3. 左側のサイドバーで、作成したワークフローを選択します。

  4. [ワークフローの実行] で、表示する実行の名前を選択します。

  5. メニューで 3 つのドット [...] を選択してから、 [ワークフロー ファイルの表示] を選択します。

    ワークフロー ファイルを表示する方法を示すスクリーンショット

  6. GitHub Web エディターで、 [編集] を選択します。

  7. on: push を上記の例に変更します。

  8. 変更をコミットします。

次のステップ