Hämta efterlevnadsdata för Azure-resurser

En av de största fördelarna med Azure Policy är insikten och kontrollerna som den ger över resurser i en prenumeration eller hanteringsgrupp med prenumerationer. Den här kontrollen kan användas för att förhindra att resurser skapas på fel plats, framtvinga vanlig och konsekvent tagganvändning eller granska befintliga resurser för lämpliga konfigurationer och inställningar. I samtliga fall genereras data av Azure Policy så att du kan förstå efterlevnadstillståndet för din miljö.

Innan du granskar efterlevnadsdata är det viktigt att förstå efterlevnadstillstånd i Azure Policy.

Det finns flera sätt att komma åt efterlevnadsinformationen som genereras av dina princip- och initiativtilldelningar:

Innan vi tittar på metoderna för att rapportera om efterlevnad ska vi titta på när efterlevnadsinformationen uppdateras och frekvensen och händelserna som utlöser en utvärderingscykel.

Utvärderingsutlösare

Resultatet av en slutförd utvärderingscykel är tillgängliga i resursprovidern Microsoft.PolicyInsights via PolicyStates och PolicyEvents åtgärder. Mer information om åtgärderna i rest-API:et för Azure Policy Insights finns i Azure Policy Insights.

Utvärderingar av tilldelade principer och initiativ sker till följd av olika händelser:

  • En princip eller ett initiativ har nyligen tilldelats ett omfång. Det tar cirka fem minuter innan tilldelningen tillämpas på det definierade omfånget. Sedan börjar utvärderingscykeln för tillämpliga resurser mot den nyligen tilldelade principen eller initiativet. Beroende på vilka effekter som används markeras resurserna som kompatibla, inkompatibla, undantagna eller okända. En stor princip eller ett stort initiativ som utvärderas mot ett stort resursomfång kan ta tid, så det finns inga fördefinierade förväntningar på när utvärderingscykeln är klar. När det är klart är uppdaterade efterlevnadsresultat tillgängliga i portalen och SDK:er.

  • En princip eller ett initiativ som redan har tilldelats ett omfång uppdateras. Utvärderingscykeln och tidpunkten för det här scenariot är samma som för en ny tilldelning till ett omfång.

  • En resurs distribueras till eller uppdateras inom ett omfång med en tilldelning via Azure Resource Manager, REST API eller en SDK som stöds. I det här scenariot blir effekthändelsen (lägg till, granska, neka, distribuera) och kompatibel statusinformation för den enskilda resursen tillgänglig i portalen och SDK:er cirka 15 minuter senare. Den här händelsen orsakar ingen utvärdering av andra resurser.

  • En prenumeration (resurstyp Microsoft.Resources/subscriptions) skapas eller flyttas i en hanteringsgruppshierarki med en tilldelad principdefinition som riktar sig till prenumerationsresurstypen. Utvärdering av de effekter som stöds av prenumerationen (granskning, audit, auditIfNotExist, deployIfNotExists, modify), loggning och eventuella reparationsåtgärder tar cirka 30 minuter.

  • Ett principundantag skapas, uppdateras eller tas bort. I det här scenariot utvärderas motsvarande tilldelning för det definierade undantagsomfånget.

  • Utvärderingscykel för standardefterlevnad. En gång var 24:e timme omvärderas tilldelningarna automatiskt. En stor princip eller ett initiativ för många resurser kan ta tid, så det finns ingen fördefinierad förväntan på när utvärderingscykeln är klar. När det är klart är uppdaterade efterlevnadsresultat tillgängliga i portalen och SDK:er.

  • Datorkonfigurationsresursprovidern uppdateras med efterlevnadsinformation av en hanterad resurs.

  • Genomsökning på begäran

Anteckning

Avsiktligt undantar Azure Policy alla resurser under Microsoft.Resources resursprovidern (RP) från principutvärdering med undantag för prenumerationer och resursgrupper som kan utvärderas.

Utvärderingsgenomsökning på begäran

En utvärderingssökning efter en prenumeration eller en resursgrupp kan startas med Azure CLI, Azure PowerShell, ett anrop till REST-API:et eller med hjälp av github-åtgärden Azure Policy Efterlevnadsgenomsökning. Den här genomsökningen är en asynkron process.

Anteckning

