Grundlegendes zu Azure Policy für Kubernetes-Cluster

Azure Policy erweitert Gatekeeper v3, einen Webhook für die Zugangssteuerung für Open Policy Agent (OPA), um zentral und einheitlich bedarfsgesteuerte Erzwingungs- und Schutzmaßnahmen auf Ihre Cluster anzuwenden. Mithilfe von Azure Policy kann der Konformitätszustand Ihrer Kubernetes-Cluster von einem zentralen Ort aus verwaltet und gemeldet werden. Das Add-On bietet folgende Funktionen:

  • Überprüfen auf Richtlinienzuweisungen für den Cluster mit dem Azure Policy-Dienst
  • Bereitstellen von Richtliniendefinitionen im Cluster als Einschränkungsvorlage und benutzerdefinierte Einschränkungsressource
  • Senden von Details zur Überwachung und Konformität zurück an den Azure Policy-Dienst

Von Azure Policy für Kubernetes werden folgende Clusterumgebungen unterstützt:

Wichtig

Das Helm-Modell des Azure Policy-Add-Ons und das Add-On für die AKS-Engine sind veraltet. Befolgen Sie die Anweisungen zum Entfernen der Add-Ons.

Übersicht

Gehen Sie wie folgt vor, um Azure Policy zu aktivieren und mit Ihrem Kubernetes-Cluster zu verwenden:

  1. Konfigurieren des Kubernetes-Clusters und Installieren des Azure Kubernetes Service (AKS)-Add-Ons

    Hinweis

    Informationen zu häufigen Problemen bei der Installation finden Sie unter Problembehandlung – Azure Policy-Add-On.

  2. Machen Sie sich mit der Azure Policy-Sprache für Kubernetes vertraut.

  3. Weisen Sie Ihrem Kubernetes-Cluster eine Definition zu.

  4. Warten auf die Validierung

Einschränkungen

Die folgenden allgemeinen Einschränkungen gelten für das Azure Policy-Add-On für Kubernetes-Cluster:

  • Das Azure Policy Add-On für Kubernetes für unterstützte Kubernetes-Versionen in Azure Kubernetes Service (AKS).
  • Das Azure Policy-Add-On für Kubernetes kann nur in Linux-Knotenpools bereitgestellt werden.
  • Maximale Anzahl von Pods, die vom Azure Policy-Add-On pro Cluster unterstützt werden: 10.000.
  • Maximale Anzahl nicht konformer Datensätze pro Richtlinie pro Cluster: 500
  • Maximale Anzahl nicht konformer Datensätze pro Abonnement: 1 Mio.
  • Installationen von Gatekeeper außerhalb des Azure Policy-Add-Ons werden nicht unterstützt. Deinstallieren Sie alle Komponenten, die durch eine frühere Installation von Gatekeeper installiert wurden, bevor Sie das Azure Policy-Add-On aktivieren.
  • Ursachen für Nichtkonformität sind für den Microsoft.Kubernetes.DataRessourcenanbietermodus nicht verfügbar. Verwenden Sie Komponentendetails.
  • Ausnahmen auf Komponentenebene werden für Ressourcenanbietermodi nicht unterstützt.

Die folgenden Einschränkungen gelten nur für das Azure Policy-Add-On für AKS:

Empfehlungen

Im folgenden finden Sie allgemeine Empfehlungen für die Verwendung des Azure Policy-Add-Ons:

  • Zur Verwendung des Azure Policy-Add-Ons müssen drei Gatekeeper-Komponenten ausgeführt werden: ein Überwachungspod und zwei Webhook-Podreplikate. Diese Komponenten nutzen umso mehr Ressourcen, je stärker die Anzahl der Kubernetes-Ressourcen und Richtlinienzuweisungen im Cluster zunimmt. Dadurch werden entsprechende Überwachungs- und Erzwingungsvorgänge erforderlich.

    • Bei weniger als 500 Pods in einem Cluster mit maximal 20 Einschränkungen sind zwei vCPUs und 350 MB Arbeitsspeicher pro Komponente erforderlich.
    • Bei mehr als 500 Pods in einem Cluster mit maximal 40 Einschränkungen sind drei vCPUs und 600 MB Arbeitsspeicher pro Komponente erforderlich.
  • Windows-Pods unterstützen keine Sicherheitskontexte. Daher können einige Azure Policy-Richtlinien wie das Sperren von Stammberechtigungen in Windows-Pods nicht eskaliert und nur auf Linux-Pods angewendet werden.

