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ö.

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.

Varning

Om efterlevnadstillstånd rapporteras som Inte registrerat kontrollerar du att Resursprovidern Microsoft.PolicyInsights är registrerad och att användaren har rätt Behörigheter för Rollbaserad åtkomstkontroll i Azure (Azure RBAC) enligt beskrivningen i Azure RBAC-behörigheter i Azure Policy.

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 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 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.

  • 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 du anger resultatutdata eller låta det köras 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ärderingsgenomsö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.

Så här fungerar efterlevnad

När initiativ- eller principdefinitioner tilldelas och utvärderas bestäms resulterande efterlevnadstillstånd baserat på villkoren i principregeln och resursernas efterlevnad av dessa krav.

Azure Policy stöder följande efterlevnadstillstånd:

  • Icke-kompatibel
  • Kompatibel
  • Konflikt
  • Undantagna
  • Okänd (förhandsversion)

Kompatibla och inkompatibla tillstånd

I en tilldelning är en resurs inkompatibel om den gäller för principtilldelningen och inte följer villkoren i principregeln. Följande tabell visar hur olika principeffekter fungerar med villkorsutvärderingen för det resulterande efterlevnadstillståndet:

Resurstillstånd Effekt Principutvärdering Kompatibilitetsstatus
Ny eller uppdaterad? Granska, ändra, AuditIfNotExist Sant Icke-kompatibel
Ny eller uppdaterad? Granska, ändra, AuditIfNotExist Falskt Kompatibel
Finns Neka, Granska, Lägga till, Ändra, DistribueraIfNotExist, AuditIfNotExist Sant Icke-kompatibel
Finns Neka, Granska, Lägga till, Ändra, DistribueraIfNotExist, AuditIfNotExist Falskt Kompatibel

Anteckning

Effekterna DeployIfNotExist och AuditIfNotExist kräver att IF-instruktionen är TRUE och att existensvillkoret är FALSKT för att vara icke-kompatibelt. När det är TRUE utlöser IF-villkoret utvärdering av villkoret Finns för de relaterade resurserna.

Exempel

Anta till exempel att du har en resursgrupp – ContsoRG, med vissa lagringskonton (markerade i rött) som exponeras för offentliga nätverk.

Diagram över lagringskonton som exponeras för offentliga nätverk i resursgruppen Contoso R G.

Diagram som visar bilder för fem lagringskonton i resursgruppen Contoso R G. Lagringskontona ett och tre är blå, medan lagringskontona två, fyra och fem är röda.

I det här exemplet måste du vara försiktig med säkerhetsrisker. Nu när du har skapat en principtilldelning utvärderas den för alla inkluderade och icke-undantagna lagringskonton i Resursgruppen ContosoRG. Den granskar de tre icke-kompatibla lagringskontona och ändrar deras tillstånd till Icke-kompatibla.

Diagram över lagringskontoefterlevnad i resursgruppen Contoso R G.

Diagram som visar bilder för fem lagringskonton i resursgruppen Contoso R G. Lagringskonton en och tre har nu gröna bockmarkeringar under sig, medan lagringskontona två, fyra och fem nu har röda varningstecken under sig.

Förstå bristande efterlevnad

När en resurs bedöms vara inkompatibel finns det många möjliga orsaker. Information om varför en resurs inte är kompatibel eller för att hitta ändringen ansvarig finns i Fastställa bristande efterlevnad.

Andra efterlevnadstillstånd

Förutom kompatibla och icke-kompatibla har principer och resurser fyra andra tillstånd:

  • Undantag: Resursen omfattas av en tilldelning, men har ett definierat undantag.
  • Konflikt: Det finns två eller flera principdefinitioner med motstridiga regler. Till exempel lägger två definitioner till samma tagg med olika värden.
  • Inte startat: Utvärderingscykeln har inte startats för principen eller resursen.
  • Inte registrerad: Azure Policy resursprovidern har inte registrerats eller så har kontot som loggats in inte behörighet att läsa efterlevnadsdata.

Azure Policy förlitar sig på flera faktorer för att avgöra om en resurs anses vara tillämplig och sedan fastställa dess efterlevnadstillstånd.

Kompatibilitetsprocenten bestäms genom att dela upp kompatibla, undantagna och okända resurser efter totalt antal resurser. Totalt antal resurser är kompatibla, icke-kompatibla, undantagna och motstridiga resurser. De övergripande efterlevnadsnumren är summan av distinkta resurser som är kompatibla, undantagna och okända dividerat med summan av alla distinkta resurser. I bilden nedan finns det 20 distinkta resurser som är tillämpliga och endast en är inkompatibel. Den totala resursefterlevnaden är 95 % (19 av 20).

Skärmbild av information om principefterlevnad från sidan Efterlevnad.

Anteckning

Regelefterlevnad i Azure Policy är en förhandsversionsfunktion. Efterlevnadsegenskaper från SDK och sidor i portalen skiljer sig åt för aktiverade initiativ. Mer information finns i Regelefterlevnad

Sammanslagning av efterlevnad

Det finns flera sätt att visa sammanställda efterlevnadsresultat:

Aggregerat omfång Faktorer som avgör det resulterande efterlevnadstillståndet
Initiativ Alla principer inom
Initiativgrupp eller kontroll Alla principer inom
Policy Alla tillämpliga resurser
Resurs Alla tillämpliga principer

Så hur bestäms det sammanställda efterlevnadstillståndet om flera resurser eller principer har olika efterlevnadstillstånd själva? Detta görs genom att rangordna varje efterlevnadstillstånd så att en "vinner" över en annan i den här situationen. Rangordningen är:

  1. Icke-kompatibel
  2. Kompatibel
  3. Konflikt
  4. Undantagna
  5. Okänd (förhandsversion)

Det innebär att om det finns både icke-kompatibla och kompatibla tillstånd skulle den samlade aggregeringen vara inkompatibel och så vidare. Låt oss ta en titt på ett exempel.

Anta att ett initiativ innehåller 10 principer och en resurs är undantagen från en princip men kompatibel med de återstående nio. Eftersom ett kompatibelt tillstånd har högre rangordning än ett undantaget tillstånd registreras resursen som kompatibel i den samlade sammanfattningen av initiativet. Därför visas en resurs endast som undantagen för hela initiativet om den är undantagen från, eller har okänd kompatibilitet till, alla andra tillämpliga principer i initiativet. Om resursen å andra sidan inte är kompatibel med minst en tillämplig princip i initiativet har den ett övergripande efterlevnadstillstånd för icke-kompatibla, oavsett återstående tillämpliga principer.

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 resurskompatibel information.

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 under 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 komponentens efterlevnadsinformation. Den här sidan innehåller även flikar för att se de principer som är tilldelade till den här resursen, händelser, komponenthändelser och ändringshistorik.

Skärmbild av fliken Komponentefterlevnad och efterlevnadsinformation 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:et (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 övervaka bristande efterlevnad.

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

Nästa steg