Exercício - Implantar recursos em um grupo de gerenciamento
O Projeto Teddybear foi um sucesso, e agora o desenvolvimento secreto de P&D em sua empresa de brinquedos está pronto para pesquisar ainda mais novos brinquedos. A equipe começou a pedir novas assinaturas quase diariamente e precisa aplicar suas políticas em todas elas.
Em vez de duplicar as definições e atribuições de política em cada assinatura, você decidiu colocar todas as assinaturas da equipe em um grupo de gerenciamento. Em seguida, você pode aplicar a política a todo o grupo de gerenciamento em vez de a cada assinatura individualmente.
Neste exercício, você criará um novo modelo Bicep para aplicar definições e atribuições de política a um grupo de gerenciamento.
Durante o processo, você:
- Crie um novo grupo de gerenciamento.
- Crie um novo arquivo Bicep com escopo de grupo de gerenciamento.
- Adicione os recursos da Política do Azure ao arquivo.
- Vincule a atribuição de política à definição de política construindo manualmente a ID do recurso.
- Implante o modelo e verifique o resultado.
Este exercício requer os seguintes pré-requisitos:
- Os grupos de gerenciamento devem ser habilitados em seu locatário do Azure.
- Você precisa de permissões para criar um novo grupo de gerenciamento dentro da sua hierarquia.
- Você precisa de permissões para implantar recursos da Política do Azure no grupo de gerenciamento.
Se não conseguir cumprir estes requisitos com a sua conta atual do Azure, pode obter uma avaliação gratuita e criar uma nova subscrição e inquilino do Azure. Como alternativa, você pode ignorar as etapas de implantação neste exercício.
Criar um grupo de gestão
Neste exercício, você criará um novo grupo de gerenciamento para não afetar acidentalmente nenhum recurso em outra parte do seu ambiente do Azure.
No terminal do Visual Studio Code, execute os seguintes comandos da CLI do Azure:
az account management-group create \
--name SecretRND \
--display-name "Secret R&D Projects"
Por padrão, o novo grupo de gerenciamento é criado como um filho direto do grupo de gerenciamento raiz do locatário. Se você precisar colocar o grupo de gerenciamento em um local específico na hierarquia de grupo de gerenciamento existente, use o --parent-id
parâmetro e especifique o nome do grupo de gerenciamento a ser usado como pai.
No terminal do Visual Studio Code, execute os seguintes comandos do Azure PowerShell:
New-AzManagementGroup `
-GroupId 'SecretRND' `
-DisplayName 'Secret R&D Projects'
Por padrão, o novo grupo de gerenciamento é criado como filho do grupo de gerenciamento raiz do locatário. Se você precisar colocar o grupo de gerenciamento em um local específico na hierarquia de grupo de gerenciamento existente, use o -ParentId
parâmetro e especifique o nome do grupo de gerenciamento a ser usado como pai.
Em uma implantação real, você moveria as assinaturas da equipe de P&D para o grupo de gerenciamento. Para este exercício, você implantará as políticas mesmo que o grupo de gerenciamento não contenha assinaturas. O mesmo processo de implantação se aplica se o grupo de gerenciamento estiver vazio ou contiver assinaturas.
Criar um arquivo Bicep para implantar em um grupo de gerenciamento
Abra o Visual Studio Code.
Exclua o arquivo main.bicep e crie um novo arquivo vazio com o mesmo nome.
Salve o arquivo vazio.
Adicione o seguinte conteúdo ao arquivo.
targetScope = 'managementGroup'
Observe que essa linha de código informa ao Bicep que seu modelo será implantado no escopo do grupo de gerenciamento.
Adicionar uma definição de política
Como fez anteriormente, crie uma definição de política no arquivo Bicep.
Abaixo da linha que você acabou de adicionar, adicione a seguinte definição de variável:
var policyDefinitionName = 'DenyFandGSeriesVMs'
Na parte inferior do arquivo, adicione a seguinte definição de Política do 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' } } } }
A definição de política é a mesma que você aplicou anteriormente à sua assinatura. Desta vez, porém, você está implantando-o em um grupo de gerenciamento.
Adicionar uma atribuição de política
Agora você aplicará a política ao grupo de gerenciamento. Isso significa que a política será aplicada a todas as assinaturas que são filhas desse grupo de gerenciamento.
Abaixo da definição da
policyDefinitionName
variável, adicione a seguinte variável:var policyAssignmentName = 'DenyFandGSeriesVMs'
Na parte inferior do arquivo, no recurso de definição de política, adicione a seguinte atribuição de política:
resource policyAssignment 'Microsoft.Authorization/policyAssignments@2024-05-01' = { name: policyAssignmentName properties: { policyDefinitionId: policyDefinition.id } }
Guarde as alterações ao ficheiro.
Verificar o modelo
Seu modelo deve ter a seguinte aparência:
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
}
}
Caso contrário, copie o exemplo ou ajuste o modelo para corresponder ao exemplo.
Implementar o modelo no Azure
No terminal do Visual Studio Code, implante o modelo usando os seguintes comandos da CLI do Azure:
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
Implemente o modelo com os comandos do Azure PowerShell no terminal.
$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
Observe que, assim como nas implantações de assinatura, você está especificando explicitamente um nome e um local para os metadados de implantação. E você está usando a data de hoje para reduzir a chance de usar o nome de uma implantação existente.
A implantação pode levar um ou dois minutos para ser concluída e, em seguida, você verá uma implantação bem-sucedida.
Verificar a implementação
Assim como acontece com implantações com escopo de assinatura, você pode exibir implantações com escopo de grupo de gerenciamento no portal do Azure.
Aceda ao portal do Azure.
No painel esquerdo, selecione Todos os serviços.
Na caixa Pesquisar, insira grupo de gerenciamento e selecione Grupos de gerenciamento na lista de resultados.
Selecione o grupo de gestão de Projetos de I&D Secretos.
No painel esquerdo, na caixa Pesquisar, insira Implantações e selecione Implantações em Governança.
Selecione a implantação começando com mg-scope para ver quais recursos foram implantados.
No painel Visão geral da implantação selecionada, selecione Detalhes da implantação para expandi-la. Os dois recursos da Política do Azure estão listados.
Limpar os recursos
Você implantou com êxito os recursos com escopo do grupo de gerenciamento. Você pode remover os recursos de política e o grupo de gerenciamento que criou.
az account management-group delete --name SecretRND
Remove-AzManagementGroup -GroupId SecretRND