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 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.