Snabbstart: Skapa en principtilldelning för att identifiera icke-kompatibla resurser med Hjälp av Azure PowerShell
Det första steget mot att förstå kompatibilitet i Azure är att identifiera dina resursers status. I den här snabbstarten skapar du en principtilldelning för att identifiera icke-kompatibla resurser med hjälp av Azure PowerShell. Principen tilldelas till en resursgrupp och granskar virtuella datorer som inte använder hanterade diskar. När du har skapat principtilldelningen identifierar du icke-kompatibla virtuella datorer.
Azure PowerShell-modulerna kan användas för att hantera Azure-resurser från kommandoraden eller i skript. Den här artikeln beskriver hur du använder Azure PowerShell för att skapa en principtilldelning.
När du tilldelar en inbyggd princip eller initiativdefinition är det valfritt att referera till en version. Principtilldelningar av inbyggda definitioner är standard för den senaste versionen och ärver automatiskt delversionsändringar om inget annat anges.
Förutsättningar
- Om du inte har något Azure-konto skapar du ett kostnadsfritt konto innan du börjar.
- Azure PowerShell.
- Visual Studio Code.
Microsoft.PolicyInsights
måste vara registrerad i din Azure-prenumeration. Om du vill registrera en resursprovider måste du ha behörighet att registrera resursprovidrar. Behörigheten ingår i rollerna Deltagare och Ägare.- En resursgrupp med minst en virtuell dator som inte använder hanterade diskar.
Ansluta till Azure
Anslut till Azure från en terminalsession i Visual Studio Code. Om du har fler än en prenumeration kör du kommandona för att ange kontext till din prenumeration. Ersätt <subscriptionID>
med ditt Azure-prenumerations-ID.
Connect-AzAccount
# Run these commands if you have multiple subscriptions
Get-AzSubScription
Set-AzContext -Subscription <subscriptionID>
Registrera resursprovider
När en resursprovider registreras är den tillgänglig att använda i din Azure-prenumeration.
Kontrollera om Microsoft.PolicyInsights
är registrerad genom att köra Get-AzResourceProvider
. Resursprovidern innehåller flera resurstyper. Om resultatet NotRegistered
körs Register-AzResourceProvider
:
Get-AzResourceProvider -ProviderNamespace 'Microsoft.PolicyInsights' |
Select-Object -Property ResourceTypes, RegistrationState
Register-AzResourceProvider -ProviderNamespace 'Microsoft.PolicyInsights'
Mer information finns i Get-AzResourceProvider och Register-AzResourceProvider.
Skapa principtilldelning
Använd följande kommandon för att skapa en ny principtilldelning för resursgruppen. I det här exemplet används en befintlig resursgrupp som innehåller en virtuell dator utan hanterade diskar. Resursgruppen är omfånget för principtilldelningen. I det här exemplet används den inbyggda principdefinitionen Granska virtuella datorer som inte använder hanterade diskar.
Kör följande kommandon och ersätt <resourceGroupName>
med resursgruppens namn:
$rg = Get-AzResourceGroup -Name '<resourceGroupName>'
$definition = Get-AzPolicyDefinition |
Where-Object { $_.DisplayName -eq 'Audit VMs that do not use managed disks' }
Variabeln $rg
lagrar egenskaper för resursgruppen och variabeln $definition
lagrar principdefinitionens egenskaper. Egenskaperna används i efterföljande kommandon.
Kör följande kommando för att skapa principtilldelningen:
$policyparms = @{
Name = 'audit-vm-managed-disks'
DisplayName = 'Audit VM managed disks'
Scope = $rg.ResourceId
PolicyDefinition = $definition
Description = 'Az PowerShell policy assignment to resource group'
}
New-AzPolicyAssignment @policyparms
Variabeln $policyparms
använder splatting för att skapa parametervärden och förbättra läsbarheten. Kommandot New-AzPolicyAssignment
använder parametervärdena som definierats i variabeln $policyparms
.
Name
skapar det principtilldelningsnamn som används i tilldelningensResourceId
.DisplayName
är namnet på principtilldelningen och visas i Azure-portalen.Scope
använder egenskapen$rg.ResourceId
för att tilldela principen till resursgruppen.PolicyDefinition
tilldelar den principdefinition som lagras i variabeln$definition
.Description
kan användas för att lägga till kontext om principtilldelningen.
Resultatet av principtilldelningen liknar följande exempel:
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
Mer information finns i New-AzPolicyAssignment.
Kör följande kommando om du vill spela upp information om principtilldelningen på nytt:
Get-AzPolicyAssignment -Name 'audit-vm-managed-disks' -Scope $rg.ResourceId
Identifiera icke-kompatibla resurser
Efterlevnadstillståndet för en ny principtilldelning tar några minuter att bli aktiv och ge resultat om principens tillstånd.
Använd följande kommando för att identifiera resurser som inte är kompatibla med den principtilldelning som du skapade:
$complianceparms = @{
ResourceGroupName = $rg.ResourceGroupName
PolicyAssignmentName = 'audit-vm-managed-disks'
Filter = 'IsCompliant eq false'
}
Get-AzPolicyState @complianceparms
Variabeln $complianceparms
använder splatting för att skapa parametervärden som används i Get-AzPolicyState
kommandot.
ResourceGroupName
hämtar resursgruppens namn från egenskapen$rg.ResourceGroupName
.PolicyAssignmentName
anger namnet som användes när principtilldelningen skapades.Filter
använder ett uttryck för att hitta resurser som inte är kompatibla med principtilldelningen.
Dina resultat liknar följande exempel och ComplianceState
visar NonCompliant
:
Timestamp : 2/14/2024 18:25:37
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, ]}
Mer information finns i Get-AzPolicyState.
Rensa resurser
Kör följande kommando för att ta bort principtilldelningen:
Remove-AzPolicyAssignment -Name 'audit-vm-managed-disks' -Scope $rg.ResourceId
Logga ut från Azure PowerShell-sessionen:
Disconnect-AzAccount
Nästa steg
I den här snabbstarten har du tilldelat en principdefinition för att identifiera icke-kompatibla resurser i Azure-miljön.
Om du vill veta mer om hur du tilldelar principer som validerar resursefterlevnad fortsätter du till självstudien.