Alla Azure-resursprovidrar stöder inte utvärderingsgenomsökningar på begäran. Azure Virtual Network Manager (AVNM) stöder för närvarande inte manuella utlösare eller utvärderingscykeln för standardprincipefterlevnad (dagliga genomsökningar).

Utvärderingsgenomsökning på begäran – GitHub-åtgärd

Använd åtgärden Azure Policy Efterlevnadsgenomsökning för att utlösa en utvärderingsgenomsökning på begäran från ditt GitHub-arbetsflöde på en eller flera resurser, resursgrupper eller prenumerationer och gate arbetsflödet baserat på resursernas efterlevnadsstatus. Du kan också konfigurera arbetsflödet så att det körs vid en schemalagd tidpunkt så att du får den senaste efterlevnadsstatusen vid en lämplig tidpunkt. Om du vill kan GitHub Actions generera en rapport om kompatibilitetstillståndet för skannade resurser för ytterligare analys eller arkivering.

I följande exempel körs en efterlevnadssökning för en prenumeration.

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

Mer information och arbetsflödesexempel finns i GitHub Actions för lagringsplatsen Azure Policy Efterlevnadsgenomsökning.

Utvärderingsgenomsökning på begäran – Azure CLI

Efterlevnadsgenomsökningen startas med kommandot az policy state trigger-scan .

Som standard az policy state trigger-scan startar en utvärdering för alla resurser i den aktuella prenumerationen. Om du vill starta en utvärdering av en specifik resursgrupp använder du parametern resource-group . I följande exempel startas en kompatibilitetsgenomsökning i den aktuella prenumerationen för Resursgruppen MyRG :

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

Du kan välja att inte vänta tills den asynkrona processen har slutförts innan du fortsätter med parametern no-wait .

Utvärderingsgenomsökning på begäran – Azure PowerShell

Efterlevnadsgenomsökningen startas med cmdleten Start-AzPolicyComplianceScan .

Som standard Start-AzPolicyComplianceScan startar en utvärdering för alla resurser i den aktuella prenumerationen. Om du vill starta en utvärdering av en specifik resursgrupp använder du parametern ResourceGroupName . I följande exempel startas en kompatibilitetsgenomsökning i den aktuella prenumerationen för Resursgruppen MyRG :

Start-AzPolicyComplianceScan -ResourceGroupName 'MyRG'

Du kan låta PowerShell vänta tills det asynkrona anropet har slutförts innan resultatet visas eller så körs det i bakgrunden som ett jobb. Om du vill använda ett PowerShell-jobb för att köra kompatibilitetsgenomsökningen i bakgrunden använder du asjob-parametern och anger värdet till ett objekt, till exempel $job i det här exemplet:

$job = Start-AzPolicyComplianceScan -AsJob

Du kan kontrollera jobbets status genom att kontrollera objektet $job . Jobbet är av typen Microsoft.Azure.Commands.Common.AzureLongRunningJob. Använd Get-Member i $job -objektet för att se tillgängliga egenskaper och metoder.

När kompatibilitetsgenomsökningen $job körs returnerar kontrollen av objektet resultat som dessa:

$job

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

När kompatibilitetsgenomsökningen är klar ändras egenskapen Tillstånd till Slutförd.

Utvärderingsgenomsökning på begäran – REST

Som en asynkron process väntar REST-slutpunkten för att starta genomsökningen inte tills genomsökningen är klar för att svara. I stället tillhandahåller den en URI för att fråga status för den begärda utvärderingen.

I varje REST API-URI finns det variabler som används och som du måste ersätta med egna värden:

  • {YourRG} – Ersätt med namnet på resursgruppen
  • {subscriptionId} – Ersätt med ditt prenumerations-ID

Genomsökningen stöder utvärdering av resurser i en prenumeration eller i en resursgrupp. Starta en genomsökning efter omfång med ett REST API POST-kommando med hjälp av följande URI-strukturer:

  • Prenumeration

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

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

Anropet returnerar statusen 202 Godkänd . I svarshuvudet ingår en platsegenskap med följande format:

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

{ResourceContainerGUID} genereras statiskt för det begärda omfånget. Om ett omfång redan kör en genomsökning på begäran startas inte en ny genomsökning. I stället får den nya begäran samma {ResourceContainerGUID}plats-URI för status. Ett REST API GET-kommando till plats-URI :n returnerar ett 202-godkänt medan utvärderingen pågår. När utvärderingsgenomsökningen har slutförts returneras statusen 200 OK . Brödtexten för en slutförd genomsökning är ett JSON-svar med statusen:

