Opis usługi Azure Policy dla klastrów Kubernetes

Usługa Azure Policy rozszerza usługę Gatekeeper w wersji 3, element webhook kontrolera dostępu dla agenta open policy (OPA), aby zastosować wymuszanie na dużą skalę i zabezpieczenia składników klastra w scentralizowany, spójny sposób. Składniki klastra obejmują zasobniki, kontenery i przestrzenie nazw.

Usługa Azure Policy umożliwia zarządzanie stanem zgodności składników klastrów platformy Kubernetes i raportowanie go z jednego miejsca. Dzięki użyciu dodatku lub rozszerzenia usługi Azure Policy zarządzanie składnikami klastra jest ulepszone za pomocą funkcji usługi Azure Policy, takich jak możliwość używania selektorów i przesłonięć w celu bezpiecznego wprowadzania i wycofywania zasad.

Usługa Azure Policy dla platformy Kubernetes obsługuje następujące środowiska klastrów:

Ważne

Model dodatku Helm usługi Azure Policy i dodatek dla aparatu AKS zostały wycofane. Postępuj zgodnie z instrukcjami, aby usunąć dodatki.

Omówienie

Po zainstalowaniu dodatku lub rozszerzenia usługi Azure Policy w klastrach Kubernetes usługa Azure Policy wprowadza następujące funkcje:

  • Sprawdza usługę Azure Policy pod kątem przypisań zasad do klastra.
  • Wdraża definicje zasad w klastrze jako szablon ograniczeń i ograniczone zasoby niestandardowe lub jako zasób szablonu mutacji (w zależności od zawartości definicji zasad).
  • Raportuje szczegóły inspekcji i zgodności z powrotem do usługi Azure Policy.

Aby włączyć i używać usługi Azure Policy z klastrem Kubernetes, wykonaj następujące czynności:

  1. Skonfiguruj klaster Kubernetes i zainstaluj dodatek usługi Azure Kubernetes Service (AKS) lub rozszerzenie usługi Azure Policy dla klastrów Kubernetes z obsługą usługi Arc (w zależności od typu klastra).

    Uwaga

    Aby uzyskać typowe problemy z instalacją, zobacz Rozwiązywanie problemów — dodatek usługi Azure Policy.

  2. Tworzenie lub używanie przykładowej definicji usługi Azure Policy dla platformy Kubernetes

  3. Przypisywanie definicji do klastra Kubernetes

  4. Poczekaj na sprawdzenie poprawności

  5. Rejestrowanie i rozwiązywanie problemów

  6. Zapoznaj się z ograniczeniami i zaleceniami w sekcji często zadawanych pytań

Instalowanie dodatku usługi Azure Policy dla usługi AKS

Wymagania wstępne

  1. Zarejestruj dostawców zasobów i funkcje w wersji zapoznawczej.

    • Azure Portal:

      Microsoft.PolicyInsights Zarejestruj dostawców zasobów. Aby uzyskać instrukcje, zobacz Dostawcy zasobów i typy.

    • Interfejs wiersza polecenia platformy Azure:

      # Log in first with az login if you're not using Cloud Shell
      
      # Provider register: Register the Azure Policy provider
      az provider register --namespace Microsoft.PolicyInsights
      
  2. Potrzebny jest interfejs wiersza polecenia platformy Azure w wersji 2.12.0 lub nowszej, zainstalowany i skonfigurowany. Uruchom polecenie az --version, aby dowiedzieć się, jaka wersja jest używana. Jeśli konieczna będzie instalacja lub uaktualnienie interfejsu, zobacz Instalowanie interfejsu wiersza polecenia platformy Azure.

  3. Klaster AKS musi być obsługiwaną wersją rozwiązania Kubernetes w usłudze Azure Kubernetes Service (AKS). Użyj następującego skryptu, aby zweryfikować wersję klastra usługi AKS:

    # Log in first with az login if you're not using Cloud Shell
    
    # Look for the value in kubernetesVersion
    az aks list
    
  4. Otwórz porty dla rozszerzenia usługi Azure Policy. Rozszerzenie usługi Azure Policy używa tych domen i portów do pobierania definicji zasad i przypisań oraz raportowania zgodności klastra z powrotem do usługi Azure Policy.

    Domain Port
    data.policy.core.windows.net 443
    store.policy.core.windows.net 443
    login.windows.net 443
    dc.services.visualstudio.com 443

Po zakończeniu wymagań wstępnych zainstaluj dodatek usługi Azure Policy w klastrze usługi AKS, który chcesz zarządzać.

  • Azure Portal

    1. Uruchom usługę AKS w witrynie Azure Portal, wybierając pozycję Wszystkie usługi, a następnie wyszukując i wybierając pozycję Usługi Kubernetes.

    2. Wybierz jeden z klastrów usługi AKS.

    3. Wybierz pozycję Zasady po lewej stronie usługi Kubernetes.

    4. Na stronie głównej wybierz przycisk Włącz dodatek .

  • Interfejs wiersza polecenia platformy Azure

    # Log in first with az login if you're not using Cloud Shell
    
    az aks enable-addons --addons azure-policy --name MyAKSCluster --resource-group MyResourceGroup
    

Aby sprawdzić, czy instalacja dodatku zakończyła się pomyślnie i czy zasobniki azure-policy i gatekeeper są uruchomione, uruchom następujące polecenie:

# azure-policy pod is installed in kube-system namespace
kubectl get pods -n kube-system

