Azure Policy tervezése kódmunkafolyamatokként
A felhőszabályozással való haladás során érdemes az azure portalon vagy a különböző SDK-kon keresztül az egyes szabályzat-hozzárendelések manuális felügyeletéről egy nagyvállalati szinten kezelhetőbb és megismételhetőbbre áttérni. A felhőben lévő nagy léptékű rendszerek felügyeletének két fő megközelítése a következő:
- Infrastruktúra kódként: A környezeteket meghatározó tartalom, az Azure Resource Manager-sablonoktól (ARM-sablonoktól) az Azure Policy-definíciókon át az Azure Blueprintsig, forráskódként történő kezelésének gyakorlata.
- DevOps: Az emberek, a folyamatok és a termékek egyesülése, hogy lehetővé tegye a végfelhasználók számára az érték folyamatos átadását.
Az Azure Policy as Code ezeknek az ötleteknek a kombinációja. A szabályzatdefiníciókat lényegében a forráskontrollban tarthatja, és amikor módosítást végez, teszteli és ellenőrzi a módosítást. Ez azonban nem lehet a szabályzatok kódként vagy DevOpsként való bevonásának mértéke.
Az érvényesítési lépésnek más folyamatos integrációs vagy folyamatos üzembe helyezési (CI/CD) munkafolyamatok, például egy alkalmazáskörnyezet vagy virtuális infrastruktúra üzembe helyezésének is hozzá kell tartoznia. Azáltal, hogy az Azure Policy érvényesítése a buildelési és üzembe helyezési folyamat korai összetevőjévé válik, az alkalmazás- és üzemeltetési csapatok felfedezik, hogy a módosítások a várt módon működnek-e, mielőtt túl késő lenne, és éles környezetben próbálják-e üzembe helyezni őket.
Definíciók és alapinformációk
Mielőtt megismerkednénk az Azure Policy mint Kód munkafolyamat részleteivel, fontos tisztában lenni néhány alapvető fogalomkal, például a szabályzatdefiníciók és a kezdeményezési definíciók készítésével, valamint a definíciók hozzárendelései alóli kivételek kihasználásával:
A fájlnevek megfelelnek a szabályzat- vagy kezdeményezésdefiníciók bizonyos részeinek és más szabályzaterőforrásoknak:
Fájlformátum | Fájl tartalma |
---|---|
policy-v#.json |
Az adott verzió teljes szabályzatdefiníciója |
policyset-v#.json |
Az adott verzió teljes kezdeményezési definíciója |
policy-v#.parameters.json |
A properties.parameters szabályzatdefiníció része |
policyset-v#.parameters.json |
A properties.parameters kezdeményezés definíciójának része |
policy-v#.rules.json |
A properties.policyRule szabályzatdefiníció része |
policyset-v#.definitions.json |
A properties.policyDefinitions kezdeményezés definíciójának része |
exemptionName.json |
Egy adott erőforrást vagy hatókört célzó szabályzat kivétele |
Munkafolyamat áttekintése
Az Azure Policy ajánlott általános munkafolyamata a Code-ként az alábbi diagramhoz hasonlóan néz ki:
Az Azure Policy mint Kód munkafolyamat-mezőket bemutató diagram. A szabályzat- és kezdeményezésdefiníciók létrehozását ismerteti. A teszt le van tiltva a kényszerítési móddal való hozzárendelésre. A megfelelőségi állapot átjáró-ellenőrzését az M S I-engedélyek megadása és az erőforrások szervizelése követi. Az üzembe helyezés magában foglalja a hozzárendelés frissítését úgy, hogy engedélyezve van a kényszerítési mód.
Verziókövetés
A meglévő szabályzat- és kezdeményezésdefiníciók különböző módokon exportálhatók, például PowerShell-, PARANCSSOR- vagy Azure Resource Graph-lekérdezésekkel. A definíciók tárolására választott forrásvezérlési felügyeleti környezet számos lehetőség egyike lehet, beleértve a GitHubot vagy az Azure DevOpsot is.
Szabályzatdefiníciók létrehozása és frissítése
A szabályzatdefiníciók JSON használatával jönnek létre, és a forráskövetésben vannak tárolva. Minden szabályzat saját fájlkészlettel rendelkezik, például azokat a paramétereket, szabályokat és környezeti paramétereket, amelyeket ugyanabban a mappában kell tárolni. Az alábbi struktúra ajánlott módszer a szabályzatdefiníciók forráskontrollban tartására.
.
|
|- 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
|
Ha új szabályzatot vagy új verziót ad hozzá, vagy egy meglévőt frissít, a munkafolyamatnak automatikusan frissítenie kell a szabályzatdefiníciót az Azure-ban. Az új vagy frissített szabályzatdefiníció tesztelése egy későbbi lépésben érkezik.
Kezdeményezési definíciók létrehozása és frissítése
A kezdeményezési definíciók JSON-fájlok használatával is létrejönnek, amelyeket ugyanabban a mappában kell tárolni, mint a szabályzatdefiníciókat. A kezdeményezés definíciójához a szabályzatdefiníciónak már léteznie kell, ezért csak akkor hozható létre vagy frissíthető, ha a szabályzat forrását a forráskövetésben frissítették, majd az Azure-ban frissítették. Az alábbi struktúra ajánlott módszer a kezdeményezési definíciók forráskontrollban tartására:
.
|
|- 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
|
A szabályzatdefiníciókhoz hasonlóan a munkafolyamatnak automatikusan frissítenie kell a kezdeményezés definícióját az Azure-ban egy meglévő kezdeményezés hozzáadásakor vagy frissítésekor. Az új vagy frissített kezdeményezésdefiníció tesztelése egy későbbi lépésben érkezik.
Feljegyzés
Javasoljuk, hogy a szabályzatok üzembe helyezéséhez olyan központosított üzembehelyezési mechanizmust használjon, mint a GitHub-munkafolyamatok vagy az Azure Pipelines. Ez segít biztosítani, hogy csak a áttekintett szabályzaterőforrások legyenek üzembe helyezve a környezetben, és hogy fokozatos és központi üzembe helyezési mechanizmust használjon. A szabályzaterőforrások írási engedélyei az üzembe helyezés során használt identitásra korlátozhatók.
A frissített definíció tesztelése és ellenőrzése
Miután az automatizálás végrehajtotta az újonnan létrehozott vagy frissített szabályzat- vagy kezdeményezésdefiníciókat, és frissítette az objektumot az Azure-ban, ideje tesztelni a végrehajtott módosításokat. A szabályzatot vagy a kezdeményezés(ek)et, amelynek része, az éles környezet erőforrásaihoz kell hozzárendelni. Ez a környezet általában Dev.
Feljegyzés
Ebben a lépésben a szabályzatdefiníció integrálási tesztelését végezzük az Azure-környezetben, ez nem azonos a szabályzatdefiníció azon funkcióival, amelyeknek a definíciókészítési folyamat során kell történniük.
A hozzárendelésnek a letiltott kényszerítő eszközt kell használnia, hogy az erőforrások létrehozása és frissítése ne legyen letiltva, de a meglévő erőforrások továbbra is naplózásra kerülnek a frissített szabályzatdefiníciónak való megfelelés érdekében. Még a enforcementMode esetén is ajánlott, hogy a hozzárendelés hatóköre egy erőforráscsoport vagy egy előfizetés, amely kifejezetten a szabályzatok érvényesítésére alkalmas.
Feljegyzés
Bár a kényszerítési mód hasznos, nem helyettesíti a szabályzatdefiníciók alapos tesztelését különböző feltételek mellett. A szabályzatdefiníciót rest API-hívásokkal, megfelelő és nem megfelelő erőforrásokkal, valamint peremhálózati esetekkel, például az erőforrásból hiányzó tulajdonsággal PUT
PATCH
kell tesztelni.
A hozzárendelés üzembe helyezése után használja az Azure Policy SDK-t, az Azure Pipelines biztonsági és megfelelőségi felmérési feladatát vagy az Azure Resource Graph -lekérdezéseket (lásd a mintákat) az új hozzárendelés megfelelőségi adatainak lekéréséhez. A szabályzatok és hozzárendelések teszteléséhez használt környezetnek különböző megfelelőségi állapotú erőforrásokkal kell rendelkeznie. A kód egy jó egységtesztjeként azt szeretné tesztelni, hogy az erőforrások kiértékelése a várt módon történik-e hamis pozitív vagy hamis negatív értékek nélkül. Ha csak a várt eredményt teszteli és ellenőrzi, a szabályzat váratlan és azonosítatlan hatással lehet. További információ: Egy új Azure Policy-definíció hatásának értékelése.
Szervizelési feladatok engedélyezése
Ha a hozzárendelés érvényesítése megfelel az elvárásoknak, a következő lépés a szervizelés ellenőrzése. A deployIfNotExists vagy a módosítást használó szabályzatok egy kapcsolódó szervizelési feladatot aktiválhatnak a nem megfelelő állapotból származó erőforrások kijavítása és megfelelőségük biztosítása érdekében.
Az erőforrások szervizelésének első lépése az, hogy a szabályzat-hozzárendelésnek megadja a szabályzatdefinícióban meghatározott szerepkör-hozzárendelést. Ez a szerepkör-hozzárendelés elegendő jogosultságot biztosít a szabályzat-hozzárendelés felügyelt identitásának az erőforrás megfelelővé tétele érdekében szükséges módosítások elvégzéséhez.
Ha a szabályzat-hozzárendelés megfelelő jogosultságokkal rendelkezik, a Policy SDK-val szervizelési feladatokat indíthat el olyan erőforrásokon, amelyekről ismert, hogy nem megfelelőek. Három tesztet kell elvégezni a szervizelt feladatokon a folytatás előtt:
- Ellenőrizze, hogy a szervizelési feladat sikeresen befejeződött-e
- Szabályzatértékelés futtatása annak megtekintéséhez, hogy a szabályzatmegfelelőségi eredmények a várt módon frissülnek-e
- A környezeti egység tesztjének futtatása közvetlenül az erőforrásokon annak ellenőrzéséhez, hogy megváltoztak-e a tulajdonságaik
A frissített szabályzatértékelési eredmények és a környezet tesztelése közvetlenül megerősíti, hogy a szervizelési feladatok megváltoztatták a várt eredményt, és hogy a szabályzatdefiníció a vártnak megfelelően módosította a megfelelőséget.
Frissítés kényszerített hozzárendelésekre
Miután az összes érvényesítési kapu befejeződött, frissítse a hozzárendelést, hogy az engedélyezve legyen a enforcementMode használata. Javasoljuk, hogy ezt a módosítást kezdetben ugyanabban a környezetben végezze el, távol az éles környezettől. Ellenőrizze, hogy a kívánt hatások érvényesülnek-e az erőforrás létrehozása és az erőforrás frissítése során. Ha a környezet a várt módon működik, a módosítás hatóköre a következő környezetre is kiterjed, és így tovább, amíg a szabályzat éles erőforrásokra nem lesz üzembe helyezve.
Integrált kiértékelések feldolgozása
Az Azure Policy as Code általános munkafolyamata szabályzatok és kezdeményezések nagy léptékű környezetbe történő fejlesztésére és üzembe helyezésére szolgál. A szabályzatok kiértékelésének azonban részt kell vennie az azure-ban erőforrásokat üzembe helyező vagy létrehozó munkafolyamatok üzembe helyezésének folyamatában, például alkalmazások üzembe helyezésében vagy ARM-sablonok futtatásában az infrastruktúra létrehozásához.
Ezekben az esetekben, miután az alkalmazás vagy az infrastruktúra üzembe helyezése egy teszt-előfizetésben vagy erőforráscsoportban megtörtént, az adott hatókörre vonatkozó szabályzatértékelést kell végezni az összes meglévő szabályzat és kezdeményezés ellenőrzésének ellenőrzéséhez. Bár ezek konfigurálhatók egy ilyen környezetben letiltott kényszerítési módként , érdemes korán tudni, hogy egy alkalmazás vagy infrastruktúra üzembe helyezése megsérti-e a szabályzatdefiníciókat. Ennek a szabályzatértékelésnek ezért a munkafolyamatok egyik lépésének kell lennie, és nem megfelelő erőforrásokat létrehozó sikertelen üzembe helyezésnek kell lennie.
Áttekintés
Ez a cikk az Azure Policy mint Kód általános munkafolyamatát ismerteti, valamint azt is, hogy a szabályzatok kiértékelésének más üzembehelyezési munkafolyamatok részét kell képeznie. Ez a munkafolyamat bármely olyan környezetben használható, amely támogatja a szkriptelt lépéseket és az eseményindítókon alapuló automatizálást.
Következő lépések
- Ismerje meg a szabályzatdefiníció struktúráját.
- Ismerje meg a szabályzat-hozzárendelés struktúráját.
- Megtudhatja, hogyan hozhat létre programozott módon szabályzatokat.
- Megtudhatja, hogyan kérhet le megfelelőségi adatokat.
- Megtudhatja, hogyan orvosolhatja a nem megfelelő erőforrásokat.
- A szabályzatok biztonságos üzembehelyezési eljárásainak követése