Udostępnij za pośrednictwem


Szybki start: tworzenie przypisania zasad w celu identyfikowania niezgodnych zasobów za pomocą interfejsu API REST

Pierwszym krokiem do zrozumienia pojęcia zgodności na platformie Azure jest określenie obecnej sytuacji dotyczącej Twoich zasobów. W tym przewodniku szybkiego startu utworzysz przypisanie polityki w celu zidentyfikowania niezgodnych zasobów za pomocą interfejsu REST API. Zasada jest przypisana do grupy zasobów i kontroluje maszyny wirtualne, które nie korzystają z dysków zarządzanych. Po utworzeniu przypisania zasad, zidentyfikujesz niezgodne maszyny wirtualne.

W tym przewodniku użyto interfejsu API REST do utworzenia przypisania zasad i zidentyfikowania niezgodnych zasobów w środowisku platformy Azure. Przykłady w tym artykule używają PowerShell i poleceń Azure CLI az rest. Możesz również uruchomić az rest polecenia z powłoki Bash, takiej jak Git Bash.

Podczas przypisywania wbudowanej definicji zasad lub inicjatywy opcjonalne jest odwołanie do wersji. Przypisania definicji wbudowanych zasad domyślnie korzystają z najnowszej wersji i automatycznie uwzględniają 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.
  • Najnowsza wersja programu PowerShell lub powłoki Bash, jak Git Bash.
  • Najnowsza wersja interfejsu wiersza polecenia platformy Azure.
  • Visual Studio Code
  • Grupa zasobów z co najmniej jedną maszyną wirtualną, która nie korzysta z dysków zarządzanych.

Przejrzyj składnię interfejsu API REST

Istnieją dwa elementy do uruchamiania poleceń interfejsu API REST: identyfikator URI interfejsu API REST i treść żądania. Aby uzyskać więcej informacji, przejdź do Przypisania zasad - Tworzenie.

W poniższym przykładzie przedstawiono składnię identyfikatora URI interfejsu API REST w celu utworzenia definicji zasad.

PUT https://management.azure.com/{scope}/providers/Microsoft.Authorization/policyAssignments/{policyAssignmentName}?api-version=2023-04-01
  • scope: Zakres określa, na jakie zasoby lub grupę zasobów jest egzekwowane przypisanie zasad. Może ona zawierać zakres od grupy zarządzania do pojedynczego zasobu. Zastąp {scope} element jednym z następujących wzorców:
    • Grupa zarządzania: /providers/Microsoft.Management/managementGroups/{managementGroup}
    • Subskrypcje: /subscriptions/{subscriptionId}
    • Grupa zasobów: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}
    • Zasób: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/[{parentResourcePath}/]{resourceType}/{resourceName}
  • policyAssignmentName: tworzy nazwę przypisania polityki dla Twojego przypisania. Nazwa jest uwzględniona we właściwości policyAssignmentId przypisania zasad.

Poniższy przykład to kod JSON umożliwiający utworzenie pliku treści żądania.

{
  "properties": {
    "displayName": "",
    "description": "",
    "policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/11111111-1111-1111-1111-111111111111",
    "nonComplianceMessages": [
      {
        "message": ""
      }
    ]
  }
}
  • displayName: Nazwa wyświetlana przypisania zasad.
  • description: może służyć do dodawania kontekstu dotyczącego przypisania zasad.
  • policyDefinitionId: identyfikator definicji zasad używany do utworzenia przypisania.
  • nonComplianceMessages: Ustaw komunikat, który będzie używany, gdy zasób jest oceniany jako niezgodny. Aby uzyskać więcej informacji, zobacz komunikaty o niezgodności z przypisaniem.

Łą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 tę subskrypcję. Zamień wartość <subscriptionID> na identyfikator swojej subskrypcji platformy Azure.

az login

# Run these commands if you have multiple subscriptions
az account list --output table
az account set --subscription <subscriptionID>

Użyj az login, nawet jeśli korzystasz z programu PowerShell, ponieważ w przykładach użyto poleceń Azure CLI az rest.

Utwórz przypisanie zasad

W tym przykładzie tworzysz przypisanie zasad i przypisujesz definicję Przeprowadzenie audytu maszyn wirtualnych, które nie używają dysków zarządzanych.

Treść żądania jest potrzebna do utworzenia przypisania. Zapisz następujący kod JSON w pliku o nazwie request-body.json.

{
  "properties": {
    "displayName": "Audit VM managed disks",
    "description": "Policy assignment to resource group scope created with REST API",
    "policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/06a78e20-9358-41c9-923c-fb736d382a4d",
    "nonComplianceMessages": [
      {
        "message": "Virtual machines should use managed disks"
      }
    ]
  }
}

Aby utworzyć przypisanie polityki w zakresie istniejącej grupy zasobów, użyj następującego identyfikatora URI interfejsu API REST z plikiem treści żądania. Zamień {subscriptionId} i {resourceGroupName} na swoje wartości. Polecenie wyświetla dane wyjściowe JSON w powłoce.

