Získání dat o dodržování předpisů pro prostředky Azure

Jednou z největších výhod Azure Policy je přehled a ovládací prvky, které poskytuje nad prostředky v předplatném nebo ve skupině pro správu předplatných. Pomocí tohoto ovládacího prvku můžete zabránit vytváření prostředků na nesprávném místě, vynucovat běžné a konzistentní používání značek nebo auditovat stávající prostředky z hlediska odpovídajících konfigurací a nastavení. Ve všech případech jsou data generována Azure Policy, abyste pochopili stav dodržování předpisů vašeho prostředí.

Před kontrolou dat dodržování předpisů je důležité porozumět stavům dodržování předpisů v Azure Policy.

Existuje několik způsobů, jak získat přístup k informacím o dodržování předpisů vygenerovaným přiřazeními zásad a iniciativ:

Než se podíváme na metody hlášení dodržování předpisů, podívejme se na to, kdy se aktualizují informace o dodržování předpisů, a na četnost a události, které aktivují cyklus vyhodnocení.

Aktivační události vyhodnocení

Výsledky dokončeného cyklu vyhodnocení jsou k dispozici u Microsoft.PolicyInsights poskytovatele prostředků prostřednictvím PolicyStates operací a PolicyEvents . Další informace o operacích rozhraní REST API Azure Policy Insights najdete v tématu Azure Policy Insights.

Vyhodnocení přiřazených zásad a iniciativ probíhá v důsledku různých událostí:

  • K oboru se nově přiřadí zásada nebo iniciativa. Použití přiřazení na definovaný obor trvá přibližně pět minut a pak začne cyklus vyhodnocení pro příslušné prostředky pro nově přiřazenou zásadu nebo iniciativu. V závislosti na použitých efektech se prostředky označí jako vyhovující, nevyhovující, vyloučené nebo neznámé. Velké zásady nebo iniciativy vyhodnocené pro velký rozsah prostředků můžou nějakou dobu trvat, takže neexistuje předdefinované očekávání, kdy se cyklus vyhodnocení dokončí. Po dokončení budou aktualizované výsledky dodržování předpisů k dispozici na portálu a v sadách SDK.

  • Zásady nebo iniciativa, které jsou již přiřazeny k oboru, se aktualizují. Cyklus vyhodnocení a načasování pro tento scénář jsou stejné jako u nového přiřazení k oboru.

  • Prostředek se nasadí do nebo aktualizuje v rámci oboru s přiřazením prostřednictvím Azure Resource Manager, rozhraní REST API nebo podporované sady SDK. V tomto scénáři se událost efektu (připojení, audit, zamítnutí, nasazení) a informace o stavu dodržování předpisů pro jednotlivé prostředky zpřístupní na portálu a sadách SDK přibližně o 15 minut později. Tato událost nezpůsobí vyhodnocení jiných prostředků.

  • V hierarchii skupiny pro správu se vytvoří nebo přesune předplatné (typ Microsoft.Resources/subscriptionsprostředku) s přiřazenou definicí zásad, která cílí na typ prostředku předplatného. Vyhodnocení podporovaných efektů předplatného (audit, auditIfNotExist, deployIfNotExists, modify), protokolování a jakékoli nápravné akce trvá přibližně 30 minut.

  • Vytvoří se, aktualizuje nebo odstraní výjimka ze zásad . V tomto scénáři se vyhodnotí odpovídající přiřazení pro definovaný obor výjimky.

  • Standardní cyklus vyhodnocení dodržování předpisů. Jednou za 24 hodin se přiřazení automaticky znovu vyhodnotí. Velké zásady nebo iniciativa s mnoha prostředky můžou nějakou dobu trvat, takže není možné předdefinovat očekávání, kdy se cyklus vyhodnocení dokončí. Po dokončení budou aktualizované výsledky dodržování předpisů k dispozici na portálu a v sadách SDK.

  • Poskytovatel prostředků konfigurace počítače se aktualizuje o podrobnosti o dodržování předpisů spravovaným prostředkem.

  • Kontrola na vyžádání

Poznámka