# gatekeeper pod is installed in gatekeeper-system namespace
kubectl get pods -n gatekeeper-system

Na koniec sprawdź, czy zainstalowano najnowszy dodatek, uruchamiając <rg> to polecenie interfejsu wiersza polecenia platformy Azure, zastępując ciąg nazwą grupy zasobów i <cluster-name> nazwą klastra usługi AKS: az aks show --query addonProfiles.azurepolicy -g <rg> -n <cluster-name>. Wynik powinien wyglądać podobnie do następujących danych wyjściowych dla klastrów korzystających z jednostek usługi:

{
  "config": null,
  "enabled": true,
  "identity": null
}

A następujące dane wyjściowe dla klastrów korzystających z tożsamości zarządzanej:

 {
   "config": null,
   "enabled": true,
   "identity": {
     "clientId": "########-####-####-####-############",
     "objectId": "########-####-####-####-############",
     "resourceId": "<resource-id>"
   }
 }

Instalowanie rozszerzenia usługi Azure Policy dla platformy Kubernetes z obsługą usługi Azure Arc

Usługa Azure Policy dla platformy Kubernetes umożliwia zarządzanie stanem zgodności klastrów Kubernetes i raportowanie ich z jednego miejsca. Rozszerzenie usługi Azure Policy dla klastrów Kubernetes z obsługą usługi Arc umożliwia zarządzanie składnikami klastra Kubernetes z obsługą usługi Arc, takimi jak zasobniki i kontenery.

W tym artykule opisano sposób tworzenia, wyświetlania stanu rozszerzenia i usuwania rozszerzenia Usługi Azure Policy dla platformy Kubernetes.

Aby zapoznać się z omówieniem platformy rozszerzeń, zobacz Rozszerzenia klastra usługi Azure Arc.

Wymagania wstępne

Jeśli usługa Azure Policy dla platformy Kubernetes została już wdrożona w klastrze usługi Azure Arc bezpośrednio bez rozszerzeń, postępuj zgodnie z instrukcjami, aby usunąć pakiet Helm. Po zakończeniu usuwania możesz kontynuować.

  1. Upewnij się, że Twój klaster platformy Kubernetes jest obsługiwaną dystrybucją.

    Uwaga

    Rozszerzenie usługi Azure Policy for Arc jest obsługiwane w następujących dystrybucjach platformy Kubernetes.

  2. Upewnij się, że zostały spełnione wszystkie typowe wymagania wstępne dotyczące rozszerzeń Kubernetes wymienionych tutaj , w tym łączenie klastra z usługą Azure Arc.

    Uwaga

    Rozszerzenie usługi Azure Policy jest obsługiwane w przypadku klastrów Kubernetes z obsługą usługi Arc w tych regionach.

  3. Otwórz porty dla rozszerzenia usługi Azure Policy. Rozszerzenie usługi Azure Policy używa tych domen i portów do pobierania definicji zasad i przypisań oraz raportowania zgodności klastra z powrotem do usługi Azure Policy.

    Domain Port
    data.policy.core.windows.net 443
    store.policy.core.windows.net 443
    login.windows.net 443
    dc.services.visualstudio.com 443
  4. Przed zainstalowaniem rozszerzenia usługi Azure Policy lub włączeniem dowolnej funkcji usługi subskrypcja musi włączyć Microsoft.PolicyInsights dostawców zasobów.

    Uwaga

    Aby włączyć dostawcę zasobów, wykonaj kroki opisane w artykule Dostawcy zasobów i typy lub uruchom polecenie interfejsu wiersza polecenia platformy Azure lub programu Azure PowerShell.

    • Interfejs wiersza polecenia platformy Azure

      # Log in first with az login if you're not using Cloud Shell
      # Provider register: Register the Azure Policy provider
      az provider register --namespace 'Microsoft.PolicyInsights'
      
    • Azure PowerShell

      # Log in first with Connect-AzAccount if you're not using Cloud Shell
      
      # Provider register: Register the Azure Policy provider
      Register-AzResourceProvider -ProviderNamespace 'Microsoft.PolicyInsights'
      

Tworzenie rozszerzenia usługi Azure Policy

Uwaga

Zwróć uwagę na następujące kwestie dotyczące tworzenia rozszerzenia usługi Azure Policy:

  • Automatyczne uaktualnianie jest domyślnie włączone, co spowoduje zaktualizowanie wersji pomocniczej rozszerzenia usługi Azure Policy, jeśli zostaną wdrożone jakiekolwiek nowe zmiany.
  • Wszystkie zmienne serwera proxy przekazane jako parametry connectedk8s będą propagowane do rozszerzenia usługi Azure Policy w celu obsługi wychodzącego serwera proxy.

Aby utworzyć wystąpienie rozszerzenia, dla klastra z obsługą usługi Arc uruchom następujące polecenie zastępujące <> wartościami:

az k8s-extension create --cluster-type connectedClusters --cluster-name <CLUSTER_NAME> --resource-group <RESOURCE_GROUP> --extension-type Microsoft.PolicyInsights --name <EXTENSION_INSTANCE_NAME>

Przykład:

az k8s-extension create --cluster-type connectedClusters --cluster-name my-test-cluster --resource-group my-test-rg --extension-type Microsoft.PolicyInsights --name azurepolicy

Przykładowe dane wyjściowe:

