Megosztás a következőn keresztül:


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őinek diagramja a létrehozástól a tesztelésen át az üzembe helyezésig.

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