Nalevingsgegevens van Azure-resources ophalen

Een van de grootste voordelen van Azure Policy is het inzicht en de besturingselementen die het biedt over resources in een abonnement of beheergroep van abonnementen. Dit besturingselement kan worden gebruikt om te voorkomen dat resources op de verkeerde locatie worden gemaakt, om algemeen en consistent taggebruik af te dwingen of om bestaande resources te controleren op de juiste configuraties en instellingen. In alle gevallen worden gegevens gegenereerd door Azure Policy zodat u inzicht krijgt in de nalevingsstatus van uw omgeving.

Voordat u nalevingsgegevens bekijkt, is het belangrijk om de nalevingsstatussen in Azure Policy te begrijpen.

Er zijn verschillende manieren om toegang te krijgen tot de nalevingsinformatie die wordt gegenereerd door uw beleids- en initiatieftoewijzingen:

Voordat we de methoden voor het rapporteren over naleving bekijken, kijken we naar wanneer nalevingsinformatie wordt bijgewerkt en de frequentie en gebeurtenissen die een evaluatiecyclus activeren.

Evaluatietriggers

De resultaten van een voltooide evaluatiecyclus zijn beschikbaar in de Microsoft.PolicyInsights resourceprovider via PolicyStates en-bewerkingen PolicyEvents . Zie Azure Policy Insights voor meer informatie over de bewerkingen van de Azure Policy Insights REST API.

Evaluaties van toegewezen beleid en initiatieven vinden plaats als gevolg van verschillende gebeurtenissen:

  • Een beleid of initiatief wordt voor het eerst toegewezen aan een bereik. Het duurt ongeveer vijf minuten voordat de toewijzing is toegepast op het gedefinieerde bereik. Vervolgens begint de evaluatiecyclus voor toepasselijke resources op basis van het zojuist toegewezen beleid of initiatief. Afhankelijk van de effecten die worden gebruikt, worden resources gemarkeerd als compatibel, niet-compatibel, vrijgesteld of onbekend. Een groot beleid of initiatief dat wordt geëvalueerd op basis van een groot aantal resources kan tijd in beslag nemen, zodat er geen vooraf gedefinieerde verwachting is van wanneer de evaluatiecyclus is voltooid. Zodra dit is voltooid, zijn bijgewerkte nalevingsresultaten beschikbaar in de portal en SDK's.

  • Een beleid of initiatief dat al is toegewezen aan een bereik, wordt bijgewerkt. De evaluatiecyclus en timing voor dit scenario zijn hetzelfde als voor een nieuwe toewijzing aan een bereik.

  • Een resource wordt geïmplementeerd in of bijgewerkt binnen een bereik met een toewijzing via Azure Resource Manager, REST API of een ondersteunde SDK. In dit scenario worden de effectgebeurtenis (toevoegen, controleren, weigeren, implementeren) en de informatie over de nalevingsstatus voor de afzonderlijke resource ongeveer 15 minuten later beschikbaar in de portal en SDK's. Deze gebeurtenis veroorzaakt geen evaluatie van andere resources.

  • Een abonnement (resourcetype Microsoft.Resources/subscriptions) wordt gemaakt of verplaatst binnen een beheergroephiërarchie met een toegewezen beleidsdefinitie die is gericht op het abonnementsresourcetype. Evaluatie van de abonnements ondersteunde effecten (audit, auditIfNotExist, deployIfNotExists, wijzigen), logboekregistratie en eventuele herstelacties duurt ongeveer 30 minuten.

  • Er wordt een beleidsvrijstelling gemaakt, bijgewerkt of verwijderd. In dit scenario wordt de bijbehorende toewijzing geëvalueerd voor het gedefinieerde uitzonderingsbereik.

  • Evaluatiecyclus voor standaardnaleving. Elke 24 uur worden opdrachten automatisch opnieuw geëvalueerd. Een groot beleid of initiatief van veel resources kan tijd in beslag nemen, dus er is geen vooraf gedefinieerde verwachting wanneer de evaluatiecyclus is voltooid. Zodra dit is voltooid, zijn bijgewerkte nalevingsresultaten beschikbaar in de portal en SDK's.

  • De resourceprovider van de machineconfiguratie wordt bijgewerkt met nalevingsgegevens door een beheerde resource.

  • Scan op aanvraag