Die folgende Empfehlung gilt nur für AKS und das Azure Policy-Add-On:

  • Verwenden Sie zum Planen von Gatekeeper-Pods den Systemknotenpool mit einem CriticalAddonsOnly-Taint. Weitere Informationen finden Sie unter Verwenden von Systemknotenpools.
  • Schützen Sie von Ihren AKS-Clustern ausgehenden Datenverkehr. Weitere Informationen finden Sie unter Steuern des ausgehenden Datenverkehrs für Clusterknoten.
  • Wenn für den Cluster aad-pod-identity aktiviert wurde, werden die IPTables der Knoten von NMI-Pods (Node Managed Identity) so geändert, dass Aufrufe für den Azure Instance Metadata-Endpunkt abgefangen werden. Diese Konfiguration bedeutet, dass jede Anforderung, die an den Metadatenendpunkt gerichtet ist, von NMI abgefangen wird, auch wenn aad-pod-identity vom Pod nicht verwendet wird. Die AzurePodIdentityException-CRD kann so konfiguriert werden, dass aad-pod-identity darüber informiert wird, dass an den Metadatenendpunkt gerichtete Anforderungen, die von einem Pod stammen, der in der CRD definierte Bezeichnungen abgleicht, ohne Verarbeitung in NMI über einen Proxy zu senden sind. Die Systempods mit der Bezeichnung kubernetes.azure.com/managedby: aks im Namespace kubernetes.azure.com/managedby: aks müssen in aad-pod-identity durch Konfiguration der AzurePodIdentityException-CRD ausgeschlossen werden. Weitere Informationen finden Sie unter Disable aad-pod-identity for a specific pod or application (Deaktivieren von „aad-pod-identity“ für einen bestimmten Pod oder eine bestimmte Anwendung). Installieren zur Konfiguration einer Ausnahme die YAML-Datei „mic-exception“.

Installieren des Azure Policy-Add-Ons für AKS

Bevor Sie das Azure Policy-Add-On installieren oder eines der Dienstfeatures aktivieren, müssen Sie in Ihrem Abonnement den Ressourcenanbieter Microsoft.PolicyInsights aktivieren.

  1. Azure CLI-Version 2.12.0 oder höher muss installiert und konfiguriert sein. Führen Sie az --version aus, um die Version zu ermitteln. Installations- und Upgradeinformationen finden Sie bei Bedarf unter Installieren von Azure CLI.

  2. Registrieren Sie die Ressourcenanbieter und die Previewfunktionen.

    • Azure-Portal:

      Registrieren Sie den Ressourcenanbieter Microsoft.PolicyInsights. Weitere Informationen finden Sie unter Ressourcenanbieter und -typen.

    • Azure CLI:

      # 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
      
  3. Wenn Richtliniendefinitionen der eingeschränkten Vorschauversion installiert wurden, entfernen Sie das Add-On in Ihrem AKS-Cluster auf der Seite Richtlinien mithilfe der Schaltfläche Deaktivieren.

  4. Der AKS-Cluster muss eine unterstützte Kubernetes-Version in Azure Kubernetes Service (AKS) sein. Verwenden Sie das folgende Skript, um Ihre AKS-Clusterversion zu überprüfen:

    # Log in first with az login if you're not using Cloud Shell
    
    # Look for the value in kubernetesVersion
    az aks list
    
  5. Installieren Sie die Azure-Befehlszeilenschnittstelle Version 2.12.0 oder höher. Weitere Informationen finden Sie unter Installieren der Azure-Befehlszeilenschnittstelle.

