Rövid útmutató: Szabályzat-hozzárendelés létrehozása a nem megfelelő erőforrások Bicep-fájllal való azonosításához
Ebben a rövid útmutatóban egy Bicep-fájl használatával hoz létre egy szabályzat-hozzárendelést, amely ellenőrzi, hogy az erőforrás megfelel-e egy Azure-szabályzatnak. A szabályzat egy erőforráscsoporthoz van rendelve, és naplóz egy felügyelt lemezt nem használó virtuális gépeket. A szabályzat-hozzárendelés létrehozása után azonosítja a nem megfelelő virtuális gépeket.
A Bicep tartományspecifikus nyelv (DSL), amely deklaratív szintaxist használ az Azure-erőforrások üzembe helyezéséhez. Tömör szintaxist és megbízható típusbiztonságot kínál, valamint biztosítja a kódok újrafelhasználhatóságát. A Bicep a legjobb szerzői élményt nyújtja az Azure-beli infrastruktúra-kódmegoldásokhoz.
Beépített szabályzat- vagy kezdeményezésdefiníciók hozzárendelésekor nem kötelező egy verzióra hivatkozni. A beépített definíciók házirend-hozzárendelései alapértelmezés szerint a legújabb verzióhoz lesznek hozzárendelve, és ha másként nincs megadva, automatikusan öröklik az alverzió módosításait.
Előfeltételek
- Ha még nem rendelkezik Azure-fiókkal, első lépésként hozzon létre egy ingyenes fiókot.
- Bicep.
- Azure PowerShell vagy Azure CLI.
- Visual Studio Code és a Visual Studio Code Bicep-bővítménye.
Microsoft.PolicyInsights
Regisztrálni kell az Azure-előfizetésében. Erőforrás-szolgáltató regisztrálásához engedéllyel kell rendelkeznie az erőforrás-szolgáltatók regisztrálásához. Ez az engedély szerepel a közreműködői és tulajdonosi szerepkörökben.- Legalább egy olyan virtuális géppel rendelkező erőforráscsoport, amely nem használ felügyelt lemezeket.
A Bicep-fájl áttekintése
A Bicep-fájl létrehoz egy szabályzat-hozzárendelést egy erőforráscsoport-hatókörhöz, és hozzárendeli a felügyelt lemezeket nem használó beépített szabályzatdefiníciós naplózási virtuális gépeket.
Hozza létre a következő Bicep-fájlt policy-assignment.bicep néven.
- Nyissa meg a Visual Studio Code-ot, és válassza az Új szövegfájl fájlja>lehetőséget.
- Másolja és illessze be a Bicep-fájlt a Visual Studio Code-ba.
- Válassza a Fájl>mentése lehetőséget, és használja a policy-assignment.bicep fájlnevet.
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
A Bicep-fájlban definiált erőforrástípus a Microsoft.Authorization/policyAssignments.
A Bicep-fájl három paramétert használ a szabályzat-hozzárendelés üzembe helyezéséhez:
policyAssignmentName
létrehozza az audit-vm-managed-disks nevű szabályzat-hozzárendelést.policyDefinitionID
A beépített szabályzatdefiníció azonosítóját használja. Hivatkozásként az azonosító lekérésére szolgáló parancsok a sablon üzembe helyezésének szakaszában találhatók.policyDisplayName
az Azure Portalon látható megjelenítendő nevet hoz létre.
További információ a Bicep-fájlokról:
- További Bicep-minták kereséséhez nyissa meg a Kódminták tallózása lehetőséget.
- Ha többet szeretne megtudni az üzembe helyezési sablonreferenciákról, tekintse meg az Azure-sablonreferenciát.
- A Bicep-fájlok fejlesztésének megismeréséhez tekintse meg a Bicep dokumentációját.
- Az előfizetési szintű központi telepítésekről a Bicep-fájlokkal rendelkező előfizetések üzembe helyezését ismertető témakörben olvashat.
A Bicep-fájl üzembe helyezése
A Bicep-fájlt az Azure PowerShell vagy az Azure CLI használatával helyezheti üzembe.
Egy Visual Studio Code-terminál munkamenetből csatlakozzon az Azure-hoz. Ha több előfizetéssel rendelkezik, futtassa a parancsokat az előfizetés környezetének beállításához. Cserélje le a <subscriptionID>
értékét a saját Azure-előfizetése azonosítójára.
Connect-AzAccount
# Run these commands if you have multiple subscriptions
Get-AzSubScription
Set-AzContext -Subscription <subscriptionID>
Ellenőrizheti, hogy regisztrálva van-e Microsoft.PolicyInsights
. Ha nem, futtathat egy parancsot az erőforrás-szolgáltató regisztrálásához.
Get-AzResourceProvider -ProviderNamespace 'Microsoft.PolicyInsights' |
Select-Object -Property ResourceTypes, RegistrationState
Register-AzResourceProvider -ProviderNamespace 'Microsoft.PolicyInsights'
További információ: Get-AzResourceProvider és Register-AzResourceProvider.
A következő parancsok a policyDefinitionID
paraméter értékét jelenítik meg:
(Get-AzPolicyDefinition |
Where-Object { $_.Properties.DisplayName -eq 'Audit VMs that do not use managed disks' }).ResourceId
Az alábbi parancsok üzembe helyezik a szabályzatdefiníciót az erőforráscsoportban. Cserélje le <resourceGroupName>
az erőforráscsoport nevére:
$rg = Get-AzResourceGroup -Name '<resourceGroupName>'
$deployparms = @{
Name = 'PolicyDeployment'
ResourceGroupName = $rg.ResourceGroupName
TemplateFile = 'policy-assignment.bicep'
}
New-AzResourceGroupDeployment @deployparms
A $rg
változó az erőforráscsoport tulajdonságait tárolja. A $deployparms
változó splatting használatával hozza létre a paraméterértékeket, és javítja az olvashatóságot. A New-AzResourceGroupDeployment
parancs a változóban definiált $deployparms
paraméterértékeket használja.
Name
a kimenetben és az Azure-ban az erőforráscsoport üzemelő példányaihoz megjelenített üzembehelyezési név.ResourceGroupName
A tulajdonság használatával$rg.ResourceGroupName
lekérheti annak az erőforráscsoportnak a nevét, amelyhez a szabályzat hozzá van rendelve.TemplateFile
Megadja a Bicep-fájl nevét és helyét a helyi számítógépen.
A szabályzat-hozzárendelés üzembe helyezését a következő paranccsal ellenőrizheti:
A parancs a $rg.ResourceId
tulajdonság használatával kéri le az erőforráscsoport azonosítóját.
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
További információ: Get-AzPolicyAssignment.
A nem megfelelő erőforrások azonosítása
A szabályzat-hozzárendelés üzembe helyezése után az erőforráscsoportban üzembe helyezett virtuális gépeket a rendszer a felügyelt lemezházirendnek való megfelelés érdekében naplózja.
Az új szabályzat-hozzárendelés megfelelőségi állapota néhány percet vesz igénybe, amíg aktívvá válik, és eredményeket ad a szabályzat állapotáról.
$complianceparms = @{
ResourceGroupName = $rg.ResourceGroupName
PolicyAssignmentName = 'audit-vm-managed-disks'
Filter = 'IsCompliant eq false'
}
Get-AzPolicyState @complianceparms
A $complianceparms
változó a parancsban Get-AzPolicyState
használt paraméterértékeket hozza létre.
ResourceGroupName
lekéri az erőforráscsoport nevét a$rg.ResourceGroupName
tulajdonságból.PolicyAssignmentName
A szabályzat-hozzárendelés létrehozásakor használt nevet adja meg.Filter
kifejezéssel megkeresi azokat az erőforrásokat, amelyek nem felelnek meg a szabályzat-hozzárendelésnek.
Az eredmények az alábbi példához hasonlítanak, és ComplianceState
a következőket jelenítik meg 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, ]}
További információ: Get-AzPolicyState.
Az erőforrások eltávolítása
Remove-AzPolicyAssignment -Name 'audit-vm-managed-disks' -Scope $rg.ResourceId
Kijelentkezés az Azure PowerShell-munkamenetből:
Disconnect-AzAccount
Következő lépések
Ebben a rövid útmutatóban hozzárendelt egy szabályzatdefiníciót az Azure-környezetben megtalálható, nem megfelelő erőforrások azonosítása céljából.
Ha többet szeretne megtudni az erőforrás-megfelelőséget érvényesítő szabályzatok hozzárendeléséről, folytassa az oktatóanyagban.