Azure Policy záměrně vyjímá z vyhodnocení zásad všechny prostředky v rámci Microsoft.Resources poskytovatele prostředků s výjimkou předplatných a skupin prostředků, které je možné vyhodnotit.

Prohledávání hodnocení na vyžádání

Zkušební kontrolu předplatného nebo skupiny prostředků můžete spustit pomocí Azure CLI, Azure PowerShell, volání rozhraní REST API nebo pomocí akce GitHubu kontrola dodržování předpisů Azure Policy. Tato kontrola je asynchronní proces.

Poznámka

Ne všichni poskytovatelé prostředků Azure podporují kontroly hodnocení na vyžádání. Například Azure Virtual Network Manager (AVNM) v současné době nepodporuje ruční triggery ani cyklus vyhodnocování dodržování předpisů standardních zásad (denní kontroly).

Kontrola vyhodnocení na vyžádání – Akce GitHubu

Pomocí akce kontrola dodržování předpisů Azure Policy aktivujte kontrolu vyhodnocení na vyžádání z pracovního postupu GitHubu u jednoho nebo více prostředků, skupin prostředků nebo předplatných a zamkněte pracovní postup na základě stavu dodržování předpisů u prostředků. Pracovní postup můžete také nakonfigurovat tak, aby běžel v naplánovaném čase, abyste získali nejnovější stav dodržování předpisů ve vhodný čas. Volitelně může GitHub Actions generovat sestavu o stavu dodržování předpisů zkontrolovaných prostředků pro další analýzu nebo archivaci.

Následující příklad spustí kontrolu dodržování předpisů pro předplatné.

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

Další informace a ukázky pracovních postupů najdete v GitHub Actions pro úložiště Azure Policy Compliance Scan.

Kontrola vyhodnocení na vyžádání – Azure CLI

Kontrola dodržování předpisů se spustí příkazem az policy state trigger-scan .

Ve výchozím nastavení az policy state trigger-scan spustí vyhodnocení všech prostředků v aktuálním předplatném. Pokud chcete zahájit vyhodnocení konkrétní skupiny prostředků, použijte parametr skupiny prostředků . Následující příklad spustí kontrolu dodržování předpisů v aktuálním předplatném pro skupinu prostředků MyRG :

az policy state trigger-scan --resource-group "MyRG"

Můžete se rozhodnout, že nechcete čekat na dokončení asynchronního procesu, než budete pokračovat s parametrem no-wait .

Kontrola vyhodnocení na vyžádání – Azure PowerShell

Kontrola dodržování předpisů se spustí pomocí rutiny Start-AzPolicyComplianceScan .

Ve výchozím nastavení Start-AzPolicyComplianceScan spustí vyhodnocení všech prostředků v aktuálním předplatném. Pokud chcete zahájit vyhodnocení konkrétní skupiny prostředků, použijte parametr ResourceGroupName . Následující příklad spustí kontrolu dodržování předpisů v aktuálním předplatném pro skupinu prostředků MyRG :

Start-AzPolicyComplianceScan -ResourceGroupName 'MyRG'

PowerShell může počkat na dokončení asynchronního volání před poskytnutím výstupu výsledků nebo ho nechat spustit na pozadí jako úlohu. Pokud chcete ke spuštění kontroly dodržování předpisů na pozadí použít úlohu PowerShellu, použijte parametr AsJob a nastavte hodnotu na objekt, například $job v tomto příkladu:

$job = Start-AzPolicyComplianceScan -AsJob

Stav úlohy můžete zkontrolovat kontrolou objektu $job . Úloha je typu Microsoft.Azure.Commands.Common.AzureLongRunningJob. Pomocí Get-Member u objektu $job můžete zobrazit dostupné vlastnosti a metody.

Když je kontrola dodržování předpisů spuštěná, výsledkem kontroly výstupu objektu $job jsou například tyto výsledky:

$job

Id     Name              PSJobTypeName     State         HasMoreData     Location             Command
--     ----              -------------     -----         -----------     --------             -------
2      Long Running O... AzureLongRunni... Running       True            localhost            Start-AzPolicyCompliance...

Po dokončení kontroly dodržování předpisů se vlastnost State změní na Dokončeno.

Kontrola vyhodnocení na vyžádání – REST

