Wdrażanie barier zabezpieczających opartych na zasadach

Przed użyciem zasad należy zrozumieć, gdzie są używane w implementacjach odwołań do strefy docelowej platformy Azure i dlaczego. Ten artykuł pomoże Ci zrozumieć, czy chcesz uniemożliwić wdrażanie programu DeployIfNotExists (DINE) lub modyfikowanie zasad przed wprowadzaniem zmian w środowisku platformy Azure.

Dlaczego warto używać zasad DINE i Modify?

Zasady DINE i Modify są częścią implementacji odwołań strefy docelowej platformy Azure. Pomagają One Tobie i Twojej organizacji zapewnić, że strefy docelowe, które są również znane jako subskrypcje, a zasoby w nich są zgodne. Te zasady usuwają również obciążenie operacyjne zespołów platformy i strefy docelowej w miarę skalowania środowiska platformy Azure.

Rozważmy na przykład scenariusz, w którym jest aprowizowana nowa subskrypcja strefy docelowej i umieszczona w grupie zarządzania "corp". Zasady DINE i Modify podejmują następujące akcje dla subskrypcji strefy docelowej:

  • Włącz Microsoft Defender dla Chmury. Skonfiguruj Defender dla Chmury eksporty do centralnego obszaru roboczego usługi Log Analytics w subskrypcji zarządzania.
  • Włącz Defender dla Chmury dla różnych obsługiwanych ofert na podstawie parametrów zasad skonfigurowanych w przypisaniu zasad.
  • Skonfiguruj dzienniki aktywności platformy Azure, które mają być wysyłane do centralnego obszaru roboczego usługi Log Analytics w subskrypcji zarządzania.
  • Skonfiguruj ustawienia diagnostyczne dla wszystkich zasobów, które mają być wysyłane do centralnego obszaru roboczego usługi Log Analytics w subskrypcji zarządzania.
  • Wdróż wymaganych agentów usługi Azure Monitor dla maszyn wirtualnych i zestawów skalowania maszyn wirtualnych platformy Azure, w tym serwerów połączonych z usługą Azure Arc. Połączenie je do centralnego obszaru roboczego usługi Log Analytics w subskrypcji zarządzania.

Uwaga

Powyższe opcje można wyłączyć w dowolnym momencie lub podczas wdrażania implementacji odwołań strefy docelowej platformy Azure.

Na powyższej liście przedstawiono podzestaw wszystkich zasad przypisanych jako część akceleratora strefy docelowej platformy Azure. Aby uzyskać pełną listę zasad, które można przypisać przez implementację referencyjną strefy docelowej platformy Azure, zobacz Zasady zawarte w implementacjach odwołań stref docelowych platformy Azure.

Repozytorium bicep stref docelowych platformy Azure jest modułowe. Powyższe zasady domyślne można wdrożyć za pomocą modułu ALZ Default Policy Assignments (Przypisania zasad domyślnych ALZ).

Wszystkie przypisane zasady pomagają i właścicielom strefy docelowej zachować zgodność. Nie są wdrażane rzeczywiste zasoby obciążenia za pośrednictwem zasad DINE lub Modify. Nie zalecamy tego też. Aby uzyskać więcej informacji, zobacz Czy należy używać usługi Azure Policy do wdrażania obciążeń?. Te zasady DINE wdrażają lub konfigurują tylko zasoby pomocnicze lub pomocnicze albo ustawienia.

Implementacje referencyjne stref docelowych platformy Azure używają zasad platformy Azure DINE , aby ułatwić osiągnięcie ładu opartego na zasadach w środowisku platformy Azure. Ale może nie możesz użyć zasad DINE lub Modify lub nie jesteś gotowy do włączenia tego typu efektu zasad platformy Azure z następujących powodów:

  • Zasady zgodności z przepisami, standardy lub ograniczenia prawne.
  • Ścisłe procesy kontroli zmian, które wymagają zatwierdzenia przez człowieka dla każdej akcji w środowisku platformy Azure.
  • Brak wiedzy, doświadczenia i zrozumienia sposobu zarządzania zasadami DINE i korzystania z nich.
  • Wymagania organizacyjne dotyczące wszystkich konfiguracji zasobów obciążenia, w tym zasobów pomocniczych, zasobów pomocniczych i ustawień, są definiowane w infrastrukturze jako kodzie (IaC) przez zespoły aplikacji obciążeń.

