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 ベータ版のエンドポイント リファレンス」を参照してください。
前提条件
- 「Active Directory B2C でのカスタム ポリシーの概要」にある手順を完了する。
- GitHub リポジトリを作成していない場合は、1 つ作成します。
カスタム ポリシーのフォルダーを選択する
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 シークレットを作成するには、以下の手順に従います。
- GitHub で、リポジトリのメイン ページに移動します。
- リポジトリ名の下で、 [設定] を選択します。
- 左側のサイドバーで、 [シークレット] を選択す。
- [New repository secret]\(新しいリポジトリ シークレット\) を選択します。
- [名前] に「ClientSecret」と入力します。
- [値] には、前に成したアプリケーション シークレットを入力します。
- [Add secret]\(シークレットの追加\) を選択します。
GitHub ワークフローを作成する
GitHub ワークフローは、ユーザーがリポジトリに追加する自動化されたプロセスです。 ワークフローは 1 つ以上のジョブで構成され、イベントによってスケジュールまたはトリガーできます。 この手順では、カスタム ポリシーをデプロイするワークフローを作成します。
ワークフローを作成するには、以下の手順に従います。
GitHub で、リポジトリのメイン ページに移動します。
リポジトリ名の下で、 [アクション] を選択します。
前にワークフローを構成していない場合は、 [ワークフローを自分で設定する] を選択します。 そうでない場合は、 [新しいワークフロー] を選択します。
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 }}
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
。重要
エージェントを実行してポリシー ファイルをアップロードするときは、それらが次の正しい順序でアップロードされていることを確認します。
- TrustFrameworkBase.xml
- TrustFrameworkLocalization.xml
- TrustFrameworkExtensions.xml
- SignUpOrSignin.xml
- ProfileEdit.xml
- PasswordReset.xml
[Start commit]\(コミットの開始\) を選択します。
コミットのメッセージ フィールドの下で、コミットを現在のブランチに追加するか、新しいブランチに追加するかを指定します。 [新しいファイルをコミット] または [新しいファイルを提案] を選択して、プル要求を作成します。
ワークフローのテスト
作成したワークフローをテストするには、カスタム ポリシーの変更をプッシュします。 ジョブの実行が開始されると、実行の進行状況を示す視覚化グラフを表示し、GitHub での各ステップのアクティビティを参照することができます。
GitHub で、リポジトリのメイン ページに移動します。
リポジトリ名の下で、 [アクション] を選択します。
左側のサイドバーで、作成したワークフローを選択します。
[ワークフローの実行] で、表示する実行の名前を選択します。
[ジョブ] または視覚化グラフで、表示するジョブを選択します。
各ステップの結果を表示します。 次のスクリーンショットは、 [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 * * *'
ワークフローを編集するには:
GitHub で、リポジトリのメイン ページに移動します。
リポジトリ名の下で、 [アクション] を選択します。
左側のサイドバーで、作成したワークフローを選択します。
[ワークフローの実行] で、表示する実行の名前を選択します。
メニューで 3 つのドット [...] を選択してから、 [ワークフロー ファイルの表示] を選択します。
GitHub Web エディターで、 [編集] を選択します。
on: push
を上記の例に変更します。変更をコミットします。
次のステップ
- ワークフローをトリガーするイベントを構成する方法を確認します