Szybki start: tworzenie przypisania zasad w celu identyfikowania niezgodnych zasobów przy użyciu programu Azure PowerShell
Pierwszym krokiem do zrozumienia pojęcia zgodności na platformie Azure jest określenie obecnej sytuacji dotyczącej Twoich zasobów. W tym przewodniku Szybki start utworzysz przypisanie zasad w celu zidentyfikowania niezgodnych zasobów przy użyciu programu Azure PowerShell. Zasady są przypisywane do grupy zasobów i przeprowadza inspekcję maszyn wirtualnych, które nie korzystają z dysków zarządzanych. Po utworzeniu przypisania zasad należy zidentyfikować niezgodne maszyny wirtualne.
Moduły programu Azure PowerShell mogą służyć do zarządzania zasobami platformy Azure z poziomu wiersza polecenia lub skryptów. W tym artykule wyjaśniono, jak utworzyć przypisanie zasad za pomocą programu Azure PowerShell.
Podczas przypisywania wbudowanej definicji zasad lub inicjatywy opcjonalne jest odwołanie do wersji. Przypisania zasad wbudowanych definicji są domyślne dla najnowszej wersji i automatycznie dziedziczą drobne zmiany wersji, chyba że określono inaczej.
Wymagania wstępne
- Jeśli nie masz jeszcze konta platformy Azure, przed rozpoczęciem utwórz bezpłatne konto.
- Azure PowerShell.
- Program Visual Studio Code
Microsoft.PolicyInsights
musi być zarejestrowana w ramach subskrypcji platformy Azure. Aby zarejestrować dostawcę zasobów, musisz mieć uprawnienia do rejestrowania dostawców zasobów. To uprawnienie jest uwzględniane w rolach Współautor i Właściciel.- Grupa zasobów z co najmniej jedną maszyną wirtualną, która nie korzysta z dysków zarządzanych.
Łączenie się z platformą Azure
Z poziomu sesji terminalu programu Visual Studio Code nawiąż połączenie z platformą Azure. Jeśli masz więcej niż jedną subskrypcję, uruchom polecenia, aby ustawić kontekst na subskrypcję. Zamień wartość <subscriptionID>
na identyfikator swojej subskrypcji platformy Azure.
Connect-AzAccount
# Run these commands if you have multiple subscriptions
Get-AzSubScription
Set-AzContext -Subscription <subscriptionID>
Rejestrowanie dostawcy zasobów
Po zarejestrowaniu dostawcy zasobów jest on dostępny do użycia w ramach subskrypcji platformy Azure.
Aby sprawdzić, czy Microsoft.PolicyInsights
jest zarejestrowany, uruchom polecenie Get-AzResourceProvider
. Dostawca zasobów zawiera kilka typów zasobów. Jeśli wynik zostanie NotRegistered
uruchomiony Register-AzResourceProvider
:
Get-AzResourceProvider -ProviderNamespace 'Microsoft.PolicyInsights' |
Select-Object -Property ResourceTypes, RegistrationState
Register-AzResourceProvider -ProviderNamespace 'Microsoft.PolicyInsights'
Aby uzyskać więcej informacji, przejdź do pozycji Get-AzResourceProvider i Register-AzResourceProvider.
Utworzenie przypisania zasad
Użyj następujących poleceń, aby utworzyć nowe przypisanie zasad dla grupy zasobów. W tym przykładzie użyto istniejącej grupy zasobów zawierającej maszynę wirtualną bez dysków zarządzanych. Grupa zasobów jest zakresem przypisania zasad. W tym przykładzie użyto wbudowanej definicji zasad Inspekcja maszyn wirtualnych, które nie korzystają z dysków zarządzanych.
Uruchom następujące polecenia i zastąp <resourceGroupName>
ciąg nazwą grupy zasobów:
$rg = Get-AzResourceGroup -Name '<resourceGroupName>'
$definition = Get-AzPolicyDefinition |
Where-Object { $_.DisplayName -eq 'Audit VMs that do not use managed disks' }
Zmienna $rg
przechowuje właściwości grupy zasobów, a $definition
zmienna przechowuje właściwości definicji zasad. Właściwości są używane w kolejnych poleceniach.
Uruchom następujące polecenie, aby utworzyć przypisanie zasad:
$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
Zmienna $policyparms
używa splattingu , aby utworzyć wartości parametrów i zwiększyć czytelność. Polecenie New-AzPolicyAssignment
używa wartości parametrów zdefiniowanych w zmiennej $policyparms
.
Name
Tworzy nazwę przypisania zasad używaną w przypisania przypisaniaResourceId
.DisplayName
to nazwa przypisania zasad i jest widoczna w witrynie Azure Portal.Scope
$rg.ResourceId
używa właściwości , aby przypisać zasady do grupy zasobów.PolicyDefinition
przypisuje definicję zasad przechowywaną w zmiennej$definition
.Description
można użyć do dodania kontekstu dotyczącego przypisania zasad.
Wyniki przypisania zasad przypominają następujący przykład:
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
Aby uzyskać więcej informacji, przejdź do pozycji New-AzPolicyAssignment.
Jeśli chcesz ponownie odtworzyć informacje o przypisaniu zasad, uruchom następujące polecenie:
Get-AzPolicyAssignment -Name 'audit-vm-managed-disks' -Scope $rg.ResourceId
Identyfikowanie niezgodnych zasobów
Stan zgodności dla nowego przypisania zasad może potrwać kilka minut i dostarczyć wyniki dotyczące stanu zasad.
Użyj następującego polecenia, aby zidentyfikować zasoby, które nie są zgodne z utworzonym przypisaniem zasad:
$complianceparms = @{
ResourceGroupName = $rg.ResourceGroupName
PolicyAssignmentName = 'audit-vm-managed-disks'
Filter = 'IsCompliant eq false'
}
Get-AzPolicyState @complianceparms
Zmienna $complianceparms
używa splattingu do tworzenia wartości parametrów używanych w poleceniu Get-AzPolicyState
.
ResourceGroupName
pobiera nazwę grupy zasobów z$rg.ResourceGroupName
właściwości .PolicyAssignmentName
określa nazwę używaną podczas tworzenia przypisania zasad.Filter
używa wyrażenia do znajdowania zasobów, które nie są zgodne z przypisaniem zasad.
Wyniki są podobne do poniższego przykładu i ComplianceState
pokazują: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, ]}
Aby uzyskać więcej informacji, przejdź do polecenia Get-AzPolicyState.
Czyszczenie zasobów
Aby usunąć przypisanie zasad, uruchom następujące polecenie:
Remove-AzPolicyAssignment -Name 'audit-vm-managed-disks' -Scope $rg.ResourceId
Aby wylogować się z sesji programu Azure PowerShell:
Disconnect-AzAccount
Następne kroki
W tym przewodniku Szybki start została przypisana definicja zasad mających na celu zidentyfikowanie niezgodnych zasobów w środowisku platformy Azure.
Aby dowiedzieć się więcej na temat przypisywania zasad, które weryfikują zgodność zasobów, przejdź do samouczka.