Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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. Policyn tilldelas en resursgrupp och granskar virtuella maskiner 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.PolicyInsightsmå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 rollen Bidragsgivare 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 är NotRegistered kör 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 policytilldelning
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 policytilldelningen. I det här exemplet används den inbyggda principdefinitionen Revidera 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 .
-
Nameskapar det principtilldelningsnamn som används i tilldelningensResourceId. -
DisplayNameär namnet på principtilldelningen och visas i Azure Portal. -
Scopeanvänder egenskapen$rg.ResourceIdför att tilldela principen till resursgruppen. -
PolicyDefinitiontilldelar den principdefinition som lagras i variabeln$definition. -
Descriptionkan 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 aktiveras och visa resultat om principens status.
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.
-
ResourceGroupNamehämtar resursgruppens namn från egenskapen$rg.ResourceGroupName. -
PolicyAssignmentNameanger namnet som användes när principtilldelningen skapades. -
Filteranvä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.
För att lära dig mer om hur du tilldelar principer som validerar resursefterlevnad, gå vidare till handledningen.