{
  "aksAssignedIdentity": null,
  "autoUpgradeMinorVersion": true,
  "configurationProtectedSettings": {},
  "configurationSettings": {},
  "customLocationSettings": null,
  "errorInfo": null,
  "extensionType": "microsoft.policyinsights",
  "id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/my-test-rg/providers/Microsoft.Kubernetes/connectedClusters/my-test-cluster/providers/Microsoft.KubernetesConfiguration/extensions/azurepolicy",
 "identity": {
    "principalId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
    "tenantId": null,
    "type": "SystemAssigned"
  },
  "location": null,
  "name": "azurepolicy",
  "packageUri": null,
  "provisioningState": "Succeeded",
  "releaseTrain": "Stable",
  "resourceGroup": "my-test-rg",
  "scope": {
    "cluster": {
      "releaseNamespace": "kube-system"
    },
    "namespace": null
  },
  "statuses": [],
  "systemData": {
    "createdAt": "2021-10-27T01:20:06.834236+00:00",
    "createdBy": null,
    "createdByType": null,
    "lastModifiedAt": "2021-10-27T01:20:06.834236+00:00",
    "lastModifiedBy": null,
    "lastModifiedByType": null
  },
  "type": "Microsoft.KubernetesConfiguration/extensions",
  "version": "1.1.0"
}

Pokaż rozszerzenie usługi Azure Policy

Aby sprawdzić, czy tworzenie wystąpienia rozszerzenia zakończyło się pomyślnie, i sprawdzić metadane rozszerzenia, uruchom następujące polecenie, <> zastępując wartościami:

az k8s-extension show --cluster-type connectedClusters --cluster-name <CLUSTER_NAME> --resource-group <RESOURCE_GROUP> --name <EXTENSION_INSTANCE_NAME>

Przykład:

az k8s-extension show --cluster-type connectedClusters --cluster-name my-test-cluster --resource-group my-test-rg --name azurepolicy

Aby sprawdzić, czy instalacja rozszerzenia zakończyła się pomyślnie i czy zasobniki azure-policy i gatekeeper są uruchomione, uruchom następujące polecenie:

# azure-policy pod is installed in kube-system namespace
kubectl get pods -n kube-system

# gatekeeper pod is installed in gatekeeper-system namespace
kubectl get pods -n gatekeeper-system

Usuwanie rozszerzenia usługi Azure Policy

Aby usunąć wystąpienie rozszerzenia, uruchom następujące polecenie zastępujące <> wartościami:

az k8s-extension delete --cluster-type connectedClusters --cluster-name <CLUSTER_NAME> --resource-group <RESOURCE_GROUP> --name <EXTENSION_INSTANCE_NAME>

Utworzenie definicji zasad

Struktura języka usługi Azure Policy do zarządzania platformą Kubernetes jest zgodna z istniejącymi definicjami zasad. Istnieją przykładowe pliki definicji dostępne do przypisania w wbudowanej bibliotece zasad usługi Azure Policy, które mogą służyć do zarządzania składnikami klastra.

Usługa Azure Policy dla platformy Kubernetes obsługuje również tworzenie definicji niestandardowych na poziomie składników zarówno dla klastrów usługi Azure Kubernetes Service, jak i klastrów Kubernetes z włączoną usługą Azure Arc. Przykłady szablonów ograniczeń i szablonów mutacji są dostępne w bibliotece społeczności usługi Gatekeeper. Rozszerzenie programu VS Code usługi Azure Policy może służyć do tłumaczenia istniejącego szablonu ograniczenia lub szablonu mutacji na niestandardową definicję zasad usługi Azure Policy.

W trybieMicrosoft.Kubernetes.Datadostawcy zasobów efekty inspekcji, odmowy, wyłączenia i wyciszenia są używane do zarządzania klastrami Kubernetes.

Inspekcja i odmowa muszą zawierać szczegółowe właściwości specyficzne dla pracy z platformą ograniczeń OPA i strażnikiem w wersji 3.

W ramach właściwości details.templateInfo lub details.constraintInfo w definicji zasad usługa Azure Policy przekazuje do dodatku wartość URI lub Base64Encoded tych właściwości CustomResourceDefinitions(CRD). Rego to język, który obsługuje OPA i Gatekeeper w celu zweryfikowania żądania do klastra Kubernetes. Dzięki obsłudze istniejącego standardu zarządzania platformą Kubernetes usługa Azure Policy umożliwia ponowne użycie istniejących reguł i parowanie ich z usługą Azure Policy w celu uzyskania ujednoliconego środowiska raportowania zgodności w chmurze. Aby uzyskać więcej informacji, zobacz Co to jest Rego?.

Przypisywanie definicji zasad

Aby przypisać definicję zasad do klastra Kubernetes, należy przypisać odpowiednie operacje przypisywania zasad kontroli dostępu na podstawie ról (RBAC) platformy Azure. Wbudowane role platformy Azure Współautor zasad zasobów i Właściciel mają te operacje. Aby dowiedzieć się więcej, zobacz Uprawnienia RBAC platformy Azure w usłudze Azure Policy.

