Získání dat dodržování předpisů o prostředcích Azure
Jednou z největších výhod služby Azure Policy je přehled a řízení, které poskytuje nad prostředky v předplatném nebo skupině pro správu předplatných. Tento ovládací prvek lze použít k tomu, aby se prostředky nevytvořily v nesprávném umístění, vynucují běžné a konzistentní použití značek nebo auditují stávající prostředky pro odpovídající konfigurace a nastavení. Ve všech případech se data generují službou Azure Policy, abyste pochopili stav dodržování předpisů vašeho prostředí.
Před kontrolou dat dodržování předpisů je důležité porozumět stavům dodržování předpisů ve službě Azure Policy.
Existuje několik způsobů, jak získat přístup k informacím o dodržování předpisů vygenerovanými přiřazeními zásad a iniciativ:
- Použití webu Azure Portal
- Prostřednictvím skriptování příkazového řádku
- Zobrazením protokolů služby Azure Monitor
- Prostřednictvím dotazů Azure Resource Graphu
Než se podíváme na metody pro hlášení dodržování předpisů, podívejme se, kdy se aktualizují informace o dodržování předpisů a četnost a události, které aktivují cyklus vyhodnocení.
Aktivační události vyhodnocení
Výsledky dokončeného zkušebního cyklu jsou k dispozici v poskytovateli Microsoft.PolicyInsights
prostředků prostřednictvím PolicyStates
a PolicyEvents
operací. Další informace o operacích rozhraní REST API služby Azure Policy Insights najdete v tématu Azure Policy Insights.
Vyhodnocení přiřazených zásad a iniciativ probíhá v důsledku různých událostí:
Zásady nebo iniciativa se nově přiřazují k oboru. Než se přiřazení použije na definovaný obor, trvá přibližně pět minut, pak cyklus vyhodnocení začíná pro příslušné prostředky proti nově přiřazené zásadě nebo iniciativě. V závislosti na použitých efektech jsou prostředky označené jako vyhovující, nevyhovující, vyloučené nebo neznámé. Velké zásady nebo iniciativa vyhodnocené v rámci velkého rozsahu prostředků mohou nějakou dobu trvat, takže neexistuje žádné předdefinované očekávání, kdy se cyklus vyhodnocení dokončí. Po dokončení jsou aktualizované výsledky dodržování předpisů dostupné na portálu a na sadách SDK.
Zásady nebo iniciativa, které jsou už přiřazené k oboru, se aktualizují. Cyklus vyhodnocení a načasování pro tento scénář je stejné jako u nového přiřazení k oboru.
Prostředek se nasadí nebo aktualizuje v rámci oboru s přiřazením prostřednictvím Azure Resource Manageru, rozhraní REST API nebo podporované sady SDK. V tomto scénáři se událost efektu (připojení, audit, zamítnutí, nasazení) a informace o stavu vyhovujících jednotlivým prostředkům zpřístupní na portálu a sadách SDK přibližně o 15 minut později. Tato událost nezpůsobí vyhodnocení jiných prostředků.
Předplatné (typ
Microsoft.Resources/subscriptions
prostředku) se vytvoří nebo přesune v hierarchii skupiny pro správu s přiřazenou definicí zásad, která cílí na typ prostředku předplatného. Vyhodnocení podporovaných efektů předplatného (audit, auditIfNotExist, deployIfNotExists, modify), protokolování a nápravné akce trvá přibližně 30 minut.Vytvoří se, aktualizuje nebo odstraní výjimka ze zásad. V tomto scénáři se vyhodnotí odpovídající přiřazení pro definovaný obor výjimky.
Standardní cyklus vyhodnocení dodržování předpisů. Po každých 24 hodinách se přiřazení automaticky znovu zhodnotí. Velká zásada nebo iniciativa mnoha prostředků může nějakou dobu trvat, takže neexistuje žádné předem definované očekávání, kdy se cyklus vyhodnocení dokončí. Po dokončení jsou aktualizované výsledky dodržování předpisů dostupné na portálu a na sadách SDK.
Poskytovatel prostředků konfigurace počítače se aktualizuje o podrobnosti o dodržování předpisů spravovaným prostředkem.
Kontrola na vyžádání
Poznámka:
Azure Policy záměrně vyjímá všechny prostředky v rámci Microsoft.Resources
poskytovatele prostředků (RP) z vyhodnocení zásad s výjimkou předplatných a skupin prostředků, které je možné vyhodnotit.
Prohledávání hodnocení na vyžádání
Vyhodnocení kontroly předplatného nebo skupiny prostředků je možné spustit pomocí Azure CLI, Azure PowerShellu, volání rozhraní REST API nebo pomocí akce GitHubu pro kontrolu dodržování předpisů pro Azure Policy. Tato kontrola je asynchronní proces.
Poznámka:
Ne všichni poskytovatelé prostředků Azure podporují kontroly vyhodnocení na vyžádání. Azure Virtual Network Manager (AVNM) například v současné době nepodporuje ruční triggery ani standardní cyklus vyhodnocení dodržování předpisů zásad (denní kontroly).
Kontrola vyhodnocení na vyžádání – Akce GitHubu
Pomocí akce Kontrola dodržování předpisů ve službě Azure Policy aktivujte kontrolu vyhodnocení na vyžádání z pracovního postupu GitHubu na jednom nebo několika prostředcích, skupinách prostředků nebo předplatných a zamkněte pracovní postup na základě stavu dodržování předpisů prostředků. Pracovní postup můžete také nakonfigurovat tak, aby běžel v naplánovaném čase, abyste získali nejnovější stav dodržování předpisů v pohodlný čas. Volitelně může GitHub Actions vygenerovat sestavu o stavu dodržování předpisů naskenovaných prostředků pro další analýzu nebo archivaci.
Následující příklad spustí kontrolu dodržování předpisů pro předplatné.
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
Další informace a ukázky pracovních postupů najdete v úložišti GitHub Actions pro úložiště kontroly dodržování předpisů pro Azure Policy.
Kontrola vyhodnocení na vyžádání – Azure CLI
Kontrola dodržování předpisů se spustí pomocí příkazu az policy state trigger-scan .
Ve výchozím nastavení az policy state trigger-scan
spustí vyhodnocení všech prostředků v aktuálním předplatném. Pokud chcete zahájit vyhodnocení pro konkrétní skupinu prostředků, použijte resource-group
parametr. Následující příklad spustí kontrolu dodržování předpisů v aktuálním předplatném pro skupinu prostředků MyRG :
az policy state trigger-scan --resource-group "MyRG"
Před pokračováním s parametrem můžete nečekat na dokončení asynchronního no-wait
procesu.
Kontrola vyhodnocení na vyžádání – Azure PowerShell
Kontrola dodržování předpisů se spustí pomocí rutiny Start-AzPolicyComplianceScan .
Ve výchozím nastavení Start-AzPolicyComplianceScan
spustí vyhodnocení všech prostředků v aktuálním předplatném. Pokud chcete zahájit vyhodnocení pro konkrétní skupinu prostředků, použijte ResourceGroupName
parametr. Následující příklad spustí kontrolu dodržování předpisů v aktuálním předplatném pro skupinu prostředků MyRG :
Start-AzPolicyComplianceScan -ResourceGroupName 'MyRG'
Před poskytnutím výstupu výsledků můžete počkat na dokončení asynchronního volání PowerShellu nebo ho spustit na pozadí jako úlohu. Pokud chcete ke spuštění kontroly dodržování předpisů na pozadí použít úlohu PowerShellu, použijte AsJob
parametr a nastavte hodnotu na objekt, například $job
v tomto příkladu:
$job = Start-AzPolicyComplianceScan -AsJob
Stav úlohy můžete zkontrolovat kontrolou objektu $job
. Úloha je typu Microsoft.Azure.Commands.Common.AzureLongRunningJob
. Pomocí Get-Member
objektu $job
můžete zobrazit dostupné vlastnosti a metody.
Když je kontrola dodržování předpisů spuštěná, zkontrolujte $job
výstupy objektů, jako jsou tyto:
$job
Id Name PSJobTypeName State HasMoreData Location Command
-- ---- ------------- ----- ----------- -------- -------
2 Long Running O... AzureLongRunni... Running True localhost Start-AzPolicyCompliance...
Po dokončení kontroly dodržování předpisů se State
vlastnost změní na Dokončeno.
Kontrola vyhodnocení na vyžádání – REST
Jako asynchronní proces koncový bod REST ke spuštění kontroly nečeká, dokud se kontrola nedokončí a nereaguje. Místo toho poskytuje identifikátor URI pro dotaz na stav požadovaného vyhodnocení.
Každý identifikátor URI v REST API používá proměnné, které je potřeba nahradit vašimi vlastními hodnotami:
{YourRG}
– Nahraďte názvem vaší skupiny prostředků.- Proměnnou
{subscriptionId}
nahraďte ID předplatného.
Kontrola podporuje vyhodnocení prostředků v předplatném nebo ve skupině prostředků. Spusťte kontrolu podle oboru pomocí příkazu POST rozhraní REST API pomocí následujících struktur identifikátorů URI:
Předplatné
POST https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyStates/latest/triggerEvaluation?api-version=2019-10-01
Skupina prostředků
POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{YourRG}/providers/Microsoft.PolicyInsights/policyStates/latest/triggerEvaluation?api-version=2019-10-01
Volání vrátí stav 202 Přijato . Součástí hlavičky odpovědi je vlastnost s následujícím formátem location
:
https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/asyncOperationResults/{ResourceContainerGUID}?api-version=2019-10-01
{ResourceContainerGUID}
pro požadovaný obor se staticky vygeneruje. Pokud už obor spouští kontrolu na vyžádání, nová kontrola se nespusťe. Místo toho je nový požadavek poskytnutý stejným {ResourceContainerGUID}
location
identifikátorem URI pro stav. Příkaz GET rozhraní REST API na location
identifikátor URI vrátí hodnotu 202 Přijato , zatímco vyhodnocení probíhá. Po dokončení kontroly vyhodnocení vrátí stav 200 OK . Tělo dokončené kontroly je odpověď JSON se stavem:
{
"status": "Succeeded"
}
Kontrola vyhodnocení na vyžádání – Visual Studio Code
Rozšíření Azure Policy pro Visual Studio Code umožňuje spustit kontrolu vyhodnocení konkrétního prostředku. Tato kontrola je synchronní proces, na rozdíl od azure PowerShellu a metod REST. Podrobnosti a kroky najdete v tématu Vyhodnocení na vyžádání s rozšířením VS Code.
Portál
Azure Portal představuje grafické prostředí vizualizace a pochopení stavu dodržování předpisů ve vašem prostředí. Na stránce Zásady poskytuje možnost Přehled podrobnosti o dostupných oborech dodržování zásad i iniciativ. Spolu se stavem dodržování předpisů a počtem na přiřazení obsahuje graf zobrazující dodržování předpisů za posledních 7 dnů. Stránka Dodržování předpisů obsahuje většinu těchto stejných informací (s výjimkou grafu), ale poskytuje více možností filtrování a řazení.
Vzhledem k tomu, že zásady nebo iniciativa lze přiřadit k různým oborům, tabulka obsahuje obor pro každé přiřazení a typ přiřazené definice. K dispozici je také počet nevyhovujících prostředků a zásad nedodržování předpisů pro každé přiřazení. Výběrem zásady nebo iniciativy v tabulce se podrobněji podíváme na dodržování předpisů pro dané konkrétní přiřazení.
Seznam prostředků na kartě Dodržování předpisů u prostředků zobrazuje stav vyhodnocení existujících prostředků pro aktuální přiřazení. Ve výchozím nastavení je karta nevyhovující předpisům, ale je možné ji filtrovat. Události (připojení, audit, zamítnutí, nasazení, úprava) aktivované žádostí o vytvoření prostředku se zobrazí na kartě Události .
V případě prostředků v režimu poskytovatele prostředků na kartě Dodržování předpisů prostředků vyberte prostředek nebo klikněte pravým tlačítkem myši na řádek a výběrem možnosti Zobrazit podrobnosti o dodržování předpisů se otevře podrobnosti o dodržování předpisů součástí. Tato stránka také nabízí karty pro zobrazení zásad přiřazených k tomuto prostředku, událostem, událostem komponent a historii změn.
Zpátky na stránce dodržování předpisů prostředků vyberte a podržte (nebo klikněte pravým tlačítkem) na řádku události, o které chcete shromáždit další podrobnosti, a vyberte Zobrazit protokoly aktivit. Otevře se stránka protokolu aktivit a je předem zafiltrovaná do vyhledávání s podrobnostmi o přiřazení a událostech. Protokol aktivit poskytuje další kontext a informace o těchto událostech.
Poznámka:
Výsledky dodržování předpisů je možné exportovat z portálu prostřednictvím dotazů Azure Resource Graphu.
Příkazový řádek
Stejné informace dostupné na portálu je možné načíst pomocí rozhraní REST API (včetně ARMClient), Azure PowerShellu a Azure CLI. Úplné podrobnosti o rozhraní REST API najdete v referenčních informacích ke službě Azure Policy . Referenční stránky rozhraní REST API mají na každé operaci zelené tlačítko Vyzkoušet , které vám umožní vyzkoušet ho přímo v prohlížeči.
Použijte ARMClient nebo podobný nástroj ke zpracování ověřování v Azure pro příklady rozhraní REST API.
Shrnutí výsledků
Pomocí rozhraní REST API je možné sumarizaci provádět pomocí kontejneru, definice nebo přiřazení. Tady je příklad sumarizace na úrovni předplatného pomocí přehledu Azure Policy Insight pro předplatné:
POST https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyStates/latest/summarize?api-version=2019-10-01
Výstup shrnuje předplatné. V následujícím příkladu výstupu jsou shrnuté dodržování předpisů pod value.results.nonCompliantResources
a value.results.nonCompliantPolicies
. Tato žádost obsahuje další podrobnosti, včetně každého přiřazení, které tvoří nevyhovující čísla, a informace o definici pro každé přiřazení. Každý objekt zásad v hierarchii poskytuje queryResultsUri
objekt, který lze použít k získání podrobnějších informací na této úrovni.
{
"@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
}
}
]
}
]
}
]
}
Dotaz na prostředky
V předchozím příkladu value.policyAssignments.policyDefinitions.results.queryResultsUri
poskytuje vzorový identifikátor URI pro všechny nevyhovující prostředky pro konkrétní definici zásad. V hodnotě $filter
je complianceState rovná (eq) k NonCompliant
, PolicyAssignmentId
je určen pro definici zásady a pak PolicyDefinitionId sám. Důvodem zahrnutí do PolicyAssignmentId
filtru je to, že PolicyDefinitionId
může existovat v několika přiřazeních zásad nebo iniciativ s různými obory. Zadáním hodnoty PolicyAssignmentId
i hodnoty PolicyDefinitionId
můžeme být explicitní ve výsledcích, které hledáme. Dříve jsme použili latest
, PolicyStates
který automaticky nastaví from
časový to
interval posledních 24 hodin.
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'
Následující příklad odpovědi se ořízla na jeden nedodržovaný prostředek pro stručnost. Podrobná odpověď obsahuje několik dat o prostředku, zásadách nebo iniciativě a přiřazení. Všimněte si také, jaké parametry přiřazení byly předány definici zásady.
{
"@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": ""
}
]
}
Zobrazit události
Při vytvoření nebo aktualizaci prostředku se vygeneruje výsledek vyhodnocení zásad. Výsledky se nazývají události zásad. K zobrazení nedávných událostí zásad přidružených k předplatnému použijte následující identifikátor URI.
https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyEvents/default/queryResults?api-version=2019-10-01
Vaše výsledky budou vypadat přibližně jako v následujícím příkladu:
{
"@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
}
]
}
Další informace o dotazování událostí zásad najdete v referenčním článku o událostech služby Azure Policy.
Azure CLI
Skupina příkazů Azure CLI pro Azure Policy pokrývá většinu operací dostupných v REST nebo Azure PowerShellu. Úplný seznam dostupných příkazů najdete v tématu Azure CLI – Přehled služby Azure Policy.
Příklad: Získání souhrnu stavu pro nejvíce přiřazené zásady s nejvyšším počtem nevyhovujících prostředků.
az policy state summarize --top 1
Horní část odpovědi vypadá jako v tomto příkladu:
{
"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
}
]
}
}
],
...
Příklad: Získání záznamu o stavu pro naposledy vyhodnocený prostředek (výchozí hodnota je podle časového razítka v sestupném pořadí).
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"
}
]
Příklad: Získání podrobností o všech nedodržovacích prostředcích virtuální sítě
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"
}
]
Příklad: Získávání událostí souvisejících s nekompatibilními prostředky virtuální sítě, ke kterým došlo po určitém datu.
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
Modul Azure PowerShell pro Azure Policy je k dispozici na Galerie prostředí PowerShell jako Az.PolicyInsights. Pomocí modulu PowerShellGet můžete modul nainstalovat pomocí Install-Module -Name Az.PolicyInsights
(ujistěte se, že máte nainstalovaný nejnovější Azure PowerShell ):
# 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
Modul obsahuje následující rutiny:
Get-AzPolicyStateSummary
Get-AzPolicyState
Get-AzPolicyEvent
Get-AzPolicyRemediation
Remove-AzPolicyRemediation
Start-AzPolicyRemediation
Stop-AzPolicyRemediation
Příklad: Získání souhrnu stavu pro nejvíce přiřazené zásady s nejvyšším počtem nevyhovujících prostředků.
PS> Get-AzPolicyStateSummary -Top 1
NonCompliantResources : 15
NonCompliantPolicies : 1
PolicyAssignments : {/subscriptions/{subscriptionId}/resourcegroups/RG-Tags/providers/micros
oft.authorization/policyassignments/37ce239ae4304622914f0c77}
Příklad: Získání záznamu o stavu pro naposledy vyhodnocený prostředek (výchozí hodnota je podle časového razítka v sestupném pořadí).
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
Příklad: Získání podrobností o všech nedodržovacích prostředcích virtuální sítě
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
Příklad: Získávání událostí souvisejících s nekompatibilními prostředky virtuální sítě, ke kterým došlo po určitém datu, převodu na objekt CSV a exportu do souboru.
$policyEvents = Get-AzPolicyEvent -Filter "ResourceType eq '/Microsoft.Network/virtualNetworks'" -From '2020-09-19'
$policyEvents | ConvertTo-Csv | Out-File 'C:\temp\policyEvents.csv'
Výstup objektu $policyEvents
vypadá jako následující výstup:
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}
Pole PrincipalOid
lze použít k získání konkrétního uživatele pomocí rutiny Get-AzADUser
Azure PowerShellu. Nahraďte {principalOid}
odpovědí, kterou získáte z předchozího příkladu.
PS> (Get-AzADUser -ObjectId {principalOid}).DisplayName
Trent Baker
Protokoly Azure Monitoru
Pokud máte pracovní prostor služby Log Analytics s AzureActivity
řešením Activity Log Analytics svázaným s vaším předplatným, můžete také zobrazit výsledky nedodržování předpisů z vyhodnocení nových a aktualizovaných prostředků pomocí jednoduchých dotazů Kusto a AzureActivity
tabulky. S podrobnostmi v protokolech služby Azure Monitor je možné nakonfigurovat výstrahy tak, aby sledovaly nedodržování předpisů.
Azure Resource Graph
Záznamy dodržování předpisů se ukládají ve službě Azure Resource Graph (ARG). Data je možné exportovat z dotazů ARG a vytvořit přizpůsobené řídicí panely na základě oborů a zásad zájmu. Projděte si naše ukázkové dotazy pro export dat dodržování předpisů prostřednictvím ARG.
Další kroky
- Projděte si příklady v ukázkách azure Policy.
- Projděte si strukturu definic Azure Policy.
- Projděte si Vysvětlení efektů zásad.
- Seznamte se s programovým vytvářením zásad.
- Zjistěte, jak napravit nevyhovující prostředky.
- Zkontrolujte, co je skupina pro správu pomocí uspořádání prostředků pomocí skupin pro správu Azure.