參考 Bicep 範本中現有的Microsoft圖形資源
Bicep 可讓您使用 現有的關鍵詞來讀取現有的 資源。 針對 Microsoft Graph 資源,資源必須先 由用戶端提供的索引鍵屬性唯一識別。
在本文中,您將瞭解如何使用 existing
關鍵詞和用戶端提供的密鑰來讀取現有Microsoft Graph 資源的屬性。
重要
Microsoft Graph Bicep 目前處於預覽狀態。 請參閱 Microsoft Azure 預覽版增補使用規定,以了解適用於 Azure 功能 (搶鮮版 (Beta)、預覽版,或尚未正式發行的版本) 的法律條款。
必要條件
- 擁有 Azure 訂用帳戶。 如果您沒有帳戶,您可以建立免費帳戶。
- 具有最低許可權的許可權或角色,可讀取或更新現有的資源,或成為資源的擁有者。 請參閱依工作和預設用戶權力的最低特殊許可權角色,以查看您需要指派哪些角色。
- 安裝 Bicep 工具以進行撰寫和部署。 本快速入門使用 VS Code 搭配 Bicep 擴充功能進行撰寫,以及用於部署的 Azure CLI。 Azure PowerShell 也會提供範例。
- 您可以互動方式部署 Bicep 檔案,或透過零觸控式(僅限應用程式)部署。
讀取現有 Microsoft Graph 資源的屬性
下列步驟示範如何在 Bicep 檔案中依其唯一名稱參考現有的群組和應用程式。
啟動 VS Code 並建立兩個新檔案 main.bicep 和 bicepconfig.json,確定它們位於相同的資料夾中。
藉由設定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"
您會在下一節中使用群組的標識碼。
使用現有資源的設定來更新或建立 Microsoft Graph 資源
您可能也想要部署 Microsoft Graph 資源,並使用現有資源的設定來設定其部分屬性。 例如,您想要使用現有的群組 #2 和服務主體 #2 作為其成員來部署安全組 #1 (新的部署或重新部署)。 在此情況下,您會使用 existing
關鍵詞來參考群組 #2 和服務主體 #2,並取得其標識符,然後新增至 群組的成員 集合 #1。
若要參考 Bicep 檔案中的現有群組 #2,它必須設定其 uniqueName 屬性。 如果您不知道其 appId,若要參考現有的服務主體 #2,其父應用程式必須設定其 uniqueName 屬性。
在本節中,您會:
- 使用 Azure CLI 或 Azure PowerShell 更新現有群組和應用程式的 uniqueName 屬性。
existing
使用 Bicep 檔案中的 關鍵詞來取得現有群組和服務主體的標識碼。- 在 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、取得其標識符,並將其新增至另一個群組的擁有者和成員集合。
啟動 VS Code 並建立兩個新檔案 main.bicep 和 bicepconfig.json,確定它們位於相同的資料夾中。
藉由設定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
當部署完成時,您應該會看到指出部署成功的訊息。