Znajdź wbudowane definicje zasad do zarządzania klastrem przy użyciu witryny Azure Portal, wykonując następujące kroki. Jeśli używasz niestandardowej definicji zasad, wyszukaj ją według nazwy lub kategorii, za pomocą której została utworzona.

  1. Uruchom usługę Azure Policy w witrynie Azure Portal. Wybierz pozycję Wszystkie usługi w okienku po lewej stronie, a następnie wyszukaj i wybierz pozycję Zasady.

  2. W okienku po lewej stronie usługi Azure Policy wybierz pozycję Definicje.

  3. Z listy rozwijanej Kategoria użyj pozycji Wybierz wszystko , aby wyczyścić filtr, a następnie wybierz pozycję Kubernetes.

  4. Wybierz definicję zasad, a następnie wybierz przycisk Przypisz .

  5. Ustaw pozycję Zakres na grupę zarządzania, subskrypcję lub grupę zasobów klastra Kubernetes, w której zostanie zastosowane przypisanie zasad.

    Uwaga

    Podczas przypisywania definicji usługi Azure Policy dla platformy Kubernetes zakres musi zawierać zasób klastra.

  6. Nadaj przypisaniu zasad nazwę i opis, którego można użyć, aby łatwo go zidentyfikować.

  7. Ustaw wymuszanie zasad na jedną z następujących wartości:

    • Włączone — wymuszanie zasad w klastrze. Żądania przyjęcia platformy Kubernetes z naruszeniami są odrzucane.

    • Wyłączone — nie wymuszaj zasad w klastrze. Żądania przyjęcia platformy Kubernetes z naruszeniami nie są odrzucane. Wyniki oceny zgodności są nadal dostępne. Po wdrożeniu nowych definicji zasad w uruchomionych klastrach opcja Wyłączone jest przydatna do testowania definicji zasad, ponieważ żądania przyjęcia z naruszeniami nie są odrzucane.

  8. Wybierz Dalej.

  9. Ustawianie wartości parametrów

    • Aby wykluczyć przestrzenie nazw Kubernetes z oceny zasad, określ listę przestrzeni nazw w wykluczeniach przestrzeni nazw parametru. Zaleca się wykluczenie: kube-system, gatekeeper-system i azure-arc.
  10. Wybierz pozycję Przejrzyj i utwórz.

Alternatywnie użyj przewodnika Szybki start Przypisywanie zasad — portal , aby znaleźć i przypisać zasady kubernetes. Wyszukaj definicję zasad platformy Kubernetes zamiast przykładowych maszyn wirtualnych inspekcji.

Ważne

Wbudowane definicje zasad są dostępne dla klastrów Kubernetes w kategorii Kubernetes. Aby uzyskać listę wbudowanych definicji zasad, zobacz Przykłady dotyczące platformy Kubernetes.

Ocena zasad

Dodatek sprawdza usługę Azure Policy pod kątem zmian przypisań zasad co 15 minut. Podczas tego cyklu odświeżania dodatek sprawdza zmiany. Te zmiany wyzwalają operacje tworzenia, aktualizowania lub usuwania ograniczeń i szablonów ograniczeń.

W klastrze Kubernetes, jeśli przestrzeń nazw ma etykietę odpowiednią do klastra, żądania przyjęcia z naruszeniami nie są odrzucane. Wyniki oceny zgodności są nadal dostępne.

  • Klaster Kubernetes z obsługą usługi Azure Arc: admission.policy.azure.com/ignore

Uwaga

Chociaż administrator klastra może mieć uprawnienia do tworzenia i aktualizowania szablonów ograniczeń i zasobów ograniczeń instalowanych przez dodatek usługi Azure Policy, nie są to obsługiwane scenariusze, ponieważ aktualizacje ręczne są zastępowane. Program Gatekeeper nadal ocenia zasady, które istniały przed zainstalowaniem dodatku i przypisaniem definicji zasad usługi Azure Policy.

Co 15 minut dodatek wywołuje pełne skanowanie klastra. Gdy dodatek zbierze szczegóły pełnego skanowania oraz uzyska z programu Gatekeeper wszelkie oceny w czasie rzeczywistym dotyczące prób wprowadzenia zmian w klastrze, zgłasza wyniki do usługi Azure Policy w celu uwzględnienia ich w szczegółach zgodności, takich jak dowolne przypisanie usługi Azure Policy. Tylko wyniki dla aktywnych przypisań zasad są zwracane w cyklu inspekcji. Wyniki inspekcji można też wyświetlać jako naruszenia w polu stanu dla ograniczenia, w przypadku którego wystąpiło niepowodzenie. Aby uzyskać szczegółowe informacje na temat niezgodnych zasobów, zobacz Szczegóły składnika dotyczące trybów dostawcy zasobów.

Uwaga

Każdy raport zgodności w usłudze Azure Policy dla klastrów Kubernetes obejmuje wszystkie naruszenia w ciągu ostatnich 45 minut. Sygnatura czasowa wskazuje, kiedy wystąpiło naruszenie.

Inne zagadnienia:

  • Jeśli subskrypcja klastra jest zarejestrowana w usłudze Microsoft Defender dla Chmury, zasady Microsoft Defender dla Chmury Kubernetes są stosowane automatycznie w klastrze.

  • Jeśli zasady odmowy są stosowane w klastrze z istniejącymi zasobami Kubernetes, wszystkie istniejące wcześniej zasoby, które nie są zgodne z nowymi zasadami, będą nadal działać. Gdy niezgodny zasób zostanie ponownie zasób anulowany w innym węźle, program Gatekeeper blokuje tworzenie zasobów.

  • Jeśli klaster ma zasady odmowy, które weryfikują zasoby, użytkownik nie otrzymuje komunikatu o odrzuceniu podczas tworzenia wdrożenia. Rozważmy na przykład wdrożenie rozwiązania Kubernetes, które zawiera zestawy replik i zasobniki. Gdy użytkownik wykona kubectl describe deployment $MY_DEPLOYMENTpolecenie , nie zwraca komunikatu o odrzuceniu w ramach zdarzeń. kubectl describe replicasets.apps $MY_DEPLOYMENT Zwraca jednak zdarzenia skojarzone z odrzuceniem.

