Sdílet prostřednictvím


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

Jednou z největších výhod služby Azure Policy je přehled a řízení, které poskytuje nad prostředky v předplatném nebo skupině pro správu předplatných. Tento ovládací prvek lze použít k tomu, aby se prostředky nevytvořily v nesprávném umístění, vynucují běžné a konzistentní použití značek nebo auditují stávající prostředky pro odpovídající konfigurace a nastavení. Ve všech případech se data generují službou 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ů ve službě Azure Policy.

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

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

Aktivační události vyhodnocení

Výsledky dokončeného zkušebního cyklu jsou k dispozici v poskytovateli Microsoft.PolicyInsights prostředků prostřednictvím PolicyStates a PolicyEvents operací. Další informace o operacích rozhraní REST API služby 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í:

  • Zásady nebo iniciativa se nově přiřazují k oboru. Než se přiřazení použije na definovaný obor, trvá přibližně pět minut, pak cyklus vyhodnocení začíná pro příslušné prostředky proti nově přiřazené zásadě nebo iniciativě. V závislosti na použitých efektech jsou prostředky označené jako vyhovující, nevyhovující, vyloučené nebo neznámé. Velké zásady nebo iniciativa vyhodnocené v rámci velkého rozsahu prostředků mohou nějakou dobu trvat, takže neexistuje žádné předdefinované očekávání, kdy se cyklus vyhodnocení dokončí. Po dokončení jsou aktualizované výsledky dodržování předpisů dostupné na portálu a na sadách SDK.

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

  • Prostředek se nasadí nebo aktualizuje v rámci oboru s přiřazením prostřednictvím Azure Resource Manageru, 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 vyhovujících jednotlivým prostředkům 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ů.

  • Předplatné (typ Microsoft.Resources/subscriptionsprostředku) se vytvoří nebo přesune v hierarchii skupiny pro správu 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 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ů. Po každých 24 hodinách se přiřazení automaticky znovu zhodnotí. Velká zásada nebo iniciativa mnoha prostředků může nějakou dobu trvat, takže neexistuje žádné předem definované očekávání, kdy se cyklus vyhodnocení dokončí. Po dokončení jsou aktualizované výsledky dodržování předpisů dostupné na portálu a na 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á všechny prostředky v rámci Microsoft.Resources poskytovatele prostředků (RP) z vyhodnocení zásad s výjimkou předplatných a skupin prostředků, které je možné vyhodnotit.

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

Vyhodnocení kontroly předplatného nebo skupiny prostředků je možné spustit pomocí Azure CLI, Azure PowerShellu, volání rozhraní REST API nebo pomocí akce GitHubu pro kontrolu dodržování předpisů pro Azure Policy. Tato kontrola je asynchronní proces.

Poznámka:

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

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

Pomocí akce Kontrola dodržování předpisů ve službě Azure Policy aktivujte kontrolu vyhodnocení na vyžádání z pracovního postupu GitHubu na jednom nebo několika prostředcích, skupinách prostředků nebo předplatných a zamkněte pracovní postup na základě stavu dodržování předpisů 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ů v pohodlný čas. Volitelně může GitHub Actions vygenerovat sestavu o stavu dodržování předpisů naskenovaný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 úložišti GitHub Actions pro úložiště kontroly dodržování předpisů pro Azure Policy.

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

Kontrola dodržování předpisů se spustí pomocí příkazu 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í pro konkrétní skupinu prostředků, použijte resource-group parametr. 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"

Před pokračováním s parametrem můžete nečekat na dokončení asynchronního no-wait procesu.

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í pro konkrétní skupinu prostředků, použijte ResourceGroupName parametr. 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'

Před poskytnutím výstupu výsledků můžete počkat na dokončení asynchronního volání PowerShellu nebo ho 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 AsJob parametr 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 objektu $job můžete zobrazit dostupné vlastnosti a metody.

Když je kontrola dodržování předpisů spuštěná, zkontrolujte $job výstupy objektů, jako jsou tyto:

$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 State vlastnost změní na Dokončeno.

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

Jako asynchronní proces koncový bod REST ke spuštění kontroly nečeká, dokud se kontrola nedokončí a nereaguje. 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ů. Spusťte kontrolu podle oboru pomocí příkazu POST rozhraní REST API 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 s následujícím formátem location :

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

{ResourceContainerGUID} pro požadovaný obor se staticky vygeneruje. Pokud už obor spouští kontrolu na vyžádání, nová kontrola se nespusťe. Místo toho je nový požadavek poskytnutý stejným {ResourceContainerGUID} location identifikátorem URI pro stav. Příkaz GET rozhraní REST API na location identifikátor URI vrátí hodnotu 202 Přijato , zatímco vyhodnocení probíhá. Po dokončení kontroly vyhodnocení vrátí stav 200 OK . Tělo 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 umožňuje spustit kontrolu vyhodnocení konkrétního prostředku. Tato kontrola je synchronní proces, na rozdíl od azure PowerShellu a metod REST. Podrobnosti a kroky najdete v tématu Vyhodnocení na vyžádání s rozšířením VS Code.

