Sdílet prostřednictvím


Bezpečné nasazení přiřazení azure Policy

Jak se vaše prostředí rozšiřuje, tak i poptávka po řízeném kanálu průběžného nasazování (CD) s progresivní kontrolou expozice. Společnost Microsoft proto doporučuje týmům DevOps dodržovat architekturu SDP (Safe Deployment Practices). Bezpečné nasazení definic a přiřazení služby Azure Policy pomáhá omezit dopad nezamýšleného chování prostředků zásad.

Obecný přístup implementace SDP se službou Azure Policy spočívá v postupném zavedení přiřazení zásad okruhy za účelem zjištění změn zásad, které mají vliv na prostředí v počátečních fázích předtím, než ovlivní kritickou cloudovou infrastrukturu.

Okruhy nasazení je možné uspořádat různými způsoby. V tomto kurzu s návodem jsou okruhy rozdělené různými oblastmi Azure s okruhem 0 představujícími nekritická místa, umístění s nízkým provozem a okruh 5 označující nejdůležitější a nejvyšší místa provozu.

Postup bezpečného nasazení přiřazení služby Azure Policy s účinky odepření nebo připojení

Následující vývojový diagram použijte jako referenci, jak použít architekturu SDP na přiřazení azure Policy, která používají efekty deny zásad nebo append zásad.

Poznámka:

Další informace o efektech zásad Azure najdete v tématu Vysvětlení fungování efektů.

Vývojový diagram s kroky 1 až osm ukazujícími nasazení postupů bezpečného nasazení nové definice služby Azure Policy.

Čísla kroků vývojového diagramu:

  1. Jakmile vyberete definici zásady, přiřaďte tuto zásadu na nejvyšší úrovni včetně všech okruhů nasazení. Použití selektorů prostředků k zúžení použitelnosti na nejméně kritický okruh pomocí "kind": "resource location" vlastnosti. Nakonfigurujte typ efektu audit pomocí přepsání přiřazení. Ukázkový selektor s umístěním a efektem eastUS jako audit:

    "resourceSelectors": [{ 
      "name": "SDPRegions", 
      "selectors": [{
          "kind": "resourceLocation",
          "in": [ "eastUS" ] 
      }]
    }], 
    "overrides":[{ 
      "kind": "policyEffect", 
      "value": "Audit" 
    }] 
    
  2. Po nasazení přiřazení a dokončení počáteční kontroly dodržování předpisů ověřte, že výsledek dodržování předpisů je očekávaný.

    Měli byste také nakonfigurovat automatizované testy, které spouští kontroly dodržování předpisů. Kontrola dodržování předpisů by měla zahrnovat následující logiku:

    • Shromáždění výsledků dodržování předpisů
    • Pokud jsou výsledky dodržování předpisů podle očekávání, měl by kanál pokračovat.
    • Pokud výsledky dodržování předpisů nejsou podle očekávání, kanál by měl selhat a měli byste spustit ladění.

    Kontrolu dodržování předpisů můžete například nakonfigurovat pomocí jiných nástrojů v rámci vašeho konkrétního kanálu kontinuální integrace nebo průběžného nasazování (CI/CD).

    V každé fázi uvedení by kontroly stavu aplikace měly potvrdit stabilitu služby a dopadu zásady. Pokud výsledky nejsou kvůli konfiguraci aplikace očekávané, refaktorujte aplikaci podle potřeby.

  3. Opakujte tak, že rozbalíte hodnoty vlastností selektoru prostředků tak, aby zahrnovaly další okruhy. umístění a ověření očekávaných výsledků dodržování předpisů a stavu aplikace. Příklad selektoru s přidanou hodnotou umístění:

    "resourceSelectors": [{ 
      "name": "SDPRegions", 
      "selectors": [{
          "kind": "resourceLocation",
          "in": [ "eastUS", "westUS"] 
      }]
    }]
    
  4. Jakmile úspěšně přiřadíte zásadu všem okruhům pomocí audit režimu, kanál by měl aktivovat úlohu, která změní účinek zásady na deny a resetuje selektory prostředků do umístění přidruženého k okruhu 0. Příklad selektoru s jednou oblastí a efektem nastaveným na odepření:

    "resourceSelectors": [{ 
      "name": "SDPRegions", 
      "selectors": [{
          "kind": "resourceLocation",
          "in": [ "eastUS" ] 
      }]
    }], 
    "overrides":[{ 
      "kind": "policyEffect", 
      "value": "Deny" 
    }] 
    
  5. Po změně efektu by automatizované testy měly zkontrolovat, jestli probíhá vynucení podle očekávání.

  6. Zopakujte to tak, že do konfigurace selektoru prostředků zahrnete další okruhy.

  7. Tento proces opakujte pro všechny produkční okruhy.

Postup bezpečného nasazení přiřazení azure Policy s úpravami nebo nasazením efektůIfNotExists

Kroky pro zásady, které používají efekty modify , deployIfNotExists jsou podobné krokům dříve vysvětleným s další akcí použití režimu vynucení a aktivací úlohy nápravy. Projděte si následující vývojový diagram s upravenými kroky 5–9:

Vývojový diagram znázorňující kroky 5 až 9 v pracovním postupu bezpečného nasazení azure Policy