Jeśli pasujesz do powyższych przykładów lub podobnych scenariuszy, ten artykuł pomoże Ci zrozumieć, jak wdrożyć architekturę koncepcyjną strefy docelowej platformy Azure i przestrzegać jej zasad projektowania. Chociaż początkowo nie będziesz używać pewnych zasad, możesz zdecydować się na stopniowe włączanie ich w przyszłości. Celem jest ułatwienie osiągnięcia ładu opartego na zasadach.

Ważne

W tym artykule zobaczysz dwie możliwe wartości używane dla terminów trybu wymuszania:

  • Wyłączone lub DoNotEnforce
  • Włączone lub Domyślne

Witryna Azure Portal używa opcji Wyłączone i Włączone dla trybu wymuszania. Szablony usługi Azure Resource Manager (ARM) i inne interfejsy API używają opcji DoNotEnforce i Default dla tych samych opcji.

Aby uzyskać więcej informacji, zobacz Tryb wymuszania.

Jeśli nadal masz pewność, że twoja organizacja nie może używać zasad DINE lub Modify, w tym artykule wyjaśniono, jak zapobiec (znanej także jako wyłączenie) zasady wprowadzania automatycznych zmian w środowisku platformy Azure.

Uwaga

Ta operacja nie jest trwała. Zasady można ponownie włączyć w dowolnym momencie przez członka zespołu platformy, jeśli później zdecydujesz się na użycie zasad DINE lub Modify.

Aby uzyskać więcej informacji, zobacz faza 2 i faza 3.

Obsługa selektorów zasobów ma również zastosowanie do ładu opartego na zasadach, aby upewnić się, że Sejf praktyki wdrażania (SDP) są zgodne. Selektory zasobów udostępniają funkcje stopniowego wdrażania przypisań zasad na podstawie czynników, takich jak lokalizacja zasobu, typ zasobu lub czy zasób ma lokalizację. Więcej informacji można znaleźć w tym dokumencie.

Omówienie podejścia

Na poniższym diagramie przedstawiono podsumowanie sugerowanego podejścia fazowego:

Graphic that shows a DINE phases overview.

  1. Ustaw tryb wymuszania na DoNotEnforce wartość w przypadku przypisań zasad:
    • Korzystając z tej funkcji, można zmodyfikować zachowanie przypisań, aby skutecznie stać się zasadami tylko do inspekcji bez modyfikowania podstawowej definicji zasad.
    • Takie podejście umożliwia również wykonywanie ręcznych zadań korygacyjnych na niezgodnych zasobach przy użyciu zadań korygacyjnych, jeśli chcesz.
  2. Ustaw tryb wymuszania na Default dla przypisań zasad, aby przywrócić automatyczne korygowanie przypisań zasad DINE w ograniczonym zakresie:
    • Możesz użyć całego środowiska, na przykład grupy zarządzania piaskownicą.
    • Możesz też użyć niekrytycznej subskrypcji obciążenia.
  3. Ustaw tryb wymuszania na Default wartość w przypadku przypisań zasad w pozostałych zasadach DINE w całym środowisku platformy Azure.

Ze względu na ograniczenia zgodności z przepisami niektórzy klienci nigdy nie mogą przejść do poprzedniej fazy 1. Nie jest to problem i jest obsługiwany, aby w razie potrzeby pozostać w tym stanie. Inni klienci mogą przejść do faz 2 i 3, aby w pełni wdrożyć zasady DINE i Modify, aby ułatwić zarządzanie oparte na zasadach dla środowiska platformy Azure.

Uwaga

Scenariusz i podejście opisane w tym artykule nie jest przeznaczone ani zalecane dla większości klientów. Zapoznaj się z sekcją Dlaczego warto używać zasad DINE i Modyfikuj? przed podjęciem decyzji, czy te zasady są odpowiednie i wymagane dla danego środowiska.

Faza 1. Wyłączanie funkcji DINE i Modyfikowanie zasad automatycznych akcji

Po przypisaniu zasad domyślnie będzie stosowany efekt zdefiniowany w definicji zasad. Zalecamy pozostawienie definicji zasad w następujący sposób. Na przykład pozostaw efekt przypisania zasad jako DeployIfNotExists.

