Ссылка на существующие ресурсы Microsoft Graph в шаблонах Bicep
Bicep позволяет считывать существующие ресурсы с помощью существующего ключевого слова. Для ресурсов Microsoft Graph ресурсы должны быть уникальным образом идентифицированы свойством ключа, предоставленным клиентом.
В этой статье вы узнаете, как использовать existing
ключевое слово и предоставленный клиентом ключ для чтения свойств существующих ресурсов Microsoft Graph.
Внимание
Microsoft Graph Bicep в настоящее время находится в предварительной версии. Юридические условия, применимые к функциям Azure, которые находятся в состоянии бета-версии, предварительной версии или иным образом еще не выпущены в общедоступной версии, см. на странице Дополнительные условия использования предварительных версий в Microsoft Azure.
Необходимые компоненты
- Создать подписку 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
Разверните файл 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
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 и настроить некоторые его свойства с помощью параметров из существующего ресурса. Например, необходимо развернуть группу безопасности #1 (новое развертывание или повторное развертывание) с существующей группой #2 и субъектом-службой #2 в качестве его членов. В этом случае вы используете ключевое existing
слово для ссылки на группу #2 и субъект-службу #2 и получить их идентификаторы, которые затем добавляются в коллекцию членов группы #1.
Чтобы ссылаться на существующую группу #2 в файле Bicep, она должна иметь свой уникальный набор свойствName . Чтобы ссылаться на существующий субъект-службу #2, если вы не знаете идентификатор приложения, его родительское приложение должно иметь свой уникальный набор свойствName .
В этом разделе выполняются следующие действия:
- Обновите свойство uniqueName для существующей группы и приложения с помощью Azure CLI или Azure PowerShell.
- Используйте ключевое
existing
слово в файле Bicep, чтобы получить идентификатор существующей группы и субъекта-службы. - В файле Bicep настройте параметры для развертывания группы безопасности с существующей группой и субъектом-службой в качестве его членов, а субъект-служба — его владельцем.
- Разверните Bicep-файл.
Шаг 1. Задание свойства 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] }
Разверните файл 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
После завершения развертывания должно отобразиться сообщение о том, что развертывание успешно выполнено.