Notitie

Standaard worden Azure Policy alle resources onder de Microsoft.Resources resourceprovider (RP) uitgesloten van beleidsevaluatie, met uitzondering van abonnementen en resourcegroepen, die kunnen worden geëvalueerd.

Evaluatiescan op aanvraag

Een evaluatiescan voor een abonnement of resourcegroep kan worden gestart met Azure CLI, Azure PowerShell, een aanroep van de REST API of met behulp van de GitHub Action Azure Policy Compliance Scan. Deze scan is een asynchroon proces.

Notitie

Niet alle Azure-resourceproviders ondersteunen evaluatiescans op aanvraag. Zo biedt Azure Virtual Network Manager (AVNM) momenteel geen ondersteuning voor handmatige triggers of de evaluatiecyclus voor standaardbeleidsnaleving (dagelijkse scans).

Evaluatiescan op aanvraag - GitHub Action

Gebruik de actie Azure Policy Nalevingsscan om een evaluatiescan op aanvraag te activeren vanuit uw GitHub-werkstroom voor een of meer resources, resourcegroepen of abonnementen, en om de werkstroom te gateen op basis van de nalevingsstatus van resources. U kunt de werkstroom ook zo configureren dat deze op een gepland tijdstip wordt uitgevoerd, zodat u op een geschikt moment de meest recente nalevingsstatus krijgt. Optioneel kunt GitHub Actions een rapport genereren over de nalevingsstatus van gescande resources voor verdere analyse of archivering.

In het volgende voorbeeld wordt een nalevingsscan voor een abonnement uitgevoerd.

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

Zie de opslagplaats GitHub Actions voor Azure Policy Compliance Scan voor meer informatie en werkstroomvoorbeelden.

Evaluatiescan op aanvraag - Azure CLI

De nalevingsscan wordt gestart met de opdracht az policy state trigger-scan .

az policy state trigger-scan Standaard wordt een evaluatie gestart voor alle resources in het huidige abonnement. Als u een evaluatie wilt starten voor een specifieke resourcegroep, gebruikt u de parameter resourcegroep . In het volgende voorbeeld wordt een nalevingsscan gestart in het huidige abonnement voor de resourcegroep MyRG :

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

U kunt ervoor kiezen om niet te wachten tot het asynchrone proces is voltooid voordat u doorgaat met de parameter no-wait .

Evaluatiescan op aanvraag - Azure PowerShell

De nalevingsscan wordt gestart met de cmdlet Start-AzPolicyComplianceScan .

Start-AzPolicyComplianceScan Standaard wordt een evaluatie gestart voor alle resources in het huidige abonnement. Als u een evaluatie wilt starten voor een specifieke resourcegroep, gebruikt u de parameter ResourceGroupName . In het volgende voorbeeld wordt een nalevingsscan gestart in het huidige abonnement voor de resourcegroep MyRG :

Start-AzPolicyComplianceScan -ResourceGroupName 'MyRG'

U kunt PowerShell laten wachten tot de asynchrone aanroep is voltooid voordat u de uitvoer van de resultaten opgeeft of deze als taak op de achtergrond laten uitvoeren. Als u een PowerShell-taak wilt gebruiken om de nalevingsscan op de achtergrond uit te voeren, gebruikt u de parameter AsJob en stelt u de waarde in op een object, zoals $job in dit voorbeeld:

$job = Start-AzPolicyComplianceScan -AsJob