Zamiast zmieniać definicję zasad lub jej efekt, możesz zamiast tego wpływać na to zachowanie przy minimalnym nakładzie pracy przy użyciu funkcji przypisań zasad.

Użyj witryny Azure Portal, aby ustawić tryb wymuszania na wartość Wyłączone

Ten zrzut ekranu przedstawia sposób używania witryny Azure Portal do ustawiania trybu wymuszania na wartość Wyłączone w przypisaniu zasad. Wyłączone jest również nazywane DoNotEnforce.

Set the enforcement mode to Disabled in the Azure portal.

Użyj szablonu usługi ARM, aby ustawić tryb wymuszania na DoNotEnforce

W tym przykładzie kodu pokazano, jak używać szablonu usługi ARM do ustawienia enforcementModeDoNotEnforce dla przypisania zasad. DoNotEnforce jest również znany jako Disabled.

{
  "type": "Microsoft.Authorization/policyAssignments",
  "apiVersion": "2019-09-01",
  "name": "PolicyAssignmentName",
  "location": "[deployment().location]",
  "properties": {
    "description": "PolicyAssignmentDescription",
    "policyDefinitionId": "[parameters('policyDefinitionId')]",
    "enforcementMode": "DoNotEnforce"
    … // other properties removed for display purposes
  }
}

Za pomocą trybu wymuszania można zobaczyć wpływ zasad na istniejące zasoby bez inicjowania lub wyzwalania wpisów w dzienniku aktywności platformy Azure. Ten scenariusz jest często określany jako "What If" i jest zgodny z bezpiecznymi praktykami wdrażania.

Nawet jeśli tryb wymuszania jest ustawiony na DoNotEnforce, zadania korygowania mogą być wyzwalane ręcznie. Możesz skorygować określone niezgodne zasoby. Możesz również zobaczyć, jakie zasady DINE lub Modify zostałyby wykonane, jeśli tryb wymuszania został ustawiony na Default.

Ważne

Gdy tryb wymuszania jest ustawiony na DoNotEnforce, wpisy w dzienniku aktywności platformy Azure nie są generowane. Rozważ ten czynnik, jeśli chcesz otrzymywać powiadomienia o utworzeniu niezgodnego zasobu.

Stałe pozostawanie w stanie fazy 1

Jak wspomniano w sekcji Omówienie podejścia, niektórzy klienci mogą wymagać pozostania w fazie 1 przez długi okres, a nawet trwale ze względu na ich wymagania. Ten stan jest prawidłowy, a klienci mogą pozostawać w nim przez dowolny czas.

Być może musisz pozostać w tym stanie na stałe lub przez długi okres, jak lata. Jeśli tak, lepszym rozwiązaniem może być zastosowanie AuditIfNotExists efektu zasad (AINE) i skojarzonych definicji oraz ustawienie trybu wymuszania z powrotem na Defaultwartość .

Uwaga

Zmieniając zasady AINE i ustawiając tryb wymuszania na Default, nadal osiągasz ten sam cel wyłączenia funkcji DINE.

Po zmianie z DINE na AINE i ustawieniu trybu wymuszania z powrotem na Default jako długoterminowe lub trwałe podejście do fazy 1, uzyskasz wpisy dziennika aktywności platformy Azure dla stanu zgodności zasad. Przepływy pracy automatyzacji można tworzyć na podstawie tych wpisów dziennika w ogólnych operacjach zarządzania platformą.

Utracisz możliwość wykonywania zadań korygowania ręcznego. W przeciwieństwie do zasad DINE zasady AINE nie wykonują żadnych wdrożeń, ani zautomatyzowanych, ani ręcznych.

Pamiętaj, aby zaktualizować definicję zasad tak, aby akceptowała i zezwalała na AuditIfNotExists efekt przypisywania zasad.

Poniższa tabela zawiera podsumowanie opcji i implikacji dla różnych typów efektów zasad i kombinacji trybu wymuszania:

