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 przypisania ResourceId.
  • 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.