Nalevingsgegevens van Azure-resources op halen
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 op veel verschillende manieren worden uitgevoerd, zoals voorkomen dat resources op de verkeerde locatie worden gemaakt, gemeenschappelijke en consistente taggebruik afdwingen of bestaande resources controleren voor de juiste configuraties en instellingen. In alle gevallen worden gegevens gegenereerd door Azure Policy zodat u inzicht hebt in de nalevingstoestand van uw omgeving.
Er zijn verschillende manieren om toegang te krijgen tot de nalevingsinformatie die wordt gegenereerd door uw beleid en initiatieftoewijzingen:
- De Azure Portal
- Via opdrachtregelscripts
Voordat we kijken naar de methoden om te rapporteren over naleving, kijken we wanneer compatibiliteitsinformatie wordt bijgewerkt en wat de frequentie en gebeurtenissen zijn die een evaluatiecyclus activeren.
Waarschuwing
Als de nalevingsstaat wordt gerapporteerd als Niet geregistreerd, controleert u of de resourceprovider Microsoft.PolicyInsights is geregistreerd en of de gebruiker over de juiste Azure RBAC-machtigingen (op rollen gebaseerd toegangsbeheer) beschikt, 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 voor meer informatie over de bewerkingen van Azure Policy Insights REST API de 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 30 minuten voordat de toewijzing is toegepast op het gedefinieerde bereik. Zodra de evaluatiecyclus 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 nemen. Daarom is er 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 komen de effectgebeurtenis (append, audit, deny, deploy) 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 ) wordt gemaakt of verplaatst binnen een hiërarchie van beheergroep met een toegewezen beleidsdefinitie die is gericht
Microsoft.Resource/subscriptionsop het resourcetype van het abonnement. De evaluatie van de door het abonnement ondersteunde effecten (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.
Standaardevaluatiecyclus voor naleving. Elke 24 uur worden toewijzingen 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 resourceprovider voor gastconfiguratie wordt bijgewerkt met nalevingsgegevens door 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 van de REST API of met behulp van de Azure Policy Compliance Scan GitHub Action. Deze scan is een asynchroon proces.
Evaluatiescan op aanvraag: GitHub actie
Gebruik de Azure Policy Compliance Scan-actie om een evaluatiescan op aanvraag te activeren vanuit uw GitHub-werkstroom voor 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. Optioneel kan deze GitHub een rapport genereren over de nalevingstoestand 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 Action for 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.
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 resourcegroep MyRG:
az policy state trigger-scan --resource-group "MyRG"
U kunt ervoor kiezen 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 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 resourcegroep MyRG:
Start-AzPolicyComplianceScan -ResourceGroupName 'MyRG'
U kunt PowerShell laten wachten tot de asynchrone aanroep is voltooid voordat de resultaten worden uitgevoerd of deze op de achtergrond laten uitvoeren als taak. 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 object te $job 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 zien.
Terwijl de nalevingsscan wordt uitgevoerd, levert het $job controleren van het 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 Status in Voltooid.
Evaluatiescan op aanvraag - REST
Als een 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-01Resourcegroep
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. Opgenomen in de antwoordheader is 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 in een bereik al een scan op aanvraag wordt uitgevoerd, 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 voor de locatie-URI retourneert een 202 Geaccepteerd terwijl de evaluatie wordt lopende. Wanneer de evaluatiescan is voltooid, wordt de status 200 OK retourneert. De body van een voltooide scan is een JSON-antwoord met de status:
{
"status": "Succeeded"
}
Evaluatiescan op aanvraag: Visual Studio code
Met Azure Policy-extensie voor Visual Studio code kan een evaluatiescan voor een specifieke resource worden uitgevoerd. Deze scan is een synchroon proces, in tegenstelling tot de Azure PowerShell en REST-methoden. Zie Evaluatie op aanvraag met de VS Code-extensievoor meer informatie en stappen.
Hoe naleving werkt
In een toewijzing is een resource niet-compatibel als deze geen beleidsregels of initiatiefregels volgt en niet wordt uitgesloten. In de volgende tabel ziet u hoe verschillende beleidseffecten werken met de evaluatie van voorwaarden voor de resulterende nalevingstoestand:
| 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 | Compatibel |
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 een aantal opslagaccounts (rood gemarkeerd) die worden blootgesteld aan openbare netwerken.
Diagram met afbeeldingen voor vijf opslagaccounts in de resourcegroep Contoso R G. Storage accounts één en drie zijn blauw, terwijl opslagaccounts twee, vier en vijf rood zijn.
In dit voorbeeld moet u op uw hoede zijn voor beveiligingsrisico's. Nu u een beleidstoewijzing hebt gemaakt, wordt deze geëvalueerd voor alle opgenomen en niet-uitgesloten opslagaccounts in de resourcegroep ContosoRG. De drie niet-compatibele opslagaccounts worden gecontroleerd, waardoor de staten worden veranderd in Niet-compatibel.
Diagram met afbeeldingen voor vijf opslagaccounts in de resourcegroep Contoso R G. Storage accounts één en drie hebben nu groene vinkjes eronder, terwijl opslagaccounts twee, vier en vijf nu rode waarschuwingssignalen eronder hebben.
Naast Compatibel en Niet-compatibel hebben beleidsregels en resources vier andere staten:
- Uitgesloten: 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 toevoegen bijvoorbeeld dezelfde tag 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 aangemelde account heeft geen machtiging om compatibiliteitsgegevens te lezen.
Azure Policy gebruikt het type, de naam of de soort velden in de definitie om te bepalen of een resource een overeenkomst is. Wanneer de resource overeenkomt, wordt deze als van toepassing beschouwd en heeft deze de status Compatibel, Niet-compatibel of Vrijgesteld. Als een naam of soort de enige eigenschap in de definitie is, worden alle opgenomen en niet-uitgesloten resources als van toepassing beschouwd en 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 compatibele , niet-compatibele, vrijgestelde en conflicterende resources. De algemene nalevingsnummers zijn de som van afzonderlijke resources die compatibel of uitgesloten zijn, gedeeld door de som van alle afzonderlijke resources. In de onderstaande afbeelding zijn 20 verschillende resources van toepassing en slechts één is Niet-compatibel. De algehele resource-naleving is 95% (19 van de 20).
Notitie
Naleving van regelgeving in Azure Policy is een preview-functie. Nalevingseigenschappen van de SDK en pagina's in de portal verschillen voor ingeschakelde initiatieven. Zie Naleving van regelgeving voor meer informatie
Portal
De Azure Portal laat een grafische ervaring zien van het visualiseren en begrijpen van de nalevingstoestand in uw omgeving. Op de pagina Beleid bevat de optie Overzicht details over de beschikbare scopes over de naleving van zowel beleidsregels als initiatieven. Samen met de nalevingstoestand en het aantal per toewijzing bevat deze een grafiek met de naleving gedurende de afgelopen zeven dagen. De pagina Naleving bevat veel van deze informatie (met uitzondering van de grafiek), maar biedt aanvullende filter- en sorteeropties.
Aangezien een beleid of initiatief kan worden toegewezen aan verschillende scopes, bevat de tabel het bereik voor elke toewijzing en het type definitie dat is toegewezen. Ook wordt het aantal niet-compatibele resources en niet-compatibele beleidsregels voor elke toewijzing opgegeven. Als u een beleid of initiatief selecteert in de tabel, krijgt u meer inzicht in de naleving van die specifieke toewijzing.
De lijst met resources op het tabblad Resource-naleving toont de evaluatiestatus van bestaande resources voor de huidige toewijzing. Het tabblad wordt standaard ingesteld op Niet-compatibel, maar kan worden gefilterd. Gebeurtenissen (append, audit, deny, deploy, modify) die worden geactiveerd door de aanvraag om een resource te maken, worden weergegeven op het tabblad Gebeurtenissen.
Notitie
Voor een AKS Engine-beleid is de weergegeven resource de resourcegroep.
Als u resources in de resourceprovidermodus selecteert op het tabblad Resource-naleving, de resource selecteert of met de rechtermuisknop op de rij klikt en Nalevingsdetails weergeven selecteert, worden de details van de naleving van het onderdeel geopend. Deze pagina biedt ook tabbladen om de beleidsregels weer te geven die zijn toegewezen aan deze resource, gebeurtenissen, onderdeelgebeurtenissen en wijzigingsgeschiedenis.
Ga terug naar de pagina voor resource-naleving en houd deze vast (of klik met de rechtermuisknop) op de rij van de gebeurtenis waar u meer informatie over wilt verzamelen en selecteer Activiteitenlogboeken tonen. De pagina activiteitenlogboek wordt geopend en is vooraf gefilterd op de zoekopdracht met details voor de toewijzing en de gebeurtenissen. Het activiteitenlogboek bevat aanvullende context en informatie over deze gebeurtenissen.
Niet-naleving begrijpen
Wanneer wordt vastgesteld dat een resource niet-compatibel is, zijn er veel mogelijke redenen. Zie Niet-naleving bepalen om te 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 (inclusief met ARMClient), Azure PowerShell en Azure CLI. Zie de naslaginformatie voor REST API informatie over de Azure Policy informatie. De REST API-referentiepagina's hebben een groene knop Uitproberen voor elke bewerking waarmee u deze direct in de browser kunt proberen.
Gebruik ARMClient of een vergelijkbaar hulpprogramma voor het afhandelen van verificatie bij Azure voor de REST API voorbeelden.
Resultaten samenvatten
Met de REST API samenvatting kan worden uitgevoerd door een container, definitie of toewijzing. Hier volgt een voorbeeld van een samenvatting op abonnementsniveau met behulp Azure Policy Overzicht voor abonnement 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 staat de samengevatte naleving onder value.results.nonCompliantResources en value.results.nonCompliantPolicies. Deze aanvraag bevat meer informatie, waaronder elke toewijzing die de niet-compatibele getallen en de definitie-informatie voor elke toewijzing bevat. Elk beleidsobject in de hiërarchie biedt een queryResultsUri die kan worden gebruikt om extra details op dat niveau op te halen.
{
"@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
}
}]
}]
}]
}
Een query 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. Als we naar de waarde $filter kijken, is ComplianceState gelijk (eq) aan 'NonCompliant', PolicyAssignmentId opgegeven voor de beleidsdefinitie en vervolgens de PolicyDefinitionId zelf. De reden voor het op te nemen van de PolicyAssignmentId in het filter is dat de PolicyDefinitionId kan bestaan in verschillende beleids- of initiatieftoewijzingen met verschillende scopes. Door zowel de PolicyAssignmentId als de PolicyDefinitionId op te geven, kunnen we expliciet zijn in de resultaten die we zoeken. Voorheen hebben we voor PolicyStates de meest recente gebruikt. Hiermee wordt automatisch een van en naar het tijdvenster 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 voorbeeld is voor de beknoptheid ingekort tot één niet-compatibele resource. Het gedetailleerde antwoord heeft verschillende soorten 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 beleidsevaluatieresultaat gegenereerd. Resultaten worden beleidsgebeurtenissen genoemd. Gebruik de volgende URI om recente beleidsgebeurtenissen 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 Azure Policy Gebeurtenissen voor meer informatie over het uitvoeren van query's op beleidsgebeurtenissen.
Azure CLI
De Azure CLI-opdrachtgroep voor Azure Policy de meeste bewerkingen die beschikbaar zijn in REST of Azure PowerShell. Zie Azure CLI - Azure Policy Overview (Overzicht van Azure CLI - Azure Policy) voor een volledige lijst met beschikbare opdrachten.
Voorbeeld: 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 eruit als in dit voorbeeld:
{
"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 op te vragen (standaard is dit een 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 op te geven.
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 met betrekking tot niet-compatibele virtuele netwerkresources die zijn opgetreden na een bepaalde datum op te vragen.
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 PowerShellGet kunt u de module installeren met (zorg ervoor dat u de meest recente Install-Module -Name Az.PolicyInsights Azure PowerShell 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 bevat de volgende cmdlets:
Get-AzPolicyStateSummaryGet-AzPolicyStateGet-AzPolicyEventGet-AzPolicyRemediationRemove-AzPolicyRemediationStart-AzPolicyRemediationStop-AzPolicyRemediation
Voorbeeld: 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: De statusrecord voor de laatst geëvalueerde resource op te vragen (standaard is dit een 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 op te geven.
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 met betrekking tot niet-compatibele virtuele netwerkresources die zich na een bepaalde 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 van de Analyse van activiteitenlogboek-oplossing die is gekoppeld aan uw abonnement, kunt u ook resultaten van niet-naleving bekijken uit de evaluatie van nieuwe en bijgewerkte resources met behulp van eenvoudige AzureActivity Kusto-query's en de AzureActivity tabel. Met details in Azure Monitor logboeken kunnen waarschuwingen worden geconfigureerd om te controleren op niet-naleving.
Volgende stappen
- Bekijk voorbeelden op Azure Policy voorbeelden.
- Lees over de structuur van Azure Policy-definities.
- Lees Informatie over de effecten van het beleid.
- Begrijpen hoe u programmatisch beleid kunt maken.
- Ontdek hoe u niet-compatibele resources kunt herstellen.
- Bekijk wat een beheergroep is met Uw resources organiseren met Azure-beheergroepen.