Efekt zasad Tryb wymuszania Wpis dziennika aktywności Akcja korygowania
Zjeść posiłek Włączone lub Domyślne Tak Korygowanie wyzwalane przez platformę na dużą skalę po utworzeniu lub aktualizacji zasobów. Ręczne tworzenie zadania korygowania wymaganego, jeśli zasób zależny jest modyfikowany lub wstępnie współistniejący przed przypisaniem zasad.
Zjeść posiłek Wyłączone lub DoNotEnforce Nie. Wymagane jest ręczne utworzenie zadania korygowania.
Modyfikowanie Włączone lub Domyślne Tak Automatyczne korygowanie podczas tworzenia lub aktualizowania.
Modyfikowanie Wyłączone lub DoNotEnforce Nie. Wymagane jest ręczne utworzenie zadania korygowania.
Zablokuj Włączone lub Domyślne Tak Nie można utworzyć lub zaktualizować.
Zablokuj Wyłączone lub DoNotEnforce Nie. Dozwolone tworzenie lub aktualizowanie. Wymagane jest ręczne korygowanie.
Inspekcja/AINE Włączone lub Domyślne Tak Wymagane jest ręczne korygowanie.
Inspekcja/AINE Wyłączone lub DoNotEnforce Nie. Wymagane jest ręczne korygowanie.

Uwaga

Zapoznaj się ze wskazówkami w artykule Reacting to Azure Policy state change events (Reagowanie na zdarzenia zmian stanu usługi Azure Policy), aby zrozumieć, czy korzystanie z integracji usługi Azure Event Grid z usługą Azure Policy zapewnia odpowiednie podejście, jeśli planujesz utworzyć własną automatyzację na podstawie zdarzeń stanu zasad.

Faza 2. Włączanie zasad DINE i Modyfikowanie dla określonych zasad lub ograniczonego zakresu

W tej fazie dowiesz się, jak ustawić tryb wymuszania na Default przypisania zasad.

Po zakończeniu fazy 1 decydujesz, że chcesz przetestować i wypróbować pełne możliwości automatyzacji zasad DINE i Modify dla określonych zasad lub w ograniczonym zakresie. Chcesz użyć grupy zarządzania piaskownicą lub subskrypcji obciążenia nieprodukcyjnego.

Aby wykonać tę procedurę, najpierw należy zidentyfikować zasady lub ograniczony zakres, który będzie używany do testowania i wypróbowania możliwości pełnej automatyzacji zasad DINE i Modify.

Uwaga

Warto przejrzeć i wdrożyć podejście testowe dla platformy w skali przedsiębiorstwa. W ten sposób można przetestować zasady i inne zmiany platformy w oddzielnej hierarchii grup zarządzania w ramach tej samej dzierżawy.

Takie podejście jest również nazywane wdrożeniem "kanargu".

Niektóre sugerowane przykłady zakresów i zasad przedstawiono w poniższej tabeli:

Kiedy chcesz... ... wybierz z tych zakresów Przykładowe zasady do użycia
- Przetestuj możliwości zautomatyzowanego korygowania DINE/Modify.
— Sprawdź, jak mogą mieć wpływ kompletne procesy wdrażania i potoki ciągłej integracji/ciągłego wdrażania, w tym testy.
— Sprawdź, jak może mieć to wpływ na obciążenie.
— Subskrypcja piaskownicy
- Grupa zarządzania piaskownicą
— Subskrypcja strefy docelowej obciążenia nieprodukcyjnego
- Środowisko "kanary" w skali przedsiębiorstwa
— Skonfiguruj dzienniki aktywności platformy Azure, aby przesyłać strumieniowo do określonego obszaru roboczego usługi Log Analytics.
— Wdróż konfigurację Defender dla Chmury.
— włącz Azure Monitor dla maszyn wirtualnych lub zestawy skalowania maszyn wirtualnych.
— Wdrażanie ustawień diagnostycznych w usługach platformy Azure.
- Potencjalnie włączyć tylko dla określonych usług w ramach inicjatywy.

Możesz również zdecydować się na użycie zadania korygowania ręcznego w ograniczonym zakresie lub zestawie zasobów w celu przetestowania sposobu, w jaki te zasady będą wpływać na środowisko. Aby uzyskać więcej informacji na temat tworzenia zadania korygowania, zobacz dokumentację usługi Azure Policy Tworzenie zadania korygowania.

