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 uniemożliwić tworzenie zasobów w niewłaściwej lokalizacji, wymuszenie wspólnego i spójnego użycia tagów lub inspekcję istniejących zasobów pod kątem odpowiednich konfiguracji i ustawień. We wszystkich przypadkach usługa Azure Policy generuje dane, które umożliwiają 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:
- Użycie witryny Azure Portal.
- Wiersz polecenia.
- Dzienniki usługi Azure Monitor.
- Zapytania 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 (Software Development Kit).
- 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 zdefiniowanych oczekiwań dotyczących 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 ocenę zasad ze wszystkich zasobów w ramach Microsoft.Resources
dostawcy zasobów 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ą akcji GitHub rest, interfejsu wiersza polecenia platformy Azure, programu Azure PowerShell, rozszerzenia usługi Azure Policy dla programu Visual Studio Code lub skanowania zgodności usługi Azure Policy. Skanowania na żądanie to proces asynchroniczny, który trwa długo, ponieważ zasoby są oceniane względem wszystkich przypisanych zasad.
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 przy użyciu interfejsu 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:
-
{resourceGroupName}
: Zastąp nazwą danej grupy zasobów. -
{subscriptionId}
: zastąp ciąg 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:
Użyj następującego polecenia, aby ocenić subskrypcję. Możesz uruchomić polecenie z przeglądarki w obszarze Stany zasad — wyzwalanie oceny subskrypcji przy użyciu opcji Wypróbuj .
POST https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyStates/latest/triggerEvaluation?api-version=2019-10-01
Użyj następującego polecenia, aby ocenić grupę zasobów. Możesz uruchomić polecenie z przeglądarki w obszarze Stany zasad — wyzwalanie oceny grupy zasobów przy użyciu opcji Wypróbuj .
POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.PolicyInsights/policyStates/latest/triggerEvaluation?api-version=2019-10-01
Wywołania interfejsu API REST subskrypcji i grupy zasobów zwracają 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: succeeded
.
Skanowanie oceny na żądanie przy użyciu interfejsu 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 dla grupy zasobów. Zastąp resourceGroupName
ciąg nazwą grupy zasobów:
az policy state trigger-scan --resource-group "resourceGroupName"
Przed kontynuowaniem pracy z parametrem no-wait
możesz nie czekać na ukończenie procesu asynchronicznego.
Skanowanie oceny na żądanie przy użyciu programu 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 dla grupy zasobów. Zastąp resourceGroupName
ciąg nazwą grupy zasobów:
Start-AzPolicyComplianceScan -ResourceGroupName 'resourceGroupName'
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 przy użyciu programu 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.
Skanowanie oceny na żądanie przy użyciu funkcji GitHub Actions
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. Użyj scopes
identyfikatora 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@v2
with:
creds: ${{secrets.AZURE_CREDENTIALS}}
- name: Check for resource compliance
uses: azure/policy-compliance-scan@v0
with:
scopes: |
/subscriptions/aaaa6a6a-bb7b-cc8c-dd9d-eeeeee0e0e0e
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).
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, interfejsu wiersza polecenia platformy Azure i programu Azure PowerShell.
Interfejs API REST
Aby uzyskać szczegółowe informacje na temat interfejsu API REST, zobacz dokumentację usługi Azure Policy . Strony referencyjne interfejsu API REST mają opcję Wypróbuj dla każdej operacji, która umożliwia uruchomienie polecenia w przeglądarce. Do uruchamiania poleceń można również użyć interfejsu wiersza polecenia platformy Azure lub preferowanego klienta interfejsu API REST.
Podsumowanie wyników
Za pomocą interfejsu API REST można podsumować według kontenera, definicji lub przypisania. 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, a podsumowana zgodność znajduje się we właściwościach nonCompliantResources
i nonCompliantPolicies
. To żądanie zawiera inne 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.
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.
queryResultsUri
Przykład wartości:
https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyStates/latest/queryResults?api-version=2019-10-01&$from=2025-01-01 04:28:22Z&$to=2025-02-10 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'
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
Aby uzyskać więcej informacji na temat wykonywania zapytań dotyczących zdarzeń zasad, zobacz Zdarzenia 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 az policy.
Pobierz podsumowanie stanu dla najbardziej przypisanych zasad z największą liczbą niezgodnych zasobów.
az policy state summarize --top 1
Pobierz rekord stanu dla ostatnio ocenianego zasobu, a wartość domyślna danych wyjściowych to sygnatura czasowa w kolejności malejącej.
az policy state list --top 1
Uzyskaj szczegółowe informacje dotyczące wszystkich niezgodnych zasobów sieci wirtualnej.
az policy state list --filter "ResourceType eq 'Microsoft.Network/virtualNetworks'"
Pobierz zdarzenia związane z niezgodnymi zasobami sieci wirtualnej, które wystąpiły po określonej dacie. Użyj parametru from
z datą w formacie ISO 8601.
az policy event list --filter "ResourceType eq 'Microsoft.Network/virtualNetworks'" --from '2025-02-10T00:00:00Z'
Azure PowerShell
Następujące polecenia można uruchomić z poziomu usługi Azure Cloud Shell.
Pobierz podsumowanie stanu dla najbardziej przypisanych zasad z największą liczbą niezgodnych zasobów.
Get-AzPolicyStateSummary -Top 1
Pobierz rekord stanu dla ostatnio ocenianego zasobu. Wartość domyślna danych wyjściowych to znacznik czasu w kolejności malejącej.
Get-AzPolicyState -Top 1
Uzyskaj szczegółowe informacje dotyczące wszystkich niezgodnych zasobów sieci wirtualnej.
Get-AzPolicyState -Filter "ResourceType eq '/Microsoft.Network/virtualNetworks'"
Pobierz zdarzenia związane z niezgodnymi zasobami sieci wirtualnej, które wystąpiły po określonej dacie. Użyj parametru From
z datą w formacie ISO 8601.
Get-AzPolicyEvent -Filter "ResourceType eq '/Microsoft.Network/virtualNetworks'" -From '2025-02-10'
Dane wyjściowe zawierają PrincipalOid
właściwość, która 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 wartością uzyskaną z poprzedniego polecenia.
(Get-AzADUser -ObjectId {principalOid}).DisplayName
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 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.