Nachdem die Voraussetzungen erfüllt sind, installieren Sie das Azure Policy-Add-On in dem zu verwaltenden AKS-Cluster.

  • Azure-Portal

    1. Starten Sie den AKS-Dienst im Azure-Portal, indem Sie die Option Alle Dienste auswählen und dann nach Kubernetes-Dienste suchen und die entsprechende Option auswählen.

    2. Wählen Sie einen Ihrer AKS-Cluster aus.

    3. Wählen Sie links Richtlinien auf der Seite des Kubernetes-Diensts aus.

    4. Wählen Sie auf der Hauptseite die Schaltfläche Add-On aktivieren aus.

  • Azure CLI

    # 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
    

Führen Sie den folgenden Befehl aus, um zu überprüfen, ob die Installation des Add-Ons erfolgreich war und die Pods azure-policy und gatekeeper ausgeführt werden:

# 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

Vergewissern Sie sich abschließend, dass das neueste Add-On installiert ist. Führen Sie hierzu den folgenden Azure CLI-Befehl aus, und ersetzen Sie dabei <rg> durch den Namen Ihrer Ressourcengruppe und <cluster-name> durch den Namen Ihres AKS-Clusters: az aks show --query addonProfiles.azurepolicy -g <rg> -n <cluster-name>. Das Ergebnis sollte so ähnlich wie die folgende Ausgabe aussehen:

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

Installieren der Azure Policy-Erweiterung für Kubernetes mit Azure Arc-Unterstützung

Mithilfe von Azure Policy für Kubernetes kann der Konformitätszustand Ihrer Kubernetes-Cluster von einem zentralen Ort aus verwaltet und gemeldet werden.

In diesem Artikel wird beschrieben, wie Sie die Azure Policy für Kubernetes-Erweiterung erstellen und löschen sowie den Erweiterungsstatus anzeigen.

Eine Übersicht der Erweiterungsplattform finden Sie unter Azure Arc-Clustererweiterungen.

Voraussetzungen

Wenn Sie Azure Policy für Kubernetes bereits auf einem Azure Arc-Cluster mittels Helm direkt ohne Erweiterungen bereitgestellt haben, befolgen Sie die Anweisungen zum Löschen des Helm-Charts. Sobald der Löschvorgang erfolgt ist, können Sie fortfahren.

  1. Stellen Sie sicher, dass Ihr Kubernetes-Cluster eine unterstützte Distribution ist.

    Hinweis

    Die Azure Policy für Arc-Erweiterung wird in den folgenden Kubernetes-Distributionen unterstützt.

  2. Stellen Sie sicher, dass alle hier aufgeführten allgemeinen Voraussetzungen für Kubernetes-Erweiterungen erfüllt sind, einschließlich des Verbindens Ihres Clusters mit Azure Arc.

    Hinweis

    Die Azure Policy-Erweiterung wird für Kubernetes-Cluster mit Arc-Unterstützung in diesen Regionen unterstützt.

  3. Öffnen Sie Ports für die Azure Policy-Erweiterung. Die Azure Policy-Erweiterung verwendet diese Domänen und Ports, um Richtliniendefinitionen und Zuweisungen abzurufen sowie um die Konformität des Clusters zurück an Azure Policy zu melden.

    Domain Port
    data.policy.core.windows.net 443
    store.policy.core.windows.net 443
    login.windows.net 443
    dc.services.visualstudio.com 443
  4. Bevor Sie die Azure Policy-Erweiterung installieren oder eins der Dienstfeatures aktivieren, müssen Sie in Ihrem Abonnement den Ressourcenanbieter Microsoft.PolicyInsights aktivieren.

    Hinweis

    Zum Aktivieren des Ressourcenanbieters führen Sie die Schritte unter Ressourcenanbieter und -typen aus, oder führen Sie entweder den Azure CLI- oder Azure PowerShell-Befehl aus.

    • Azure CLI

      # 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'
      

Erstellen der Azure Policy-Erweiterung

Hinweis

