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
- Pokud nemáte účet Azure, vytvořte si bezplatný účet před tím, než začnete.
- Bicep
- Azure PowerShell nebo Azure CLI.
- Visual Studio Code a rozšíření Bicep pro Visual Studio Code
Microsoft.PolicyInsights
musí být zaregistrovaný ve vašem předplatném Azure. Pokud chcete zaregistrovat poskytovatele prostředků, musíte mít oprávnění k registraci poskytovatelů prostředků. Toto oprávnění je součástí rolí Přispěvatel a Vlastník.- Skupina prostředků s alespoň jedním virtuálním počítačem, který nepoužívá spravované disky.
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.
- Otevřete Visual Studio Code a vyberte Soubor>nový textový soubor.
- Zkopírujte a vložte soubor Bicep do editoru Visual Studio Code.
- 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:
- Další ukázky Bicep najdete v tématu Procházet ukázky kódu.
- Další informace o referenčních informacích k šablonám pro nasazení najdete v referenčních informacích k šablonám Azure.
- Informace o vývoji souborů Bicep najdete v dokumentaci k Bicep.
- Další informace o nasazeních na úrovni předplatného najdete v části Nasazení předplatného pomocí souborů 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.