U kunt de status van de taak controleren door het $job object te controleren. De taak is van het type Microsoft.Azure.Commands.Common.AzureLongRunningJob. Gebruik Get-Member op het $job -object om beschikbare eigenschappen en methoden te bekijken.

Terwijl de nalevingsscan wordt uitgevoerd, levert het controleren van het $job object resultaten op zoals:

$job

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

Wanneer de nalevingsscan is voltooid, verandert de eigenschap State in Completed.

Evaluatiescan op aanvraag - REST

Als asynchroon proces wacht het REST-eindpunt om de scan te starten niet totdat de scan is voltooid om te reageren. In plaats daarvan biedt het een URI om de status van de aangevraagde evaluatie op te vragen.

In elke REST API-URI zijn er verschillende variabelen die worden gebruikt en die u moet vervangen door uw eigen waarden:

  • {YourRG} - Vervang door de naam van uw resourcegroep
  • Vervang {subscriptionId} door uw abonnements-ID

De scan ondersteunt de evaluatie van resources in een abonnement of in een resourcegroep. Start een scan per bereik met een REST API POST-opdracht met behulp van de volgende URI-structuren:

  • Abonnement

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

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

De aanroep retourneert de status 202 Geaccepteerd . De antwoordheader bevat een eigenschap Location met de volgende indeling:

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

{ResourceContainerGUID} wordt statisch gegenereerd voor het aangevraagde bereik. Als een bereik al een scan op aanvraag uitvoert, wordt er geen nieuwe scan gestart. In plaats daarvan krijgt de nieuwe aanvraag dezelfde locatie-URI{ResourceContainerGUID} voor de status. Een REST API GET-opdracht naar de locatie-URI retourneert een 202 Geaccepteerd terwijl de evaluatie wordt uitgevoerd. Wanneer de evaluatiescan is voltooid, wordt de status 200 OK geretourneerd. De hoofdtekst van een voltooide scan is een JSON-antwoord met de status:

{
    "status": "Succeeded"
}

Evaluatiescan op aanvraag - Visual Studio Code

De Azure Policy-extensie voor Visual Studio Code kan een evaluatiescan voor een specifieke resource uitvoeren. Deze scan is een synchroon proces, in tegenstelling tot de methoden Azure PowerShell en REST. Zie Evaluatie op aanvraag met de VS Code-extensie voor meer informatie en stappen.

Portal

De Azure Portal toont een grafische ervaring voor het visualiseren en begrijpen van de nalevingsstatus in uw omgeving. Op de pagina Beleid biedt de optie Overzicht details voor beschikbare bereiken over de naleving van zowel beleidsregels als initiatieven. Samen met de nalevingsstatus en het aantal per toewijzing bevat het een grafiek met de naleving gedurende de afgelopen zeven dagen. De pagina Naleving bevat veel van dezelfde informatie (behalve de grafiek), maar biedt aanvullende filter- en sorteeropties.

Schermopname van de pagina Naleving, filteropties en details.

Aangezien een beleid of initiatief kan worden toegewezen aan verschillende bereiken, bevat de tabel het bereik voor elke toewijzing en het type definitie dat is toegewezen. Het aantal niet-compatibele resources en niet-compatibele beleidsregels voor elke toewijzing wordt ook opgegeven. Het selecteren van een beleid of initiatief in de tabel biedt een dieper inzicht in de naleving voor die specifieke toewijzing.

Schermopname van de pagina Nalevingsdetails, met inbegrip van aantallen en details over de naleving van resources.

De lijst met resources op het tabblad Resourcenaleving toont de evaluatiestatus van bestaande resources voor de huidige toewijzing. Het tabblad is standaard ingesteld op Niet-compatibel, maar kan worden gefilterd. Gebeurtenissen (toevoegen, controleren, weigeren, implementeren, wijzigen) die worden geactiveerd door de aanvraag om een resource te maken, worden weergegeven op het tabblad Gebeurtenissen .

Schermopname van het tabblad Gebeurtenissen op de pagina Details van naleving.