Beachten Sie Folgendes beim Erstellen der Azure Policy-Erweiterung:

  • Automatische Upgrades sind standardmäßig aktiviert, wodurch die Nebenversion der Azure Policy-Erweiterung aktualisiert wird, wenn neue Änderungen bereitgestellt werden.
  • Alle Proxyvariablen, die als Parameter an connectedk8s übergeben werden, werden an die Azure Policy-Erweiterung weitergegeben, um den Proxy für ausgehenden Datenverkehr zu unterstützen.

Führen Sie zum Erstellen einer Erweiterungsinstanz für Ihren Cluster mit Arc-Unterstützung den folgenden Befehl aus, wobei Sie <> durch Ihre Werte ersetzen:

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

Beispiel:

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

Beispielausgabe:

{
  "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"
}

Anzeigen der Azure Policy-Erweiterung

Um zu überprüfen, ob die Erstellung der Erweiterungsinstanz erfolgreich war, und die Metadaten der Erweiterung zu überprüfen, führen Sie den folgenden Befehl aus, wobei Sie <> durch Ihre Werte ersetzen:

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

Beispiel:

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

Führen Sie den folgenden Befehl aus, um zu überprüfen, ob die Installation des Erweiterung erfolgreich war und die Pods „azure-policy“ und „gatekeeper“ ausgeführt werden:

# 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

Löschen der Azure Policy-Erweiterung

Um die Erweiterungsinstanz zu löschen, führen Sie den folgenden Befehl aus, wobei Sie <> durch Ihre Werte ersetzen:

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

Richtliniensprache

Die Struktur der Azure Policy-Sprache für die Verwaltung von Kubernetes orientiert sich an der Struktur bereits vorhandener Richtliniendefinitionen. Mit einem Ressourcenanbietermodus von Microsoft.Kubernetes.Data werden die Auswirkungen von audit und deny zum Verwalten Ihrer Kubernetes-Cluster verwendet. Audit und deny müssen details-Eigenschaften bereitstellen, die für das Arbeiten mit dem OPA Constraint Framework und Gatekeeper v3 spezifisch sind.

Als Teil der Eigenschaften details.templateInfo, details.constraint und details.constraintTemplate in der Richtliniendefinition übergibt Azure Policy die URIs oder Base64-Werte dieser CustomResourceDefinitions (CRD) an das Add-On. Rego ist die Sprache, die von OPA und Gatekeeper unterstützt wird, um eine Anforderung an den Kubernetes-Cluster zu validieren. Durch die Unterstützung eines bestehenden Standards für das Kubernetes-Management ermöglicht Azure Policy die Wiederverwendung bestehender Regeln und deren Kombination mit Azure Policy für eine einheitliche Berichterstellungsumgebung zur Cloud-Compliance. Weitere Informationen finden Sie unter Was ist Rego?

Zuweisen einer Richtliniendefinition

Um Ihrem Kubernetes-Cluster eine Richtliniendefinition zuweisen zu können, müssen Ihnen die entsprechenden Azure RBAC-Richtlinienzuweisungsvorgänge (Azure Role-Based Access Control, rollenbasierte Zugriffssteuerung) zugewiesen sein. Die in Azure integrierten Rollen Mitwirkender bei Ressourcenrichtlinien und Besitzer verfügen über diese Vorgänge. Weitere Informationen finden Sie unter Azure RBAC-Berechtigungen in Azure Policy.