Čísla kroků vývojového diagramu:

  1. Jakmile vyberete definici zásady, přiřaďte tuto zásadu na nejvyšší úrovni včetně všech okruhů nasazení. Použití selektorů prostředků k zúžení použitelnosti na nejméně kritický okruh pomocí "kind": "resource location" vlastnosti. Nakonfigurujte režim vynucení přiřazení do DoNotEnforce. Ukázkový selektor s umístěním eastUS a vynucenímMode jako DoNotEnforce:

    "resourceSelectors": [{ 
      "name": "SDPRegions", 
      "selectors": [{
          "kind": "resourceLocation",
          "in": [ "eastUS" ] 
      }]
    }], 
    "enforcementMode": "DoNotEnforce"
    
  2. Po nasazení přiřazení a dokončení počáteční kontroly dodržování předpisů ověřte, že výsledek dodržování předpisů je očekávaný.

    Měli byste také nakonfigurovat automatizované testy, které spouští kontroly dodržování předpisů. Kontrola dodržování předpisů by měla zahrnovat následující logiku:

    • Shromáždění výsledků dodržování předpisů
    • Pokud jsou výsledky dodržování předpisů podle očekávání, měl by kanál pokračovat.
    • Pokud výsledky dodržování předpisů nejsou podle očekávání, kanál by měl selhat a měli byste spustit ladění.

    Kontrolu dodržování předpisů můžete nakonfigurovat pomocí jiných nástrojů v kanálu kontinuální integrace nebo průběžného nasazování (CI/CD).

    V každé fázi uvedení by kontroly stavu aplikace měly potvrdit stabilitu služby a dopadu zásady. Pokud výsledky nejsou kvůli konfiguraci aplikace očekávané, refaktorujte aplikaci podle potřeby.

    Můžete také aktivovat úlohy nápravy, které opraví stávající nekompatibilní prostředky. Ujistěte se, že úlohy nápravy přinášejí prostředky do souladu s očekáváním.

  3. Opakujte to tak, že rozbalíte hodnoty vlastností selektoru prostředků tak, aby zahrnovaly umístění dalšího okruhu a ověření očekávaných výsledků dodržování předpisů a stavu aplikace. Příklad selektoru s přidanou hodnotou umístění:

    "resourceSelectors": [{ 
      "name": "SDPRegions", 
      "selectors": [{
          "kind": "resourceLocation",
          "in": [ "eastUS", "westUS"] 
      }]
    }]
    
  4. Jakmile úspěšně přiřadíte zásadu všem okruhům pomocí režimu DoNotEnforce , kanál by měl aktivovat úlohu, která změní zásadu enforcementMode na výchozí povolení a resetuje selektory prostředků do umístění přidruženého k okruhu 0. Příklad selektoru s jednou oblastí a efektem nastaveným na odepření:

    "resourceSelectors": [{ 
      "name": "SDPRegions", 
      "selectors": [{
          "kind": "resourceLocation",
          "in": [ "eastUS" ] 
      }]
    }], 
    "enforcementMode": "Default",
    
  5. Po změně efektu by automatizované testy měly zkontrolovat, jestli probíhá vynucení podle očekávání.

  6. Zopakujte to tak, že do konfigurace selektoru prostředků zahrnete další okruhy.

  7. Tento proces opakujte pro všechny produkční okruhy.

Postup bezpečné aktualizace předdefinované verze definice v rámci přiřazení služby Azure Policy

  1. V rámci stávajícího přiřazení použijte přepsání pro aktualizaci verze definice pro nejméně kritický okruh. Ke změně definiceVersion a selektorů v podmínce přepsání používáme kombinaci přepsání, abychom zúžili použitelnost podle "kind": "resource location" vlastnosti. Všechny prostředky, které jsou mimo zadaná umístění, budou nadále hodnoceny proti verzi z definitionVersion vlastnosti nejvyšší úrovně v přiřazení. Příklad přepsání aktualizace verze definice a 2.0.* jeho použití pouze na prostředky v EastUs.

    "overrides":[{ 
      "kind": "definitionVersion", 
      "value": "2.0.*",
      "selectors": [{
        "kind": "resourceLocation",
        "in": [ "eastus"]
      }]
    }] 
    
  2. Po aktualizaci přiřazení a dokončení počáteční kontroly dodržování předpisů ověřte, že výsledek dodržování předpisů je očekávaný.

    Měli byste také nakonfigurovat automatizované testy, které spouští kontroly dodržování předpisů. Kontrola dodržování předpisů by měla zahrnovat následující logiku:

    • Shromáždění výsledků dodržování předpisů
    • Pokud jsou výsledky dodržování předpisů podle očekávání, měl by kanál pokračovat.
    • Pokud výsledky dodržování předpisů nejsou podle očekávání, kanál by měl selhat a měli byste spustit ladění.

    Kontrolu dodržování předpisů můžete například nakonfigurovat pomocí jiných nástrojů v rámci vašeho konkrétního kanálu kontinuální integrace nebo průběžného nasazování (CI/CD).

    V každé fázi uvedení by kontroly stavu aplikace měly potvrdit stabilitu služby a dopadu zásady. Pokud výsledky nejsou kvůli konfiguraci aplikace očekávané, refaktorujte aplikaci podle potřeby.

  3. Opakujte tak, že rozbalíte hodnoty vlastností selektoru prostředků tak, aby zahrnovaly další okruhy. umístění a ověření očekávaných výsledků dodržování předpisů a stavu aplikace. Příklad s přidanou hodnotou umístění:

     "overrides":[{ 
      "kind": "definitionVersion", 
      "value": "2.0",
      "selectors": [{
        "kind": "resourceLocation",
        "in": [ "eastus", "westus"]
      }]
    }] 
    
  4. Po úspěšném zahrnutí všech potřebných umístění v rámci _selectors můžete odebrat přepsání a aktualizovat vlastnost definitionVersion v rámci přiřazení:

"properties": {
        "displayName": "Enforce resource naming rules",
        "description": "Force resource names to begin with DeptA and end with -LC",
        "definitionVersion": "2.0.*",
}

Další kroky