BicepでMicrosoft Entra ID上のリソースも作成可能に!

この記事の内容

  • BicepのテンプレートでMicrosoft Entra ID(旧Azure AD)リソースが正式サポート(GA)されました
  • 「Microsoft Graph Bicep Extension」という仕組みにより、グループやアプリケーション登録などをBicepで宣言的に管理できます
  • 従来は必要だったPowerShellスクリプトとの組み合わせが不要になり、構成管理を一元化できます
  • GitHub Actionsを使ったAzureデプロイなど、実際のユースケースで威力を発揮します
  • 今後はMicrosoft 365・Intune・Exchange Onlineなど、さらに多くのリソースへの対応拡張が期待されています

Bicepとは?改めておさらい

BicepはMicrosoftが提供するInfrastructure as Code(IaC)ツールです。Azureリソースの構成を宣言的に記述し、テンプレートとして管理・デプロイできる仕組みを提供しています。

これまでBicepは主にAzureリソースマネージャー(ARM)リソースを対象としていましたが、今回のアップデートからMicrosoft Graph API経由でMicrosoft Entra ID(旧Azure AD)リソースも扱えるようになりました。


これまでの課題

AzureリソースとMicrosoft Entra IDリソースはデプロイ方法が異なっており、組み合わせた構成を管理するのに手間がかかっていました。

例えば、WebアプリケーションをAzureにデプロイしてEntra ID認証を利用しようとすると、「アプリケーション登録」や「グループ」も合わせて作成する必要があります。しかしBicepだけではこれらを作成できないため、PowerShellスクリプト等で個別に作成し、そのIDをBicepテンプレートに渡すという二段構えの対応が必要でした。


新機能「Microsoft Graph Bicep Extension」の概要

今回のアップデートで追加された機能は Microsoft Graph Bicep Extension と呼ばれています。Bicepテンプレート内にEntra IDリソースを記述することで、従来のAzureリソースと同様の方法でデプロイできます。

対応しているリソースの例は以下の通りです。

  • Microsoft.Graph/groups(グループ)
  • Microsoft.Graph/applications(アプリケーション登録)

デプロイプロセスは従来のBicepと同じく、Azure CLIやPowerShellを使います。デプロイメントエンジンがテンプレートを処理する際、リソースごとにAzureリソースかMicrosoft Graph経由のEntra IDリソースかを自動的に振り分けて作成してくれます。

これにより、以下のような構成がBicepテンプレート1つで完結するようになりました。

  • Microsoft Entraのグループ作成
  • アプリケーション登録
  • グループへのメンバー追加

具体的な利用シナリオ:GitHub ActionsでのWebアプリ展開

新機能が特に威力を発揮するユースケースとして、GitHub Actionsを利用してAzure App ServiceにWebアプリを展開するケースを見てみましょう。

これまでの手順

従来は、GitHub ActionsからAzureリソースにアクセスするために以下の作業を手動で行う必要がありました。

  1. Entra IDアプリケーション(サービスプリンシパル)を手動で作成
  2. クライアントシークレットを発行
  3. シークレットやアプリケーションIDをGitHubのSecretsに登録

Bicep新機能を使った手順

Microsoft Graph Bicep Extensionを活用すると、以下の構成をBicepテンプレート内で一括定義できます。

// Entra IDアプリケーションの作成
resource app 'Microsoft.Graph/applications@v1.0' = {
  displayName: 'my-github-actions-app'
  // ...
}

// Federated Identity Credentialの構成(OIDCトークンによる認証)
resource federatedCredential 'Microsoft.Graph/applications/federatedIdentityCredentials@v1.0' = {
  name: '${app.id}/github-actions'
  audiences: ['api://AzureADTokenExchange']
  issuer: 'https://token.actions.githubusercontent.com'
  subject: 'repo:my-org/my-repo:ref:refs/heads/main'
}

// サービスプリンシパルの作成
resource sp 'Microsoft.Graph/servicePrincipals@v1.0' = {
  appId: app.appId
}

具体的には以下の3ステップがテンプレートで完結します。

  1. Entra IDアプリケーションを作成
  2. Federated Identity Credentialを構成し、GitHub ActionsのOIDCトークンに基づく認証を設定
  3. サービスプリンシパルを作成し、リソースグループへのロールを割り当て

これにより、シークレットをGitHubに登録することなく、GitHub Actionsから安全かつスムーズにAzureリソースへアクセスできるようになります。


今後への期待

現時点ではEntra IDリソース対応は一部に限られていますが、今後さらに多くのMicrosoft Graphリソースへの拡張が期待されています。たとえば、Microsoft 365関連の設定や、Intune、Exchange Onlineなど、さまざまなサービスの構成もBicepで統合管理できる未来が見えてきました。


まとめ

今回のBicepアップデートにより、AzureリソースだけでなくMicrosoft Entra IDリソースもInfrastructure as Codeで一元管理できるようになりました。

  • PowerShellスクリプトとの組み合わせが不要になり、構成管理の一元化が実現します
  • GitHubシークレット不要のOIDC認証など、セキュリティの向上にも貢献します
  • 宣言的なテンプレート管理により、環境の再現性が高まります

Bicepを活用している方は、ぜひこの新機能を試してみてください。