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.
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 { $_.Properties.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.