Führen Sie die folgenden Schritte aus, um die integrierten Richtliniendefinitionen für die Verwaltung Ihres Clusters über das Azure-Portal zu finden. Wenn Sie eine benutzerdefinierte Richtliniendefinition verwenden, suchen Sie nach deren Namen oder der Kategorie, mit der Sie sie erstellt haben.

  1. Starten Sie den Azure Policy-Dienst im Azure-Portal. Wählen Sie Alle Dienste im linken Bereich aus, suchen Sie dann nach der Option Richtlinie und wählen Sie sie aus.

  2. Wählen Sie im linken Bereich der Seite „Azure Policy“ die Option Definitionen aus.

  3. Verwenden Sie im Dropdown-Listenfeld „Kategorie“ die Option Alle auswählen, um den Filter zu löschen, und wählen Sie dann Kubernetes aus.

  4. Wählen Sie die Richtliniendefinition und dann die Schaltfläche Zuweisen aus.

  5. Legen Sie den Bereich auf die Verwaltungsgruppe, das Abonnement oder die Ressourcengruppe des Kubernetes-Clusters fest, in dem die Richtlinienzuweisung angewendet wird.

    Hinweis

    Beim Zuweisen der Definition für Azure Policy für Kubernetes muss der Bereich die Clusterressource enthalten.

  6. Weisen Sie der Richtlinienzuweisung einen Namen und eine Beschreibung zu, die Sie zur einfachen Identifizierung verwenden können.

  7. Legen Sie die Richtlinienerzwingung auf einen der folgenden Werte fest:

    • Aktiviert: Erzwingen Sie die Richtlinie auf dem Cluster. Kubernetes-Zulassungsanforderungen mit Verstößen werden verweigert.

    • Deaktiviert: Erzwingen Sie die Richtlinie nicht auf dem Cluster. Kubernetes-Zulassungsanforderungen mit Verstößen werden nicht verweigert. Die Ergebnisse der Konformitätsbewertung sind weiterhin verfügbar. Wenn Sie neue Richtliniendefinitionen für aktive Cluster einführen, ist die Option Deaktiviert hilfreich, um die Richtliniendefinition zu testen, da Zulassungsanforderungen mit Verstößen nicht verweigert werden.

  8. Wählen Sie Weiter aus.

  9. Festlegen von Parameterwerten

    • Geben Sie die Liste der Namespaces im Parameter Namespaceausschlüsse an, um Kubernetes-Namespaces aus der Richtlinienauswertung auszuschließen. Es wird empfohlen, Folgendes auszuschließen: kube-system, gatekeeper-system und azure-arc.
  10. Klicken Sie auf Überprüfen + erstellen.

Verwenden Sie alternativ Schnellstart: Erstellen einer Richtlinienzuweisung zum Identifizieren nicht konformer Ressourcen, um eine Kubernetes-Richtlinie zu finden und zuzuweisen. Suchen Sie nach einer Kubernetes-Richtliniendefinition anstelle der Stichprobe audit vms.

Wichtig

Integrierte Richtliniendefinitionen stehen für Kubernetes-Cluster in der Kategorie Kubernetes zur Verfügung. Eine Liste der integrierten Richtliniendefinitionen finden Sie unter Kubernetes-Beispiele.

Richtlinienauswertung

Das Add-On prüft alle 15 Minuten mit dem Azure Policy-Dienst, ob sich die Richtlinienzuweisungen geändert haben. Während dieses Aktualisierungszyklus nimmt das Add-On eine Prüfung auf Änderungen vor. Diese Änderungen lösen das Erstellen, Aktualisieren oder Löschen der Einschränkungsvorlagen und Einschränkungen aus.

Wenn ein Namespace in einem Kubernetes-Cluster über die dem Cluster entsprechende Bezeichnungen verfügt, werden die Zulassungsanforderungen mit Verstößen nicht verweigert. Die Ergebnisse der Konformitätsbewertung sind weiterhin verfügbar.

  • Kubernetes-Cluster mit Azure Arc-Unterstützung: admission.policy.azure.com/ignore

Hinweis

Ein Clusteradministrator verfügt zwar möglicherweise über die Berechtigung zum Erstellen und Aktualisieren von Einschränkungsvorlagen und -ressourcen, die durch das Azure Policy-Add-On installiert wurden, hierbei handelt es sich jedoch nicht um unterstützte Szenarien, da manuelle Updates überschrieben werden. Richtlinien, die vor der Installation des Add-Ons und vor der Zuweisung von Azure Policy-Richtliniendefinitionen vorhanden waren, werden weiterhin von Gatekeeper ausgewertet.