{
    "status": "Succeeded"
}

Utvärderingsgenomsökning på begäran – Visual Studio Code

Det Azure Policy tillägget för Visual Studio Code kan köra en utvärderingssökning efter en specifik resurs. Den här genomsökningen är en synkron process, till skillnad från Azure PowerShell- och REST-metoderna. Mer information och steg finns i Utvärdering på begäran med VS Code-tillägget.

Portalen

Azure Portal visar en grafisk upplevelse av att visualisera och förstå efterlevnadstillståndet i din miljö. På sidan Princip innehåller alternativet Översikt information om tillgängliga omfång för efterlevnad av både principer och initiativ. Tillsammans med efterlevnadstillståndet och antalet per tilldelning innehåller det ett diagram som visar efterlevnad under de senaste sju dagarna. Sidan Efterlevnad innehåller mycket av samma information (förutom diagrammet), men innehåller ytterligare filtrerings- och sorteringsalternativ.

Skärmbild av sidan Efterlevnad, filtreringsalternativ och information.

Eftersom en princip eller ett initiativ kan tilldelas till olika omfång innehåller tabellen omfånget för varje tilldelning och den typ av definition som tilldelades. Antalet icke-kompatibla resurser och icke-kompatibla principer för varje tilldelning tillhandahålls också. Om du väljer en princip eller ett initiativ i tabellen får du en djupare titt på kompatibiliteten för den specifika tilldelningen.

Skärmbild av sidan Efterlevnadsinformation, inklusive antal och information om resurskompatibel.

Listan över resurser på fliken Resursefterlevnad visar utvärderingsstatus för befintliga resurser för den aktuella tilldelningen. Fliken är som standard inkompatibel, men kan filtreras. Händelser (lägg till, granska, neka, distribuera, ändra) som utlöses av begäran om att skapa en resurs visas på fliken Händelser .

Skärmbild av fliken Händelser på sidan Efterlevnadsinformation.

För resurser i resursproviderläge går du till fliken Resursefterlevnad , väljer resursen eller högerklickar på raden och väljer Visa kompatibilitetsinformation öppnar kompatibilitetsinformationen för komponenten. Den här sidan innehåller även flikar för att se de principer som har tilldelats den här resursen, händelser, komponenthändelser och ändringshistorik.

Skärmbild av fliken Komponentefterlevnad och kompatibilitetsinformation för tilldelning av resursproviderläge.

Tillbaka på sidan resursefterlevnad väljer du och håller (eller högerklickar) på raden för händelsen som du vill samla in mer information om och väljer Visa aktivitetsloggar. Aktivitetsloggsidan öppnas och är förfiltrerad till sökningen som visar information om tilldelningen och händelserna. Aktivitetsloggen ger mer kontext och information om dessa händelser.

Skärmbild av aktivitetsloggen för Azure Policy aktiviteter och utvärderingar.

Anteckning

Efterlevnadsresultat kan exporteras från portalen via Azure Resource Graph frågor.

Kommandorad

Samma information som är tillgänglig i portalen kan hämtas med REST API (inklusive med ARMClient), Azure PowerShell och Azure CLI. Fullständig information om REST-API:et finns i referensen för Azure Policy. REST API-referenssidorna har en grön "Prova"-knapp för varje åtgärd som gör att du kan prova direkt i webbläsaren.

Använd ARMClient eller ett liknande verktyg för att hantera autentisering till Azure för REST API-exemplen.

Sammanfatta resultat

Med REST-API:et kan sammanfattningen utföras av container, definition eller tilldelning. Här är ett exempel på sammanfattning på prenumerationsnivå med Azure Policy Insights Sammanfatta för prenumeration:

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

Utdata sammanfattar prenumerationen. I exempelutdata nedan finns den sammanfattade efterlevnaden under value.results.nonCompliantResources och value.results.nonCompliantPolicies. Den här begäran innehåller ytterligare information, inklusive varje tilldelning som utgör de icke-kompatibla numren och definitionsinformationen för varje tilldelning. Varje principobjekt i hierarkin tillhandahåller en queryResultsUri som kan användas för att få mer information på den nivån.

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

Fråga efter resurser

