Share via


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 abonnementen. Dit besturingselement kan worden gebruikt om te 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 u inzicht te geven 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 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.

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 REST API van Azure Policy Insights.

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 vijf minuten voordat de toewijzing wordt toegepast op het gedefinieerde bereik, waarna de evaluatiecyclus begint voor toepasselijke resources op basis van het nieuw toegewezen beleid of initiatief. Afhankelijk van de gebruikte effecten 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, 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.

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

  • Er wordt een abonnement (resourcetype Microsoft.Resources/subscriptions) 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 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 van wanneer de evaluatiecyclus is voltooid. Zodra dit is voltooid, zijn bijgewerkte nalevingsresultaten beschikbaar in de portal en SDK's.

  • De machineconfiguratieresourceprovider wordt bijgewerkt met nalevingsgegevens van een beheerde resource.

  • Scan op aanvraag

Notitie

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

Evaluatiescan op aanvraag

Een evaluatiescan voor een abonnement of een resourcegroep kan worden gestart met Azure CLI, Azure PowerShell, een aanroep naar de REST API of met behulp van de GitHub-actie voor nalevingsscan van Azure Policy. 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 Nalevingsscan van Azure Policy om een evaluatiescan op aanvraag te activeren vanuit uw GitHub-werkstroom op een of meer resources, resourcegroepen of abonnementen, en 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. GitHub Actions kan eventueel 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 for Azure Policy Compliance Scan-opslagplaats 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 om niet te wachten totdat 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 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 deze als taak op de achtergrond laat 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, worden de resultaten van het $job object gecontroleerd, 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 pas nadat de scan is voltooid om te reageren. In plaats daarvan biedt het een URI om een query uit te voeren op de status van de aangevraagde evaluatie.

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

  • {YourRG} - Vervangen 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 van 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 wordt de nieuwe aanvraag dezelfde {ResourceContainerGUID} locatie-URI voor status opgegeven. 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.

Portal

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. Samen met de nalevingsstatus en het aantal per toewijzing bevat het een grafiek met de naleving van de afgelopen zeven dagen. De pagina Naleving bevat veel van dezelfde informatie (behalve de grafiek), maar biedt extra filter- en sorteeropties.

Schermopname van de pagina Naleving, filteropties en details.

Omdat 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, kunt u dieper ingaan op de naleving van die specifieke toewijzing.

Schermopname van de pagina Nalevingsdetails, inclusief aantallen en resourcecompatibiliteitsgegevens.

In de lijst met resources op het tabblad Resourcenaleving ziet u 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) geactiveerd door de aanvraag om een resource te maken, worden weergegeven op het tabblad Gebeurtenissen .

Schermopname van het tabblad Gebeurtenissen op de pagina Nalevingsdetails.

Voor resourceprovidermodusresources selecteert u op het tabblad Resourcecompatibiliteit de resource of klikt u met de rechtermuisknop op de rij en selecteert u Nalevingsdetails weergeven de details van de onderdeelnaleving. Deze pagina biedt ook tabbladen om de beleidsregels weer te geven die zijn toegewezen aan deze resource, gebeurtenissen, onderdeelgebeurtenissen en wijzigingsgeschiedenis.

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

Ga terug naar de pagina resourcecompatibiliteit en houd deze ingedrukt (of klik er met de rechtermuisknop op) in 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 Activiteiten en evaluaties van Azure Policy.

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 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 met Azure af te handelen voor de REST API-voorbeelden.

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 het overzicht van Azure Policy Insight voor abonnement:

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 informatie, inclusief elke toewijzing die de niet-compatibele nummers en de definitie-informatie voor elke toewijzing bevat. 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 op 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 $filter-waarde 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. 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 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 Azure CLI - Overzicht van Azure Policy 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: Het verkrijgen van de statusrecord voor de laatst geëvalueerde resource (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 die betrekking hebben op 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 in 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 nieuwste Versie van 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 statussamenvatting 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: Het verkrijgen van de statusrecord voor de laatst geëvalueerde resource (standaard is de 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-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 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.

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