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. Za pomocą 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:
- Usługa Azure Kubernetes Service (AKS) za pośrednictwem dodatku usługi Azure Policy dla usługi AKS
- Platforma Kubernetes z włączoną usługą Azure Arc za pośrednictwem rozszerzenia usługi Azure Policy dla usługi Arc
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:
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.
Tworzenie lub używanie przykładowej definicji usługi Azure Policy dla platformy Kubernetes
Zapoznaj się z ograniczeniami i zaleceniami w sekcji często zadawanych pytań
Instalowanie dodatku usługi Azure Policy dla usługi AKS
Dodatek usługi Azure Policy dla usługi AKS jest częścią rozwiązania Kubernetes w wersji 1.27 z obsługą długoterminową (LTS).
Wymagania wstępne
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
Potrzebny jest interfejs wiersza polecenia platformy Azure w wersji 2.12.0 lub nowszej, zainstalowany i skonfigurowany. Aby znaleźć wersję, uruchom
az --version
polecenie . Jeśli musisz zainstalować lub uaktualnić, zobacz Jak zainstalować interfejs wiersza polecenia platformy Azure.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
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
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.
Wybierz jeden z klastrów usługi AKS.
Wybierz pozycję Zasady po lewej stronie usługi Kubernetes.
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ć.
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.
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.
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
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 Visual Studio 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 trybie Microsoft.Kubernetes.Data
dostawcy zasobów efekty inspekcji, odmowy, wyłączenia i wyciszenia są używane do zarządzania klastrami Kubernetes.
Inspekcja i odmowa muszą zawierać details
właściwości specyficzne dla pracy z platformą OPA Constraint Framework i Gatekeeper w wersji 3.
W ramach właściwości details.templateInfo lub details.constraintInfo w definicji zasad usługa Azure Policy przekazuje identyfikator URI lub Base64Encoded
wartość tych elementów CustomResourceDefinitions(CRD) do dodatku. 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.
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.
W okienku po lewej stronie usługi Azure Policy wybierz pozycję Definicje.
Z listy rozwijanej Kategoria użyj pozycji Wybierz wszystko , aby wyczyścić filtr, a następnie wybierz pozycję Kubernetes.
Wybierz definicję zasad, a następnie wybierz przycisk Przypisz .
Ustaw pozycję Zakres na grupę zarządzania, subskrypcję lub grupę zasobów klastra Kubernetes, w której ma zastosowanie przypisanie zasad.
Uwaga
Podczas przypisywania definicji usługi Azure Policy dla platformy Kubernetes zakres musi zawierać zasób klastra.
Nadaj przypisaniu zasad nazwę i opis, którego można użyć, aby łatwo go zidentyfikować.
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.
Wybierz Dalej.
Ustawianie wartości parametrów
- Aby wykluczyć przestrzenie nazw Kubernetes z oceny zasad, określ listę przestrzeni nazw w wykluczeniach przestrzeni nazw parametru. Zaleceniem jest wykluczenie: kube-system, gatekeeper-system i azure-arc.
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.
Po zastosowaniu zasad odmowy w klastrze z istniejącymi zasobami Kubernetes wszelkie istniejące 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 platformy Kubernetes, które zawiera
replicasets
zasobniki i . Gdy użytkownik wykonakubectl describe deployment $MY_DEPLOYMENT
polecenie , 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 zobaczyć 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:
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>
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 assignmetadata
i 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.
Wyświetlanie ograniczeń związanych z szablonem ograniczenia
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:
- Inspekcja dzienników usługi Azure Policy
- Ogólne rozwiązywanie problemów z usługą Azure Policy na platformie Kubernetes
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 ułatwia określenie, która wersja dodatku jest zainstalowana w klastrze, a także udostępnia tabelę historyczną zainstalowanej wersji dodatku usługi Azure Policy dla klastra usługi AKS.
Określanie wersji dodatku zainstalowanej 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.7.1
Wprowadzenie do cel i VAP. Common Expression Language (CEL) to język wyrażeń natywnych platformy Kubernetes, który może służyć do deklarowania reguł walidacji zasad. Weryfikowanie funkcji zasad wejścia (VAP) zapewnia ocenę zasad w drzewie, zmniejsza opóźnienie żądania przyjęcia i zwiększa niezawodność i dostępność. Obsługiwane akcje weryfikacji obejmują odmów, ostrzegaj i inspekcję. Niestandardowe tworzenie zasad cel/VAP jest dozwolone, a istniejący użytkownicy nie będą musieli konwertować ich rego na cel, ponieważ będą one zarówno obsługiwane, jak i używane do wymuszania zasad. Aby korzystać z cel i VAP, użytkownicy muszą zarejestrować się w flagi AKS-AzurePolicyK8sNativeValidation
Microsoft.ContainerService
funkcji w przestrzeni nazw. Aby uzyskać więcej informacji, zobacz dokumentację programu Gatekeeper.
Ulepszenia zabezpieczeń.
- Wydany w 2024 r.
- Kubernetes 1.27+ (generacja VAP jest obsługiwana tylko w wersji 1.30 lub nowszej)
- Strażnik 3.17.1
1.7.0
Wprowadzenie do rozszerzenia, funkcja przesunięcia w lewo, która informuje o tym, czy zasoby obciążenia (wdrożenia, zestawy replik, zadania itp.) będą produkować dopuszczalne zasobniki. Rozszerzenie nie powinno zmieniać zachowania zasad; zamiast tego zmienia ocenę zasad o zakresie zasobnika, aby miały miejsce w czasie przyjmowania obciążenia, a nie w czasie przyjmowania zasobnika. Jednak aby przeprowadzić tę ocenę, należy wygenerować i ocenić zasobnik warunkowy oparty na specyfikacji zasobnika zdefiniowanej w obciążeniu, który może mieć niekompletne metadane. Na przykład zasobnik analizy co-jeżeli nie będzie zawierać odpowiednich odwołań właściciela. Ze względu na to małe ryzyko zmiany zachowania zasad wprowadzamy rozszerzenie jako wyłączone domyślnie. Aby włączyć rozszerzenie dla danej definicji zasad, ustaw wartość .policyRule.then.details.source
All
. Wbudowane zostaną wkrótce zaktualizowane w celu włączenia parametryzacji tego pola. Jeśli przetestujesz definicję zasad i okaże się, że zasobnik warunkowy generowany na potrzeby oceny jest niekompletny, możesz również użyć mutacji ze źródłem Generated
, aby zmutować zasobniki analizy co-jeżeli. Aby uzyskać więcej informacji na temat tej opcji, zapoznaj się z dokumentacją programu Gatekeeper.
Ulepszenia zabezpieczeń.
- Wydany w lipcu 2024 r.
- Kubernetes 1.27+
- Strażnik 3.16.3
1.6.1
Ulepszenia zabezpieczeń.
- Wydany w maju 2024 r.
- Strażnik 3.14.2
1.5.0
Ulepszenia zabezpieczeń.
- Wydany w maju 2024 r.
- Kubernetes 1.27+
- Strażnik 3.16.3
1.4.0
Domyślnie włącza mutację i dane zewnętrzne. Dodatkowe mutowanie elementu webhook i zwiększone sprawdzanie poprawności limitu czasu elementu webhook może zwiększyć opóźnienie wywołań w najgorszym przypadku. Wprowadzono również obsługę wyświetlania definicji zasad i ustawiania wersji definicji w wynikach zgodności.
- Wydany w maju 2024 r.
- Kubernetes 1.25+
- Strażnik 3.14.0
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
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.
Wybierz klaster usługi AKS, w którym chcesz wyłączyć dodatek usługi Azure Policy.
Wybierz pozycję Zasady po lewej stronie usługi Kubernetes.
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. Należy zamiast tego wybrać 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. Przyczyną jest to, że może ona znacznie zwiększyć użycie zasobów zasobników usługi Gatekeeper, jeśli nie jest używana ostrożnie.
Konfigurowanie konfiguracji programu Gatekeeper
Zmiana konfiguracji programu Gatekeeper jest nieobsługiwana, ponieważ zawiera krytyczne ustawienia zabezpieczeń. Zmiany konfiguracji są uzgadniane.
Używanie pliku data.inventory w szablonach ograniczeń
Obecnie kilka wbudowanych zasad korzysta z replikacji danych, co umożliwia użytkownikom synchronizowanie istniejących zasobów w klastrze z pamięcią podręczną OPA i odwołowanie się do nich podczas oceny AdmissionReview
żądania. Zasady replikacji danych można odróżnić od obecności data.inventory
w usłudze Rego oraz obecności metadata.gatekeeper.sh/requires-sync-data
adnotacji, która informuje dodatek usługi Azure Policy, który musi być buforowany, aby oceny zasad działały prawidłowo. Ten proces różni się od autonomicznego strażnika, gdzie ta adnotacja jest opisowa, a nie preskrypcyjna.
Replikacja danych jest obecnie blokowana do użycia w niestandardowych definicjach zasad, ponieważ replikowanie zasobów z dużą liczbą wystąpień może znacznie zwiększyć użycie zasobów zasobników usługi Gatekeeper, jeśli nie jest używane ostrożnie. Podczas próby utworzenia niestandardowej definicji zasad zawierającej szablon ograniczenia z tą adnotacją zostanie wyświetlony ConstraintTemplateInstallFailed
błąd.
Usunięcie adnotacji może wydawać się w celu wyeliminowania widocznego błędu, ale dodatek zasad nie będzie synchronizował żadnych wymaganych zasobów dla tego szablonu ograniczenia do pamięci podręcznej. W związku z tym zasady będą oceniane względem wartości pustej data.inventory
(przy założeniu, że nie przypisano żadnych wbudowanych zasobów, które replikują wymagane zasoby). Spowoduje to wprowadzenie w błąd wyników zgodności. Jak wspomniano wcześniej, ręczne edytowanie konfiguracji w celu buforowania wymaganych zasobów również nie jest dozwolone.
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. Jest 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ą. Dane są używane w następujący sposób:
- Zachowaj aktualność dodatku usługi Azure Policy.
- Zachowaj bezpieczeństwo, niezawodną i wydajną obsługę 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 defektem
CriticalAddonsOnly
, 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 jest
aad-pod-identity
włączony, zasobniki tożsamości zarządzanej węzła (NMI) modyfikują węzłyiptables
w celu przechwytywania wywołań do punktu końcowego metadanych wystąpienia platformy Azure. Ta konfiguracja oznacza, że każde żądanie skierowane do punktu końcowego metadanych jest przechwytywane przez NMI, nawet jeśli zasobnik nie używa elementuaad-pod-identity
. AzurePodIdentityException
Funkcję CRD można skonfigurować tak, aby poinformowaćaad-pod-identity
, że wszystkie żądania do punktu końcowego metadanych pochodzące z zasobnika zgodnego z etykietami zdefiniowanymi w crD powinny być proksowane bez żadnego przetwarzania w usłudze NMI. Zasobniki systemowe z etykietąkubernetes.azure.com/managedby: aks
w przestrzeni nazw kube-system powinny zostać wykluczoneaad-pod-identity
przez skonfigurowanieAzurePodIdentityException
crD. 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
- Zapoznaj się z przykładami w przykładach usługi Azure Policy.
- Przejrzyj strukturę definicji usługi Azure Policy.
- Przejrzyj wyjaśnienie działania zasad.
- Dowiedz się, jak programowo tworzyć zasady.
- Dowiedz się, jak uzyskać dane zgodności.
- Dowiedz się, jak korygować niezgodne zasoby.
- Sprawdź, co to jest grupa zarządzania za pomocą funkcji Organizowanie zasobów przy użyciu grup zarządzania platformy Azure.