az rest --method put --uri https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Authorization/policyAssignments/audit-vm-managed-disks?api-version=2023-04-01 --body `@request-body.json

W programie PowerShell funkcja backtick (`) jest wymagana do ucieczki at sign (@) w celu określenia nazwy pliku. W powłoce Bash, takiej jak Git Bash, pomiń znak odwrócony apostrof.

Aby uzyskać więcej informacji, przejdź do Przypisania zasad — Tworzenie.

Identyfikowanie niezgodnych zasobów

Stan zgodności dla nowego przypisania zasad aktywuje się po kilku minutach, po czym dostarcza wyniki dotyczące stanu zasad. Interfejs API REST służy do wyświetlania niezgodnych zasobów dla tego przypisania zasad, a dane wyjściowe są w formacie JSON.

Aby zidentyfikować niezgodne zasoby, uruchom następujące polecenie. Zastąp {subscriptionId} i {resourceGroupName} wartościami użytymi podczas tworzenia przypisania zasad.

az rest --method post --uri https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.PolicyInsights/policyStates/latest/queryResults?api-version=2019-10-01 --uri-parameters `$filter="complianceState eq 'NonCompliant' and PolicyAssignmentName eq 'audit-vm-managed-disks'"

Zapytania filter dotyczące zasobów, które oceniane są jako niespełniające wymagań definicji zasad o nazwie audit-vm-managed-disks, którą utworzyłeś przez przypisanie zasad. Ponownie zwróć uwagę, że backtick jest używany do ucieczki znaku dolara ($) w filtrze. W przypadku klienta Bash ukośnik odwrotny (\) jest typowym znakiem ucieczki.

Twoje wyniki przypominają następujący przykład:

{
  "@odata.context": "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.PolicyInsights/policyStates/$metadata#latest",
  "@odata.count": 1,
  "@odata.nextLink": null,
  "value": [
    {
      "@odata.context": "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.PolicyInsights/policyStates/$metadata#latest/$entity",
      "@odata.id": null,
      "complianceReasonCode": "",
      "complianceState": "NonCompliant",
      "effectiveParameters": "",
      "isCompliant": false,
      "managementGroupIds": "",
      "policyAssignmentId": "/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/microsoft.authorization/policyassignments/audit-vm-managed-disks",
      "policyAssignmentName": "audit-vm-managed-disks",
      "policyAssignmentOwner": "tbd",
      "policyAssignmentParameters": "",
      "policyAssignmentScope": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}",
      "policyAssignmentVersion": "",
      "policyDefinitionAction": "audit",
      "policyDefinitionCategory": "tbd",
      "policyDefinitionGroupNames": [
        ""
      ],
      "policyDefinitionId": "/providers/microsoft.authorization/policydefinitions/06a78e20-9358-41c9-923c-fb736d382a4d",
      "policyDefinitionName": "06a78e20-9358-41c9-923c-fb736d382a4d",
      "policyDefinitionReferenceId": "",
      "policyDefinitionVersion": "1.0.0",
      "policySetDefinitionCategory": "",
      "policySetDefinitionId": "",
      "policySetDefinitionName": "",
      "policySetDefinitionOwner": "",
      "policySetDefinitionParameters": "",
      "policySetDefinitionVersion": "",
      "resourceGroup": "{resourceGroupName}",
      "resourceId": "/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/microsoft.compute/virtualmachines/{vmName}>",
      "resourceLocation": "westus3",
      "resourceTags": "tbd",
      "resourceType": "Microsoft.Compute/virtualMachines",
      "subscriptionId": "{subscriptionId}",
      "timestamp": "2024-03-26T02:19:28.3720191Z"
    }
  ]
}

Aby uzyskać więcej informacji, przejdź do Stany polityk - Lista wyników zapytania dla grupy zasobów.

Czyszczenie zasobów

Aby usunąć przypisanie zasad, użyj następującego polecenia. Zastąp {subscriptionId} wartości te i {resourceGroupName} wartościami użytymi podczas tworzenia przypisania zasad. Polecenie wyświetla dane wyjściowe JSON w twojej powłoce.

az rest --method delete --uri https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Authorization/policyAssignments/audit-vm-managed-disks?api-version=2023-04-01

Możesz sprawdzić, czy przypisanie reguł zostało usunięte za pomocą następującego polecenia. W powłoce zostanie wyświetlony komunikat.

az rest --method get --uri https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Authorization/policyAssignments/audit-vm-managed-disks?api-version=2023-04-01
The policy assignment 'audit-vm-managed-disks' is not found.

Aby uzyskać więcej informacji, przejdź do Przypisania zasad - Usuwanie i Przypisania zasad - Pobieranie.

Następne kroki

W tym szybkim starcie przypisano definicję zasady w celu zidentyfikowania niezgodnych zasobów w środowisku Azure.

Aby dowiedzieć się więcej na temat przypisywania zasad, które weryfikują zgodność zasobów, przejdź do samouczka.