Развертывание арендаторов с помощью файла Bicep
По мере развития организации может потребоваться определить и назначить политики или управление доступом на основе ролей Azure (Azure RBAC) в клиенте Microsoft Entra. С помощью шаблонов уровня клиента можно декларативно применять политики и назначать роли на глобальном уровне.
Обучающие материалы
Дополнительные сведения об областях развертывания, а также практические инструкции вы найдете в модуле Развертывание ресурсов в подписках, группах управления и арендаторах с помощью Bicep
Поддерживаемые ресурсы
Не все типы ресурсов можно развернуть на уровне арендатора. В этом разделе перечислены поддерживаемые типы ресурсов.
Для Управления доступом на основе ролей Azure (Azure RBAC) используйте следующие типы:
Для вложенных шаблонов, которые развертываются в группах управления, подписках или группах ресурсов, используйте следующие типы:
Для создания групп управления используйте следующие типы:
Для создания подписок используйте следующие типы:
Для управления затратами используйте следующие типы:
Для настройки портала используйте следующие типы:
Встроенные определения политик — это ресурсы уровня арендатора, однако развертывать на арендаторе пользовательские определения политик нельзя. Пример назначения встроенного определения политики ресурсу см. в примере для tenantResourceId.
Область — набор
Чтобы задать область арендатора, используйте следующее:
targetScope = 'tenant'
Требуемый доступ
У субъекта, развертывающего шаблон, должны быть разрешения на создание ресурсов в области клиента. У субъекта должно быть разрешение на действия развертывания (Microsoft.Resources/deployments/*
) и создание ресурсов, определенных в шаблоне. Например, чтобы создать группу управления, у субъекта должно быть разрешение "Участник" в области клиента. Чтобы создавать назначения ролей, у участника должно быть разрешение "Владелец".
Глобальный Администратор istrator для идентификатора Microsoft Entra id не имеет разрешения на назначение ролей. Чтобы включить развертывания шаблонов в области клиента, глобальному администратору следует выполнить такие действия:
Повысить уровень доступа к учетной записи, чтобы глобальный администратор мог назначать роли. Дополнительные сведения см. в статье Повышение прав доступа для управления всеми подписками Azure и группами управления.
Назначьте роль "Владелец" или "Участник" субъекту, который будет развертывать шаблоны.
New-AzRoleAssignment -SignInName "[userId]" -Scope "/" -RoleDefinitionName "Owner"
az role assignment create --assignee "[userId]" --scope "/" --role "Owner"
У субъекта теперь есть необходимые разрешения для развертывания шаблона.
Команды развертывания
Команды, используемые для развертываний клиентов, отличаются от команд для развертываний группы ресурсов.
Для Azure CLI используйте az deployment tenant create:
az deployment tenant create \
--name demoTenantDeployment \
--location WestUS \
--template-file main.bicep
Более подробные сведения о командах и параметрах развертывания для развертывания шаблонов ARM приведены в следующих статьях:
- Развертывание ресурсов с помощью шаблонов ARM и Azure CLI
- Развертывание ресурсов с помощью шаблонов ARM и Azure PowerShell
- Развертывание шаблонов ARM из Cloud Shell
Расположение и имя развертывания
Для развертываний на уровне клиента необходимо указать расположение для развертывания. Расположение развертывания отделено от расположения развертываемых ресурсов. В расположении развертывания указывается место хранения данных развертывания. При развертывании подписок и групп управления также требуется расположение. При развертывании группы ресурсов для хранения данных развертывания используется расположение группы ресурсов.
Можно указать имя развертывания или использовать имя развертывания по умолчанию. Имя по умолчанию — это имя файла шаблона. Например, когда вы развертываете файл с именем main.bicep, создается имя развертывания по умолчанию main.
Для каждого имени развертывания расположение остается неизменным. Нельзя создать развертывание в одном расположении, если в другом уже есть развертывание с таким же именем. Например, если вы создаете развертывание арендатора с именем deployment1 в centralus, вы не сможете позже создать другое развертывание с именем deployment1, но уже в расположении westus. Если появится код ошибки InvalidDeploymentLocation
, используйте другое имя или то же расположение, что и для предыдущего развертывания с этим именем.
Области развертывания
При развертывании в арендаторе ресурсы можно развернуть в:
- арендаторе;
- группе управления в арендаторе;
- подписки;
- группы ресурсов
Ресурс расширения можно ограничить целевым объектом, который отличается от целевого объекта развертывания.
Пользователь, развертывающий шаблон, должен иметь доступ к указанной области.
В этом разделе показано, как указать различные области. Такие различные области можно объединить в один шаблон.
Область для клиента
Ресурсы, определенные в файле Bicep, применяются к арендатору.
targetScope = 'tenant'
// create resource at tenant
resource mgName_resource 'Microsoft.Management/managementGroups@2023-04-01' = {
...
}
Область для группы управления
Чтобы назначить группу управления в арендаторе, добавьте модуль. Используйте функцию managementGroup, чтобы задать свойство scope
. Укажите имя группы управления.
targetScope = 'tenant'
param managementGroupName string
// create resources at management group level
module 'module.bicep' = {
name: 'deployToMG'
scope: managementGroup(managementGroupName)
}
Область действия для подписки
Чтобы назначить подписку в арендаторе, добавьте модуль. Используйте функцию subscription, чтобы задать его свойство scope
. Укажите идентификатор подписки.
targetScope = 'tenant'
param subscriptionID string
// create resources at subscription level
module 'module.bicep' = {
name: 'deployToSub'
scope: subscription(subscriptionID)
}
Область для группы ресурсов
Чтобы назначить группу ресурсов в арендаторе, добавьте модуль. Используйте функцию resourceGroup, чтобы задать свойство scope
. Укажите идентификатор подписки и имя группы ресурсов.
targetScope = 'tenant'
param resourceGroupName string
param subscriptionID string
// create resources at resource group level
module 'module.bicep' = {
name: 'deployToRG'
scope: resourceGroup(subscriptionID, resourceGroupName)
}
Создание группы управления
В следующем примере создается группа управления.
targetScope = 'tenant'
param mgName string = 'mg-${uniqueString(newGuid())}'
resource mgName_resource 'Microsoft.Management/managementGroups@2023-04-01' = {
name: mgName
properties: {}
}
Если у вашей учетной записи нет разрешения на развертывание в арендаторе, вы все равно можете создавать группы управления, развернув их в другой области. Дополнительные сведения находятся в Обзоре группы управления.
Назначение роли
В следующем шаблоне присваивается роль в области арендатора.
targetScope = 'tenant'
@description('principalId of the user that will be given contributor access to the resourceGroup')
param principalId string
@description('roleDefinition for the assignment - default is owner')
param roleDefinitionId string = '8e3af657-a8ff-443c-a75c-2fe8c4bcb635'
var roleAssignmentName = guid(principalId, roleDefinitionId)
resource roleAssignment 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
name: roleAssignmentName
properties: {
roleDefinitionId: tenantResourceId('Microsoft.Authorization/roleDefinitions', roleDefinitionId)
principalId: principalId
}
}
Следующие шаги
Сведения о других областях приведены в следующих статьях: