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 met abonnementen. Dit besturingselement kan op veel verschillende manieren worden uitgevoerd, zoals voorkomen dat resources op de verkeerde locatie worden gemaakt, gemeenschappelijk en consistent taggebruik afdwingen of bestaande resources controleren op de juiste configuraties en instellingen. In alle gevallen worden gegevens gegenereerd door Azure Policy om inzicht te krijgen in de nalevingsstatus van uw omgeving.

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

Voordat u de methoden bekijkt om te rapporteren over naleving, gaan we kijken wanneer nalevingsinformatie wordt bijgewerkt en de frequentie en gebeurtenissen die een evaluatiecyclus activeren.

Waarschuwing

Als de nalevingsstatus wordt gerapporteerd als Niet geregistreerd, controleert u of de resourceprovider Microsoft.PolicyInsights is geregistreerd en of de gebruiker de juiste azure RBAC-machtigingen (op rollen gebaseerd toegangsbeheer) heeft, zoals beschreven in Azure RBAC-machtigingen in Azure Policy.

Evaluatietriggers

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

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

  • Een beleid of initiatief wordt voor het eerst toegewezen aan een bereik. Het duurt ongeveer 30 minuten voordat de toewijzing is toegepast op het gedefinieerde bereik. Zodra deze is toegepast, begint de evaluatiecyclus voor resources binnen dat bereik op basis van het nieuw toegewezen beleid of initiatief. Afhankelijk van de effecten die door het beleid of initiatief worden gebruikt, worden resources gemarkeerd als compatibel, niet-compatibel of uitgesloten. Een groot beleid of initiatief dat wordt geëvalueerd op basis van een groot aantal resources kan tijd in beslag nemen. Daarom is er geen vooraf gedefinieerde verwachting 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 of bijgewerkt binnen een bereik met een toewijzing via Azure Resource Manager, REST API of een ondersteunde SDK. In dit scenario wordt de effectgebeurtenis (toevoegen, controleren, weigeren, implementeren) en compatibele statusinformatie voor de afzonderlijke resource beschikbaar in de portal en SDK's ongeveer 15 minuten later. Deze gebeurtenis veroorzaakt geen evaluatie van andere resources.

  • Een abonnement (resourcetype Microsoft.Resource/subscriptions) wordt gemaakt of verplaatst binnen een beheergroephiërarchie met een toegewezen beleidsdefinitie die is gericht op het resourcetype van het abonnement. Evaluatie van de ondersteunde effecten van het abonnement (audit, auditIfNotExist, deployIfNotExists, modify), 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 kosten, dus er is geen vooraf gedefinieerde verwachting van wanneer de evaluatiecyclus is voltooid. Zodra dit is voltooid, zijn bijgewerkte nalevingsresultaten beschikbaar in de portal en SDK's.

  • De resourceprovider voor gastconfiguraties wordt bijgewerkt met nalevingsgegevens van een beheerde resource.

  • Scan op aanvraag

Evaluatiescan op aanvraag

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

Evaluatiescan op aanvraag - GitHub actie

Gebruik de actie Azure Policy Nalevingsscan om een evaluatiescan op aanvraag te activeren vanuit uw GitHub werkstroom op 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 de meest recente nalevingsstatus op een handig moment krijgt. Optioneel kan deze GitHub Actions een rapport genereren over de nalevingsstatus van gescande resources voor verdere analyse of voor 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 GitHub Actions voor Azure Policy opslagplaats voor nalevingscontrole voor meer informatie en werkstroomvoorbeelden.

Evaluatiescan op aanvraag - Azure CLI

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

Start standaard az policy state trigger-scan een evaluatie 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 MyRG-resourcegroep :

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

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

Evaluatiescan op aanvraag - Azure PowerShell

De nalevingsscan wordt gestart met de cmdlet Start-AzPolicyComplianceScan .

Start standaard Start-AzPolicyComplianceScan een evaluatie 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 MyRG-resourcegroep :

Start-AzPolicyComplianceScan -ResourceGroupName 'MyRG'

U kunt powerShell laten wachten totdat de asynchrone aanroep is voltooid voordat u de resultatenuitvoer opgeeft of als taak op de achtergrond wilt 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 dit $job object om de beschikbare eigenschappen en methoden te bekijken.

Terwijl de nalevingsscan wordt uitgevoerd, controleert u de resultaten van het $job object, zoals deze:

$job

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

Wanneer de nalevingsscan is voltooid, wordt de eigenschap Status gewijzigd in Voltooid.

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 op 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 Geaccepteerd 202 . Opgenomen in de antwoordheader is een locatie-eigenschap 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 {ResourceContainerGUID}locatie-URI 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 uitvoeren voor een specifieke resource. Deze scan is een synchroon proces, in tegenstelling tot de Azure PowerShell- en REST-methoden. Zie Evaluatie op aanvraag met de VS Code-extensie voor meer informatie en stappen.

Hoe naleving werkt

In een toewijzing is een resource niet-compatibel als deze geen beleidsregels of initiatiefregels volgt en niet is uitgesloten. In de volgende tabel ziet u hoe verschillende beleidseffecten werken met de evaluatie van de voorwaarde voor de resulterende nalevingsstatus:

Resourcestatus Effect Beleidsevaluatie Nalevingsstatus
Nieuw of bijgewerkt Controleren, wijzigen, AuditIfNotExist True Niet-compatibel
Nieuw of bijgewerkt Controleren, wijzigen, AuditIfNotExist False Compatibel
Bestaat Weigeren, Controleren, Toevoegen, Wijzigen, DeployIfNotExist, AuditIfNotExist True Niet-compatibel
Bestaat Weigeren, Controleren, Toevoegen, Wijzigen, DeployIfNotExist, AuditIfNotExist False Compliant

Notitie

Voor de effecten DeployIfNotExist en AuditIfNotExist moet de IF-instructie TRUE en de bestaansvoorwaarde FALSE zijn om niet-compatibel te zijn. Indien TRUE, activeert de IF-voorwaarde de evaluatie van de bestaansvoorwaarde voor de gerelateerde resources.

Stel dat u een resourcegroep hebt: ContsoRG, met enkele opslagaccounts (rood gemarkeerd) die beschikbaar zijn voor openbare netwerken.

Diagram of storage accounts exposed to public networks in the Contoso R G resource group.

Diagram met afbeeldingen voor vijf opslagaccounts in de Contoso R G-resourcegroep. Storage accounts één en drie blauw zijn, terwijl opslagaccounts twee, vier en vijf rood zijn.

In dit voorbeeld moet u voorzichtig zijn met beveiligingsrisico's. Nu u een beleidstoewijzing hebt gemaakt, wordt deze geëvalueerd voor alle opgenomen en niet-vrijgestelde opslagaccounts in de resourcegroep ContosoRG. Het controleert de drie niet-compatibele opslagaccounts, waardoor de status wordt gewijzigd in Niet-compatibel.

Diagram of storage account compliance in the Contoso R G resource group.

Diagram met afbeeldingen voor vijf opslagaccounts in de Contoso R G-resourcegroep. Storage accounts een en drie hebben nu groene vinkjes eronder, terwijl opslagaccounts twee, vier en vijf nu rode waarschuwingsborden hebben.

Naast Compatibel en Niet-compatibel hebben beleidsregels en resources vier andere statussen:

  • Vrijgesteld: de resource valt binnen het bereik van een toewijzing, maar heeft een gedefinieerde uitzondering.
  • Conflicterend: er bestaan twee of meer beleidsdefinities met conflicterende regels. Twee definities voegen bijvoorbeeld dezelfde tag toe met verschillende waarden.
  • Niet gestart: de evaluatiecyclus is niet gestart voor het beleid of de resource.
  • Niet geregistreerd: de Azure Policy resourceprovider is niet geregistreerd of het account dat is aangemeld, is niet gemachtigd om nalevingsgegevens te lezen.

Azure Policy gebruikt het type, de naam of het soort velden in de definitie om te bepalen of een resource een overeenkomst is. Wanneer de resource overeenkomt, wordt deze beschouwd als van toepassing en heeft deze de status Compatibel, Niet-compatibel of Vrijgesteld. Als naam of soort de enige eigenschap in de definitie is, worden alle opgenomen en niet-vrijgestelde resources beschouwd als van toepassing en worden ze geëvalueerd.

Het nalevingspercentage wordt bepaald door compatibele en vrijgestelde resources te delen door het totale aantal resources. Het totale aantal resources wordt gedefinieerd als de som van de resources Conform, Niet-compatibel, Vrijgesteld en Conflicterend . De totale nalevingsnummers zijn de som van afzonderlijke resources die compatibel of vrijgesteld zijn, gedeeld door de som van alle afzonderlijke resources. In de onderstaande afbeelding zijn er 20 afzonderlijke resources die van toepassing zijn en slechts één niet-compatibel is. De algehele resourcecompatibiliteit is 95% (19 van de 20).

Screenshot of policy compliance details from Compliance page.

Notitie

Naleving van regelgeving in Azure Policy is een preview-functie. Nalevingseigenschappen van SDK en pagina's in de portal verschillen voor ingeschakelde initiatieven. Zie Naleving van regelgeving voor meer informatie

Portal

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

Screenshot of Compliance page, filtering options, and 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 verstrekt. Als u een beleid of initiatief in de tabel selecteert, wordt de naleving voor die specifieke toewijzing nader bekeken.

Screenshot of Compliance Details page, including counts and resource compliant details.

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

Notitie

Voor een AKS Engine-beleid is de weergegeven resource de resourcegroep.

Screenshot of the Events tab on Compliance Details page.

Voor resources in de resourceprovidermodus selecteert u op het tabblad Resourcenaleving de resource of klikt u met de rechtermuisknop op de rij en selecteert u Details van naleving weergeven de details van de naleving van onderdelen. Deze pagina bevat ook tabbladen om het beleid te zien dat is toegewezen aan deze resource, gebeurtenissen, onderdeelgebeurtenissen en wijzigingsgeschiedenis.

Screenshot of Component Compliance tab and compliance details for a Resource Provider mode assignment.

Selecteer en houd de resourcenalevingspagina ingedrukt (of klik met de rechtermuisknop) op de rij van de gebeurtenis waarop u meer details 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 aanvullende context en informatie over deze gebeurtenissen.

Screenshot of the Activity Log for Azure Policy activities and evaluations.

Niet-naleving begrijpen

Wanneer wordt vastgesteld dat een resource niet-compatibel is, zijn er veel mogelijke redenen. Zie Bepalen waarom een resource niet-compatibel is of om de verantwoordelijke wijziging te vinden.

Opdrachtregel

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

Gebruik ARMClient of een vergelijkbaar hulpprogramma voor het afhandelen van verificatie bij Azure voor de REST API-voorbeelden.

Notitie

De reden voor niet-naleving kan momenteel niet worden opgehaald uit de opdrachtregel. We werken aan het toewijzen van de redencode aan de 'reden voor niet-naleving' en op dit moment is er geen ETA op dit punt.

Resultaten samenvatten

Met de REST API kan samenvatting worden uitgevoerd door container, definitie of toewijzing. Hier volgt een voorbeeld van samenvatting op abonnementsniveau met behulp van Azure Policy Insight's Summarize For Subscription:

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

De uitvoer bevat een overzicht van het abonnement. In de onderstaande voorbeelduitvoer bevindt de samengevatte naleving zich onder value.results.nonCompliantResources en value.results.nonCompliantPolicies. Deze aanvraag biedt meer informatie, inclusief elke toewijzing waaruit de niet-compatibele nummers en de definitie-informatie voor elke toewijzing bestaan. Elk beleidsobject in de hiërarchie biedt een queryResultsUri die kan worden gebruikt om extra 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 uitvoeren op resources

In het bovenstaande voorbeeld biedt value.policyAssignments.policyDefinitions.results.queryResultsUri een voorbeeld-URI voor alle niet-compatibele resources voor een specifieke beleidsdefinitie. Als u de $filter waarde bekijkt, is ComplianceState gelijk aan (eq) aan 'NonCompliant', policyAssignmentId is 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. Eerder hebben we voor PolicyStates de meest recente gebruikt, waarmee automatisch een periode van en naar tijd van de afgelopen 24 uur wordt ingesteld.

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 ingekort tot één niet-compatibele resource voor beknoptheid. Het gedetailleerde antwoord bevat verschillende gegevens over de resource, het beleid of initiatief en de toewijzing. U ziet ook 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 resultaat voor beleidsevaluatie 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 naslagartikel 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 Azure CLI - Azure Policy Overzicht voor de volledige lijst met beschikbare opdrachten.

Voorbeeld: Het ophalen van de statussamenvatting 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 laatst geëvalueerde resource verkrijgen (standaard is de 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 voor alle niet-compatibele virtuele netwerkbronnen ophalen.

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 netwerkbronnen die zich na een specifieke datum hebben voorgedaan.

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: Het ophalen van de statusoverzicht 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 laatst geëvalueerde resource verkrijgen (standaard is het 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 voor alle niet-compatibele virtuele netwerkbronnen ophalen.

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 netwerkbronnen die zich na een specifieke datum hebben voorgedaan, 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 eruit als de volgende uitvoer:

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 cmdletGet-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 de Log Analytics-oplossing Voor activiteiten die zijn gekoppeld aan uw abonnement, kunt u ook niet-nalevingsresultaten bekijken uit 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 controleren op niet-naleving.

Screenshot of Azure Monitor logs showing Azure Policy actions in the AzureActivity table.

Volgende stappen