Portál

Azure Portal představuje grafické prostředí vizualizace a pochopení stavu dodržování předpisů ve vašem prostředí. Na stránce Zásady poskytuje možnost Přehled podrobnosti o dostupných oborech dodržování zásad i iniciativ. Spolu se stavem dodržování předpisů a počtem na přiřazení obsahuje graf zobrazující dodržování předpisů za posledních 7 dnů. Stránka Dodržování předpisů obsahuje většinu těchto stejných informací (s výjimkou grafu), ale poskytuje více možností 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ásady nebo iniciativa lze 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 nevyhovujících prostředků a zásad nedodržování předpisů pro každé přiřazení. Výběrem zásady nebo iniciativy v tabulce se podrobněji podíváme na dodržování předpisů pro dané konkrétní přiřazení.

Snímek obrazovky se stránkou Podrobnosti o dodržování předpisů, včetně počtů a podrobností kompatibilních s prostředky

Seznam prostředků na kartě Dodržování předpisů u prostředků zobrazuje stav vyhodnocení existujících prostředků pro aktuální přiřazení. Ve výchozím nastavení je karta nevyhovující předpisům, ale je možné ji filtrovat. Události (připojení, audit, zamítnutí, nasazení, úprava) aktivované žádostí o vytvoření prostředku se zobrazí 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ů vyberte prostředek nebo klikněte 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ů součástí. Tato stránka také nabízí karty pro zobrazení zásad přiřazených k tomuto prostředku, událostem, událostem komponent a historii 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átky 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 shromáždit další podrobnosti, a vyberte Zobrazit protokoly aktivit. Otevře se stránka protokolu aktivit a je předem zafiltrovaná do vyhledává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 aktivity a vyhodnocení služby Azure Policy

Poznámka:

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

Příkazový řádek

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

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

Shrnutí výsledků

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

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 shrnuté dodržování předpisů pod value.results.nonCompliantResources a value.results.nonCompliantPolicies. Tato žádost obsahuje další podrobnosti, včetně každého přiřazení, které tvoří nevyhovující čísla, a informace o definici pro každé přiřazení. Každý objekt zásad v hierarchii poskytuje queryResultsUri objekt, který lze použít k získání podrobnějších informací 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

V předchozím příkladu value.policyAssignments.policyDefinitions.results.queryResultsUri poskytuje vzorový identifikátor URI pro všechny nevyhovující prostředky pro konkrétní definici zásad. V hodnotě $filter je complianceState rovná (eq) k NonCompliant, PolicyAssignmentId je určen pro definici zásady a pak PolicyDefinitionId sám. Důvodem zahrnutí do PolicyAssignmentId filtru je to, že PolicyDefinitionId může existovat v několika přiřazeních zásad nebo iniciativ s různými obory. Zadáním hodnoty PolicyAssignmentId i hodnoty PolicyDefinitionIdmůžeme být explicitní ve výsledcích, které hledáme. Dříve jsme použili latest, PolicyStates který automaticky nastaví from časový to interval 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ásledující příklad odpovědi se ořízla na jeden nedodržovaný prostředek pro stručnost. Podrobná odpověď obsahuje několik dat o prostředku, zásadách nebo iniciativě a přiřazení. Všimněte si také, 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": ""
    }
  ]
}

Zobrazit události

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 referenčním článku o událostech služby Azure Policy.

Azure CLI

Skupina příkazů Azure CLI pro Azure Policy pokrývá většinu operací dostupných v REST nebo Azure PowerShellu. Úplný seznam dostupných příkazů najdete v tématu Azure CLI – Přehled služby Azure Policy.

Příklad: Získání souhrnu stavu pro nejvíce přiřazené zásady s nejvyšším počtem nevyhovujících prostředků.

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 nedodržovacích prostředcích virtuální sítě

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 nekompatibilní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 (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 nevyhovujících prostředků.

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 nedodržovacích prostředcích virtuální sítě

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ávání událostí souvisejících s nekompatibilními prostředky virtuální sítě, ke kterým došlo po určitém datu, převodu na objekt CSV a exportu 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 PowerShellu. Nahraďte {principalOid} odpovědí, kterou získáte z předchozího příkladu.

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

Protokoly Azure Monitoru

Pokud máte pracovní prostor služby Log Analytics s AzureActivity řešením Activity Log Analytics svázaným s 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. S podrobnostmi v protokolech služby Azure Monitor je možné nakonfigurovat výstrahy tak, aby sledovaly nedodržování předpisů.

Snímek obrazovky s protokoly Azure Monitoru zobrazující akce Azure Policy 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 přizpůsobené řídicí panely na základě oborů a zásad zájmu. Projděte si naše ukázkové dotazy pro export dat dodržování předpisů prostřednictvím ARG.

Další kroky