Po zidentyfikowaniu zasad lub zasad i ograniczonego zakresu do ich przypisania następnym krokiem jest przypisanie zasad i ustawienie trybu wymuszania na Defaultwartość . Pozostaw efekt zasad, na przykład DeployIfNotExists lub Modify, tak jak w wybranym ograniczonym zakresie.

Użyj witryny Azure Portal, aby ustawić tryb wymuszania na wartość Włączone

Na tym zrzucie ekranu pokazano, jak użyć witryny Azure Portal do ustawienia trybu wymuszania na wartość Włączone przy przypisaniu zasad. Włączone jest również nazywane Wartością domyślną.

Screenshot that shows setting the enforcement mode to Enabled in the Azure portal.

Użyj szablonu usługi ARM, aby ustawić tryb wymuszania na wartość Domyślna

W tym przykładzie kodu pokazano, jak używać szablonu usługi ARM do ustawienia enforcementModeDefault dla przypisania zasad. Default jest również znany jako Enabled.

{
  "type": "Microsoft.Authorization/policyAssignments",
  "apiVersion": "2019-09-01",
  "name": "PolicyAssignmentName",
  "location": "[deployment().location]",
  "properties": {
    "description": "PolicyAssignmentDescription",
    "policyDefinitionId": "[parameters('policyDefinitionId')]",
    "enforcementMode": "Default"
    … // other properties removed for display purposes
  }
}

Testowanie

Ostatnim krokiem w tej fazie jest przeprowadzenie wymaganego testowania. Chcesz sprawdzić, czy zasady DINE lub Modify mogły mieć wpływ na obciążenia, kod, narzędzia i procesy oraz jak mogły mieć wpływ na zasady modyfikowania.

Wykonaj wiele testów, aby przechwycić cały cykl życia obciążenia. Chcesz mieć pewność, że w pełni zrozumiesz, czy i jak zasady DINE lub Modyfikuje wprowadzone zmiany.

Oto kilka przykładów testowania:

  • Początkowe wdrożenie obciążenia.
  • Wdrażanie kodu/aplikacji w obciążeniu.
  • Dzień 2 operacje i zarządzanie obciążeniem.
  • Likwidowanie obciążenia.

Faza 3. Włączanie zasad DINE i Modyfikowanie wszędzie

W tej fazie dowiesz się, jak ustawić tryb wymuszania na Default przypisania zasad.

Zakładamy, że testowanie na końcu fazy 2 zakończyło się pomyślnie. Możesz też mieć pewność, że rozumiesz, jak zasady DINE lub Modify współdziałają z obciążeniem. Teraz możesz rozszerzyć użycie zasad DINE i Modify w pozostałej części środowiska platformy Azure.

Aby kontynuować, wykonaj kroki podobne do kroków w fazie 2. Tym razem należy ustawić tryb wymuszania na Default wartość dla wszystkich przypisań zasad DINE i Modify w całym środowisku platformy Azure.

Poniżej przedstawiono ogólne omówienie kroków, które należy wykonać w tej fazie:

  • Usuń przypisania używane specjalnie do testowania w fazie 2.
  • Przejrzyj poszczególne przypisania zasad DINE i Modyfikuj w środowisku platformy Azure i ustaw tryb wymuszania na Defaultwartość . Ten proces jest pokazany w przykładach w fazie 2.
  • Utwórz zadania korygowania dla istniejących zasobów, które są niezgodne, postępując zgodnie ze wskazówkami w temacie Tworzenie zadania korygowania. Nowe zasoby zostaną automatycznie skorygowane, jeśli są zgodne z regułami zasad i warunkami istnienia.

Mimo że w fazie 3 zalecamy ustawienie trybu Default wymuszania na dla wszystkich zasad DINE i Modify w środowisku platformy Azure, ten wybór jest nadal opcjonalny. Możesz dokonać tego wyboru dla poszczególnych zasad zgodnie z potrzebami i wymaganiami.

Zaawansowane zarządzanie zasadami

Aby uzyskać zaawansowane zarządzanie usługą Azure Policy na dużą skalę, rozważ wdrożenie zasad przedsiębiorstwa jako kodu (EPAC) w celu zarządzania zasadami. EPAC zapewnia stanowe środowisko zarządzania, które korzysta z IaC. Zazwyczaj odpowiada ona dużym scenariuszom zarządzania zasadami ze złożonymi wymaganiami.