Das Add-On fordert alle 15 Minuten einen vollständigen Scan des Clusters an. Nachdem Details des vollständigen Scans und alle Echtzeitauswertungen von versuchten Änderungen am Cluster durch Gatekeeper erfasst wurden, meldet das Add-On die Ergebnisse an Azure Policy zurück, um sie in Konformitätsdetails wie bei allen Azure Policy-Zuweisungen aufzunehmen. Während des Prüfzyklus werden nur Ergebnisse für aktive Richtlinienzuweisungen zurückgegeben. Prüfungsergebnisse können auch als Violations (Verstöße) angezeigt werden, die im Statusfeld der fehlerhaften Einschränkung aufgeführt sind. Weitere Informationen zu nicht konformen Ressourcen finden Sie unter Komponentendetails für Ressourcenanbietermodi.

Hinweis

Jeder Konformitätsbericht in Azure Policy für Ihre Kubernetes-Cluster umfasst sämtliche Verstöße der letzten 45 Minuten. Der Zeitstempel gibt an, wann ein Verstoß aufgetreten ist.

Einige weitere Überlegungen:

  • Wenn das Cluster-Abonnement bei Microsoft Defender für Cloud registriert ist, wird Microsoft Defender für Cloud Kubernetes-Richtlinien automatisch auf den Cluster angewendet.

  • Wenn eine Ablehnungsrichtlinie auf einen Cluster mit vorhandenen Kubernetes-Ressourcen angewendet wird, werden alle bereits vorhandenen Ressourcen, die nicht mit der neuen Richtlinie konform sind, weiterhin ausgeführt. Wenn die nicht konforme Ressource auf einem anderen Knoten neu geplant wird, wird die Ressourcenerstellung durch Gatekeeper blockiert.

  • Wenn ein Cluster über eine Ablehnungsrichtlinie verfügt, durch die Ressourcen überprüft werden, bekommt der Benutzer beim Erstellen einer Bereitstellung keine Ablehnungsmeldung. Stellen Sie sich beispielsweise eine Kubernetes-Bereitstellung vor, die Replikatgruppen und Pods enthält. Wenn ein Benutzer kubectl describe deployment $MY_DEPLOYMENT ausführt, wird im Rahmen von Ereignissen keine Ablehnungsmeldung zurückgegeben. Von kubectl describe replicasets.apps $MY_DEPLOYMENT werden jedoch die mit der Ablehnung zusammenhängenden Ereignisse zurückgegeben.

Hinweis

Init-Container können während der Richtlinienauswertung eingeschlossen werden. Um zu überprüfen, ob Init-Container enthalten sind, überprüfen Sie die CRD auf die folgende oder eine ähnliche Deklaration:

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

Konflikte mit Einschränkungsvorlagen

Wenn Einschränkungsvorlagen denselben Ressourcenmetadatennamen haben, die Richtliniendefinition aber an verschiedenen Stellen auf die Quelle verweist, gelten die Richtliniendefinitionen als in Konflikt miteinander. Beispiel: Zwei Richtliniendefinitionen verweisen auf dieselbe Datei template.yaml, die an verschiedenen Quellspeicherorten gespeichert ist, z. B. im Azure Policy-Vorlagenspeicher (store.policy.core.windows.net) und auf GitHub.

Wenn Richtliniendefinitionen und die zugehörigen Beschränkungsvorlagen zugewiesen werden, aber noch nicht auf dem Cluster installiert sind und es zu Konflikten kommt, werden sie als Konflikt gemeldet und erst dann im Cluster installiert, wenn der Konflikt gelöst ist. Ebenso funktionieren alle vorhandenen Richtliniendefinitionen und ihre Einschränkungsvorlagen, die sich bereits im Cluster befinden und mit neu zugewiesenen Richtliniendefinitionen in Konflikt stehen, weiterhin normal. Wenn eine vorhandene Zuweisung aktualisiert wird und die Einschränkungsvorlage nicht synchronisiert werden kann, wird der Cluster ebenfalls als konfliktbehaftet eingestuft. Informationen zu allen Konfliktmeldungen finden Sie unter Konformitätsgründe für den AKS-Ressourcenanbietermodus.

Protokollierung

