Rychlý start: Vytvoření přiřazení zásady k identifikaci nevyhovujících prostředků pomocí souboru Bicep

V tomto rychlém startu použijete soubor Bicep k vytvoření přiřazení zásad, které ověří dodržování předpisů prostředků pomocí zásad Azure. Zásada se přiřadí ke skupině prostředků a provede audit virtuálních počítačů, které nepoužívají spravované disky. Po vytvoření přiřazení zásady identifikujete nevyhovující virtuální počítače.

Bicep je jazyk specifický pro doménu (DSL), který k nasazování prostředků Azure používá deklarativní syntaxi. Poskytuje stručnou syntaxi, spolehlivou bezpečnost typů a podporu pro opakované použití kódu. Bicep nabízí nejlepší prostředí pro vytváření obsahu pro řešení infrastruktury jako kódu v Azure.

Při přiřazování předdefinované zásady nebo definice iniciativy je volitelné odkazovat na verzi. Přiřazení zásad předdefinovaných definic jsou výchozí pro nejnovější verzi a automaticky dědí změny podverze, pokud není uvedeno jinak.

Požadavky

Kontrola souboru Bicep

Soubor Bicep vytvoří přiřazení zásady pro obor skupiny prostředků a přiřadí předdefinované definice zásad Audit virtuálních počítačů, které nepoužívají spravované disky.

Vytvořte následující soubor Bicep jako policy-assignment.bicep.

  1. Otevřete Visual Studio Code a vyberte Soubor>nový textový soubor.
  2. Zkopírujte a vložte soubor Bicep do editoru Visual Studio Code.
  3. Vyberte Uložit soubor>a použijte zásadu-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

Typ prostředku definovaný v souboru Bicep je Microsoft.Authorization/policyAssignments.

Soubor Bicep používá k nasazení přiřazení zásady tři parametry:

  • policyAssignmentName vytvoří přiřazení zásady s názvem audit-vm-managed-disks.
  • policyDefinitionID používá ID předdefinované definice zásady. Pro referenci jsou příkazy pro získání ID v části pro nasazení šablony.
  • policyDisplayName vytvoří zobrazovaný název, který je viditelný na webu Azure Portal.

Další informace o souborech Bicep:

Nasazení souboru Bicep

Soubor Bicep můžete nasadit pomocí Azure PowerShellu nebo Azure CLI.

Z relace terminálu editoru Visual Studio Code se připojte k Azure. Pokud máte více než jedno předplatné, spusťte příkazy pro nastavení kontextu pro vaše předplatné. <subscriptionID> nahraďte ID vašeho předplatného Azure.

Connect-AzAccount

# Run these commands if you have multiple subscriptions
Get-AzSubScription
Set-AzContext -Subscription <subscriptionID>

Můžete ověřit, jestli Microsoft.PolicyInsights je zaregistrovaný. Pokud tomu tak není, můžete spustit příkaz pro registraci poskytovatele prostředků.

Get-AzResourceProvider -ProviderNamespace 'Microsoft.PolicyInsights' |
   Select-Object -Property ResourceTypes, RegistrationState

Register-AzResourceProvider -ProviderNamespace 'Microsoft.PolicyInsights'

Další informace najdete v rutině Get-AzResourceProvider a Register-AzResourceProvider.

Následující příkazy zobrazují hodnotu parametru policyDefinitionID :

(Get-AzPolicyDefinition |
  Where-Object { $_.Properties.DisplayName -eq 'Audit VMs that do not use managed disks' }).ResourceId

Následující příkazy nasadí definici zásady do vaší skupiny prostředků. Nahraďte <resourceGroupName> názvem vaší skupiny prostředků:

$rg = Get-AzResourceGroup -Name '<resourceGroupName>'

$deployparms = @{
Name = 'PolicyDeployment'
ResourceGroupName = $rg.ResourceGroupName
TemplateFile = 'policy-assignment.bicep'
}

New-AzResourceGroupDeployment @deployparms

Proměnná $rg ukládá vlastnosti pro skupinu prostředků. Proměnná $deployparms pomocí splattingu vytváří hodnoty parametrů a zlepšuje čitelnost. Příkaz New-AzResourceGroupDeployment používá hodnoty parametrů definované v $deployparms proměnné.

  • Name je název nasazení zobrazený ve výstupu a v Azure pro nasazení skupiny prostředků.
  • ResourceGroupName$rg.ResourceGroupName použije vlastnost k získání názvu vaší skupiny prostředků, ve které je zásada přiřazena.
  • TemplateFile určuje název a umístění souboru Bicep v místním počítači.

Nasazení přiřazení zásad můžete ověřit pomocí následujícího příkazu:

Příkaz použije $rg.ResourceId vlastnost k získání ID skupiny prostředků.

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

Další informace najdete v tématu Get-AzPolicyAssignment.

Zjištění nevyhovujících prostředků

Po nasazení přiřazení zásad se virtuální počítače nasazené do skupiny prostředků auditují kvůli dodržování zásad spravovaného disku.

Stav dodržování předpisů pro nové přiřazení zásad trvá několik minut, než se aktivuje a poskytne výsledky o stavu zásady.

$complianceparms = @{
ResourceGroupName = $rg.ResourceGroupName
PolicyAssignmentName = 'audit-vm-managed-disks'
Filter = 'IsCompliant eq false'
}

Get-AzPolicyState @complianceparms

Proměnná $complianceparms vytvoří hodnoty parametrů použité v Get-AzPolicyState příkazu.

  • ResourceGroupName získá název skupiny prostředků z $rg.ResourceGroupName vlastnosti.
  • PolicyAssignmentName určuje název použitý při vytvoření přiřazení zásady.
  • Filter používá výraz k vyhledání prostředků, které nevyhovují přiřazení zásad.

Výsledky se podobají následujícímu příkladu a ComplianceState ukazují 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, ]}

Další informace najdete v rutině Get-AzPolicyState.

Vyčištění prostředků

Remove-AzPolicyAssignment -Name 'audit-vm-managed-disks' -Scope $rg.ResourceId

Odhlášení z relace Azure PowerShellu:

Disconnect-AzAccount

Další kroky

V tomto rychlém startu jste přiřadili definici zásady pro identifikaci prostředků, které nedodržují předpisy, ve vašem prostředí Azure.

Další informace o přiřazování zásad, které ověřují dodržování předpisů prostředků, najdete v tomto kurzu.