Поделиться через


Подключение существующих ресурсов Microsoft Graph для использования в шаблонах Bicep

Вы можете ссылаться на существующие ресурсы Microsoft Graph в шаблонах Bicep с помощью поддерживаемого свойства ключа, предоставленного клиентом. Ресурсы, созданные через HTTP POST, могут не иметь этого свойства и требовать одноразовое обратное заполнение.

После установки свойство ключа, предоставленное клиентом, позволяет объявлять ресурс в Bicep-файле для повторного развертывания. Чтобы считывать свойства ресурса без повторного развертывания, используйте существующее ключевое слово.

В этой статье вы узнаете, как использовать existing ключевое слово и предоставленный клиентом ключ для чтения свойств существующих ресурсов Microsoft Graph.

Внимание

Microsoft Graph Bicep в настоящее время находится в предварительной версии. Юридические условия, применимые к функциям Azure, которые находятся в состоянии бета-версии, предварительной версии или иным образом еще не выпущены в общедоступной версии, см. на странице Дополнительные условия использования предварительных версий в Microsoft Azure.

Bicep позволяет считывать существующие ресурсы с помощью существующего ключевого слова. Для ресурсов Microsoft Graph ресурсы должны быть уникальным образом идентифицированы свойством ключа, предоставленным клиентом.

Необходимые компоненты

Подключение существующих ресурсов Microsoft Graph и использование этих ресурсов в файле Bicep

В этом примере у вас могут быть некоторые ресурсы Microsoft Graph, которые не были созданы с помощью развертывания Bicep-файла, но которыми теперь необходимо воспользоваться или управлять в Bicep-файле. Например, необходимо обновить существующее приложение или развернуть группу безопасности #1 (новое развертывание или повторное развертывание) с существующей группой #2 и субъектом-службой #2 в качестве его членов.

Чтобы ссылаться на существующую группу #2 в файле Bicep, она должна иметь свой уникальный набор свойствName . Чтобы ссылаться на существующий субъект-службу #2, если вы не знаете идентификатор приложения, его родительское приложение должно иметь свой уникальный набор свойствName .

В этом разделе выполняются следующие действия:

  • Добавьте свойство uniqueName для существующей группы и приложения с помощью Azure CLI или Azure PowerShell.
  • Обновите существующее приложение в файле Bicep.
  • Используйте ключевое слово existing в том же файле Bicep, чтобы получить идентификатор существующей группы и субъекта-службы.
  • В файле Bicep настройте параметры для развертывания группы безопасности с существующей группой и субъектом-службой в качестве его членов, а субъект-служба — его владельцем.
  • Разверните Bicep-файл.

Шаг 1. Задание свойства uniqueName для группы и приложения

Следующий запрос задает уникальное имя для существующей группы и приложения TestGroup-20241202TestApp-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, получить идентификаторы и добавить их в коллекции владельцев и членов другой группы.

  1. Запустите VS Code и создайте два новых файла, main.bicep и bicepconfig.json, убедившись, что они находятся в одной папке.

  2. Включите некоторые функции предварительной версии, настроив bicepconfig.json:

    {
      "experimentalFeaturesEnabled": {
          "extensibility": true
      }
    }
    
  3. В 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]
    }
    
  4. Разверните файл Bicep с помощью Azure CLI или Azure PowerShell.

    ## 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
    

После завершения развертывания должно отобразиться сообщение о том, что развертывание успешно выполнено.