Jako asynchronní proces koncový bod REST, který spustí kontrolu, nečeká, až se kontrola dokončí, aby zareagoval. Místo toho poskytuje identifikátor URI pro dotaz na stav požadovaného vyhodnocení.

Každý identifikátor URI v REST API používá proměnné, které je potřeba nahradit vašimi vlastními hodnotami:

  • {YourRG} – Nahraďte názvem vaší skupiny prostředků.
  • Proměnnou {subscriptionId} nahraďte ID předplatného.

Kontrola podporuje vyhodnocení prostředků v předplatném nebo ve skupině prostředků. Pomocí příkazu POST rozhraní REST API spusťte kontrolu podle oboru pomocí následujících struktur identifikátorů URI:

  • Předplatné

    POST https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyStates/latest/triggerEvaluation?api-version=2019-10-01
    
  • Skupina prostředků

    POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{YourRG}/providers/Microsoft.PolicyInsights/policyStates/latest/triggerEvaluation?api-version=2019-10-01
    

Volání vrátí stav 202 Přijato . Součástí hlavičky odpovědi je vlastnost Location s následujícím formátem:

https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/asyncOperationResults/{ResourceContainerGUID}?api-version=2019-10-01

{ResourceContainerGUID} se staticky vygeneruje pro požadovaný rozsah. Pokud už v oboru probíhá kontrola na vyžádání, nová kontrola se nezačá. Místo toho se novému požadavku poskytne stejný {ResourceContainerGUID} identifikátor URI umístění pro stav. Příkaz GET rozhraní REST API pro identifikátor URI umístění vrátí během probíhajícího vyhodnocení hodnotu 202 Accepted . Po dokončení kontroly vyhodnocení vrátí stav 200 OK . Text dokončené kontroly je odpověď JSON se stavem:

{
    "status": "Succeeded"
}

Kontrola vyhodnocení na vyžádání – Visual Studio Code

Rozšíření Azure Policy pro Visual Studio Code dokáže spustit zkušební kontrolu konkrétního prostředku. Tato kontrola je synchronní proces, na rozdíl od metod Azure PowerShell a REST. Podrobnosti a postup najdete v tématu Vyhodnocení na vyžádání s rozšířením VS Code.

Portál

Azure Portal ukazuje grafické prostředí vizualizace a pochopení stavu dodržování předpisů ve vašem prostředí. Možnost Přehled na stránce Zásady poskytuje podrobnosti o dostupných oborech dodržování předpisů pro zásady i iniciativy. Spolu se stavem dodržování předpisů a počtem na přiřazení obsahuje graf znázorňující dodržování předpisů za posledních sedm dnů. Stránka Dodržování předpisů obsahuje většinu těchto stejných informací (kromě grafu), ale nabízí další možnosti filtrování a řazení.

Snímek obrazovky se stránkou Dodržování předpisů, možnostmi filtrování a podrobnostmi

Vzhledem k tomu, že zásadu nebo iniciativu je možné přiřadit k různým oborům, tabulka obsahuje obor pro každé přiřazení a typ přiřazené definice. K dispozici je také počet prostředků, které nedodržují předpisy, a zásady, které nedodržují předpisy pro každé přiřazení. Výběrem zásady nebo iniciativy v tabulce získáte podrobnější přehled o dodržování předpisů pro dané přiřazení.

Snímek obrazovky se stránkou s podrobnostmi o dodržování předpisů, včetně počtů a podrobností o prostředcích dodržujících předpisy

Seznam prostředků na kartě Dodržování předpisů prostředků zobrazuje stav vyhodnocení existujících prostředků pro aktuální přiřazení. Výchozí karta je Nevyhovující předpisům, ale dá se filtrovat. Události (připojení, audit, zamítnutí, nasazení, úprava) aktivované požadavkem na vytvoření prostředku se zobrazují na kartě Události .

Snímek obrazovky s kartou Události na stránce Podrobnosti o dodržování předpisů

V případě prostředků v režimu poskytovatele prostředků na kartě Dodržování předpisů prostředků výběrem prostředku nebo kliknutím pravým tlačítkem myši na řádek a výběrem možnosti Zobrazit podrobnosti o dodržování předpisů se otevře podrobnosti o dodržování předpisů komponent. Tato stránka také nabízí karty pro zobrazení zásad přiřazených k tomuto prostředku, událostí, událostí komponent a historie změn.

