Guia de início rápido: Criar uma atribuição de política para identificar os recursos fora de conformidade usando um arquivo Bicep
Neste guia de início rápido, você usará um arquivo Bicep para criar uma atribuição de política que valida a conformidade do recurso com uma política do Azure. A política é atribuída a um grupo de recursos e audita as máquinas virtuais que não usam discos gerenciados. Depois de criar a atribuição de política, você identifica máquinas virtuais não compatíveis.
O Bicep é um DSL (linguagem específica de domínio) que usa sintaxe declarativa para implantar recursos do Azure. Ele fornece sintaxe concisa, segurança de tipos confiável e suporte para reutilização de código. O Bicep oferece a melhor experiência de criação para suas soluções de infraestrutura como código no Azure.
Ao atribuir uma política interna ou uma definição de iniciativa, é opcional referenciar uma versão. As atribuições de política de definições internas são padrão para a última versão e herdam automaticamente as alterações de versão secundária, a menos que esteja especificado de outra forma.
Pré-requisitos
- Se você ainda não tiver uma conta do Azure, crie uma conta gratuita antes de começar.
- Bicep.
- Azure PowerShell ou CLI do Azure.
- Visual Studio Code e a extensão do Bicep para Visual Studio Code.
Microsoft.PolicyInsights
deve ser registrado em sua assinatura do Azure. Para registrar um provedor de recursos, você deve ter permissão para registrar provedores de recursos. Essa permissão está incluída nas funções Colaborador e Proprietário.- Um grupo de recursos com pelo menos uma máquina virtual que não usa discos gerenciados.
Examinar o arquivo Bicep
O arquivo Bicep cria uma atribuição de política para um escopo de grupo de recursos e atribui a definição de política interna VMs de auditoria que não usam discos gerenciados.
Crie o arquivo Bicep a seguir como policy-assignment.bicep.
- Abra o Visual Studio Code e selecione Arquivo>Novo Arquivo de Texto.
- Copie e cole o arquivo Bicep no Visual Studio Code.
- Selecione Arquivo>Salvar e use o nome do arquivo policy-assignment.bicep.
param policyAssignmentName string = 'audit-vm-managed-disks'
param policyDefinitionID string = '/providers/Microsoft.Authorization/policyDefinitions/06a78e20-9358-41c9-923c-fb736d382a4d'
param policyDisplayName string = 'Audit VM managed disks'
resource assignment 'Microsoft.Authorization/policyAssignments@2023-04-01' = {
name: policyAssignmentName
scope: resourceGroup()
properties: {
policyDefinitionId: policyDefinitionID
description: 'Policy assignment to resource group scope created with Bicep file'
displayName: policyDisplayName
nonComplianceMessages: [
{
message: 'Virtual machines should use managed disks'
}
]
}
}
output assignmentId string = assignment.id
O tipo de recurso definido no arquivo Bicep é Microsoft.Authorization/policyAssignments.
O arquivo Bicep usa três parâmetros para implementar a atribuição de política:
policyAssignmentName
cria a atribuição de política denominada audit-vm-managed-disks.policyDefinitionID
usa a ID da definição de política interna. Para referência, os comandos para obter a ID estão na seção para implantar o modelo.policyDisplayName
cria um nome de exibição visível no portal do Azure.
Para obter mais informações sobre arquivos Bicep:
- Para encontrar mais amostras de Bicep, acesse Procurar exemplos de código.
- Para saber mais sobre as referências de modelo para implantações, acesse Referência de modelo do Azure.
- Para saber como desenvolver arquivos Bicep, acesse Documentação do Bicep.
- Para saber mais sobre implantações no nível da assinatura, acesse Implantações de assinatura com arquivos Bicep.
Implante o arquivo Bicep
É possível implantar o arquivo Bicep com o Azure PowerShell ou a CLI do Azure.
Em uma sessão de terminal do Visual Studio Code, conecte-se ao Azure. Se você tiver mais de uma assinatura, execute os comandos para definir o contexto para sua assinatura. Substitua <subscriptionID>
por sua ID da assinatura do Azure.
Connect-AzAccount
# Run these commands if you have multiple subscriptions
Get-AzSubScription
Set-AzContext -Subscription <subscriptionID>
Você poderá verificar se Microsoft.PolicyInsights
estiver registrado. Se não ele estiver registrado, você poderá executar um comando para registrar o provedor de recursos.
Get-AzResourceProvider -ProviderNamespace 'Microsoft.PolicyInsights' |
Select-Object -Property ResourceTypes, RegistrationState
Register-AzResourceProvider -ProviderNamespace 'Microsoft.PolicyInsights'
Para obter mais informações, vá para Get-AzResourceProvider e Register-AzResourceProvider.
Os comandos a seguir exibem o valor do parâmetro policyDefinitionID
:
(Get-AzPolicyDefinition |
Where-Object { $_.Properties.DisplayName -eq 'Audit VMs that do not use managed disks' }).ResourceId
Os comandos a seguir implantam a definição de política no seu grupo de recursos. Substitua <resourceGroupName>
pelo nome do grupo de recursos:
$rg = Get-AzResourceGroup -Name '<resourceGroupName>'
$deployparms = @{
Name = 'PolicyDeployment'
ResourceGroupName = $rg.ResourceGroupName
TemplateFile = 'policy-assignment.bicep'
}
New-AzResourceGroupDeployment @deployparms
A variável $rg
armazena propriedades do grupo de recursos. A variável $deployparms
usa splatting para criar valores de parâmetro e melhorar a legibilidade. O comando New-AzResourceGroupDeployment
usa os valores de parâmetro definidos na variável $deployparms
.
Name
é o nome da implantação exibido na saída e no Azure para as implantações do grupo de recursos.ResourceGroupName
usa a propriedade$rg.ResourceGroupName
para obter o nome do grupo de recursos ao qual a política está atribuída.TemplateFile
especifica o nome e a localização do arquivo Bicep no computador local.
Você pode verificar a implantação da atribuição de política com o seguinte comando:
O comando usa a propriedade $rg.ResourceId
para obter a ID do grupo de recursos.
Get-AzPolicyAssignment -Name 'audit-vm-managed-disks' -Scope $rg.ResourceId
Name : audit-vm-managed-disks
ResourceId : /subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Authorization/policyAssignments/audit-vm-managed-disks
ResourceName : audit-vm-managed-disks
ResourceGroupName : {resourceGroupName}
ResourceType : Microsoft.Authorization/policyAssignments
SubscriptionId : {subscriptionId}
PolicyAssignmentId : /subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Authorization/policyAssignments/audit-vm-managed-disks
Properties : Microsoft.Azure.Commands.ResourceManager.Cmdlets.Implementation.Policy.PsPolicyAssignmentProperties
Para obter mais informações, acesse Get-AzPolicyAssignment.
Identificar recursos fora de conformidade
Depois que a atribuição de política é implantada, as máquinas virtuais implantadas no grupo de recursos são auditadas quanto à conformidade com a política de disco gerenciado.
O estado de conformidade de uma nova atribuição de política leva alguns minutos para se tornar ativo e fornecer resultados sobre o estado da política.
$complianceparms = @{
ResourceGroupName = $rg.ResourceGroupName
PolicyAssignmentName = 'audit-vm-managed-disks'
Filter = 'IsCompliant eq false'
}
Get-AzPolicyState @complianceparms
A variável $complianceparms
cria valores de parâmetro usados no comando Get-AzPolicyState
.
ResourceGroupName
obtém o nome do grupo de recursos da propriedade$rg.ResourceGroupName
.PolicyAssignmentName
especifica o nome usado quando a atribuição de política foi criada.Filter
usa uma expressão para localizar recursos que não estão em conformidade com a atribuição de política.
Seus resultados se assemelham ao exemplo a seguir e ComplianceState
mostram NonCompliant
:
Timestamp : 2/20/2024 18:55:45
ResourceId : /subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/microsoft.compute/virtualmachines/{vmId}
PolicyAssignmentId : /subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/microsoft.authorization/policyassignments/audit-vm-managed-disks
PolicyDefinitionId : /providers/microsoft.authorization/policydefinitions/06a78e20-9358-41c9-923c-fb736d382a4d
IsCompliant : False
SubscriptionId : {subscriptionId}
ResourceType : Microsoft.Compute/virtualMachines
ResourceLocation : {location}
ResourceGroup : {resourceGroupName}
ResourceTags : tbd
PolicyAssignmentName : audit-vm-managed-disks
PolicyAssignmentOwner : tbd
PolicyAssignmentScope : /subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}
PolicyDefinitionName : 06a78e20-9358-41c9-923c-fb736d382a4d
PolicyDefinitionAction : audit
PolicyDefinitionCategory : tbd
ManagementGroupIds : {managementGroupId}
ComplianceState : NonCompliant
AdditionalProperties : {[complianceReasonCode, ]}
Para obter mais informações, acesse Get-AzPolicyState.
Limpar os recursos
Remove-AzPolicyAssignment -Name 'audit-vm-managed-disks' -Scope $rg.ResourceId
Para sair da sua sessão do Azure PowerShell:
Disconnect-AzAccount
Próximas etapas
Neste guia de início rápido, você atribuiu uma definição de política para identificar recursos sem conformidade em seu ambiente do Azure.
Para saber mais sobre como atribuir políticas que validam a conformidade dos recursos, prossiga para o tutorial.