今回は Microsoft Graph Bicep 拡張機能を使って Microsoft Entra ID のリソースを Bicep で操作する方法を検証してみます。
従来の RBAC 割り当てではセキュリティ プリンシパル ID が必要でしたが、Microsoft Graph Bicep 拡張機能を使うことで UserPrincipalName を直接使用できるようになります。
本記事は GitHub Copilot を活用して作成しています。
Microsoft Graph Bicep 拡張機能とは
Microsoft Graph Bicep 拡張機能は、Microsoft Graph API を通じて Microsoft Entra ID(旧 Azure AD)のリソースを Bicep テンプレートで管理できるようにする機能です。
主な特徴
- Microsoft Entra ID リソースの直接管理: ユーザー、グループ、アプリケーション登録などを Bicep で定義
- 統合されたデプロイメント: Azure リソースと Microsoft Entra ID リソースを単一のテンプレートで管理
対応しているリソースタイプ
主要なリソースタイプには以下があります:
Microsoft.Graph/users
- ユーザーMicrosoft.Graph/groups
- グループMicrosoft.Graph/applications
- アプリケーション登録Microsoft.Graph/servicePrincipals
- サービス プリンシパル
その他は Microsoft Graph Bicep リソース リファレンスの概要 - Microsoft Graph Bicep v1.0 reference | Microsoft Learn を見てください
従来の課題
セキュリティ プリンシパル ID の取得が必要
従来の Bicep を使った RBAC 割り当てでは、ユーザーやグループにロールを割り当てる際にセキュリティ プリンシパル ID(オブジェクト ID)を事前に調べる必要がありました。
|
|
この方法の問題点:
- 事前調査が必要: Azure Portal や PowerShell、CLI でセキュリティ プリンシパル ID を調べる必要がある
- 人的エラーのリスク: GUID の入力ミスが発生しやすい
- 可読性の低下: コードを見ただけではどのユーザーか判断できない
- メンテナンス性: ユーザーが変更になった場合、新しい GUID を調べ直す必要がある
Microsoft Graph Bicep 拡張機能による解決
UserPrincipalName での参照
Microsoft Graph Bicep 拡張機能を使用すると、UserPrincipalName を使ってユーザーを参照し、そのオブジェクト ID を動的に取得できます。
|
|
この方法の利点:
- 直感的: メールアドレス(UserPrincipalName)で指定できる
- 可読性: コードを見ただけでどのユーザーか分かる
- エラー軽減: GUID を手動で入力する必要がない
- 自動化: セキュリティ プリンシパル ID の動的取得
ざっくり手順
1. 前提条件の確認
Microsoft Graph Bicep 拡張機能を使用するには以下の前提条件があります:
- Bicep CLI v0.4.1008 以降
- Microsoft Graph への適切なアクセス許可
- Microsoft Entra ID テナントへの管理者権限
2. Microsoft Graph Bicep 拡張機能の設定
重要: Microsoft Graph Bicep 拡張機能を使用するためには、Bicep ファイルの冒頭で拡張機能を明示的に宣言する必要があります。
拡張機能の宣言
Bicep ファイルの最初の行で以下のように拡張機能を宣言します:
|
|
拡張機能のバージョンについて
- 最新のバージョン情報は Microsoft Artifact Registry で確認できます
- 現在はプレビュー版が利用可能です(
0.2.0-preview
) - 本格運用の際は最新の安定版を使用することをお勧めします
注意事項
Microsoft Graph Bicep 拡張機能を使用する際の重要な注意点:
- 拡張機能の宣言が必須:
extension
宣言がないと Microsoft Graph リソースを使用できません - 適切なアクセス許可: Microsoft Graph API への読み取り権限が必要です
- テナント管理者権限: ユーザーやグループの情報にアクセスするには適切な権限が必要です
詳細については、Microsoft Graph Bicep リソースに動的な型を使用する を参照してください。
3. Bicep ファイルの作成
まず、基本的な Bicep ファイルを作成します:
|
|
4. パラメータファイルの作成
パラメータファイルでユーザーを指定します:
|
|
5. デプロイメントの実行
Azure CLI を使用してデプロイします:
|
|
6. 結果の確認
デプロイ後、Azure Portal でロール割り当てを確認できます:
- Azure Portal でリソースグループに移動
- 「アクセス制御 (IAM)」を選択
- 「ロールの割り当て」タブで指定したユーザーに Reader ロールが割り当てられていることを確認

従来方法との比較
項目 | 従来の方法 | Microsoft Graph Bicep 拡張機能 |
---|---|---|
ユーザー指定方法 | オブジェクト ID (GUID) | UserPrincipalName (メールアドレス) |
事前調査 | 必要 | 不要 |
可読性 | 低い | 高い |
エラー率 | 高い | 低い |
メンテナンス性 | 低い | 高い |
動的取得 | 不可 | 可能 |
まとめ
Microsoft Graph Bicep 拡張機能を使用することで、以下のメリットが得られます:
- 開発効率の向上: セキュリティ プリンシパル ID を事前に調べる手間が不要
- コードの可読性向上: UserPrincipalName による直感的な記述
- エラー削減: GUID の手動入力によるミスを防止
- 運用性の向上: ユーザー変更時の保守性が向上
従来の RBAC 割り当て方法と比較して、より効率的で保守しやすい IaC (Infrastructure as Code) を実現できます。特に大規模な組織や複数のユーザーに権限を割り当てる場合には、この機能の恩恵を大きく受けることができるでしょう。
Microsoft Graph Bicep 拡張機能は、Azure リソースと Microsoft Entra ID リソースの統合管理を可能にし、現代的なクラウドインフラの管理に欠かせない機能となっています。
参考
- Microsoft Graph リソース用の Bicep テンプレート - Microsoft Graph Bicep | Microsoft Learn
- Microsoft.Graph/ユーザー - Microsoft Graph Bicep v1.0 reference | Microsoft Learn
- クイックスタート: Bicep を使用して Azure でのロールを割り当てる - Azure RBAC | Microsoft Learn
- Azure Resource Manager テンプレートでロールを割り当てる - Azure RBAC | Microsoft Learn
- Bicep 関数 - Azure Resource Manager | Microsoft Learn