Als Kubernetes-Controller/-Container speichern die Pods azure-policy und gatekeeper Protokolle im Kubernetes-Cluster. Im Allgemeinen können Azure-Richtlinien-Protokolle verwendet werden, um Probleme bei der Erfassung von Richtlinien im Cluster und bei der Konformitätsberichterstellung zu beheben. Die Podprotokolle des Gatekeeper-Controller-Managers können verwendet werden, um Laufzeitverweigerungen zu beheben. Die Podprotokolle desGatekeeper-Audits können zur Problembehandlung bei der Überwachung vorhandener Ressourcen verwendet werden. Die Protokolle können auf der Seite Insights des Kubernetes-Clusters verfügbar gemacht werden. Weitere Informationen finden Sie unter Überwachen der Leistung von Kubernetes-Clustern mit Azure Monitor für Container.

Verwenden Sie kubectl, um die Add-On-Protokolle anzuzeigen:

# 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

Weitere Informationen finden Sie in der Gatekeeper-Dokumentation unter Debuggen.

Anzeigen von Gatekeeper-Artefakten

Nachdem das Add-On die Richtlinienzuweisungen heruntergeladen und die Einschränkungsvorlagen und Einschränkungen im Cluster installiert hat, werden beide mit Azure Policy-Informationen wie der Richtlinienzuweisungs-ID und der Richtliniendefinitions-ID kommentiert. Führen Sie die folgenden Schritte aus, um Ihren Client zum Anzeigen der Add-On-bezogenen Artefakte zu konfigurieren:

  1. Richten Sie für den Cluster kubeconfig ein.

    Verwenden Sie die folgende Azure CLI für einen Azure Kubernetes Service-Cluster:

    # 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. Testen Sie die Clusterverbindung.

    Führen Sie den Befehl kubectl cluster-info aus. Bei einer erfolgreichen Ausführung antwortet jeder Dienst mit einer URL, unter der er ausgeführt wird.

Anzeigen der Add-On-Einschränkungsvorlagen

Führen Sie kubectl get constrainttemplates aus, um die vom Add-On heruntergeladenen Einschränkungsvorlagen anzuzeigen. Einschränkungsvorlagen, die mit k8sazure beginnen, werden vom Add-On installiert.

Abrufen von Azure Policy-Zuordnungen

Verwenden Sie kubectl get constrainttemplates <TEMPLATE> -o yaml, um die Zuordnung zwischen einer Einschränkungsvorlage, die in den Cluster heruntergeladen wurde, und der Richtliniendefinition zu identifizieren. Die Ergebnisse sehen in etwa wie in der folgenden Ausgabe aus:

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> ist die Abonnement-ID und <GUID> die ID der zugeordneten Richtliniendefinition. <URL-OF-YAML> ist der Quellspeicherort der Einschränkungsvorlage, die das Add-On heruntergeladen hat, um es im Cluster zu installieren.

Sobald Sie über die Namen der heruntergeladenen Add-On-Einschränkungsvorlagen verfügen, können Sie den Namen verwenden, um die zugehörigen Einschränkungen anzuzeigen. Verwenden Sie kubectl get <constraintTemplateName>, um die Liste abzurufen. Vom Add-On installierte Einschränkungen beginnen mit azurepolicy-.

Anzeigen von Einschränkungsdetails

Die Einschränkung enthält Details zu Verstößen und Zuordnungen zur Richtliniendefinition und -zuweisung. Verwenden Sie kubectl get <CONSTRAINT-TEMPLATE> <CONSTRAINT> -o yaml, um die Details anzuzeigen. Die Ergebnisse sehen in etwa wie in der folgenden Ausgabe aus:

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

Behandeln von Problemen mit dem Add-On

Weitere Informationen zur Behandlung von Problemen im Zusammenhang mit dem Add-On für Kubernetes finden Sie im Kubernetes-Abschnitt des Artikels zur Azure Policy-Problembehandlung.

Informationen zu Problemen im Zusammenhang mit der Azure Policy-Erweiterung für Arc finden Sie hier:

Informationen zu Problemen mit Azure Policy:

Entfernen des Add-Ons

Entfernen des Add-Ons aus AKS

