Získání dat o dodržování předpisů u prostředků Azure
Jednou z největších výhod Azure Policy je přehled a ovládací prvky, které poskytuje nad prostředky v rámci předplatného nebo skupiny pro správu předplatných. Tento ovládací prvek lze uplatnit mnoha různými způsoby, například zabránit vytváření prostředků v nesprávném umístění, vynucování společného a konzistentního použití značek nebo auditování existujících prostředků pro příslušné konfigurace a nastavení. Ve všech případech jsou data generována Azure Policy, která vám umožní pochopit stav dodržování předpisů vašeho prostředí.
Existuje několik způsobů, jak získat přístup k informacím o dodržování předpisů generovanými pomocí zásad a přiřazení iniciativ:
- Použití Azure Portal
- Pomocí skriptování na příkazovém řádku
Než začnete se zaměřením na dodržování předpisů, Podívejme se na to, kdy se aktualizují informace o dodržování předpisů a četnost a události, které aktivují zkušební cyklus.
Upozornění
Pokud je stav dodržování předpisů hlášen jako neregistrované, ověřte, zda je poskytovatel prostředků Microsoft. PolicyInsights zaregistrován a zda má uživatel příslušná oprávnění řízení přístupu na základě role Azure (RBAC), jak je popsáno v tématu oprávnění Azure RBAC v Azure Policy.
Aktivační události vyhodnocení
Výsledky dokončeného cyklu vyhodnocení jsou k dispozici ve Microsoft.PolicyInsights zprostředkovateli prostředků prostřednictvím PolicyStates PolicyEvents operací a. další informace o operacích Azure Policy Přehledy REST API najdete v části Azure Policy Přehledy.
K vyhodnocení přiřazených zásad a iniciativ dojde v důsledku různých událostí:
Zásada nebo iniciativa je nově přiřazena k oboru. Použití přiřazení pro definovaný obor trvá přibližně 30 minut. Jakmile se použije, cyklus hodnocení začne u prostředků v tomto rozsahu s nově přiřazenou zásadou nebo iniciativou a v závislosti na účincích používaných zásadami nebo iniciativou jsou prostředky označené jako kompatibilní, nekompatibilní nebo vyloučené. Velký počet zásad nebo iniciativ vyhodnocených pro velký rozsah prostředků může chvíli trvat. V takovém případě neexistuje předem definované očekávání po dokončení zkušebního cyklu. Po dokončení budou aktualizované výsledky dodržování předpisů k dispozici na portálu a sadách SDK.
Zásada nebo iniciativa, která je již přiřazena k oboru, je aktualizována. Cyklus hodnocení a časování pro tento scénář je stejný jako u nového přiřazení k oboru.
Prostředek se nasazuje nebo aktualizuje v rámci oboru s přiřazením prostřednictvím Azure Resource Manager, REST API nebo podporované sady SDK. V tomto scénáři se na portálu budou k dispozici informace o vlivu události (připojení, audit, zamítnutí, nasazení) a odpovídajících informací o stavu pro jednotlivé prostředky na portálu a sady SDK o 15 minutách. Tato událost nezpůsobí vyhodnocení dalších prostředků.
Předplatné (typ prostředku
Microsoft.Resource/subscriptions) se vytvoří nebo přesune v rámci hierarchie skupiny pro správu s přiřazenou definicí zásady, která cílí na typ prostředku předplatného. Vyhodnocení podporovaných efektů předplatného (audit, auditIfNotExist, deployIfNotExists, Modify), protokolování a jakékoli nápravné akce trvá přibližně 30 minut.Výjimka zásad je vytvořena, aktualizována nebo odstraněna. V tomto scénáři se odpovídající přiřazení vyhodnocuje pro definovaný obor výjimky.
Standardní cyklus hodnocení dodržování předpisů. Každých 24 hodin se přiřazení automaticky přehodnotí. Velké zásady nebo podněty mnoha prostředků můžou nějakou dobu trvat, takže není k dispozici předem definovaná Očekávaná doba, po které se zkušební cyklus dokončí. Po dokončení budou aktualizované výsledky dodržování předpisů k dispozici na portálu a sadách SDK.
Poskytovatel prostředků Konfigurace hosta se aktualizuje s podrobnostmi o dodržování předpisů spravovaným prostředkem.
Kontrola na vyžádání
Prohledávání hodnocení na vyžádání
kontrolu vyhodnocení předplatného nebo skupiny prostředků můžete spustit pomocí Azure CLI, Azure PowerShell, volání REST API nebo pomocí akce kontrola dodržování předpisů Azure Policy GitHub akci. Tato kontrola je asynchronní proces.
prověření vyhodnocení na vyžádání – GitHub akci
pomocí akce Azure Policy kontrola dodržování předpisů můžete aktivovat kontrolu vyhodnocení na vyžádání z pracovního postupu GitHub na jednom nebo několika prostředcích, skupinách prostředků nebo předplatných a bránu pracovní postup na základě stavu dodržování předpisů u 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. v případě potřeby může tato akce GitHub vygenerovat sestavu stavu dodržování předpisů u prověřených prostředků pro další analýzu nebo pro archivaci.
Následující příklad spustí kontrolu dodržování předpisů u předplatného.
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 článku akce GitHub pro úložiště vyhledávání dodržování předpisů Azure Policy.
Kontrola vyhodnocení na vyžádání – Azure CLI
Kontrola dodržování předpisů se spouští pomocí příkazu AZ Policy State Trigger-Scan .
Ve výchozím nastavení az policy state trigger-scan spustí vyhodnocení pro všechny prostředky v aktuálním předplatném. Pokud chcete zahájit vyhodnocení konkrétní skupiny prostředků, použijte parametr Resource-Group . 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"
Můžete zvolit, že nechcete čekat na dokončení asynchronního procesu, než budete pokračovat s parametrem No-Wait .
Kontrola vyhodnocení na vyžádání – Azure PowerShell
Kontrola dodržování předpisů se spouští pomocí rutiny Start-AzPolicyComplianceScan .
Ve výchozím nastavení Start-AzPolicyComplianceScan spustí vyhodnocení pro všechny prostředky v aktuálním předplatném. Pokud chcete zahájit vyhodnocení konkrétní skupiny prostředků, použijte parametr ResourceGroupName . 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'
PowerShell může počkat na dokončení asynchronního volání před zadáním výstupu výsledků nebo jeho spuštěním na pozadí jako úloha. Chcete-li pomocí úlohy PowerShell spustit kontrolu kompatibility na pozadí, použijte parametr AsJob a nastavte hodnotu na objekt, jako $job v tomto příkladu:
$job = Start-AzPolicyComplianceScan -AsJob
Stav úlohy můžete zkontrolovat zaškrtnutím tohoto $job objektu. Úloha je typu Microsoft.Azure.Commands.Common.AzureLongRunningJob . Použijte k Get-Member $job zobrazení dostupných vlastností a metod na objektu.
Kontrola kompatibility je spuštěná a kontroluje $job výsledky výstupů 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 vlastnost stav změní na dokončeno.
Kontrola vyhodnocení na vyžádání – REST
V rámci asynchronního procesu koncový bod REST ke spuštění kontroly nečeká na odpověď, dokud se kontrola nedokončí. Místo toho poskytuje identifikátor URI pro dotaz na stav vyžádané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 rámci předplatného nebo ve skupině prostředků. Spusťte kontrolu pomocí příkazu REST API post 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-01Skupina 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 přijato 202 . Zahrnuté v hlavičce odpovědi je vlastnost umístění s následujícím formátem:
https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/asyncOperationResults/{ResourceContainerGUID}?api-version=2019-10-01
{ResourceContainerGUID} je staticky generován pro požadovaný rozsah. Pokud je v oboru již spuštěno prohledávání na vyžádání, nová kontrola není spuštěna. Místo toho se nové žádosti dodávají stejnému {ResourceContainerGUID} identifikátoru URI umístění pro stav. Příkaz REST API Get do identifikátoru URI pro umístění vrací 202 přijatý , zatímco probíhá vyhodnocení. Po dokončení kontroly vyhodnocení vrátí stav 200 OK . Tělo dokončeného prohledávání je odpověď JSON se stavem:
{
"status": "Succeeded"
}
Kontrola vyhodnocení na vyžádání – Visual Studio Code
Azure Policy rozšíření pro Visual Studio kód je schopné spustit kontrolu vyhodnocení konkrétního prostředku. tato kontrola je synchronní proces, na rozdíl od metod Azure PowerShell a REST. podrobnosti a postup najdete v tématu vyhodnocení na vyžádání s rozšířením VS Code.
Jak dodržování předpisů funguje
V přiřazení není prostředek nekompatibilní , pokud nedodržuje pravidla zásad nebo iniciativ a není vyloučený. Následující tabulka ukazuje, jak různé účinky zásad fungují s hodnocením podmínek pro výsledný stav dodržování předpisů:
| Stav prostředku | Účinek | Vyhodnocení zásad | Stav dodržování předpisů |
|---|---|---|---|
| Nové nebo aktualizované | Audit, úprava, AuditIfNotExist | Ano | Nevyhovující předpisům |
| Nové nebo aktualizované | Audit, úprava, AuditIfNotExist | Ne | Odpovídající |
| Existuje | Deny, Audit, Append, Modify, DeployIfNotExist, AuditIfNotExist | Ano | Nevyhovující předpisům |
| Existuje | Deny, Audit, Append, Modify, DeployIfNotExist, AuditIfNotExist | Ne | Odpovídající |
Poznámka
Účinky DeployIfNotExist a AuditIfNotExist vyžadují, aby příkaz IF byl TRUE a podmínka existence byla FALSE, aby nedodržující předpisy. Pokud má hodnotu TRUE, aktivuje podmínka IF vyhodnocení podmínky existence pro související prostředky.
Předpokládejme například, že máte skupinu prostředků ContsoRG s některými účty úložiště (červeně zvýrazněnými), které jsou zveřejněné ve veřejných sítích.
Diagram znázorňující obrázky pěti účtů úložiště ve skupině prostředků Contoso R G Storage účty 1 a 3 jsou modré, zatímco účty úložiště dva, čtyři a pět jsou červené.
V tomto příkladu musíte být s rizikem zabezpečení v bezpečí. Teď, když jste vytvořili přiřazení zásady, se vyhodnotí pro všechny zahrnuté účty úložiště ve skupině prostředků ContosoRG, které nejsou vyloučené. Audituje tři účty úložiště, které nedodržují předpisy, a následně změní jejich stav na Nedodržující předpisy.
Diagram znázorňující obrázky pěti účtů úložiště ve skupině prostředků Contoso R G Storage účty 1 a 3 teď mají zelené zaškrtnutí, zatímco účty úložiště dva, čtyři a pět teď mají pod sebou červená upozornění.
Kromě vyhovujících a nevyhovujících mají zásady a prostředky čtyři další stavy:
- Vyloučeno: Prostředek je v rozsahu přiřazení, ale má definovanou výjimku.
- Konfliktní: Existují dvě nebo více definic zásad s konfliktními pravidly. Dvě definice například připojí stejnou značku k různým hodnotám.
- Nezačala: Cyklus vyhodnocení se pro zásadu nebo prostředek nespusoval.
- Nezaregistrované: Azure Policy prostředků není zaregistrovaný nebo přihlášený účet nemá oprávnění ke čtení dat dodržování předpisů.
Azure Policy, jestli se prostředek shoduje, použije v definici pole typu , název nebo druh. Když prostředek odpovídá, považuje se za použitelný a má stav Vyhovuje, Nevyhovující nebo Vyloučený. Pokud je název nebo druh jedinou vlastností v definici, pak se všechny zahrnuté prostředky a prostředky bez výjimku považují za použitelné a vyhodnotí se.
Procento dodržování předpisů se určuje vydělením prostředků vyhovujících předpisům a vyloučeným prostředkům celkovým objemem prostředků. Celkový počet prostředků je definovaný jako součet prostředků Vyhovující, Nevyhovující, Vyloučené a Konfliktní. Celkový počet dodržování předpisů je součet jedinečných prostředků, které jsou kompatibilní nebo vyloučené, vydělené součtem všech jedinečných prostředků. Na obrázku níže je 20 různých prostředků, které jsou použitelné, a pouze jeden z nich nedodržující předpisy. Celkové dodržování předpisů u prostředků je 95 % (19 z 20).
Poznámka
Dodržování právních předpisů v Azure Policy je funkce Preview. Vlastnosti dodržování předpisů ze sady SDK a stránek na portálu se pro povolené iniciativy liší. Další informace najdete v tématu Dodržování právních předpisů.
Portál
Tento Azure Portal grafické prostředí pro vizualizaci 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í předpisů zásad i iniciativ. Spolu se stavem dodržování předpisů a počty podle 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 hodně stejných informací (s výjimkou grafu), ale poskytuje další možnosti filtrování a řazení.
Vzhledem k tomu, že zásady nebo iniciativy lze přiřadit k různým oborům, tabulka obsahuje rozsah pro každé přiřazení a typ definice, která byla přiřazena. K dispozici je také počet prostředků nedodržících předpisy a zásady nedodržující předpisy pro každé přiřazení. Výběrem zásady nebo iniciativy v tabulce se můžete podívat na dodržování předpisů pro toto konkrétní přiřazení.
Seznam prostředků na kartě Dodržování předpisů prostředky zobrazuje stav vyhodnocení existujících prostředků pro aktuální přiřazení. Výchozí hodnota karty je Nekompatibilní, ale je možné ji filtrovat. Události (připojení, audit, odepření, nasazení, úpravy) aktivované požadavkem na vytvoření prostředku se zobrazují na kartě Události.
Poznámka
U zásad modulu AKS je zobrazeným zdrojem skupina prostředků.
V případě prostředků v režimu poskytovatele prostředků na kartě Dodržování předpisů prostředky vyberte prostředek nebo klikněte pravým tlačítkem na řádek a výběrem zobrazit podrobnosti o dodržování předpisů otevřete podrobnosti o dodržování předpisů komponent. 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ět na stránce dodržování předpisů prostředky 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, ve které je předem vyfiltrované hledání s podrobnostmi o přiřazení a událostech. Protokol aktivit poskytuje další kontext a informace o těchto událostech.
Principy nedodržování předpisů
Pokud je prostředek určen jako nekompatibilní, existuje mnoho možných důvodů. Pokud chcete určit důvod, proč prostředek nedodrží předpisy, nebo zjistit, proč za změnu zodpovídá, podívejte se na stránku Určení nedodržování předpisů.
Příkazový řádek
Stejné informace, které jsou dostupné na portálu, je možné načíst pomocí REST API (včetně s ARMClient),Azure PowerShell a Azure CLI. Úplné podrobnosti o této REST API najdete v referenčních Azure Policy článku. Referenční REST API stránky mají u každé operace zelené tlačítko Vyzkoušet, které vám umožní vyzkoušet si to přímo v prohlížeči.
Ke zpracování ověřování do Azure použijte ARMClient nebo podobný nástroj pro REST API příkladů.
Sumarizovat výsledky
Pomocí REST API lze souhrn provést pomocí kontejneru, definice nebo přiřazení. Tady je příklad shrnutí na úrovni předplatného pomocí Azure Policy Insights Summarize for Subscription:
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 souhrnné dodržování předpisů ve stupní value.results.nonCompliantResources a value.results.nonCompliantPolicies. Tento požadavek obsahuje další podrobnosti, včetně každého přiřazení, ze které jsou tvořena čísla nedodržující předpisy, a informace o definici pro jednotlivá přiřazení. Každý objekt zásad v hierarchii poskytuje queryResultsUri, který lze použít k získání dalších podrobností 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říkladu výše value.policyAssignments.policyDefinitions.results.queryResultsUri poskytuje ukázkový identifikátor URI pro všechny prostředky nedodržující předpisy pro konkrétní definici zásady. Při pohledu na hodnotu $filter se ComplianceState rovná (eq) hodnotě NonCompliant, pro definici zásady se zadá PolicyAssignmentId a pak se zadá samotná hodnota PolicyDefinitionId. Důvodem pro zahrnutí PolicyAssignmentId do 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 PolicyAssignmentId i PolicyDefinitionId můžeme být ve výsledcích, které hledáme, explicitní. Dříve jsme pro PolicyStates použili nejnovější verzi , která automaticky nastaví časové okno z a do časového okna za 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 byl kvůli stručnosti oříznut na jeden prostředek nedodržující předpisy. Podrobná odpověď obsahuje několik údajů o prostředku, zásady nebo iniciativě a přiřazení. Všimněte si, že můžete také vidět, jaké parametry přiřazení byly předány do definice 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": ""
}]
}
Zobrazení událostí
Při vytvoření nebo aktualizaci prostředku se vygeneruje výsledek vyhodnocení zásad. Výsledky se nazývají události zásad. Pomocí následujícího identifikátoru URI můžete zobrazit nedávné události zásad přidružené k předplatnému.
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 článku Azure Policy události.
Azure CLI
Skupina příkazů Azure CLI pro Azure Policy většinu operací, které jsou k dispozici v REST nebo Azure PowerShell. Úplný seznam dostupných příkazů najdete v tématu Azure CLI – Azure Policy přehled.
Příklad: Získání souhrnu stavu pro nejvyšší přiřazenou zásadu s nejvyšším počtem prostředků, které nedodržuje předpisy.
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 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í pro všechny prostředky virtuální sítě, které nedodržuje předpisy.
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ání událostí souvisejících s nekompatibilními prostředky virtuální sítě, ke kterým došlo po konkrétní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í příkazu (ujistěte se, že Install-Module -Name Az.PolicyInsights máte nainstalovanou Azure PowerShell nejnovější verzi):
# 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-AzPolicyStateSummaryGet-AzPolicyStateGet-AzPolicyEventGet-AzPolicyRemediationRemove-AzPolicyRemediationStart-AzPolicyRemediationStop-AzPolicyRemediation
Příklad: Získání souhrnu stavu pro nejvyšší přiřazenou zásadu s nejvyšším počtem prostředků, které nedodržuje předpisy.
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 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í pro všechny prostředky virtuální sítě, které nedodržuje předpisy.
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á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řevodem na objekt CSV a exportem 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 můžete použít k získání konkrétního uživatele pomocí Azure PowerShell Get-AzADUser rutinou . Nahraďte {principalOid} odpovědí z předchozího příkladu.
PS> (Get-AzADUser -ObjectId {principalOid}).DisplayName
Trent Baker
Protokoly služby Azure Monitor
Pokud máte pracovní prostor služby Log Analytics s ř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ů při vyhodnocování nových a aktualizovaných prostředků pomocí jednoduchých dotazů Kusto a AzureActivity AzureActivity tabulky. S podrobnostmi v Azure Monitor protokolů je možné nakonfigurovat upozornění tak, aby sledovala nedodržování předpisů.
Další kroky
- Příklady najdete v Azure Policy ukázky.
- Projděte si strukturu definic Azure Policy.
- Projděte si Vysvětlení efektů zásad.
- Naučte se programově vytvářet zásady.
- Naučte se napravovat prostředky, které nedodržují předpisy.
- Informace o tom, co je skupina pro správu, můžete zkontrolovat pomocí nástroje Uspořádat prostředky pomocí skupin pro správu Azure.