Voor resources in de resourceprovidermodus selecteert u op het tabblad Resourcecompatibiliteit de resource of klikt u met de rechtermuisknop op de rij en selecteert u Details van naleving weergeven om de details van de onderdeelnaleving te openen. Deze pagina biedt ook tabbladen om de beleidsregels te zien die aan deze resource zijn toegewezen, gebeurtenissen, onderdeelgebeurtenissen en wijzigingsgeschiedenis.

Schermopname van het tabblad Onderdeelnaleving en nalevingsgegevens voor de toewijzing van een resourceprovidermodus.

Ga terug naar de pagina voor resourcenaleving, selecteer en houd vast (of klik met de rechtermuisknop) op de rij van de gebeurtenis waarover u meer informatie wilt verzamelen en selecteer Activiteitenlogboeken weergeven. De pagina activiteitenlogboek wordt geopend en wordt vooraf gefilterd op de zoekopdracht met details voor de toewijzing en de gebeurtenissen. Het activiteitenlogboek biedt meer context en informatie over deze gebeurtenissen.

Schermopname van het activiteitenlogboek voor Azure Policy activiteiten en evaluaties.

Notitie

Nalevingsresultaten kunnen vanuit de portal worden geëxporteerd via Azure Resource Graph-query's.

Opdrachtregel

Dezelfde informatie die beschikbaar is in de portal, kan worden opgehaald met de REST API (inclusief ARMClient), Azure PowerShell en Azure CLI. Zie de naslaginformatie over de Azure Policy voor meer informatie over de REST API. De REST API-referentiepagina's hebben een groene knop 'Uitproberen' voor elke bewerking waarmee u het rechtstreeks in de browser kunt proberen.

Gebruik ARMClient of een vergelijkbaar hulpprogramma om verificatie voor Azure af te handelen voor de REST API-voorbeelden.

Resultaten samenvatten

Met de REST API kan samenvatting worden uitgevoerd per container, definitie of toewijzing. Hier volgt een voorbeeld van samenvatting op abonnementsniveau met behulp van summarize for subscription van Azure Policy Insight:

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

De uitvoer geeft een overzicht van het abonnement. In de onderstaande voorbeelduitvoer bevindt de samengevatte naleving zich onder value.results.nonCompliantResources en value.results.nonCompliantPolicies. Deze aanvraag bevat meer details, waaronder elke toewijzing waaruit de niet-compatibele nummers bestaan en de definitie-informatie voor elke toewijzing. Elk beleidsobject in de hiërarchie biedt een queryResultsUri die kan worden gebruikt om meer details op dat niveau te krijgen.

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

Query's uitvoeren voor resources

In het bovenstaande voorbeeld biedt value.policyAssignments.policyDefinitions.results.queryResultsUri een voorbeeld-URI voor alle niet-compatibele resources voor een specifieke beleidsdefinitie. In de waarde $filter is ComplianceState gelijk aan (eq) aan 'NonCompliant', wordt PolicyAssignmentId opgegeven voor de beleidsdefinitie en vervolgens de PolicyDefinitionId zelf. De reden voor het opnemen van de PolicyAssignmentId in het filter is omdat de PolicyDefinitionId kan bestaan in verschillende beleids- of initiatieftoewijzingen met verschillende bereiken. Door zowel de PolicyAssignmentId als de PolicyDefinitionId op te geven, kunnen we expliciet zijn in de resultaten die we zoeken. Voorheen gebruikten we voor PolicyStates meest recente, waarmee automatisch een tijdvenster van en tot wordt ingesteld van de afgelopen 24 uur.

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'

Het onderstaande voorbeeldantwoord is voor de beknoptheid ingekort tot één niet-compatibele resource. Het gedetailleerde antwoord bevat verschillende gegevens over de resource, het beleid of initiatief en de toewijzing. U ziet dat u ook kunt zien welke toewijzingsparameters zijn doorgegeven aan de beleidsdefinitie.

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

