Bicep テンプレートで既存の Microsoft Graph リソースを参照する
Bicep では、 existing キーワードを使用して既存のリソースを読み取ります。 Microsoft Graph リソースの場合、リソースは最初に クライアント指定のキー プロパティによって一意に識別される必要があります。
この記事では、 existing
キーワードとクライアントが提供するキーを使用して、既存の Microsoft Graph リソースのプロパティを読み取る方法について説明します。
重要
Microsoft Graph Bicep は現在プレビュー段階です。 ベータ版、プレビュー版、または一般提供としてまだリリースされていない Azure の機能に適用される法律条項については、「Microsoft Azure プレビューの追加使用条件」を参照してください。
前提条件
- Azure サブスクリプションを取得する。 アカウントがない場合は、無料アカウントを作成できます。
- 既存のリソースの読み取りまたは更新、またはリソースの所有者になる特権が最小限のアクセス許可またはロールを持っている。 タスク別の特権ロールを参照し既定のユーザーアクセス許可割り当てる必要があるロールを確認します。
- 作成と展開のために Bicep ツールをインストールします。 このクイック スタートでは、作成用に Bicep 拡張機能を含む VS Code を使用し、デプロイ用に Azure CLI を使用します。 Azure PowerShell のサンプルも提供されています。
- Bicep ファイルは、対話形式で、またはゼロタッチ (アプリ専用) 展開を使用して展開できます。
既存の Microsoft Graph リソースのプロパティを読み取る
次の手順では、Bicep ファイル内の一意の名前で既存のグループとアプリケーションを参照する方法を示します。
VS Code を起動し、 main.bicep と bicepconfig.json の 2 つの新しいファイルを作成し、それらが同じフォルダーにあることを確認します。
bicepconfig.jsonを構成して、いくつかのプレビュー機能を有効にします。
{ "experimentalFeaturesEnabled": { "extensibility": true } }
main.bicepで、次の Bicep コードを追加します。このコードでは、
existing
キーワードを使用して、グループを一意の名前TestGroup-20240816
で参照し、アプリケーションをTestApp-20240816
で参照します。 この手順では、指定した一意の名前を持つグループとアプリケーションが既に存在することを前提としています。extension microsoftGraph @description('Group to use') param groupName string = 'TestGroup-20240816' @description('App to use') param appName string = 'TestApp-20240816' resource group 'Microsoft.Graph/groups@v1.0' existing = { uniqueName: groupName } resource application 'Microsoft.Graph/applications@v1.0' existing = { uniqueName: appName } output groupId string = group.id output applicationId string = application.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
DeploymentName : main
ResourceGroupName : exampleRG
ProvisioningState : Succeeded
Timestamp : 18/04/2024 16:16:42
Mode : Incremental
TemplateLink :
Parameters :
Name Type Value
=============== ========================= ==========
groupName String "TestGroup-20240816"
appName String "TestApp-20240816"
Outputs :
Name Type Value
=============== ========================= ==========
group-id String "91ded94c-0144-4422-b33c-c4171447a738"
app-id String "cd0bc6bc-fd22-4eb6-9bd3-2f8c5efd6dc9"
次のセクションでは、グループの ID を使用します。
既存のリソースの設定を使用して Microsoft Graph リソースを更新または作成する
また、Microsoft Graph リソースをデプロイし、既存のリソースの設定を使用してそのプロパティの一部を構成することもできます。 たとえば、既存のグループ #2 とサービス プリンシパル #2 をメンバーとして使用して、セキュリティ グループ #1 (新しいデプロイまたは再デプロイ) をデプロイします。 この場合は、 existing
キーワードを使用してグループ #2 とサービス プリンシパル #2 を参照し、その ID を取得します。その ID をグループ #1 の members コレクションに追加します。
Bicep ファイル内の既存のグループ #2 を参照するには、 uniqueName プロパティが設定されている必要があります。 appId がわからない場合に既存のサービス プリンシパル #2 を参照するには、その親アプリケーションに uniqueName プロパティが設定されている必要があります。
このセクションでは、次の作業を行います。
- Azure CLI または Azure PowerShell を使用して、既存のグループとアプリケーションの uniqueName プロパティを更新します。
- Bicep ファイル内の
existing
キーワードを使用して、既存のグループとサービス プリンシパルの ID を取得します。 - Bicep ファイルで、既存のグループとサービス プリンシパルをメンバーとして、サービス プリンシパルを所有者としてセキュリティ グループを展開するように設定を構成します。
- Bicep ファイルをデプロイします。
手順 1: グループとアプリケーションの uniqueName プロパティを設定する
次の要求は、既存のグループとアプリケーションの uniqueName をそれぞれ TestGroup-20240817
と TestApp-20240817
に設定します。 グループとアプリケーションがグループ #2 であり、前のシナリオのサービス プリンシパル #2 の親アプリであるとします。
# 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-20240817\"}' --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-20240817\"}' --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 microsoftGraph // TEMPLATE OVERVIEW: 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-20240817' } // existing SP #2 to be added as a member resource application 'Microsoft.Graph/applications@v1.0' existing = { uniqueName: 'TestApp-20240817' } 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
デプロイが完了すると、デプロイが成功したことを示すメッセージが表示されます。