Dela via


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, framtvingar gemensam och konsekvent tagganvändning eller granskar 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 hur ofta och vilka händelser 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 driften av 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 resurser som kompatibla, icke-kompatibla, 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 ingen fördefinierad förväntan på när utvärderingscykeln är klar. När den är klar ä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 ett SDK som stöds. I det här scenariot blir effekthändelsen (tillägg, granskning, 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 prenumerationseffekter som stöds (granskning, 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 den är klar är uppdaterade efterlevnadsresultat tillgängliga i portalen och SDK:er.

  • Datorkonfigurationsresursprovidern uppdateras med efterlevnadsinformation av en hanterad resurs.

  • Genomsökning på begäran

Kommentar

Enligt design 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 Azure Policy Compliance Scan GitHub Action. Den här genomsökningen är en asynkron process.

Kommentar

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

Utvärderingsgenomsökning på begäran – GitHub Action

Använd åtgärden Azure Policy Compliance Scan 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 efterlevnadstillstånd. 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 lagringsplatsen GitHub Actions for Azure Policy Compliance Scan.

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 efterlevnadsgenomsö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 efterlevnadsgenomsö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 parametern AsJob 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 State är klar ändras egenskapen 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 efter 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 location egenskap 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 tillhandahålls den nya begäran samma {ResourceContainerGUID} location URI för status. Ett REST API GET-kommando till location URI:n returnerar ett 202-godkänt medan utvärderingen pågår. När utvärderingsgenomsökningen är klar returneras statusen 200 OK . Brödtexten i en slutförd genomsökning är ett JSON-svar med statusen:

{
  "status": "Succeeded"
}

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

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 fler 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 efterlevnadsinformation öppnar information om komponentefterlevnad. 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 efterlevnadsinformation för en tilldelning av resursproviderläge.

På sidan resursefterlevnad väljer du och håller kvar (eller högerklickar) på raden i händelsen som du vill samla in mer information om och väljer Visa aktivitetsloggar. Aktivitetsloggsidan öppnas och är förfiltrerad till sökningen med 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.

Kommentar

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 Azure Policy-referensen. REST API-referenssidorna har en grön Try It-knapp för varje åtgärd som gör att du kan prova det 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 sammanfattning utföras av container, definition eller tilldelning. Här är ett exempel på sammanfattning på prenumerationsnivå med Azure Policy Insights Summarize For Subscription:

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

Utdata sammanfattar prenumerationen. I följande exempelutdata 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 ett 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 föregående exempel value.policyAssignments.policyDefinitions.results.queryResultsUri tillhandahåller en exempel-URI för alla icke-kompatibla resurser för en specifik principdefinition. I värdet $filter är ComplianceState lika med (eq) till NonCompliant, PolicyAssignmentId anges för principdefinitionen och sedan själva PolicyDefinitionId. Anledningen till att PolicyAssignmentId inkludera i filtret är att det PolicyDefinitionId kan finnas i flera princip- eller initiativtilldelningar med olika omfång. Genom att ange både PolicyAssignmentId och PolicyDefinitionIdkan vi vara explicita i de resultat vi letar efter. Tidigare använde PolicyStates latestvi , som automatiskt anger ett from tidsfönster för to 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'

Följande exempelsvar trimmades till en enskild icke-kompatibel resurs för korthet. Det detaljerade svaret innehåller flera data om resursen, principen eller initiativet och tilldelningen. Observera att du också 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 principutvärderingsresultat. 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 frågar efter principhändelser finns i referensartikeln för Azure Policy Events .

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 med tidsstämpel 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

Azure PowerShell-modulen för Azure Policy är tillgänglig på PowerShell-galleriet som Az.PolicyInsights. Med PowerShellGet kan du installera modulen med Install-Module -Name Az.PolicyInsights (se till 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 med tidsstämpel 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äffade 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 Azure PowerShell-cmdleten Get-AzADUser. Ersätt {principalOid} med det svar du får 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 lösningen för aktivitetslogganalys 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.

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 att exportera efterlevnadsdata via ARG.

Nästa steg