I exemplet ovan tillhandahåller value.policyAssignments.policyDefinitions.results.queryResultsUri en exempel-URI för alla icke-kompatibla resurser för en specifik principdefinition. I $filter värdet är ComplianceState lika med (eq) till "NonCompliant", PolicyAssignmentId anges för principdefinitionen och sedan själva PolicyDefinitionId. Anledningen till att inkludera PolicyAssignmentId i filtret är att PolicyDefinitionId kan finnas i flera princip- eller initiativtilldelningar med olika omfång. Genom att ange både PolicyAssignmentId och PolicyDefinitionId kan vi vara explicita i de resultat vi letar efter. Tidigare använde vi senaste för PolicyStates, som automatiskt anger ett från- och till-tidsfönster för de senaste 24 timmarna.

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'

Exempelsvaret nedan har trimmats till en enskild icke-kompatibel resurs av utrymmesskäl. Det detaljerade svaret innehåller flera data om resursen, principen eller initiativet och tilldelningen. Observera att du även kan se vilka tilldelningsparametrar som skickades till principdefinitionen.

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

Visa händelser

När en resurs skapas eller uppdateras genereras ett resultat av en principutvärdering. Resultaten kallas för principhändelser. Använd följande URI för att visa de senaste principhändelserna som är associerade med prenumerationen.

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

Ditt resultat liknar följande exempel:

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

Mer information om hur du kör frågor mot principhändelser finns i referensartikeln Azure Policy Händelser.

Azure CLI

Azure CLI-kommandogruppen för Azure Policy omfattar de flesta åtgärder som är tillgängliga i REST eller Azure PowerShell. En fullständig lista över tillgängliga kommandon finns i Översikt över Azure CLI – Azure Policy.

Exempel: Hämta tillståndssammanfattningen för den översta tilldelade principen med det högsta antalet icke-kompatibla resurser.

az policy state summarize --top 1

Den översta delen av svaret ser ut som i det här exemplet:

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

Exempel: Hämta tillståndsposten för den senast utvärderade resursen (standardvärdet är tidsstämpeln i fallande ordning).

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

Exempel: Hämta information om alla icke-kompatibla virtuella nätverksresurser.

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

Exempel: Hämta händelser relaterade till icke-kompatibla virtuella nätverksresurser som inträffat efter ett visst datum.

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

Modulen Azure PowerShell för Azure Policy finns på PowerShell-galleriet som Az.PolicyInsights. Med PowerShellGet kan du installera modulen med Install-Module -Name Az.PolicyInsights (kontrollera att du har den senaste Azure PowerShell installerad):

# 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

Modulen har följande cmdletar:

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

Exempel: Hämta tillståndssammanfattningen för den översta tilldelade principen med det högsta antalet icke-kompatibla resurser.

PS> Get-AzPolicyStateSummary -Top 1

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

Exempel: Hämta tillståndsposten för den senast utvärderade resursen (standardvärdet är tidsstämpeln i fallande ordning).

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

Exempel: Hämta information om alla icke-kompatibla virtuella nätverksresurser.

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

Exempel: Hämta händelser relaterade till icke-kompatibla virtuella nätverksresurser som inträffat efter ett visst datum, konvertera till ett CSV-objekt och exportera till en fil.

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

Objektets $policyEvents utdata ser ut som följande utdata:

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}

Fältet PrincipalOid kan användas för att hämta en specifik användare med cmdleten Get-AzADUserAzure PowerShell . Ersätt {principalOid} med det svar som du fick från föregående exempel.

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

Azure Monitor-loggar

Om du har en Log Analytics-arbetsyta med AzureActivity från aktivitetslogganalyslösningen som är kopplad till din prenumeration kan du också visa icke-efterlevnadsresultat från utvärderingen av nya och uppdaterade resurser med hjälp av enkla Kusto-frågor och AzureActivity tabellen. Med information i Azure Monitor-loggar kan aviseringar konfigureras för att watch för inkompatibilitet.

Skärmbild av Azure Monitor-loggar som visar Azure Policy åtgärder i azureactivity-tabellen.

Azure Resource Graph

Efterlevnadsposter lagras i Azure Resource Graph (ARG). Data kan exporteras från ARG-frågor för att skapa anpassade instrumentpaneler baserat på omfång och principer av intresse. Granska våra exempelfrågor för export av efterlevnadsdata via ARG.

Nästa steg