Uwaga

Kontenery init mogą być uwzględniane podczas oceny zasad. Aby sprawdzić, czy kontenery init są dołączone, przejrzyj identyfikator CRD pod kątem następującej lub podobnej deklaracji:

input_containers[c] {
   c := input.review.object.spec.initContainers[_]
}

Konflikty szablonów ograniczeń

Jeśli szablony ograniczeń mają taką samą nazwę metadanych zasobu, ale definicja zasad odwołuje się do źródła w różnych lokalizacjach, definicje zasad są uważane za powodujące konflikt. Przykład: dwie definicje zasad odwołują się do tego samego template.yaml pliku przechowywanego w różnych lokalizacjach źródłowych, takich jak magazyn szablonów usługi Azure Policy (store.policy.core.windows.net) i GitHub.

Gdy definicje zasad i ich szablony ograniczeń są przypisane, ale nie są jeszcze zainstalowane w klastrze i są w konflikcie, są zgłaszane jako konflikt i nie są instalowane w klastrze, dopóki konflikt nie zostanie rozwiązany. Podobnie wszystkie istniejące definicje zasad i ich szablony ograniczeń, które znajdują się już w klastrze, który powoduje konflikt z nowo przypisanymi definicjami zasad, nadal działają normalnie. Jeśli istniejące przypisanie zostanie zaktualizowane i wystąpił błąd synchronizacji szablonu ograniczenia, klaster jest również oznaczony jako konflikt. Wszystkie komunikaty powodujące konflikty można znaleźć w artykule AKS Resource Provider mode compliance reasons (Przyczyny zgodności trybu dostawcy zasobów usługi AKS)

Rejestrowanie

Jako kontroler/kontener Kubernetes zarówno zasobniki azure-policy , jak i gatekeeper przechowują dzienniki w klastrze Kubernetes. Ogólnie rzecz biorąc, dzienniki azure-policy mogą służyć do rozwiązywania problemów z pozyskiwaniem zasad w klastrze i raportowaniu zgodności. Dzienniki zasobnika gatekeeper-controller-manager mogą służyć do rozwiązywania problemów ze środowiskiem uruchomieniowym. Dzienniki zasobnika gatekeeper-audit mogą służyć do rozwiązywania problemów z inspekcjami istniejących zasobów. Dzienniki można wyświetlać na stronie Szczegółowe informacje w klastrze platformy Kubernetes. Aby uzyskać więcej informacji, zobacz Monitorowanie wydajności klastra platformy Kubernetes za pomocą usługi Azure Monitor dla kontenerów.

Aby wyświetlić dzienniki dodatku, użyj polecenia kubectl:

# Get the azure-policy pod name installed in kube-system namespace
kubectl logs <azure-policy pod name> -n kube-system

# Get the gatekeeper pod name installed in gatekeeper-system namespace
kubectl logs <gatekeeper pod name> -n gatekeeper-system

Jeśli próbujesz rozwiązać problem z określonym kodem ComplianceReasonCode wyświetlanym w wynikach zgodności, możesz wyszukać dzienniki zasobnika azure-policy, aby wyświetlić pełny towarzyszący błąd.

Aby dowiedzieć się więcej, zobacz informacje o debugowaniu dotyczące programu Gatekeeper w dokumentacji programu Gatekeeper.

Wyświetlanie artefaktów strażnika

Po pobraniu przypisań zasad przez dodatek i zainstalowaniu szablonów ograniczeń i ograniczeń w klastrze zostaną dodane adnotacje do informacji usługi Azure Policy, takich jak identyfikator przypisania zasad i identyfikator definicji zasad. Aby skonfigurować klienta do wyświetlania artefaktów powiązanych z dodatkiem, wykonaj następujące kroki:

  1. Skonfiguruj kubeconfig dla klastra.

    W przypadku klastra usługi Azure Kubernetes Service użyj następującego interfejsu wiersza polecenia platformy Azure:

    # Set context to the subscription
    az account set --subscription <YOUR-SUBSCRIPTION>
    
    # Save credentials for kubeconfig into .kube in your home folder
    az aks get-credentials --resource-group <RESOURCE-GROUP> --name <CLUSTER-NAME>
    
  2. Przetestuj połączenie klastra.

    Uruchom polecenie kubectl cluster-info. Pomyślne uruchomienie ma każdą usługę odpowiadającą za pomocą adresu URL miejsca, w którym działa.

Wyświetlanie szablonów ograniczeń dodatku

Aby wyświetlić szablony ograniczeń pobrane przez dodatek, uruchom polecenie kubectl get constrainttemplates. Szablony ograniczeń rozpoczynające się od k8sazure są instalowane przez dodatek.

Wyświetlanie szablonów mutacji dodatków

Aby wyświetlić szablony mutacji pobrane przez dodatek, uruchom polecenie kubectl get assign, kubectl get assignmetadatai kubectl get modifyset.

Pobieranie mapowań usługi Azure Policy

