Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Při procházení zásad správného řízení v cloudu budete chtít přejít z ruční správy jednotlivých přiřazení zásad na webu Azure Portal nebo prostřednictvím různých sad SDK na něco, co je možné spravovat a opakovat v podnikovém měřítku. Dva z nejčastějších přístupů k řízení systémů v cloudu ve velkém měřítku jsou:
- Infrastruktura jako kód: Postup nakládání s obsahem, který definuje vaše prostředí, vše od šablon Azure Resource Manageru (šablon ARM) až po definice Azure Policy do Služby Azure Blueprints jako zdrojový kód.
- DevOps: Sjednocení lidí, procesů a produktů za účelem zajištění průběžného doručování hodnot koncovým uživatelům.
Azure Policy jako kód je kombinací těchto nápadů. V podstatě udržujte definice zásad ve správě zdrojového kódu a při každé změně proveďte, otestujte a ověřte tuto změnu. To by ale nemělo být jediným rozsahem zapojení zásad ve vztahu k infrastruktuře jako kód nebo DevOps.
Ověřovací krok by měl být také součástí jiných pracovních postupů kontinuální integrace nebo průběžného nasazování (CI/CD), jako je nasazení aplikačního prostředí nebo virtuální infrastruktury. Díky ověření Služby Azure Policy v rané fázi procesu sestavení a nasazení týmy pro aplikace a operace zjistí, jestli se jejich změny chovají očekávaným způsobem, než je příliš pozdě a pokusí se nasadit v produkčním prostředí.
Definice a základní informace
Než se seznámíte s podrobnostmi o službě Azure Policy jako pracovním postupu kódu, je důležité pochopit některé základní koncepty, jako je vytváření definic zásad a definic iniciativ a jak využívat výjimky při přiřazování těchto definic:
Názvy souborů odpovídají konkrétním částem definic zásad nebo iniciativ a jiným zdrojům zásad.
| Formát souboru | Obsah souboru |
|---|---|
policy-v#.json |
Celá definice zásady pro danou verzi |
policyset-v#.json |
Celá definice iniciativy pro tuto verzi |
policy-v#.parameters.json |
Část definice zásady properties.parameters |
policyset-v#.parameters.json |
Část properties.parameters definice iniciativy |
policy-v#.rules.json |
Část definice zásady properties.policyRule |
policyset-v#.definitions.json |
Část properties.policyDefinitions definice iniciativy |
exemptionName.json |
Výjimka ze zásad, která cílí na konkrétní prostředek nebo obor |
Přehled pracovního postupu
Doporučený obecný pracovní postup služby Azure Policy jako kód vypadá takto:
Diagram znázorňující pole pracovního postupu Kódu ve službě Azure Policy Vytváření zahrnuje vytváření definic zásad a iniciativ. Test zahrnuje přiřazení s vypnutým režimem vynucení. Po kontrole stavu souladu s předpisy následuje udělení oprávnění přiřazení MSI a náprava prostředků. Nasazení zahrnuje aktualizaci přiřazení s aktivovaným režimem vynucování.
Zdrojový ovládací prvek
Existující definice zásad a iniciativ je možné exportovat různými způsoby, jako jsou dotazy PowerShellu, rozhraní příkazového řádku nebo Azure Resource Graphu (ARG ). Prostředí správy zdrojového kódu, které je možné zvolit k uložení těchto definic, může být jednou z mnoha možností, včetně GitHubu nebo Azure DevOps.
Vytváření a aktualizace definic zásad
Definice zásad se vytvářejí pomocí JSON a ukládají se ve správě zdrojového kódu. Každá zásada má vlastní sadu souborů, jako jsou parametry, pravidla a parametry prostředí, které by se měly ukládat do stejné složky. Následující struktura představuje doporučený způsob uchovávání definic zásad ve správě zdrojového kódu.
.
|
|- policies/ ________________________ # Root folder for policy resources
| |- policy1/ ______________________ # Subfolder for a policy
| |- versions_____________________ # Subfolder for versions of definition
| |- policy-v#.json _________________ # Policy definition
| |- policy-v#.parameters.json ______ # Policy definition of parameters
| |- policy-v#.rules.json ___________ # Policy rule
| |- assign.<name1>.json _________ # Assignment 1 for this policy definition
| |- assign.<name2>.json _________ # Assignment 2 for this policy definition
| |- exemptions.<name1>/__________ # Subfolder for exemptions on assignment 1
| - exemptionName.json________ # Exemption for this particular assignment
|- exemptions.<name2>/__________ # Subfolder for exemptions on assignment 2
| - exemptionName.json________ # Exemption for this particular assignment
|
| |- policy2/ ______________________ # Subfolder for a policy
| |- versions_____________________ # Subfolder for versions of definition
| |- policy-v#.json _________________ # Policy definition
| |- policy-v#.parameters.json ______ # Policy definition of parameters
| |- policy-v#.rules.json ___________ # Policy rule
| |- assign.<name1>.json _________ # Assignment 1 for this policy definition
| |- exemptions.<name1>/__________ # Subfolder for exemptions on assignment 1
| - exemptionName.json________ # Exemption for this particular assignment
|
Při přidání nové zásady nebo nové verzi nebo aktualizaci existující zásady by měl pracovní postup automaticky aktualizovat definici zásad v Azure. Testování nové nebo aktualizované definice zásady probíhá v pozdějším kroku.
Vytváření a aktualizace definic iniciativ
Definice iniciativ se také vytvářejí pomocí souborů JSON, které by měly být uložené ve stejné složce jako definice zásad. Definice iniciativy vyžaduje, aby definice zásady už existuje, takže ji nelze vytvořit ani aktualizovat, dokud se zdroj zásady neaktualizuje ve správě zdrojového kódu a pak se aktualizuje v Azure. Následující struktura představuje doporučený způsob uchovávání definic iniciativ ve správě zdrojového kódu:
.
|
|- initiatives/ ______________________ # Root folder for initiatives
| |- init1/ _________________________ # Subfolder for an initiative
| |- versions ____________________ # Subfolder for versions of initiative
| |- policyset.json ______________ # Initiative definition
| |- policyset.definitions.json __ # Initiative list of policies
| |- policyset.parameters.json ___ # Initiative definition of parameters
| |- assign.<name1>.json _________ # Assignment 1 for this policy initiative
| |- assign.<name2>.json _________ # Assignment 2 for this policy initiative
| |- exemptions.<name1>/__________ # Subfolder for exemptions on assignment 1
| - exemptionName.json________ # Exemption for this particular assignment
|- exemptions.<name2>/__________ # Subfolder for exemptions on assignment 2
| - exemptionName.json________ # Exemption for this particular assignment
|
| |- init2/ _________________________ # Subfolder for an initiative
| |- versions ____________________ # Subfolder for versions of initiative
| |- policyset.json ______________ # Initiative definition
| |- policyset.definitions.json __ # Initiative list of policies
| |- policyset.parameters.json ___ # Initiative definition of parameters
| |- assign.<name1>.json _________ # Assignment 1 for this policy initiative
| |- exemptions.<name1>/__________ # Subfolder for exemptions on assignment 1
| - exemptionName.json________ # Exemption for this particular assignment
|
Stejně jako u definic zásad by měl pracovní postup při přidání nebo aktualizaci existující iniciativy automaticky aktualizovat definici iniciativy v Azure. Testování nové nebo aktualizované definice iniciativy přichází v pozdějším kroku.
Poznámka:
K nasazení zásad se doporučuje použít centralizovaný mechanismus nasazení, jako jsou pracovní postupy GitHubu nebo Azure Pipelines. To pomáhá zajistit, aby se do vašeho prostředí nasazovaly jenom prostředky zásad kontrolované a aby se používal mechanismus postupného a centrálního nasazení. Oprávnění k zápisu k prostředkům zásad je možné omezit na identitu použitou v nasazení.
Testování a ověření aktualizované definice
Jakmile automatizace převezme nově vytvořené nebo aktualizované definice zásad nebo iniciativ a provede aktualizaci objektu v Azure, je čas otestovat provedené změny. Buď zásady nebo iniciativy, jejichž jsou součástí, by se pak měly přiřadit k prostředkům v prostředí nejdále od produkčního prostředí. Toto prostředí je obvykle dev.
Poznámka:
V tomto kroku provádíme testování integrace definice zásad ve vašem prostředí Azure; to se liší od ověření funkčnosti definice zásady, ke kterému by mělo dojít během procesu vytváření definice.
Přiřazení by mělo používat režim vynucení 'zakázat', aby vytváření a aktualizace prostředků nebyly blokovány, ale stávající prostředky byly stále auditovány z hlediska souladu s aktualizovanou definicí zásad. I při použití režimu vynucení se doporučuje, aby rozsah přiřazení byl buď skupina prostředků, nebo předplatné určené zvláště k ověřování zásad.
Poznámka:
I když je režim vynucování užitečný, není náhradou za důkladné testování definice zásad za různých podmínek. Definice zásady by se měla testovat s voláními rozhraní REST API, vyhovujícími a nevyhovujícími PUTPATCH prostředky a hraničními případy, jako je vlastnost, která v prostředku chybí.
Po nasazení přiřazení použijte sadu Azure Policy SDK, úlohu posouzení zabezpečení a dodržování předpisů služby Azure Pipelines nebo dotazy Azure Resource Graphu (viz ukázky) k získání dat dodržování předpisů pro nové přiřazení. Prostředí použité k otestování zásad a přiřazení by mělo mít prostředky s různými stavy dodržování předpisů. Stejně jako dobrý jednotkový test pro kód, chcete otestovat, že se prostředky vyhodnotí podle očekávání, bez falešně pozitivních nebo falešně negativních výsledků. Pokud testujete a ověřujete jenom to, co očekáváte, může dojít k neočekávanému a neidentifikovanému dopadu zásad. Další informace najdete v tématu Vyhodnocení dopadu nové definice služby Azure Policy.
Povolit úkoly nápravy
Pokud ověření přiřazení splňuje očekávání, dalším krokem je ověření nápravy. Zásady, které používají buď deployIfNotExists, nebo upravit, mohou mít přidruženou nápravnou úlohu pro aktivaci nápravy v případě nedodržování předpisů a uvést prostředky do souladu.
Prvním krokem k nápravě prostředků je udělení přiřazení politiky přiřazení role, jak je definováno v definici politiky. Toto přiřazení role dává spravované identitě přiřazení zásad dostatečná práva k provedení potřebných změn, aby prostředky dodržovaly předpisy.
Jakmile má přiřazení zásady příslušná práva, pomocí sady SDK zásad aktivujte úlohu nápravy pro sadu prostředků, o kterých je známo, že nedodržují předpisy. Před pokračováním by měly být dokončeny tři testy s těmito nápravnými úlohami:
- Ověřte, že úloha nápravy byla úspěšně dokončena.
- Spuštěním vyhodnocení zásad zjistíte, že výsledky dodržování předpisů zásad se aktualizují podle očekávání.
- Spusťte jednotkový test prostředí proti jejich prostředkům přímo a ověřte, že se změnily jejich vlastnosti.
Testování aktualizovaných výsledků vyhodnocení zásad i prostředí přímo potvrzuje, že úlohy nápravy změnily očekávané výsledky a že definice zásady viděla změnu dodržování předpisů podle očekávání.
Aktualizace povinných úkolů
Po dokončení všech ověřovacích bran aktualizujte přiřazení tak, aby používalo režim vynucenípovolený. Tuto změnu doporučujeme provést na začátku ve stejném prostředí daleko od produkčního prostředí. Ověřte, že se při vytváření prostředků a aktualizaci prostředků použijí požadované efekty. Jakmile se toto prostředí ověří podle očekávání, měla by být změna vymezena tak, aby zahrnovala další prostředí a tak dále, dokud se zásada nenasadí do produkčních prostředků.
Integrované procesní hodnocení
Obecný pracovní postup pro Azure Policy jako kód je určen pro vývoj a nasazování zásad a iniciativ do prostředí ve velkém měřítku. Vyhodnocení zásad by ale mělo být součástí procesu nasazení pro jakýkoli pracovní postup, který nasazuje nebo vytváří prostředky v Azure, například nasazení aplikací nebo spouštění šablon ARM pro vytvoření infrastruktury.
V těchto případech by se po nasazení aplikace nebo infrastruktury do testovacího předplatného nebo skupiny prostředků mělo provést vyhodnocení zásad pro ověření validity všech existujících zásad a iniciativ. I když je možné v takovém prostředí nastavit režim vynucování na zakázáno, je užitečné zjistit včas, zda nasazení aplikace nebo infrastruktury není v rozporu s definicemi zásad. Toto vyhodnocení zásad by proto mělo být krokem v těchto pracovních postupech, aby selhala nasazení, která vytvářejí nevyhovující prostředky.
Přehled
Tento článek se zabývá obecným pracovním postupem pro Azure Policy jako kódem a také tam, kde by mělo být vyhodnocení zásad součástí jiných pracovních postupů nasazení. Tento pracovní postup lze použít v libovolném prostředí, které podporuje skriptované kroky a automatizaci na základě triggerů.
Další kroky
- Seznamte se se strukturou definování politik.
- Přečtěte si o struktuře přiřazení politiky.
- Seznamte se s programovým vytvářením zásad.
- Zjistěte, jak získat data o dodržování předpisů.
- Naučte se, jak napravit nevyhovující zdroje.
- Postup dodržování postupů bezpečného nasazení zásad