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 Szybki start utworzysz przypisanie zasad w celu zidentyfikowania niezgodnych zasobów przy użyciu interfejsu API REST. 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.
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ą programu PowerShell i poleceń interfejsu wiersza polecenia az rest
platformy Azure. 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 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.
- Najnowsza wersja programu PowerShell lub powłoki Bash, na przykład Git Bash.
- Najnowsza wersja interfejsu wiersza polecenia platformy Azure.
- Program 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 pozycji 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, które zasoby lub grupa zasobów są wymuszane przez 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}
- Grupa zarządzania:
policyAssignmentName
: tworzy nazwę przypisania zasad dla przypisania. Nazwa jest uwzględniona we właściwości przypisaniapolicyAssignmentId
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, który ma zostać utworzony przez przypisanie.nonComplianceMessages
: ustaw komunikat, który ma być używany, gdy zasób jest oceniany jako niezgodny. Aby uzyskać więcej informacji, zobacz komunikaty o niezgodności przypisania.
Łą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.
az login
# Run these commands if you have multiple subscriptions
az account list --output table
az account set --subscription <subscriptionID>
Użyj az login
polecenia az rest, nawet jeśli używasz programu PowerShell, ponieważ w przykładach użyto poleceń az rest interfejsu wiersza polecenia platformy Azure.
Tworzenie przypisania zasad
W tym przykładzie utworzysz przypisanie zasad i przypiszesz definicję Przeprowadź inspekcję 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 zasad w istniejącym zakresie grupy zasobów, użyj następującego identyfikatora URI interfejsu API REST z plikiem treści żądania. Zastąp {subscriptionId}
wartości i {resourceGroupName}
wartościami. 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 powłoki Bash, takiej jak Git Bash, pomiń backtick.
Aby uzyskać więcej informacji, przejdź do pozycji Przypisania zasad — tworzenie.
Identyfikowanie niezgodnych zasobów
Stan zgodności dla nowego przypisania zasad może potrwać kilka minut i dostarczyć 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}
wartości 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 są oceniane jako niezgodne z definicją zasad o nazwie audit-vm-managed-disks utworzone za pomocą przypisania zasad. Ponownie zwróć uwagę, że backtick jest używany do ucieczki znaku dolara ($
) w filtrze. W przypadku klienta powłoki Bash ukośnik odwrotny (\
) jest typowym znakiem ucieczki.
Wyniki powinny wyglądać podobnie do następujących:
{
"@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, zobacz Stany zasad — wyświetlanie listy 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 i {resourceGroupName}
wartościami użytymi podczas tworzenia przypisania zasad. Polecenie wyświetla dane wyjściowe JSON w 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 zasad 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 pozycji Przypisania zasad — Usuwanie i przypisania zasad — Pobieranie.
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.