Aby zidentyfikować mapowanie między szablonem ograniczenia pobranym do klastra i definicją zasad, użyj polecenia kubectl get constrainttemplates <TEMPLATE> -o yaml. Wyniki wyglądają podobnie do następujących danych wyjściowych:

apiVersion: templates.gatekeeper.sh/v1beta1
kind: ConstraintTemplate
metadata:
    annotations:
    azure-policy-definition-id: /subscriptions/<SUBID>/providers/Microsoft.Authorization/policyDefinitions/<GUID>
    constraint-template-installed-by: azure-policy-addon
    constraint-template: <URL-OF-YAML>
    creationTimestamp: "2021-09-01T13:20:55Z"
    generation: 1
    managedFields:
    - apiVersion: templates.gatekeeper.sh/v1beta1
    fieldsType: FieldsV1
...

<SUBID> jest identyfikatorem subskrypcji i <GUID> jest identyfikatorem mapowanej definicji zasad. <URL-OF-YAML> to lokalizacja źródłowa szablonu ograniczenia pobranego przez dodatek do zainstalowania w klastrze.

Po utworzeniu nazw pobranych szablonów ograniczeń dodatku możesz użyć nazwy , aby zobaczyć powiązane ograniczenia. Użyj polecenia kubectl get <constraintTemplateName> , aby pobrać listę. Ograniczenia zainstalowane przez dodatek zaczynają się od azurepolicy-.

Wyświetlanie szczegółów ograniczeń

Ograniczenie zawiera szczegółowe informacje o naruszeniach i mapowaniach na definicję i przypisanie zasad. Aby wyświetlić szczegóły, użyj polecenia kubectl get <CONSTRAINT-TEMPLATE> <CONSTRAINT> -o yaml. Wyniki wyglądają podobnie do następujących danych wyjściowych:

apiVersion: constraints.gatekeeper.sh/v1beta1
kind: K8sAzureContainerAllowedImages
metadata:
  annotations:
    azure-policy-assignment-id: /subscriptions/<SUB-ID>/resourceGroups/<RG-NAME>/providers/Microsoft.Authorization/policyAssignments/<ASSIGNMENT-GUID>
    azure-policy-definition-id: /providers/Microsoft.Authorization/policyDefinitions/<DEFINITION-GUID>
    azure-policy-definition-reference-id: ""
    azure-policy-setdefinition-id: ""
    constraint-installed-by: azure-policy-addon
    constraint-url: <URL-OF-YAML>
  creationTimestamp: "2021-09-01T13:20:55Z"
spec:
  enforcementAction: deny
  match:
    excludedNamespaces:
    - kube-system
    - gatekeeper-system
    - azure-arc
  parameters:
    imageRegex: ^.+azurecr.io/.+$
status:
  auditTimestamp: "2021-09-01T13:48:16Z"
  totalViolations: 32
  violations:
  - enforcementAction: deny
    kind: Pod
    message: Container image nginx for container hello-world has not been allowed.
    name: hello-world-78f7bfd5b8-lmc5b
    namespace: default
  - enforcementAction: deny
    kind: Pod
    message: Container image nginx for container hello-world has not been allowed.
    name: hellow-world-89f8bfd6b9-zkggg

Rozwiązywanie problemów z dodatkiem

Aby uzyskać więcej informacji na temat rozwiązywania problemów z dodatkiem dla platformy Kubernetes, zobacz sekcję Dotyczącą rozwiązywania problemów z usługą Azure Policy.

W przypadku problemów związanych z rozszerzeniem usługi Arc dla usługi Azure Policy przejdź do:

W przypadku problemów związanych z usługą Azure Policy przejdź do:

Dodatek usługi Azure Policy dla dziennika zmian usługi AKS

Dodatek usługi Azure Policy dla usługi AKS ma numer wersji wskazujący wersję obrazu dodatku. Wraz z wprowadzeniem obsługi funkcji w dodatku numer wersji jest zwiększany.

Ta sekcja pomoże określić, która wersja dodatku jest zainstalowana w klastrze, a także udostępnić tabelę historyczną zainstalowanej wersji dodatku usługi Azure Policy dla klastra usługi AKS.

Określanie, która wersja dodatku jest zainstalowana w klastrze

Dodatek usługi Azure Policy używa standardowego schematu przechowywania wersji semantycznych dla każdej wersji. Aby zidentyfikować używaną wersję dodatku usługi Azure Policy, możesz uruchomić następujące polecenie: kubectl get pod azure-policy-<unique-pod-identifier> -n kube-system -o json | jq '.spec.containers[0].image'

Aby zidentyfikować wersję programu Gatekeeper używaną przez dodatek usługi Azure Policy, możesz uruchomić następujące polecenie: kubectl get pod gatekeeper-controller-<unique-pod-identifier> -n gatekeeper-system -o json | jq '.spec.containers[0].image'

Na koniec, aby zidentyfikować używaną wersję klastra usługi AKS, postępuj zgodnie z połączonymi wskazówkami dotyczącymi usługi AKS.

Wersje dodatków dostępne dla każdej wersji klastra usługi AKS

1.3.0

Wprowadza stan błędu zasad w błędzie, umożliwiając ich odróżnienie od zasad w stanach niezgodnych. Dodaje obsługę szablonów ograniczeń w wersji 1 i użycia parametru excludedNamespaces w zasadach mutacji. Dodaje sprawdzanie stanu błędu dla szablonów ograniczeń po instalacji.

  • Wydany w lutym 2024 r.
  • Kubernetes 1.25+
  • Strażnik 3.14.0

