Udostępnij przez


Wdrażanie barier zabezpieczających opartych na zasadach

Przed użyciem zasad należy zrozumieć, gdzie są one stosowane w odniesieniu do strefy docelowej w implementacjach referencyjnych dla 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ą wzorców implementacji strefy wdrożeniowej platformy Azure. Pomagają tobie i twojej organizacji zapewnić, że strefy docelowe, znane również jako subskrypcje, oraz 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 nowa subskrypcja strefy docelowej jest udostępniana i umieszczana w grupie zarządzającej "corp". Zastosuj zasady DINE i Modify, aby podjąć następujące działania dla subskrypcji strefy docelowej:

  • Włącz Microsoft Defender dla Chmury. Skonfiguruj eksport usługi Defender for Cloud do centralnego obszaru roboczego usługi Log Analytics w subskrypcji zarządzania.
  • Włącz usługę Defender for Cloud 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łącz je z centralnym obszarem roboczym usługi Log Analytics w subskrypcji zarządzania.

Uwaga / Notatka

Wcześniej wspomniane opcje można wyłączyć w dowolnym momencie lub podczas wdrażania implementacji wzorcowej strefy docelowej platformy Azure.

Na powyższej liście przedstawiono podzestaw wszystkich zasad przypisanych jako część architektury referencyjnej strefy docelowej platformy Azure. Aby uzyskać pełną listę zasad, które można przypisać w implementacji referencyjnej landing zone platformy Azure, zobacz Zasady uwzględnione w implementacjach referencyjnych landing zone platformy Azure.

Repozytorium bicep dla obszarów startowych platformy Azure ma budowę modułową. 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ą Tobie i właścicielom strefy lądowania w zachowaniu zgodności. Nie są wdrażane prawdziwe zasoby obciążeniowe 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ń?. Zasady DINE wdrażają lub konfigurują wyłącznie zasoby pomocnicze lub ustawienia wspierające.

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 pracą, w tym zasobów pomocniczych, zasobów wspierających i ustawień, są definiowane w infrastrukturze jako kodzie (IaC) przez zespoły odpowiedzialne za aplikacje obciążeń.

Jeśli uwzględnisz powyższe przykłady lub podobne scenariusze, ten artykuł pomoże Ci zrozumieć, jak wdrożyć architekturę referencyjną 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 NieWymuszaj
  • 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, ten artykuł wyjaśnia, jak zapobiec (co oznacza również wyłączenie) automatycznym zmianom zasad w środowisku platformy Azure.

Uwaga / Notatka

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 w przypadku ładu opartego na zasadach w celu zapewnienia przestrzegania bezpiecznych praktyk wdrażania (SDP). 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:

Grafika przedstawiająca przegląd faz DINE.

  1. Ustaw tryb wymuszania na DoNotEnforce w przypisaniach zasad:
    • Korzystając z tej funkcji, można zmodyfikować zachowanie przypisań, tak aby stało się to polityką wyłącznie audytową, bez modyfikowania podstawowej definicji polityki.
    • 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 wybrać użycie całego środowiska, na przykład grupy zarządzania Sandbox.
    • Możesz też użyć subskrypcji dla obciążenia niekrytycznego.
  3. Ustaw tryb wymuszania do wartości Default przy przypisywaniu zasad w pozostałych politykach 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 akceptowane, aby pozostać w tym stanie, jeśli to konieczne. 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 / Notatka

Scenariusz i podejście opisane w tym artykule nie jest przeznaczone ani zalecane dla większości klientów. Większość klientów może i powinna używać zasad DINE i Modify w ramach ogólnej strategii ładu opartej na zasadach, aby pomóc im pozostać od samego początku.

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 pokazuje, jak używać portalu Azure do ustawienia trybu wymuszania na Wyłączone w przypisaniu zasad. Wyłączone jest również nazywane "DoNotEnforce".

Ustaw tryb wymuszania na wartość Wyłączone w witrynie Azure Portal.

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

W tym przykładzie kodu pokazano, jak używać szablonu usługi ARM do ustawienia enforcementMode na DoNotEnforce w przypisaniu 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ć, jaki byłby skutek działania zasad DINE lub Modify, gdyby tryb wymuszania był 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 przywrócenie trybu wymuszania do wartości Default.

Uwaga / Notatka