Snímek obrazovky s kartou Dodržování předpisů komponent a podrobnostmi o dodržování předpisů pro přiřazení režimu poskytovatele prostředků

Zpět na stránce dodržování předpisů prostředků vyberte a podržte (nebo klikněte pravým tlačítkem) na řádku události, o které chcete získat další podrobnosti, a vyberte Zobrazit protokoly aktivit. Otevře se stránka protokolu aktivit, která je předem vyfiltrovaná na hledání s podrobnostmi o přiřazení a událostech. Protokol aktivit poskytuje další kontext a informace o těchto událostech.

Snímek obrazovky s protokolem aktivit pro Azure Policy aktivit a hodnocení

Poznámka

Výsledky dodržování předpisů je možné exportovat z portálu prostřednictvím dotazů Azure Resource Graph.

Příkazový řádek

Stejné informace dostupné na portálu je možné načíst pomocí rozhraní REST API (včetně ARMClient), Azure PowerShell a Azure CLI. Úplné podrobnosti o rozhraní REST API najdete v referenčních informacích k Azure Policy. Referenční stránky rozhraní REST API mají u každé operace zelené tlačítko Vyzkoušet, které vám umožní to vyzkoušet přímo v prohlížeči.

Použijte ARMClient nebo podobný nástroj pro zpracování ověřování do Azure pro příklady rozhraní REST API.

Shrnutí výsledků

S rozhraním REST API je možné sumarizaci provádět podle kontejneru, definice nebo přiřazení. Tady je příklad sumarizace na úrovni předplatného pomocí Azure Policy Insight:

POST https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyStates/latest/summarize?api-version=2019-10-01

Výstup shrnuje předplatné. V následujícím příkladu výstupu jsou souhrny dodržování předpisů pod hodnotami.results.nonCompliantResources a value.results.nonCompliantPolicies. Tento požadavek obsahuje další podrobnosti, včetně každého přiřazení, ze kterého byla čísla, která nedodržují předpisy, a informací o definici pro každé přiřazení. Každý objekt zásad v hierarchii poskytuje queryResultsUri , který lze použít k získání dalších podrobností na této úrovni.

{
    "@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
                }
            }]
        }]
    }]
}

Dotaz na prostředky

Ve výše uvedeném příkladu value.policyAssignments.policyDefinitions.results.queryResultsUri poskytuje ukázkový identifikátor URI pro všechny nekompatibilní prostředky pro konkrétní definici zásady. V $filter hodnotě complianceState se rovná (eq) 'NonCompliant', PolicyAssignmentId je určen pro definici zásady a pak PolicyDefinitionId samotný. Důvodem pro zahrnutí PolicyAssignmentId do filtru je to, že PolicyDefinitionId může existovat v několika přiřazeních zásad nebo iniciativ s různými obory. Když zadáte PolicyAssignmentId i PolicyDefinitionId, můžeme být explicitní ve výsledcích, které hledáme. Dříve jsme pro PolicyStates použili nejnovější, která automaticky nastavuje časový interval od a do za posledních 24 hodin.

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'

Níže uvedená ukázková odpověď byla kvůli stručnosti zkrácena na jeden prostředek, který nedodržuje předpisy. Podrobná odpověď obsahuje několik dat o prostředku, zásadách nebo iniciativě a přiřazení. Všimněte si, že můžete také zjistit, jaké parametry přiřazení byly předány definici zásady.

{
    "@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": ""
    }]
}

Zobrazení událostí

Při vytvoření nebo aktualizaci prostředku se vygeneruje výsledek vyhodnocení zásad. Výsledky se nazývají události zásad. K zobrazení nedávných událostí zásad přidružených k předplatnému použijte následující identifikátor URI.

https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyEvents/default/queryResults?api-version=2019-10-01

Vaše výsledky budou vypadat přibližně jako v následujícím příkladu:

{
    "@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
    }]
}

Další informace o dotazování událostí zásad najdete v článku s referenčními informacemi o událostech Azure Policy.

Azure CLI