Verwenden Sie zum Entfernen des Azure Policy-Add-Ons aus Ihrem AKS-Cluster entweder das Azure-Portal oder die Azure CLI:

  • Azure-Portal

    1. Starten Sie den AKS-Dienst im Azure-Portal, indem Sie die Option Alle Dienste auswählen und dann nach Kubernetes-Dienste suchen und die entsprechende Option auswählen.

    2. Wählen Sie Ihren AKS-Cluster aus, in dem Sie das Azure Policy-Add-On deaktivieren möchten.

    3. Wählen Sie links Richtlinien auf der Seite des Kubernetes-Diensts aus.

    4. Wählen Sie auf der Hauptseite die Schaltfläche Add-On deaktivieren aus.

  • Azure CLI

    # 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
    

Entfernen des Add-Ins aus Kubernetes mit Azure Arc-Aktivierung

Hinweis

Das Azure Policy-Add-On Helm-Modell ist jetzt veraltet. Installieren Sie stattdessen die Azure Policy-Erweiterung für Kubernetes mit Azure Arc-Unterstützung.

Führen Sie den folgenden Helm-Befehl aus, um das Azure Policy-Add-On und Gatekeeper aus Ihrem Kubernetes-Cluster mit Azure Arc-Aktivierung zu entfernen:

helm uninstall azure-policy-addon

Entfernen des Add-Ons aus der AKS-Engine

Hinweis

Das AKS Modulprodukt ist jetzt für Azure Public Cloud-Kunden veraltet. Erwägen Sie bitte, Azure Kubernetes Service (AKS) für verwaltete Kubernetes oder Cluster-API-Anbieter Azure für selbstverwaltete Kubernetes zu verwenden. Es sind keine neuen Funktionen geplant; dieses Projekt wird nur für CVEs & ähnlich aktualisiert, wobei Kubernetes 1.24 als endgültige Version aktualisiert wird, um Updates zu erhalten.

Wenn Sie das Azure Policy Add-On und Gatekeeper aus dem AKS-Engine-Cluster entfernen möchten, verwenden Sie die Methode, die der Installationsweise des Add-Ons entspricht:

  • Bei Installation durch Festlegen der addons-Eigenschaft in der Clusterdefinition für die AKS-Engine:

    Stellen Sie die Clusterdefinition erneut für die AKS-Engine bereit, nachdem Sie die addons-Eigenschaft für azure-policy in „false“ geändert haben:

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

    Weitere Informationen finden Sie unter Deaktivieren des Azure Policy-Add-Ons.

  • Wenn die Installation mit Helm-Charts durchgeführt wurde, führen Sie den folgenden Helm-Befehl aus:

    helm uninstall azure-policy-addon
    

Vom Azure Policy-Add-On gesammelte Diagnosedaten

Das Azure Policy-Add-On für Kubernetes sammelt begrenzte Clusterdiagnosedaten. Diese Diagnosedaten sind wichtige technische Daten in Bezug auf Software und Leistung. Sie werden für folgende Zwecke verwendet:

  • Azure Policy Add-On auf dem neuesten Stand halten
  • Azure Policy Add-On sicher, zuverlässig und leistungsfähig halten
  • Azure Policy Add-On verbessern – durch die aggregierte Analyse der Verwendung des Add-Ons

Die vom Add-On gesammelten Informationen sind keine persönlichen Daten. Die folgenden Details werden derzeit gesammelt:

  • Version des Azure Policy-Add-On-Agents
  • Clustertyp
  • Clusterregion
  • Clusterressourcengruppe
  • Clusterressourcen-ID
  • Clusterabonnement-ID
  • Clusterbetriebssystem (Beispiel: Linux)
  • Ort für den Cluster (Beispiel: Seattle)
  • Bundesland oder Kanton für den Cluster (Beispiel: Washington)
  • Land oder Region für den Cluster (Beispiel: USA)
  • Ausnahmen/Fehler, die während der Installation des Agents bei der Richtlinienauswertung durch das Azure Policy Add-On festgestellt werden
  • Anzahl von Gatekeeper-Richtliniendefinitionen, die nicht durch das Azure Policy-Add-On installiert wurden

Nächste Schritte