Pobieranie danych zgodności zasobów platformy Azure
Jedną z największych zalet usługi Azure Policy jest wgląd w szczegółowe informacje i mechanizmy kontroli nad zasobami w ramach subskrypcji lub grupy zarządzania subskrypcji. Ta kontrolka może służyć do zapobiegania tworzeniu zasobów w niewłaściwej lokalizacji, wymuszania wspólnego i spójnego użycia tagów lub inspekcji istniejących zasobów pod kątem odpowiednich konfiguracji i ustawień. We wszystkich przypadkach dane są generowane przez usługę Azure Policy, aby umożliwić zrozumienie stanu zgodności środowiska.
Przed przejrzeniem danych zgodności ważne jest, aby zrozumieć stany zgodności w usłudze Azure Policy.
Istnieje kilka sposobów uzyskiwania dostępu do informacji o zgodności generowanych przez zasady i przypisania inicjatyw:
- Korzystanie z witryny Azure Portal
- Za pomocą skryptów wiersza polecenia
- Wyświetlając dzienniki usługi Azure Monitor
- Za pomocą zapytań usługi Azure Resource Graph
Zanim przyjrzymy się metodom raportowania zgodności, przyjrzyjmy się aktualizacji informacji o zgodności oraz częstotliwości i zdarzeń wyzwalających cykl oceny.
Wyzwalacze oceny
Wyniki ukończonego cyklu oceny są dostępne w dostawcy Microsoft.PolicyInsights
zasobów za pośrednictwem PolicyStates
operacji i PolicyEvents
. Aby uzyskać więcej informacji na temat operacji interfejsu API REST usługi Azure Policy Insights, zobacz Azure Policy Insights.
Oceny przypisanych zasad i inicjatyw mają miejsce w wyniku różnych zdarzeń:
Zasady lub inicjatywa jest nowo przypisana do zakresu. Zastosowanie przypisania do zdefiniowanego zakresu trwa około pięciu minut, a następnie cykl oceny rozpoczyna się dla odpowiednich zasobów względem nowo przypisanych zasad lub inicjatywy. W zależności od użytych efektów zasoby są oznaczone jako zgodne, niezgodne, wykluczone lub nieznane. Duża zasada lub inicjatywa oceniana pod kątem dużego zakresu zasobów może zająć trochę czasu, więc nie ma wstępnie zdefiniowanych oczekiwań dotyczących ukończenia cyklu oceny. Po zakończeniu zaktualizowane wyniki zgodności są dostępne w portalu i zestawach SDK.
Zaktualizowano zasady lub inicjatywę przypisaną do zakresu. Cykl oceny i czas dla tego scenariusza są takie same jak w przypadku nowego przypisania do zakresu.
Zasób jest wdrażany lub aktualizowany w zakresie przy użyciu przypisania za pośrednictwem usługi Azure Resource Manager, interfejsu API REST lub obsługiwanego zestawu SDK. W tym scenariuszu zdarzenie efektu (dołączanie, inspekcja, odmowa, wdrażanie) i informacje o stanie zgodności poszczególnych zasobów staną się dostępne w portalu i zestawach SDK około 15 minut później. To zdarzenie nie powoduje oceny innych zasobów.
Subskrypcja (typ
Microsoft.Resources/subscriptions
zasobu) jest tworzona lub przenoszona w hierarchii grup zarządzania z przypisaną definicją zasad przeznaczoną dla typu zasobu subskrypcji. Ocena obsługiwanych efektów subskrypcji (inspekcja, auditIfNotExist, deployIfNotExists, modyfikowanie), rejestrowanie i wszelkie akcje korygacyjne trwa około 30 minut.Wykluczenie z zasad jest tworzone, aktualizowane lub usuwane. W tym scenariuszu odpowiednie przypisanie jest oceniane dla zdefiniowanego zakresu wykluczeń.
Standardowy cykl oceny zgodności. Co 24 godziny przydziały są automatycznie ponownie oceniane. Duża zasada lub inicjatywa wielu zasobów może zająć trochę czasu, więc nie ma wstępnie zdefiniowanego oczekiwania co do czasu ukończenia cyklu oceny. Po zakończeniu zaktualizowane wyniki zgodności są dostępne w portalu i zestawach SDK.
Dostawca zasobów konfiguracji maszyny jest aktualizowany ze szczegółami zgodności przez zasób zarządzany.
Skanowanie na żądanie
Uwaga
Zgodnie z projektem usługa Azure Policy wyklucza wszystkie zasoby w ramach Microsoft.Resources
dostawcy zasobów (RP) z oceny zasad z wyjątkiem subskrypcji i grup zasobów, które można ocenić.
Skanowanie oceny na żądanie
Skanowanie ewaluacyjne subskrypcji lub grupy zasobów można uruchomić za pomocą interfejsu wiersza polecenia platformy Azure, programu Azure PowerShell, wywołania interfejsu API REST lub przy użyciu akcji GitHub Skanowania zgodności usługi Azure Policy. To skanowanie jest procesem asynchronicznym.
Uwaga
Nie wszyscy dostawcy zasobów platformy Azure obsługują skanowania ewaluacyjne na żądanie. Na przykład usługa Azure Virtual Network Manager (AVNM) obecnie nie obsługuje wyzwalaczy ręcznych ani standardowego cyklu oceny zgodności zasad (codzienne skanowania).
Skanowanie oceny na żądanie — Akcja usługi GitHub
Użyj akcji Skanowanie zgodności usługi Azure Policy, aby wyzwolić skanowanie oceny na żądanie z przepływu pracy usługi GitHub w jednym lub wielu zasobach, grupach zasobów lub subskrypcjach, a następnie brama przepływu pracy na podstawie stanu zgodności zasobów. Możesz również skonfigurować przepływ pracy do uruchamiania w zaplanowanym czasie, aby uzyskać najnowszy stan zgodności w dogodnym czasie. Opcjonalnie funkcja GitHub Actions może wygenerować raport dotyczący stanu zgodności zeskanowanych zasobów w celu dalszej analizy lub archiwizacji.
W poniższym przykładzie jest uruchamiane skanowanie pod kątem zgodności dla subskrypcji.
on:
schedule:
- cron: '0 8 * * *' # runs every morning 8am
jobs:
assess-policy-compliance:
runs-on: ubuntu-latest
steps:
- name: Login to Azure
uses: azure/login@v1
with:
creds: ${{secrets.AZURE_CREDENTIALS}}
- name: Check for resource compliance
uses: azure/policy-compliance-scan@v0
with:
scopes: |
/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Aby uzyskać więcej informacji i przykładów przepływu pracy, zobacz repozytorium GitHub Actions for Azure Policy Compliance Scan (Funkcja GitHub Actions dla skanowania pod kątem zgodności usługi Azure Policy).
Skanowanie oceny na żądanie — interfejs wiersza polecenia platformy Azure
Skanowanie zgodności jest uruchamiane za pomocą polecenia az policy state trigger-scan .
Domyślnie az policy state trigger-scan
uruchamia ocenę wszystkich zasobów w bieżącej subskrypcji. Aby rozpocząć ocenę dla określonej grupy zasobów, użyj parametru resource-group
. Poniższy przykład rozpoczyna skanowanie zgodności w bieżącej subskrypcji grupy zasobów MyRG :
az policy state trigger-scan --resource-group "MyRG"
Przed kontynuowaniem pracy z parametrem no-wait
możesz nie czekać na ukończenie procesu asynchronicznego.
Skanowanie oceny na żądanie — Azure PowerShell
Skanowanie zgodności jest uruchamiane za pomocą polecenia cmdlet Start-AzPolicyComplianceScan .
Domyślnie Start-AzPolicyComplianceScan
uruchamia ocenę wszystkich zasobów w bieżącej subskrypcji. Aby rozpocząć ocenę dla określonej grupy zasobów, użyj parametru ResourceGroupName
. Poniższy przykład rozpoczyna skanowanie zgodności w bieżącej subskrypcji grupy zasobów MyRG :
Start-AzPolicyComplianceScan -ResourceGroupName 'MyRG'
Program PowerShell może poczekać na ukończenie wywołania asynchronicznego przed dostarczeniem danych wyjściowych wyników lub uruchomieniem go w tle jako zadania. Aby użyć zadania programu PowerShell do uruchomienia skanowania zgodności w tle, użyj parametru AsJob
i ustaw wartość na obiekt, na przykład $job
w tym przykładzie:
$job = Start-AzPolicyComplianceScan -AsJob
Stan zadania można sprawdzić, sprawdzając $job
obiekt. Zadanie jest typu Microsoft.Azure.Commands.Common.AzureLongRunningJob
. Użyj Get-Member
obiektu $job
, aby wyświetlić dostępne właściwości i metody.
Podczas skanowania pod kątem zgodności sprawdź $job
wyniki wyjściowe obiektu, takie jak:
$job
Id Name PSJobTypeName State HasMoreData Location Command
-- ---- ------------- ----- ----------- -------- -------
2 Long Running O... AzureLongRunni... Running True localhost Start-AzPolicyCompliance...
Po zakończeniu State
skanowania zgodności właściwość zmieni się na Ukończono.
Skanowanie oceny na żądanie — REST
Jako proces asynchroniczny punkt końcowy REST do uruchomienia skanowania nie czeka na zakończenie skanowania. Zamiast tego udostępnia identyfikator URI do wykonywania zapytań o stan żądanej oceny.
Każdy identyfikator URI interfejsu API REST zawiera używane zmienne, które musisz zastąpić własnymi wartościami:
{YourRG}
— Zastąp ciąg nazwą grupy zasobów{subscriptionId}
— zastąp swoim identyfikatorem subskrypcji
Skanowanie obsługuje ocenę zasobów w subskrypcji lub w grupie zasobów. Uruchom skanowanie według zakresu za pomocą polecenia POST interfejsu API REST przy użyciu następujących struktur identyfikatorów URI:
Subskrypcja
POST https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyStates/latest/triggerEvaluation?api-version=2019-10-01
Grupa zasobów
POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{YourRG}/providers/Microsoft.PolicyInsights/policyStates/latest/triggerEvaluation?api-version=2019-10-01
Wywołanie zwraca stan Zaakceptowane 202. Uwzględniona w nagłówku odpowiedzi jest właściwością location
o następującym formacie:
https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/asyncOperationResults/{ResourceContainerGUID}?api-version=2019-10-01
{ResourceContainerGUID}
jest generowany statycznie dla żądanego zakresu. Jeśli zakres jest już uruchomiony skanowanie na żądanie, nowe skanowanie nie zostanie uruchomione. Zamiast tego nowe żądanie ma ten sam {ResourceContainerGUID}
location
identyfikator URI dla stanu. Polecenie GET interfejsu API REST dla identyfikatora location
URI zwraca wartość 202 Zaakceptowane, gdy ocena jest w toku. Po zakończeniu skanowania oceny zostanie zwrócony stan 200 OK . Treść ukończonego skanowania to odpowiedź JSON ze stanem:
{
"status": "Succeeded"
}
Skanowanie oceny na żądanie — Visual Studio Code
Rozszerzenie usługi Azure Policy dla programu Visual Studio Code może uruchamiać skanowanie ewaluacyjne dla określonego zasobu. To skanowanie jest procesem synchronicznym, w przeciwieństwie do metod azure PowerShell i REST. Aby uzyskać szczegółowe informacje i kroki, zobacz Ocena na żądanie z rozszerzeniem programu VS Code.
Portal
Witryna Azure Portal przedstawia graficzne środowisko wizualizacji i zrozumienia stanu zgodności w danym środowisku. Na stronie Zasady opcja Przegląd zawiera szczegółowe informacje o dostępnych zakresach dotyczących zgodności zasad i inicjatyw. Wraz ze stanem zgodności i liczbą na przypisanie zawiera on wykres przedstawiający zgodność w ciągu ostatnich siedmiu dni. Strona Zgodność zawiera wiele tych samych informacji (z wyjątkiem wykresu), ale udostępnia więcej opcji filtrowania i sortowania.
Ponieważ zasady lub inicjatywa można przypisać do różnych zakresów, tabela zawiera zakres dla każdego przypisania i typ przypisanej definicji. Podano również liczbę niezgodnych zasobów i niezgodnych zasad dla każdego przypisania. Wybranie zasad lub inicjatywy w tabeli zapewnia dokładniejsze przyjrzenie się zgodności dla tego konkretnego przypisania.
Lista zasobów na karcie Zgodność zasobów zawiera stan oceny istniejących zasobów dla bieżącego przypisania. Karta jest domyślnie ustawiona na Niezgodne, ale można je filtrować. Zdarzenia (dołączanie, inspekcja, odmowa, wdrażanie, modyfikowanie) wyzwalane przez żądanie utworzenia zasobu są wyświetlane na karcie Zdarzenia .
W przypadku zasobów trybu dostawcy zasobów na karcie Zgodność zasobów wybierz zasób lub kliknij prawym przyciskiem myszy wiersz i wybierz pozycję Wyświetl szczegóły zgodności powoduje otwarcie szczegółów zgodności składnika. Ta strona zawiera również karty umożliwiające wyświetlanie zasad przypisanych do tego zasobu, zdarzeń, zdarzeń składników i historii zmian.
Po powrocie na stronę zgodności zasobów wybierz i przytrzymaj (lub kliknij prawym przyciskiem myszy) w wierszu zdarzenia, na którym chcesz zebrać więcej szczegółów, a następnie wybierz pozycję Pokaż dzienniki aktywności. Zostanie otwarta strona dziennika aktywności i zostanie wstępnie przefiltrowana do wyszukiwania zawierającego szczegóły przypisania i zdarzeń. Dziennik aktywności zawiera więcej kontekstu i informacji o tych zdarzeniach.
Uwaga
Wyniki zgodności można wyeksportować z portalu za pomocą zapytań usługi Azure Resource Graph.
Wiersz polecenia
Te same informacje dostępne w portalu można pobrać za pomocą interfejsu API REST (w tym z usługą ARMClient), programu Azure PowerShell i interfejsu wiersza polecenia platformy Azure. Aby uzyskać szczegółowe informacje na temat interfejsu API REST, zobacz dokumentację usługi Azure Policy . Strony referencyjne interfejsu API REST mają zielony przycisk Wypróbuj na każdej operacji, która umożliwia wypróbowanie go bezpośrednio w przeglądarce.
Użyj elementu ARMClient lub podobnego narzędzia do obsługi uwierzytelniania na platformie Azure dla przykładów interfejsu API REST.
Podsumowanie wyników
Za pomocą interfejsu API REST podsumowania mogą być wykonywane przez kontener, definicję lub przypisanie. Oto przykład podsumowania na poziomie subskrypcji przy użyciu podsumowania dla subskrypcji usługi Azure Policy Insights:
POST https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyStates/latest/summarize?api-version=2019-10-01
Dane wyjściowe zawierają podsumowanie subskrypcji. W poniższych przykładowych danych wyjściowych podsumowane zgodność znajdują się w obszarze value.results.nonCompliantResources
i value.results.nonCompliantPolicies
. To żądanie zawiera dodatkowe szczegóły, w tym każde przypisanie, które składało się na niezgodne numery i informacje o definicji dla każdego przypisania. Każdy obiekt zasad w hierarchii zapewnia element queryResultsUri
, który może służyć do uzyskania bardziej szczegółowych informacji na tym poziomie.
{
"@odata.context": "https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyStates/$metadata#summary",
"@odata.count": 1,
"value": [
{
"@odata.id": null,
"@odata.context": "https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyStates/$metadata#summary/$entity",
"results": {
"queryResultsUri": "https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyStates/latest/queryResults?api-version=2019-10-01&$from=2018-05-18 04:28:22Z&$to=2018-05-19 04:28:22Z&$filter=ComplianceState eq 'NonCompliant'",
"nonCompliantResources": 15,
"nonCompliantPolicies": 1
},
"policyAssignments": [
{
"policyAssignmentId": "/subscriptions/{subscriptionId}/resourcegroups/rg-tags/providers/microsoft.authorization/policyassignments/37ce239ae4304622914f0c77",
"policySetDefinitionId": "",
"results": {
"queryResultsUri": "https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyStates/latest/queryResults?api-version=2019-10-01&$from=2018-05-18 04:28:22Z&$to=2018-05-19 04:28:22Z&$filter=ComplianceState eq 'NonCompliant' and PolicyAssignmentId eq '/subscriptions/{subscriptionId}/resourcegroups/rg-tags/providers/microsoft.authorization/policyassignments/37ce239ae4304622914f0c77'",
"nonCompliantResources": 15,
"nonCompliantPolicies": 1
},
"policyDefinitions": [
{
"policyDefinitionReferenceId": "",
"policyDefinitionId": "/providers/microsoft.authorization/policydefinitions/1e30110a-5ceb-460c-a204-c1c3969c6d62",
"effect": "deny",
"results": {
"queryResultsUri": "https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyStates/latest/queryResults?api-version=2019-10-01&$from=2018-05-18 04:28:22Z&$to=2018-05-19 04:28:22Z&$filter=ComplianceState eq 'NonCompliant' and PolicyAssignmentId eq '/subscriptions/{subscriptionId}/resourcegroups/rg-tags/providers/microsoft.authorization/policyassignments/37ce239ae4304622914f0c77' and PolicyDefinitionId eq '/providers/microsoft.authorization/policydefinitions/1e30110a-5ceb-460c-a204-c1c3969c6d62'",
"nonCompliantResources": 15
}
}
]
}
]
}
]
}
Wykonywanie zapytań o zasoby
W poprzednim przykładzie value.policyAssignments.policyDefinitions.results.queryResultsUri
przedstawiono przykładowy identyfikator URI dla wszystkich niezgodnych zasobów dla określonej definicji zasad. $filter
W wartości Wartość ComplianceState jest równa (eq) do NonCompliant
, PolicyAssignmentId
jest określona dla definicji zasad, a następnie sam PolicyDefinitionId. Przyczyną włączenia PolicyAssignmentId
elementu w filtrze jest to, że PolicyDefinitionId
element może istnieć w kilku przypisaniach zasad lub inicjatyw z różnymi zakresami. Określając wartości PolicyAssignmentId
i PolicyDefinitionId
, możemy być jawnie w wynikach, których szukamy. PolicyStates
Wcześniej użyliśmy elementu latest
, który automatycznie ustawia from
przedział czasu i to
z ostatnich 24 godzin.
https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyStates/latest/queryResults?api-version=2019-10-01&$from=2018-05-18 04:28:22Z&$to=2018-05-19 04:28:22Z&$filter=ComplianceState eq 'NonCompliant' and PolicyAssignmentId eq '/subscriptions/{subscriptionId}/resourcegroups/rg-tags/providers/microsoft.authorization/policyassignments/37ce239ae4304622914f0c77' and PolicyDefinitionId eq '/providers/microsoft.authorization/policydefinitions/1e30110a-5ceb-460c-a204-c1c3969c6d62'
Następująca przykładowa odpowiedź została przycięta do pojedynczego niezgodnego zasobu w celu zwięzłości. Szczegółowa odpowiedź zawiera kilka elementów danych dotyczących zasobu, zasad lub inicjatywy oraz przypisania. Zwróć uwagę, że można również zobaczyć, jakie parametry przypisania zostały przekazane do definicji zasad.
{
"@odata.context": "https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyStates/$metadata#latest",
"@odata.count": 15,
"value": [
{
"@odata.id": null,
"@odata.context": "https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyStates/$metadata#latest/$entity",
"timestamp": "2018-05-19T04:41:09Z",
"resourceId": "/subscriptions/{subscriptionId}/resourceGroups/rg-tags/providers/Microsoft.Compute/virtualMachines/linux",
"policyAssignmentId": "/subscriptions/{subscriptionId}/resourceGroups/rg-tags/providers/Microsoft.Authorization/policyAssignments/37ce239ae4304622914f0c77",
"policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/1e30110a-5ceb-460c-a204-c1c3969c6d62",
"effectiveParameters": "",
"ComplianceState": "NonCompliant",
"subscriptionId": "{subscriptionId}",
"resourceType": "/Microsoft.Compute/virtualMachines",
"resourceLocation": "westus2",
"resourceGroup": "RG-Tags",
"resourceTags": "tbd",
"policyAssignmentName": "37ce239ae4304622914f0c77",
"policyAssignmentOwner": "tbd",
"policyAssignmentParameters": "{\"tagName\":{\"value\":\"costCenter\"},\"tagValue\":{\"value\":\"Contoso-Test\"}}",
"policyAssignmentScope": "/subscriptions/{subscriptionId}/resourceGroups/RG-Tags",
"policyDefinitionName": "1e30110a-5ceb-460c-a204-c1c3969c6d62",
"policyDefinitionAction": "deny",
"policyDefinitionCategory": "tbd",
"policySetDefinitionId": "",
"policySetDefinitionName": "",
"policySetDefinitionOwner": "",
"policySetDefinitionCategory": "",
"policySetDefinitionParameters": "",
"managementGroupIds": "",
"policyDefinitionReferenceId": ""
}
]
}
Wyświetl zdarzenia
Po utworzeniu lub zaktualizowaniu zasobu zostanie wygenerowany wynik oceny zasad. Wyniki są nazywane zdarzeniami zasad. Użyj następującego identyfikatora URI, aby wyświetlić ostatnie zdarzenia zasad skojarzone z subskrypcją.
https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyEvents/default/queryResults?api-version=2019-10-01
Wyniki powinny wyglądać podobnie do następujących:
{
"@odata.context": "https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyEvents/$metadata#default",
"@odata.count": 1,
"value": [
{
"@odata.id": null,
"@odata.context": "https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyEvents/$metadata#default/$entity",
"NumAuditEvents": 16
}
]
}
Aby uzyskać więcej informacji na temat wykonywania zapytań dotyczących zdarzeń zasad, zobacz artykuł Azure Policy Events reference (Dokumentacja zdarzeń usługi Azure Policy).
Interfejs wiersza polecenia platformy Azure
Grupa poleceń interfejsu wiersza polecenia platformy Azure dla usługi Azure Policy obejmuje większość operacji dostępnych w interfejsie REST lub programie Azure PowerShell. Aby uzyskać pełną listę dostępnych poleceń, zobacz Interfejs wiersza polecenia platformy Azure — Omówienie usługi Azure Policy.
Przykład: pobieranie podsumowania stanu dla najbardziej przypisanych zasad z największą liczbą niezgodnych zasobów.
az policy state summarize --top 1
Górna część odpowiedzi wygląda następująco:
{
"odatacontext": "https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyStates/$metadata#summary/$entity",
"odataid": null,
"policyAssignments": [
{
"policyAssignmentId": "/subscriptions/{subscriptionId}/providers/microsoft.authorization/policyassignments/e0704696df5e4c3c81c873e8",
"policyDefinitions": [
{
"effect": "audit",
"policyDefinitionGroupNames": [
""
],
"policyDefinitionId": "/subscriptions/{subscriptionId}/providers/microsoft.authorization/policydefinitions/2e3197b6-1f5b-4b01-920c-b2f0a7e9b18a",
"policyDefinitionReferenceId": "",
"results": {
"nonCompliantPolicies": null,
"nonCompliantResources": 398,
"policyDetails": [
{
"complianceState": "noncompliant",
"count": 1
}
],
"policyGroupDetails": [
{
"complianceState": "noncompliant",
"count": 1
}
],
"queryResultsUri": "https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyStates/latest/queryResults?api-version=2019-10-01&$from=2020-07-14 14:01:22Z&$to=2020-07-15 14:01:22Z and PolicyAssignmentId eq '/subscriptions/{subscriptionId}/providers/microsoft.authorization/policyassignments/e0704696df5e4c3c81c873e8' and PolicyDefinitionId eq '/subscriptions/{subscriptionId}/providers/microsoft.authorization/policydefinitions/2e3197b6-1f5b-4b01-920c-b2f0a7e9b18a'",
"resourceDetails": [
{
"complianceState": "noncompliant",
"count": 398
},
{
"complianceState": "compliant",
"count": 4
}
]
}
}
],
...
Przykład: pobieranie rekordu stanu dla ostatnio ocenianego zasobu (wartość domyślna to sygnatura czasowa w kolejności malejącej).
az policy state list --top 1
[
{
"complianceReasonCode": "",
"complianceState": "Compliant",
"effectiveParameters": "",
"isCompliant": true,
"managementGroupIds": "{managementgroupId}",
"odatacontext": "https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyStates/$metadata#latest/$entity",
"odataid": null,
"policyAssignmentId": "/subscriptions/{subscriptionId}/providers/microsoft.authorization/policyassignments/securitycenterbuiltin",
"policyAssignmentName": "SecurityCenterBuiltIn",
"policyAssignmentOwner": "tbd",
"policyAssignmentParameters": "",
"policyAssignmentScope": "/subscriptions/{subscriptionId}",
"policyAssignmentVersion": "",
"policyDefinitionAction": "auditifnotexists",
"policyDefinitionCategory": "tbd",
"policyDefinitionGroupNames": [
""
],
"policyDefinitionId": "/providers/microsoft.authorization/policydefinitions/aa633080-8b72-40c4-a2d7-d00c03e80bed",
"policyDefinitionName": "aa633080-8b72-40c4-a2d7-d00c03e80bed",
"policyDefinitionReferenceId": "identityenablemfaforownerpermissionsmonitoring",
"policyDefinitionVersion": "",
"policyEvaluationDetails": null,
"policySetDefinitionCategory": "security center",
"policySetDefinitionId": "/providers/Microsoft.Authorization/policySetDefinitions/1f3afdf9-d0c9-4c3d-847f-89da613e70a8",
"policySetDefinitionName": "1f3afdf9-d0c9-4c3d-847f-89da613e70a8",
"policySetDefinitionOwner": "",
"policySetDefinitionParameters": "",
"policySetDefinitionVersion": "",
"resourceGroup": "",
"resourceId": "/subscriptions/{subscriptionId}",
"resourceLocation": "",
"resourceTags": "tbd",
"resourceType": "Microsoft.Resources/subscriptions",
"subscriptionId": "{subscriptionId}",
"timestamp": "2020-07-15T08:37:07.903433+00:00"
}
]
Przykład: uzyskiwanie szczegółów dotyczących wszystkich niezgodnych zasobów sieci wirtualnej.
az policy state list --filter "ResourceType eq 'Microsoft.Network/virtualNetworks'"
[
{
"complianceReasonCode": "",
"complianceState": "NonCompliant",
"effectiveParameters": "",
"isCompliant": false,
"managementGroupIds": "{managementgroupId}",
"odatacontext": "https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyStates/$metadata#latest/$entity",
"odataid": null,
"policyAssignmentId": "/subscriptions/{subscriptionId}/providers/microsoft.authorization/policyassignments/e0704696df5e4c3c81c873e8",
"policyAssignmentName": "e0704696df5e4c3c81c873e8",
"policyAssignmentOwner": "tbd",
"policyAssignmentParameters": "",
"policyAssignmentScope": "/subscriptions/{subscriptionId}",
"policyAssignmentVersion": "",
"policyDefinitionAction": "audit",
"policyDefinitionCategory": "tbd",
"policyDefinitionGroupNames": [
""
],
"policyDefinitionId": "/subscriptions/{subscriptionId}/providers/microsoft.authorization/policydefinitions/2e3197b6-1f5b-4b01-920c-b2f0a7e9b18a",
"policyDefinitionName": "2e3197b6-1f5b-4b01-920c-b2f0a7e9b18a",
"policyDefinitionReferenceId": "",
"policyDefinitionVersion": "",
"policyEvaluationDetails": null,
"policySetDefinitionCategory": "",
"policySetDefinitionId": "",
"policySetDefinitionName": "",
"policySetDefinitionOwner": "",
"policySetDefinitionParameters": "",
"policySetDefinitionVersion": "",
"resourceGroup": "RG-Tags",
"resourceId": "/subscriptions/{subscriptionId}/resourceGroups/RG-Tags/providers/Microsoft.Network/virtualNetworks/RG-Tags-vnet",
"resourceLocation": "westus2",
"resourceTags": "tbd",
"resourceType": "Microsoft.Network/virtualNetworks",
"subscriptionId": "{subscriptionId}",
"timestamp": "2020-07-15T08:37:07.901911+00:00"
}
]
Przykład: pobieranie zdarzeń związanych z niezgodnymi zasobami sieci wirtualnej, które wystąpiły po określonej dacie.
az policy state list --filter "ResourceType eq 'Microsoft.Network/virtualNetworks'" --from '2020-07-14T00:00:00Z'
[
{
"complianceReasonCode": "",
"complianceState": "NonCompliant",
"effectiveParameters": "",
"isCompliant": false,
"managementGroupIds": "{managementgroupId}",
"odatacontext": "https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyStates/$metadata#latest/$entity",
"odataid": null,
"policyAssignmentId": "/subscriptions/{subscriptionId}/providers/microsoft.authorization/policyassignments/e0704696df5e4c3c81c873e8",
"policyAssignmentName": "e0704696df5e4c3c81c873e8",
"policyAssignmentOwner": "tbd",
"policyAssignmentParameters": "",
"policyAssignmentScope": "/subscriptions/{subscriptionId}",
"policyAssignmentVersion": "",
"policyDefinitionAction": "audit",
"policyDefinitionCategory": "tbd",
"policyDefinitionGroupNames": [
""
],
"policyDefinitionId": "/subscriptions/{subscriptionId}/providers/microsoft.authorization/policydefinitions/2e3197b6-1f5b-4b01-920c-b2f0a7e9b18a",
"policyDefinitionName": "2e3197b6-1f5b-4b01-920c-b2f0a7e9b18a",
"policyDefinitionReferenceId": "",
"policyDefinitionVersion": "",
"policyEvaluationDetails": null,
"policySetDefinitionCategory": "",
"policySetDefinitionId": "",
"policySetDefinitionName": "",
"policySetDefinitionOwner": "",
"policySetDefinitionParameters": "",
"policySetDefinitionVersion": "",
"resourceGroup": "RG-Tags",
"resourceId": "/subscriptions/{subscriptionId}/resourceGroups/RG-Tags/providers/Microsoft.Network/virtualNetworks/RG-Tags-vnet",
"resourceLocation": "westus2",
"resourceTags": "tbd",
"resourceType": "Microsoft.Network/virtualNetworks",
"subscriptionId": "{subscriptionId}",
"timestamp": "2020-07-15T08:37:07.901911+00:00"
}
]
Azure PowerShell
Moduł Azure PowerShell dla usługi Azure Policy jest dostępny w Galeria programu PowerShell jako Az.PolicyInsights. Za pomocą modułu PowerShellGet możesz zainstalować moduł za pomocą polecenia Install-Module -Name Az.PolicyInsights
(upewnij się, że zainstalowano najnowszą wersję programu Azure PowerShell ):
# Install from PowerShell Gallery via PowerShellGet
Install-Module -Name Az.PolicyInsights
# Import the downloaded module
Import-Module Az.PolicyInsights
# Login with Connect-AzAccount if not using Cloud Shell
Connect-AzAccount
Moduł zawiera następujące polecenia cmdlet:
Get-AzPolicyStateSummary
Get-AzPolicyState
Get-AzPolicyEvent
Get-AzPolicyRemediation
Remove-AzPolicyRemediation
Start-AzPolicyRemediation
Stop-AzPolicyRemediation
Przykład: pobieranie podsumowania stanu dla najbardziej przypisanych zasad z największą liczbą niezgodnych zasobów.
PS> Get-AzPolicyStateSummary -Top 1
NonCompliantResources : 15
NonCompliantPolicies : 1
PolicyAssignments : {/subscriptions/{subscriptionId}/resourcegroups/RG-Tags/providers/micros
oft.authorization/policyassignments/37ce239ae4304622914f0c77}
Przykład: pobieranie rekordu stanu dla ostatnio ocenianego zasobu (wartość domyślna to sygnatura czasowa w kolejności malejącej).
PS> Get-AzPolicyState -Top 1
Timestamp : 5/22/2018 3:47:34 PM
ResourceId : /subscriptions/{subscriptionId}/resourceGroups/RG-Tags/providers/Mi
crosoft.Network/networkInterfaces/linux316
PolicyAssignmentId : /subscriptions/{subscriptionId}/resourceGroups/RG-Tags/providers/Mi
crosoft.Authorization/policyAssignments/37ce239ae4304622914f0c77
PolicyDefinitionId : /providers/Microsoft.Authorization/policyDefinitions/1e30110a-5ceb-460c-a204-c1c3969c6d62
ComplianceState : NonCompliant
SubscriptionId : {subscriptionId}
ResourceType : /Microsoft.Network/networkInterfaces
ResourceLocation : westus2
ResourceGroup : RG-Tags
ResourceTags : tbd
PolicyAssignmentName : 37ce239ae4304622914f0c77
PolicyAssignmentOwner : tbd
PolicyAssignmentParameters : {"tagName":{"value":"costCenter"},"tagValue":{"value":"Contoso-Test"}}
PolicyAssignmentScope : /subscriptions/{subscriptionId}/resourceGroups/RG-Tags
PolicyDefinitionName : 1e30110a-5ceb-460c-a204-c1c3969c6d62
PolicyDefinitionAction : deny
PolicyDefinitionCategory : tbd
Przykład: uzyskiwanie szczegółów dotyczących wszystkich niezgodnych zasobów sieci wirtualnej.
PS> Get-AzPolicyState -Filter "ResourceType eq '/Microsoft.Network/virtualNetworks'"
Timestamp : 5/22/2018 4:02:20 PM
ResourceId : /subscriptions/{subscriptionId}/resourceGroups/RG-Tags/providers/Mi
crosoft.Network/virtualNetworks/RG-Tags-vnet
PolicyAssignmentId : /subscriptions/{subscriptionId}/resourceGroups/RG-Tags/providers/Mi
crosoft.Authorization/policyAssignments/37ce239ae4304622914f0c77
PolicyDefinitionId : /providers/Microsoft.Authorization/policyDefinitions/1e30110a-5ceb-460c-a204-c1c3969c6d62
ComplianceState : NonCompliant
SubscriptionId : {subscriptionId}
ResourceType : /Microsoft.Network/virtualNetworks
ResourceLocation : westus2
ResourceGroup : RG-Tags
ResourceTags : tbd
PolicyAssignmentName : 37ce239ae4304622914f0c77
PolicyAssignmentOwner : tbd
PolicyAssignmentParameters : {"tagName":{"value":"costCenter"},"tagValue":{"value":"Contoso-Test"}}
PolicyAssignmentScope : /subscriptions/{subscriptionId}/resourceGroups/RG-Tags
PolicyDefinitionName : 1e30110a-5ceb-460c-a204-c1c3969c6d62
PolicyDefinitionAction : deny
PolicyDefinitionCategory : tbd
Przykład: pobieranie zdarzeń związanych z niezgodnymi zasobami sieci wirtualnej, które wystąpiły po określonej dacie, konwertowanie na obiekt CSV i eksportowanie do pliku.
$policyEvents = Get-AzPolicyEvent -Filter "ResourceType eq '/Microsoft.Network/virtualNetworks'" -From '2020-09-19'
$policyEvents | ConvertTo-Csv | Out-File 'C:\temp\policyEvents.csv'
Dane wyjściowe $policyEvents
obiektu wyglądają podobnie do następujących danych wyjściowych:
Timestamp : 9/19/2020 5:18:53 AM
ResourceId : /subscriptions/{subscriptionId}/resourceGroups/RG-Tags/providers/Mi
crosoft.Network/virtualNetworks/RG-Tags-vnet
PolicyAssignmentId : /subscriptions/{subscriptionId}/resourceGroups/RG-Tags/providers/Mi
crosoft.Authorization/policyAssignments/37ce239ae4304622914f0c77
PolicyDefinitionId : /providers/Microsoft.Authorization/policyDefinitions/1e30110a-5ceb-460c-a204-c1c3969c6d62
ComplianceState : NonCompliant
SubscriptionId : {subscriptionId}
ResourceType : /Microsoft.Network/virtualNetworks
ResourceLocation : eastus
ResourceGroup : RG-Tags
ResourceTags : tbd
PolicyAssignmentName : 37ce239ae4304622914f0c77
PolicyAssignmentOwner : tbd
PolicyAssignmentParameters : {"tagName":{"value":"costCenter"},"tagValue":{"value":"Contoso-Test"}}
PolicyAssignmentScope : /subscriptions/{subscriptionId}/resourceGroups/RG-Tags
PolicyDefinitionName : 1e30110a-5ceb-460c-a204-c1c3969c6d62
PolicyDefinitionAction : deny
PolicyDefinitionCategory : tbd
TenantId : {tenantId}
PrincipalOid : {principalOid}
Pole PrincipalOid
może służyć do pobierania określonego użytkownika za pomocą polecenia cmdlet Get-AzADUser
programu Azure PowerShell . Zastąp {principalOid}
ciąg odpowiedzią uzyskaną z poprzedniego przykładu.
PS> (Get-AzADUser -ObjectId {principalOid}).DisplayName
Trent Baker
Dzienniki usługi Azure Monitor
Jeśli masz obszar roboczy usługi Log Analytics z rozwiązaniem usługi Activity Log Analytics powiązanym z AzureActivity
subskrypcją, możesz również wyświetlić wyniki niezgodności z oceny nowych i zaktualizowanych zasobów przy użyciu prostych zapytań Kusto i AzureActivity
tabeli. W przypadku szczegółowych informacji w dziennikach usługi Azure Monitor alerty można skonfigurować do obserwowania pod kątem niezgodności.
Azure Resource Graph
Rekordy zgodności są przechowywane w usłudze Azure Resource Graph (ARG). Dane można eksportować z zapytań usługi ARG w celu utworzenia dostosowanych pulpitów nawigacyjnych na podstawie zakresów i zasad zainteresowania. Przejrzyj nasze przykładowe zapytania dotyczące eksportowania danych zgodności za pośrednictwem usługi ARG.
Następne kroki
- Zapoznaj się z przykładami w przykładach usługi Azure Policy.
- Przejrzyj temat Struktura definicji zasad Azure Policy.
- Przejrzyj wyjaśnienie działania zasad.
- Dowiedz się, jak programowo tworzyć zasady.
- Dowiedz się, jak korygować niezgodne zasoby.
- Sprawdź, co to jest grupa zarządzania za pomocą funkcji Organizowanie zasobów przy użyciu grup zarządzania platformy Azure.