Skupina příkazů Azure CLI pro Azure Policy pokrývá většinu operací, které jsou k dispozici v rozhraní REST nebo Azure PowerShell. Úplný seznam dostupných příkazů najdete v tématu Azure CLI – Azure Policy Přehled.

Příklad: Získání souhrnu stavu pro nejvíce přiřazené zásady s nejvyšším počtem prostředků, které nedodržují předpisy.

az policy state summarize --top 1

Horní část odpovědi vypadá jako v tomto příkladu:

{
    "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
                        }
                    ]
                }
            }],
    ...

Příklad: Získání záznamu o stavu pro naposledy vyhodnocený prostředek (výchozí hodnota je podle časového razítka v sestupném pořadí).

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"
  }
]

Příklad: Získání podrobností o všech prostředcích virtuální sítě, které nedodržují předpisy.

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"
  }
]

Příklad: Získávání událostí souvisejících s nevyhovujícími prostředky virtuální sítě, ke kterým došlo po určitém datu.

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

Modul Azure PowerShell pro Azure Policy je k dispozici na Galerie prostředí PowerShell jako Az.PolicyInsights. Pomocí modulu PowerShellGet můžete modul nainstalovat pomocí Install-Module -Name Az.PolicyInsights příkazu (ujistěte se, že máte nainstalované nejnovější 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

Modul obsahuje následující rutiny:

  • Get-AzPolicyStateSummary
  • Get-AzPolicyState
  • Get-AzPolicyEvent
  • Get-AzPolicyRemediation
  • Remove-AzPolicyRemediation
  • Start-AzPolicyRemediation
  • Stop-AzPolicyRemediation

Příklad: Získání souhrnu stavu pro nejvíce přiřazené zásady s nejvyšším počtem prostředků, které nedodržují předpisy.

PS> Get-AzPolicyStateSummary -Top 1

NonCompliantResources : 15
NonCompliantPolicies  : 1
PolicyAssignments     : {/subscriptions/{subscriptionId}/resourcegroups/RG-Tags/providers/micros
                        oft.authorization/policyassignments/37ce239ae4304622914f0c77}

Příklad: Získání záznamu o stavu pro naposledy vyhodnocený prostředek (výchozí hodnota je podle časového razítka v sestupném pořadí).

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

Příklad: Získání podrobností o všech prostředcích virtuální sítě, které nedodržují předpisy.

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

Příklad: Získání událostí souvisejících s nevyhovujícími prostředky virtuální sítě, ke kterým došlo po určitém datu, převod na objekt CSV a export do souboru

$policyEvents = Get-AzPolicyEvent -Filter "ResourceType eq '/Microsoft.Network/virtualNetworks'" -From '2020-09-19'
$policyEvents | ConvertTo-Csv | Out-File 'C:\temp\policyEvents.csv'

Výstup objektu $policyEvents vypadá jako následující výstup:

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 lze použít k získání konkrétního uživatele pomocí rutiny Get-AzADUserAzure PowerShell . Nahraďte {principalOid} odpovědí, kterou jste získali z předchozího příkladu.

PS> (Get-AzADUser -ObjectId {principalOid}).DisplayName
Trent Baker

Protokoly služby Azure Monitor

Pokud máte pracovní prostor služby Log Analytics z řešení Log Analytics aktivit svázané s AzureActivity vaším předplatným, můžete také zobrazit výsledky nedodržování předpisů z vyhodnocení nových a aktualizovaných prostředků pomocí jednoduchých dotazů Kusto a AzureActivity tabulky. Pomocí podrobností v protokolech služby Azure Monitor je možné nakonfigurovat výstrahy tak, aby watch v případě nedodržování předpisů.

Snímek obrazovky s protokoly služby Azure Monitor zobrazující Azure Policy akce v tabulce AzureActivity

Azure Resource Graph

Záznamy dodržování předpisů se ukládají ve službě Azure Resource Graph (ARG). Data je možné exportovat z dotazů ARG a vytvořit tak přizpůsobené řídicí panely na základě oborů a zásad, které vás zajímají. Projděte si naše ukázkové dotazy pro export dat dodržování předpisů prostřednictvím ARG.

Další kroky