Bicep テンプレートで使用する既存の Microsoft Graph リソースをオンボードする
サポートされているクライアント指定のキー プロパティを使用して、Bicep テンプレート内の既存の Microsoft Graph リソースを参照できます。 HTTP POST を使用して作成されたリソースには、このプロパティが設定されておらず、1 回限りバックフィルが必要な場合があります。
設定すると、クライアント指定のキー プロパティを使用して、リソースを再デプロイ用の Bicep ファイルで宣言できます。 再デプロイせずにリソースのプロパティを読み取る場合は、既存の キーワード
この記事では、 existing
キーワードとクライアントが提供するキーを使用して、既存の Microsoft Graph リソースのプロパティを読み取る方法について説明します。
重要
Microsoft Graph Bicep は現在プレビュー段階です。 ベータ版、プレビュー版、または一般提供としてまだリリースされていない Azure の機能に適用される法律条項については、「Microsoft Azure プレビューの追加使用条件」を参照してください。
Bicep では、 existing キーワードを使用して既存のリソースを読み取ります。 Microsoft Graph リソースの場合、リソースは最初に クライアント指定のキー プロパティによって一意に識別される必要があります。
前提条件
- Azure サブスクリプションを取得する。 アカウントがない場合は、無料アカウントを作成することができます。
- 既存のリソースの読み取りまたは更新、またはリソースの所有者になる特権が最小限のアクセス許可またはロールを持っている。 タスク別の特権ロールを参照し既定のユーザーアクセス許可割り当てる必要があるロールを確認します。
- 作成と展開のために Bicep ツールをインストールします。 このクイック スタートでは、作成用に Bicep 拡張機能を含む VS Code を使用し、デプロイ用に Azure CLI を使用します。 Azure PowerShell のサンプルも提供されています。
- Bicep ファイルは、対話形式で、またはゼロタッチ (アプリ専用) 展開を使用して展開できます。
既存の Microsoft Graph リソースをオンボードし、それらのリソースを Bicep ファイルで使用する
この例では、Bicep ファイルの展開を通じて作成されなかった Microsoft Graph リソースがいくつか存在する可能性があります。このリソースは、Bicep ファイルで使用または管理する必要があります。 たとえば、既存のアプリケーションを更新するか、既存のグループ #2 とサービス プリンシパル #2 をメンバーとして使用してセキュリティ グループ #1 (新しいデプロイまたは再デプロイ) をデプロイします。
Bicep ファイル内の既存のグループ #2 を参照するには、 uniqueName プロパティが設定されている必要があります。 appId がわからない場合に既存のサービス プリンシパル #2 を参照するには、その親アプリケーションに uniqueName プロパティが設定されている必要があります。
このセクションでは、次の作業を行います。
- Azure CLI または Azure PowerShell を使用して、既存のグループとアプリケーションの uniqueName プロパティを追加します。
- Bicep ファイル内の既存のアプリケーションを更新します。
- 同じ Bicep ファイル内の
existing
キーワードを使用して、既存のグループとサービス プリンシパルの ID を取得します。 - Bicep ファイルで、既存のグループとサービス プリンシパルをメンバーとして、サービス プリンシパルを所有者としてセキュリティ グループを展開するように設定を構成します。
- Bicep ファイルをデプロイします。
手順 1: グループとアプリケーションの uniqueName プロパティを設定する
次の要求は、既存のグループとアプリケーションの uniqueName をそれぞれ TestGroup-20241202
と TestApp-20241202
に設定します。
重要
クライアント指定のキー プロパティ uniqueName
は、一度設定すると変更できません。
# Sign in to Azure
az login
## Create a resource group
az group create --name exampleRG --location eastus
## Update the uniqueName property of the group and application
## Note: Replace cec00de2-08b9-4081-aaf5-55d78ac9b4c4 and 25ae6414-05a1-4cce-9899-ad11d9eedde2 with IDs for your group and application.
az rest --method patch --url 'https://graph.microsoft.com/v1.0/groups/cec00de2-08b9-4081-aaf5-55d78ac9b4c4' --body '{\"uniqueName\": \"TestGroup-20241202\"}' --headers "content-type=application/json"
az rest --method patch --url 'https://graph.microsoft.com/v1.0/applications/25ae6414-05a1-4cce-9899-ad11d9eedde2' --body '{\"uniqueName\": \"TestApp-20241202\"}' --headers "content-type=application/json"
手順 2: 既存のグループとサービス プリンシパルを別のグループのメンバーと所有者に追加する
existing
キーワードを使用して、既存のグループ #2 とサービス プリンシパル #2 を参照し、その ID を取得し、別のグループの所有者および members コレクションに追加できるようになりました。
VS Code を起動し、 main.bicep と bicepconfig.json の 2 つの新しいファイルを作成し、それらが同じフォルダーにあることを確認します。
bicepconfig.jsonを構成して、いくつかのプレビュー機能を有効にします。
{ "experimentalFeaturesEnabled": { "extensibility": true } }
main.bicepで、次の Bicep コードを追加します。
extension 'br:mcr.microsoft.com/bicep/extensions/microsoftgraph/v1.0:0.1.8-preview' // TEMPLATE OVERVIEW: Updates an existing app and // uses existing group and existing SP and sets them as members of another group // existing group #2 to be added as a member resource groupMember 'Microsoft.Graph/groups@v1.0' existing = { uniqueName: 'TestGroup-20241202' } // existing application to be updated with a new display name // and for its SP #2 to be added as a member (to group #1) resource application 'Microsoft.Graph/applications@v1.0' = { uniqueName: 'TestApp-20241202' displayName: 'Updating the displayName to something new' } resource servicePrincipalMember 'Microsoft.Graph/servicePrincipals@v1.0' existing = { appId: application.appId } // Add preceding service principal and group as members of another group // Add preceding service principal as owner of the group. // If Group-1 uniqueName doesn't exist, this is a new deployment. // If Group-1 uniqueName exists, this is a redeployment/update. For redeployments, existing members and owners are retained. resource group 'Microsoft.Graph/groups@v1.0' = { displayName: 'Group-1' mailEnabled: false mailNickname: 'Group-1' securityEnabled: true uniqueName: 'Group-1' members: [groupMember.id, servicePrincipalMember.id] owners: [servicePrincipalMember.id] }
Azure CLI や Azure PowerShell を使用して Bicep ファイルをデプロイします。
## Create a resource group az group create --name exampleRG --location eastus ## Deploy the Bicep file az deployment group create --resource-group exampleRG --template-file main.bicep
デプロイが完了すると、デプロイが成功したことを示すメッセージが表示されます。