Упражнение. Развертывание ресурсов в группу управления
Проект Project Teddybear успешно выполнен, и теперь команда секретного исследования и разработки компании по производству игрушек готова исследовать еще больше новых игрушек. Команда начала почти ежедневно просить вас о новых подписках. Кроме того, ей необходимо применить политики ко всем этим подпискам.
Вместо того чтобы дублировать определения и назначения политик в каждой подписке, вы решили поместить все подписки команды в группу управления. Затем вы сможете применить политику ко всей группе управления, вместо того чтобы применять ее к каждой подписке по отдельности.
В рамках этого упражнения вы создадите новый шаблон Bicep для применения определений и назначений политик к группе управления.
В процессе вы:
- Создайте группу управления.
- Создайте файл Bicep, входящий в область группы управления.
- Добавьте в файл ресурсы Политики Azure.
- Свяжите назначение политики с определением политики, создав идентификатор ресурса вручную.
- Разверните шаблон и проверьте результат.
Предварительные требования для выполнения этого упражнения:
- Необходимо включить группы управления в клиенте Azure.
- Вам нужны разрешения для создания группы управления в вашей иерархии.
- Вам необходимы разрешения для развертывания ресурсов Политики Azure в группу управления.
Если вы не можете выполнить эти требования, используя текущую учетную запись Azure, можно получить бесплатную пробную версию и создать новую подписку и клиент Azure. Кроме того, можно пропустить шаги по развертыванию в этом упражнении.
Создание группы управления
В рамках этого упражнения вы создадите новую группу управления, чтобы предотвратить непредвиденное влияние на какие-либо ресурсы в другой части среды Azure.
В терминале Visual Studio Code выполните следующие команды Azure CLI:
az account management-group create \
--name SecretRND \
--display-name "Secret R&D Projects"
По умолчанию новая группа управления создается в качестве непосредственного дочернего элемента корневой группы управления клиента. Если вам нужно разместить группу управления в определенной части иерархии имеющихся групп управления, укажите параметр --parent-id
и имя группы управления, которая будет использоваться в качестве родительской.
В терминале Visual Studio Code выполните следующие команды Azure PowerShell:
New-AzManagementGroup `
-GroupId 'SecretRND' `
-DisplayName 'Secret R&D Projects'
По умолчанию новая группа управления создается в качестве дочернего элемента корневой группы управления клиента. Если вам нужно разместить группу управления в определенной части иерархии имеющихся групп управления, укажите параметр -ParentId
и имя группы управления, которая будет использоваться в качестве родительской.
В реальном развертывании вы переместите подписки команды R&D в группу управления. В этом упражнении вы развернете политики, даже если в группе управления нет подписок. Такой же процесс развертывания применяется независимо от наличия подписок в группе управления.
Создание файла Bicep для развертывания в группу управления
Откройте Visual Studio Code.
Удалите файл main.bicep, а затем создайте пустой файл с тем же именем.
Сохраните пустой файл.
Добавьте в этот файл содержимое ниже.
targetScope = 'managementGroup'
Обратите внимание, что с помощью этой строки кода вы сообщаете Bicep, что шаблон нужно развернуть в области группы управления.
Добавление определения политики
Как и ранее, создайте определение политики в файле Bicep.
Под только что добавленной строкой добавьте следующее определение переменной:
var policyDefinitionName = 'DenyFandGSeriesVMs'
В нижней части файла добавьте следующее определение Политики Azure:
resource policyDefinition 'Microsoft.Authorization/policyDefinitions@2024-05-01' = { name: policyDefinitionName properties: { policyType: 'Custom' mode: 'All' parameters: {} policyRule: { if: { allOf: [ { field: 'type' equals: 'Microsoft.Compute/virtualMachines' } { anyOf: [ { field: 'Microsoft.Compute/virtualMachines/sku.name' like: 'Standard_F*' } { field: 'Microsoft.Compute/virtualMachines/sku.name' like: 'Standard_G*' } ] } ] } then: { effect: 'deny' } } } }
Это то же определение политики, которое вы ранее применили к своей подписке. Однако на этот раз вы развертываете его в группе управления.
Добавление назначения политики
Теперь примените политику к группе управления. Таким образом, политика будет применяться ко всем подпискам, которые являются дочерними для этой группы управления.
Под определением переменной
policyDefinitionName
добавьте следующую переменную:var policyAssignmentName = 'DenyFandGSeriesVMs'
В нижней части файла под ресурсом определения политики добавьте следующее назначение политики:
resource policyAssignment 'Microsoft.Authorization/policyAssignments@2024-05-01' = { name: policyAssignmentName properties: { policyDefinitionId: policyDefinition.id } }
Сохраните изменения в файле.
Проверка шаблона
Ваш шаблон должен выглядеть следующим образом:
targetScope = 'managementGroup'
var policyDefinitionName = 'DenyFandGSeriesVMs'
var policyAssignmentName = 'DenyFandGSeriesVMs'
resource policyDefinition 'Microsoft.Authorization/policyDefinitions@2024-05-01' = {
name: policyDefinitionName
properties: {
policyType: 'Custom'
mode: 'All'
parameters: {}
policyRule: {
if: {
allOf: [
{
field: 'type'
equals: 'Microsoft.Compute/virtualMachines'
}
{
anyOf: [
{
field: 'Microsoft.Compute/virtualMachines/sku.name'
like: 'Standard_F*'
}
{
field: 'Microsoft.Compute/virtualMachines/sku.name'
like: 'Standard_G*'
}
]
}
]
}
then: {
effect: 'deny'
}
}
}
}
resource policyAssignment 'Microsoft.Authorization/policyAssignments@2024-05-01' = {
name: policyAssignmentName
properties: {
policyDefinitionId: policyDefinition.id
}
}
Если это не так, скопируйте пример или настройте шаблон в соответствии с примером.
Развертывание шаблона в Azure
В терминале Visual Studio Code разверните шаблон с помощью следующих команд Azure CLI:
managementGroupId="SecretRND"
templateFile="main.bicep"
today=$(date +"%d-%b-%Y")
deploymentName="mg-scope-"$today
az deployment mg create \
--management-group-id $managementGroupId \
--name $deploymentName \
--location westus \
--template-file $templateFile
Разверните шаблон, выполнив в терминале следующие команды Azure PowerShell.
$managementGroupId = 'SecretRND'
$templateFile = 'main.bicep'
$today = Get-Date -Format 'MM-dd-yyyy'
$deploymentName = "mg-scope-$today"
New-AzManagementGroupDeployment `
-ManagementGroupId $managementGroupId `
-Name $deploymentName `
-Location westus `
-TemplateFile $templateFile
Обратите внимание, что, как и при развертывании подписки, вы явно указываете имя и расположение для метаданных развертывания. Кроме того, нужно указать сегодняшнюю дату, чтобы сократить вероятность использования имени имеющегося развертывания.
Развертывание может занять до двух минут. Затем отобразится сообщение об успешном выполнении.
Проверка развертывания
Как и в случае с развертываниями в области подписки, вы можете просматривать развертывания в области группы управления на портале Azure.
Переход на портал Azure.
На левой панели выберите Все службы.
В поле поиска введите группу управления, а затем выберите группы управления в списке результатов.
Выберите группу управления "Секретные проекты R&D ".
На левой панели в поле поиска введите развертывания, а затем выберите "Развертывания" в разделе "Управление".
Выберите развертывание, имя которого начинается с mg-scope, чтобы просмотреть развернутые ресурсы.
На панели Обзор для выбранного развертывания щелкните Сведения о развертывании, чтобы развернуть его. В списке указаны два ресурса Политики Azure.
Очистка ресурсов
Вы успешно развернули свои ресурсы в области группы управления. Созданные ресурсы политики и группу управления можно удалить.
az account management-group delete --name SecretRND
Remove-AzManagementGroup -GroupId SecretRND