Gebeurtenissen weergeven

Wanneer een resource wordt gemaakt of bijgewerkt, wordt er een beleidsevaluatieresultaat gegenereerd. Resultaten worden beleidsevenementen genoemd. Gebruik de volgende URI om recente beleidsevenementen weer te geven die zijn gekoppeld aan het abonnement.

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

De resultaten zien er ongeveer als volgt uit:

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

Zie het artikel naslaginformatie over Azure Policy gebeurtenissen voor meer informatie over het uitvoeren van query's op beleidsevenementen.

Azure CLI

De Azure CLI-opdrachtgroep voor Azure Policy omvat de meeste bewerkingen die beschikbaar zijn in REST of Azure PowerShell. Zie Overzicht van Azure CLI - Azure Policy voor de volledige lijst met beschikbare opdrachten.

Voorbeeld: de statussamenvatting ophalen voor het meest toegewezen beleid met het hoogste aantal niet-compatibele resources.

az policy state summarize --top 1

Het bovenste gedeelte van het antwoord ziet er als volgt uit:

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

Voorbeeld: de statusrecord voor de meest recent geëvalueerde resource wordt opgehaald (standaard is op tijdstempel in aflopende volgorde).

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

Voorbeeld: de details ophalen voor alle niet-compatibele virtuele netwerkresources.

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

Voorbeeld: gebeurtenissen ophalen met betrekking tot niet-compatibele virtuele netwerkresources die zijn opgetreden na een specifieke 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

De Azure PowerShell-module voor Azure Policy is beschikbaar op de PowerShell Gallery als Az.PolicyInsights. Met Behulp van PowerShellGet kunt u de module installeren met behulp van Install-Module -Name Az.PolicyInsights (zorg ervoor dat u de meest recente Azure PowerShell hebt geïnstalleerd):

# 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

De module heeft de volgende cmdlets:

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

Voorbeeld: de statussamenvatting ophalen voor het meest toegewezen beleid met het hoogste aantal niet-compatibele resources.

PS> Get-AzPolicyStateSummary -Top 1

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

Voorbeeld: de statusrecord voor de meest recent geëvalueerde resource wordt opgehaald (standaard is op tijdstempel in aflopende volgorde).

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

Voorbeeld: de details ophalen voor alle niet-compatibele virtuele netwerkresources.

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

Voorbeeld: gebeurtenissen ophalen met betrekking tot niet-compatibele virtuele netwerkresources die zijn opgetreden na een specifieke datum, converteren naar een CSV-object en exporteren naar een bestand.

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

De uitvoer van het $policyEvents object ziet er als volgt uit:

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}

Het veld PrincipalOid kan worden gebruikt om een specifieke gebruiker op te halen met de Azure PowerShell cmdlet Get-AzADUser. Vervang {principalOid} door het antwoord dat u uit het vorige voorbeeld krijgt.

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

Azure Monitor-logboeken

Als u een Log Analytics-werkruimte hebt met AzureActivity uit de Log Analytics-oplossing voor activiteiten die is gekoppeld aan uw abonnement, kunt u ook niet-nalevingsresultaten bekijken van de evaluatie van nieuwe en bijgewerkte resources met behulp van eenvoudige Kusto-query's en de AzureActivity tabel. Met details in Azure Monitor-logboeken kunnen waarschuwingen worden geconfigureerd om te watch voor niet-naleving.

Schermopname van Azure Monitor-logboeken met Azure Policy acties in de tabel AzureActivity.

Azure Resource Graph

Nalevingsrecords worden opgeslagen in Azure Resource Graph (ARG). Gegevens kunnen worden geëxporteerd vanuit ARG-query's om aangepaste dashboards te vormen op basis van de bereiken en beleidsregels die van belang zijn. Bekijk onze voorbeeldquery's voor het exporteren van nalevingsgegevens via ARG.

Volgende stappen