1.2.1

  • Wydany w październiku 2023 r.
  • Kubernetes 1.25+
  • Strażnik 3.13.3

1.1.0

  • Wydany w lipcu 2023 r.
  • Kubernetes 1.27+
  • Strażnik 3.11.1

1.0.1

  • Wydany w czerwcu 2023 r.
  • Kubernetes 1.24+
  • Strażnik 3.11.1

1.0.0

Usługa Azure Policy dla platformy Kubernetes obsługuje teraz mutację w celu skorygowania klastrów usługi AKS na dużą skalę!

Usuwanie dodatku

Usuwanie dodatku z usługi AKS

Aby usunąć dodatek usługi Azure Policy z klastra usługi AKS, użyj witryny Azure Portal lub interfejsu wiersza polecenia platformy Azure:

  • Azure Portal

    1. Uruchom usługę AKS w witrynie Azure Portal, wybierając pozycję Wszystkie usługi, a następnie wyszukując i wybierając pozycję Usługi Kubernetes.

    2. Wybierz klaster usługi AKS, w którym chcesz wyłączyć dodatek usługi Azure Policy.

    3. Wybierz pozycję Zasady po lewej stronie usługi Kubernetes.

    4. Na stronie głównej wybierz przycisk Wyłącz dodatek .

  • Interfejs wiersza polecenia platformy Azure

    # Log in first with az login if you're not using Cloud Shell
    
    az aks disable-addons --addons azure-policy --name MyAKSCluster --resource-group MyResourceGroup
    

Usuwanie dodatku z platformy Kubernetes z włączoną usługą Azure Arc

Uwaga

Model dodatku Helm usługi Azure Policy jest teraz przestarzały. Zamiast tego wybierz rozszerzenie usługi Azure Policy dla platformy Kubernetes z włączoną usługą Azure Arc.

Aby usunąć dodatek usługi Azure Policy i program Gatekeeper z klastra Kubernetes z włączoną usługą Azure Arc, uruchom następujące polecenie Helm:

helm uninstall azure-policy-addon

Usuwanie dodatku z aparatu AKS

Uwaga

Produkt AKS Engine jest teraz przestarzały dla klientów chmury publicznej platformy Azure. Rozważ użycie usługi Azure Kubernetes Service (AKS) dla zarządzanego rozwiązania Kubernetes lub dostawcy interfejsu API klastra platformy Azure na potrzeby samodzielnego zarządzania platformą Kubernetes. Nie są planowane żadne nowe funkcje; ten projekt zostanie zaktualizowany tylko dla cvEs i podobnych, przy użyciu platformy Kubernetes 1.24 jako wersji ostatecznej w celu otrzymywania aktualizacji.

Aby usunąć dodatek usługi Azure Policy i program Gatekeeper z klastra aparatu usługi AKS, użyj metody zgodnej z sposobem instalowania dodatku:

  • Jeśli jest zainstalowana przez ustawienie właściwości addons w definicji klastra dla aparatu AKS:

    Ponownie wdróż definicję klastra w aKS Engine po zmianie właściwości addons dla usługi azure-policy na false:

    "addons": [{
        "name": "azure-policy",
        "enabled": false
    }]
    

    Aby uzyskać więcej informacji, zobacz AKS Engine — Disable Azure Policy Add-on (Aparat usługi AKS — wyłączanie dodatku usługi Azure Policy).

  • Jeśli zainstalowano program Helm Charts, uruchom następujące polecenie programu Helm:

    helm uninstall azure-policy-addon
    

Ograniczenia

  • Aby uzyskać ogólne definicje i limity przydziałów usługi Azure Policy, zapoznaj się z udokumentowanymi limitami usługi Azure Policy
  • Dodatek usługi Azure Policy dla platformy Kubernetes można wdrożyć tylko w pulach węzłów systemu Linux.
  • Maksymalna liczba zasobników obsługiwanych przez dodatek usługi Azure Policy na klaster: 10 000
  • Maksymalna liczba niezgodnych rekordów na zasady na klaster: 500
  • Maksymalna liczba niezgodnych rekordów na subskrypcję: 1 milion
  • Instalacje programu Gatekeeper poza dodatkiem usługi Azure Policy nie są obsługiwane. Przed włączeniem dodatku usługi Azure Policy odinstaluj wszystkie składniki zainstalowane przez poprzednią instalację programu Gatekeeper.
  • Przyczyny niezgodności nie są dostępne dla trybu Microsoft.Kubernetes.Data Resource Provider. Użyj szczegółów składnika.
  • Wykluczenia na poziomie składnika nie są obsługiwane w trybach dostawcy zasobów. Obsługa parametrów jest dostępna w definicjach usługi Azure Policy w celu wykluczenia i uwzględnienia określonych przestrzeni nazw.
  • metadata.gatekeeper.sh/requires-sync-data Używanie adnotacji w szablonie ograniczenia w celu skonfigurowania replikacji danych z klastra do pamięci podręcznej OPA jest obecnie dozwolone tylko dla wbudowanych zasad. Jest to spowodowane tym, że może znacznie zwiększyć użycie zasobów zasobników gatekeeper, jeśli nie są używane ostrożnie.

