Udostępnij za pośrednictwem


Szybki start: tworzenie przypisania zasad w celu identyfikowania niezgodnych zasobów przy użyciu szablonu usługi ARM

W tym przewodniku Szybki start użyjesz szablonu usługi Azure Resource Manager (szablonu usługi ARM), aby utworzyć przypisanie zasad, które weryfikuje zgodność zasobu z zasadami platformy Azure. 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.

Szablon usługi Azure Resource Manager to plik JavaScript Object Notation (JSON), który definiuje infrastrukturę i konfigurację projektu. W szablonie używana jest składnia deklaratywna. Możesz opisać zamierzone wdrożenie bez konieczności pisania sekwencji poleceń programowania w celu utworzenia wdrożenia.

Jeśli Twoje środowisko spełnia wymagania wstępne i masz doświadczenie w korzystaniu z szablonów ARM, wybierz przycisk Wdróż na platformie Azure. Szablon zostanie otwarty w witrynie Azure Portal.

Zrzut ekranu przedstawiający przycisk Wdróż na platformie Azure w celu przypisania zasad za pomocą szablonu usługi Azure Resource Manager.

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.
  • Program Azure PowerShell lub interfejs wiersza polecenia platformy Azure.
  • Program Visual Studio Code i narzędzia usługi Azure Resource Manager (ARM).
  • 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.

Przegląd szablonu

Szablon usługi ARM tworzy przypisanie zasad dla zakresu grupy zasobów i przypisuje wbudowaną definicję zasad Inspekcja maszyn wirtualnych, które nie korzystają z dysków zarządzanych.

Utwórz następujący szablon usługi ARM jako policy-assignment.json.

  1. Otwórz program Visual Studio Code i wybierz pozycję Plik>nowy plik tekstowy.
  2. Skopiuj i wklej szablon arm do programu Visual Studio Code.
  3. Wybierz pozycję Plik>Zapisz i użyj nazwy pliku policy-assignment.json.
{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "policyAssignmentName": {
      "type": "string",
      "defaultValue": "audit-vm-managed-disks",
      "metadata": {
        "description": "Policy assignment name used in assignment's resource ID"
      }
    },
    "policyDefinitionID": {
      "type": "string",
      "defaultValue": "/providers/Microsoft.Authorization/policyDefinitions/06a78e20-9358-41c9-923c-fb736d382a4d",
      "metadata": {
        "description": "Policy definition ID"
      }
    },
    "policyDisplayName": {
      "type": "string",
      "defaultValue": "Audit VM managed disks",
      "metadata": {
        "description": "Display name for Azure portal"
      }
    }
  },
  "resources": [
    {
      "type": "Microsoft.Authorization/policyAssignments",
      "apiVersion": "2023-04-01",
      "name": "[parameters('policyAssignmentName')]",
      "properties": {
        "policyDefinitionId": "[parameters('policyDefinitionID')]",
        "description": "Policy assignment to resource group scope created with ARM template",
        "displayName": "[parameters('policyDisplayName')]",
        "nonComplianceMessages": [
          {
            "message": "Virtual machines should use managed disks"
          }
        ]
      }
    }
  ],
  "outputs": {
    "assignmentId": {
      "type": "string",
      "value": "[resourceId('Microsoft.Authorization/policyAssignments', parameters('policyAssignmentName'))]"
    }
  }
}

Typ zasobu zdefiniowany w szablonie usługi ARM to Microsoft.Authorization/policyAssignments.

Szablon używa trzech parametrów do wdrożenia przypisania zasad:

  • policyAssignmentName Tworzy przypisanie zasad o nazwie audit-vm-managed-disks.
  • policyDefinitionID używa identyfikatora wbudowanej definicji zasad. Do celów referencyjnych polecenia umożliwiające pobranie identyfikatora znajdują się w sekcji dotyczącej wdrażania szablonu.
  • policyDisplayName Tworzy nazwę wyświetlaną widoczną w witrynie Azure Portal.

Aby uzyskać więcej informacji na temat plików szablonów usługi ARM:

Wdrażanie szablonu usługi ARM

Szablon usługi ARM można wdrożyć za pomocą programu Azure PowerShell lub interfejsu wiersza polecenia platformy 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>

Możesz sprawdzić, czy Microsoft.PolicyInsights jest zarejestrowany. Jeśli tak nie jest, możesz uruchomić polecenie w celu zarejestrowania dostawcy zasobów.

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.

Następujące polecenia wyświetlają wartość parametru policyDefinitionID :

(Get-AzPolicyDefinition |
  Where-Object { $_.Properties.DisplayName -eq 'Audit VMs that do not use managed disks' }).ResourceId

Następujące polecenia wdrażają definicję zasad w grupie zasobów. Zastąp <resourceGroupName> ciąg nazwą grupy zasobów:

$rg = Get-AzResourceGroup -Name '<resourceGroupName>'

$deployparms = @{
Name = 'PolicyDeployment'
ResourceGroupName = $rg.ResourceGroupName
TemplateFile = 'policy-assignment.json'
}

New-AzResourceGroupDeployment @deployparms

Zmienna $rg przechowuje właściwości dla grupy zasobów. Zmienna $deployparms używa splattingu , aby utworzyć wartości parametrów i zwiększyć czytelność. Polecenie New-AzResourceGroupDeployment używa wartości parametrów zdefiniowanych w zmiennej $deployparms .

  • Name to nazwa wdrożenia wyświetlana w danych wyjściowych i na platformie Azure dla wdrożeń grupy zasobów.
  • ResourceGroupName$rg.ResourceGroupName używa właściwości , aby uzyskać nazwę grupy zasobów, do której przypisano zasady.
  • TemplateFile określa nazwę i lokalizację szablonu usługi ARM na komputerze lokalnym.

Wdrożenie przypisania zasad można sprawdzić za pomocą następującego polecenia:

Polecenie używa $rg.ResourceId właściwości , aby uzyskać identyfikator grupy zasobów.

Get-AzPolicyAssignment -Name 'audit-vm-managed-disks' -Scope $rg.ResourceId
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 Get-AzPolicyAssignment.

Identyfikowanie niezgodnych zasobów

Po wdrożeniu przypisania zasad maszyny wirtualne wdrożone w grupie zasobów są poddawane inspekcji pod kątem zgodności z zasadami dysku zarządzanego.

Stan zgodności dla nowego przypisania zasad może potrwać kilka minut i dostarczyć wyniki dotyczące stanu zasad.

$complianceparms = @{
ResourceGroupName = $rg.ResourceGroupName
PolicyAssignmentName = 'audit-vm-managed-disks'
Filter = 'IsCompliant eq false'
}

Get-AzPolicyState @complianceparms

Zmienna $complianceparms tworzy wartości parametrów używane 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/26/2024 19:02:56
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

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.