共用方式為


參考 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 檔案中依其唯一名稱參考現有的群組和應用程式。

  1. 啟動 VS Code 並建立兩個新檔案 main.bicepbicepconfig.json,確定它們位於相同的資料夾中。

  2. 藉由設定bicepconfig.json來啟用某些預覽功能:

    {
        "experimentalFeaturesEnabled": {
            "extensibility": true
        }
    }
    
  3. 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
    
  4. 使用 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-20240817TestApp-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、取得其標識符,並將其新增至另一個群組的擁有者和成員集合。

  1. 啟動 VS Code 並建立兩個新檔案 main.bicepbicepconfig.json,確定它們位於相同的資料夾中。

  2. 藉由設定bicepconfig.json來啟用某些預覽功能:

    {
      "experimentalFeaturesEnabled": {
          "extensibility": true
      }
    }
    
  3. 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]
    }
    
  4. 使用 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
    

當部署完成時,您應該會看到指出部署成功的訊息。