Zmieniając politykę na AINE i ustawiając tryb wymuszania na Default, nadal osiągasz ten sam cel, czyli wyłączasz funkcję DINE.

Po zmianie z DINE na AINE i ustawieniu trybu wymuszania z powrotem na Default jako długoterminowe lub trwałe podejście dla fazy 1, odzyskasz wpisy w dzienniku aktywności platformy Azure dotyczące zgodności z politykami. Automatyzacyjne przepływy pracy można tworzyć w oparciu o te wpisy dziennika w operacjach zarządzania platformą w całym systemie.

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 efekt przypisania polityki AuditIfNotExists.

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
Posiłek Włączone lub Domyślne Tak Korygowanie na szeroką skalę wywołane przez platformę po utworzeniu lub aktualizacji zasobów. Ręczne utworzenie zadania korygującego jest wymagane, jeśli zasób zależny został zmodyfikowany lub istniał wcześniej przed przypisaniem polityki.
Posiłek Wyłączone lub NieWymuszaj Nie. Wymagane jest ręczne utworzenie zadania korygowania.
Modify Włączone lub Domyślne Tak Automatyczne korygowanie podczas tworzenia lub aktualizowania.
Modify Wyłączone lub NieWymuszaj Nie. Wymagane jest ręczne utworzenie zadania korygowania.
Deny Włączone lub Domyślne Tak Odmowa utworzenia lub aktualizacji.
Deny Wyłączone lub NieWymuszaj 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 NieWymuszaj Nie. Wymagane jest ręczne korygowanie.

Uwaga / Notatka

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łącz DINE i zmodyfikuj zasady w ramach określonej polityki lub ograniczonego zakresu

W tej fazie poznasz sposób ustawienia trybu egzekwowania w przypisaniach zasad na Default.

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 Sandbox lub subskrypcji obciążenia testowego.

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 / Notatka

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 zarządzania w obrębie tego samego najemcy.

Takie podejście jest również nazywane wdrożeniem „kanarkowym”.

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 pełne procesy wdrażania i pipeline'y CI/CD, w tym testy, mogą być dotknięte.
— Sprawdź, jak może mieć to wpływ na obciążenie.
Subskrypcja środowiska testowego
- Grupa zarządzania piaskownicą
— Subskrypcja strefy docelowej obciążenia nieprodukcyjnego
- Środowisko testowe w skali przedsiębiorstwa
— Skonfiguruj dzienniki aktywności platformy Azure, aby przesyłać strumieniowo do określonego obszaru roboczego usługi Log Analytics.
— Wdrażanie konfiguracji usługi Defender for Cloud.
— Włącz usługę Azure Monitor dla maszyn wirtualnych lub zestawów 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 polityki lub polityk i ograniczonego zakresu do ich przydziału, następnym krokiem jest przypisanie polityki i ustawienie trybu wymuszania na Default. Pozostaw wpływ polityki, na przykład DeployIfNotExists lub Modify, w wybranym ograniczonym zakresie.

Użyj portalu Azure, aby ustawić tryb wymuszania na włączony

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

Zrzut ekranu przedstawiający ustawienie na Włączony tryb wymuszania w portalu Azure.

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 enforcementMode na Default w przypisaniu 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
  }
}

Testing

Ostatnim krokiem w tej fazie jest przeprowadzenie wymaganego testowania. Chcesz sprawdzić, czy zasady DINE lub Modify mogły wpłynąć na twoje obciążenia, kod, narzędzia i procesy oraz w jaki sposób mogły dokonać tych zmian.

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

Oto kilka przykładów testowania:

  • Początkowe wdrożenie działań roboczych.
  • Wdrażanie kodu/aplikacji na środowisko robocze.
  • Dzień 2 operacje i zarządzanie obciążeniem.
  • Likwidowanie obciążenia.

Faza 3: Włącz DINE i modyfikuj zasady wszędzie

W tej fazie poznasz sposób ustawienia trybu egzekwowania w przypisaniach zasad na Default.

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 ustawiasz tryb wymuszania na Default dla wszystkich przypisań polityki 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 wymuszania na Default dla wszystkich zasad DINE i Modify w środowisku Azure, ten wybór jest nadal opcjonalny. Możesz dokonać tego wyboru na poziomie poszczególnych zasad, aby dostosować się do swoich potrzeb i wymagań.

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 jest odpowiednia dla dużych scenariuszy zarządzania polityką, które mają złożone wymagania.