Następujące ograniczenia dotyczą tylko dodatku usługi Azure Policy dla usługi AKS:

  • Nie można włączyć zasad zabezpieczeń zasobnika usługi AKS i dodatku usługi Azure Policy dla usługi AKS. Aby uzyskać więcej informacji, zobacz Ograniczenia zabezpieczeń zasobników usługi AKS.
  • Przestrzenie nazw automatycznie wykluczone przez dodatek usługi Azure Policy do oceny: kube-system i gatekeeper-system.

Często zadawane pytania

Jakie jest wdrożenie dodatku usługi Azure Policy/rozszerzenia usługi Azure Policy w klastrze podczas instalacji?

Dodatek usługi Azure Policy wymaga uruchomienia trzech składników programu Gatekeeper: jeden zasobnik inspekcji i dwie repliki zasobnika elementu webhook. Zostanie również zainstalowany jeden zasobnik usługi Azure Policy i jeden zasobnik elementu webhook usługi Azure Policy.

Ile zasobów należy oczekiwać, że dodatek/rozszerzenie usługi Azure Policy będzie używane w każdym klastrze?

Składniki usługi Azure Policy dla platformy Kubernetes uruchamiane w klastrze zużywają więcej zasobów, ponieważ liczba zasobów i przypisań zasad platformy Kubernetes zwiększa się w klastrze, co wymaga operacji inspekcji i wymuszania. Poniżej przedstawiono oszacowania ułatwiające zaplanowanie:

  • W przypadku mniej niż 500 zasobników w jednym klastrze z maksymalnie 20 ograniczeniami: dwie procesory wirtualne i 350 MB pamięci na składnik.
  • W przypadku ponad 500 zasobników w jednym klastrze z maksymalnie 40 ograniczeniami: trzy procesory wirtualne i 600 MB pamięci na składnik.

Czy można zastosować definicje usługi Azure Policy dla platformy Kubernetes w zasobnikach systemu Windows?

Zasobniki systemu Windows nie obsługują kontekstów zabezpieczeń. W związku z tym niektóre definicje usługi Azure Policy, takie jak brak uprawnień administratora, nie mogą być eskalowane w zasobnikach systemu Windows i mają zastosowanie tylko do zasobników systemu Linux.

Jakiego typu dane diagnostyczne są zbierane przez dodatek usługi Azure Policy?

Dodatek usługi Azure Policy dla platformy Kubernetes zbiera ograniczone dane diagnostyczne klastra. Te dane diagnostyczne są istotnymi danymi technicznymi związanymi z oprogramowaniem i wydajnością. Jest on używany w następujący sposób:

  • Aktualizowanie dodatku usługi Azure Policy
  • Zapewnianie bezpieczeństwa, niezawodnego i wydajnego dodatku usługi Azure Policy
  • Ulepszanie dodatku usługi Azure Policy — za pomocą zagregowanej analizy użycia dodatku

Informacje zbierane przez dodatek nie są danymi osobowymi. Obecnie zbierane są następujące szczegóły:

  • Wersja agenta dodatku usługi Azure Policy
  • Typ klastra
  • Region klastra
  • Grupa zasobów klastra
  • Identyfikator zasobu klastra
  • Identyfikator subskrypcji klastra
  • System operacyjny klastra (przykład: Linux)
  • Miasto klastra (przykład: Seattle)
  • Stan lub prowincja klastra (przykład: Waszyngton)
  • Kraj lub region klastra (przykład: Stany Zjednoczone)
  • Wyjątki/błędy napotkane przez dodatek usługi Azure Policy podczas instalacji agenta podczas oceny zasad
  • Liczba definicji zasad programu Gatekeeper, które nie są zainstalowane przez dodatek usługi Azure Policy

Jakie są ogólne najlepsze rozwiązania, które należy wziąć pod uwagę podczas instalowania dodatku usługi Azure Policy?

  • Użyj puli węzłów systemowych z elementem CriticalAddonsOnly taint, aby zaplanować zasobniki usługi Gatekeeper. Aby uzyskać więcej informacji, zobacz Korzystanie z pul węzłów systemowych.
  • Zabezpieczanie ruchu wychodzącego z klastrów usługi AKS. Aby uzyskać więcej informacji, zobacz Kontrolowanie ruchu wychodzącego dla węzłów klastra.
  • Jeśli klaster ma włączoną tożsamość aad-pod, zasobniki tożsamości zarządzanej węzła (NMI) modyfikują tabele iptable węzłów w celu przechwytywania wywołań do punktu końcowego metadanych wystąpienia platformy Azure. Ta konfiguracja oznacza, że każde żądanie do punktu końcowego metadanych jest przechwytywane przez NMI, nawet jeśli zasobnik nie używa tożsamości aad-pod-.
  • Usługę AzurePodIdentityException CRD można skonfigurować tak, aby poinformować tożsamość aad-pod, że wszystkie żądania do punktu końcowego metadanych pochodzące z zasobnika zgodnego z etykietami zdefiniowanymi w crD powinny być proxied bez żadnego przetwarzania w usłudze NMI. Zasobniki systemowe z kubernetes.azure.com/managedby: etykieta aks w przestrzeni nazw kube-system powinna zostać wykluczona w tożsamości aad-pod-identity, konfigurując wartość CRD azurePodIdentityException. Aby uzyskać więcej informacji, zobacz Wyłączanie tożsamości aad-pod-dla określonego zasobnika lub aplikacji. Aby skonfigurować wyjątek, zainstaluj kod YAML wyjątku mikrofonu.

Następne kroki