Azure Policy und die Integration mit AKS

Abgeschlossen

Azure Policy ist ein Azure-Dienst, mit dem Sie Ihren Konformitätsstatus für verschiedene Azure-Dienste verwalten können. Mithilfe von Azure Policy für Kubernetes können Sie dieselben Azure-Richtlinien auch in Ihren Kubernetes-Clustern verwenden, wodurch Sie den Konformitätsstatus von Kubernetes-Ressourcen wie Pods, Bereitstellungen und Diensten so verwalten können, als ob es sich um eine Azure-Ressource würde.

Einführung von Azure Policy

Mit Azure Policy können Sie den Konformitätsstatus Ihrer Azure-Dienste verwalten. Hierzu wird der Status Ihrer Azure-Ressourcen mit den von Ihnen definierten Geschäftsregeln verglichen. Allgemeine Regeln sind die Einschränkung bestimmter Regionen, die Anforderung von Ressourcentags oder die Beschränkung, welche Azure-Dienste verwendet werden können.

Sie definieren diese Geschäftsregeln in Azure Policy mithilfe von Richtliniendefinitionen. Es gibt viele integrierte Richtlinien, die eine Reihe gängiger Szenarios abdecken. Wenn eine der integrierten Richtlinien Ihre Anforderungen nicht erfüllt, können Sie mithilfe einer JSON-basierten Sprache auch eine benutzerdefinierte Richtlinie definieren. Sie können zudem mehrere Richtliniendefinitionen zu einer Initiative gruppieren.

In einer Richtliniendefinition definieren Sie eine Ressourcenkonformitätsbedingung und die Maßnahmen, die ergriffen werden sollten, wenn diese Bedingung erfüllt ist. Eine Bedingung vergleicht die Eigenschaften einer Ressource mit einem erforderlichen Wert. Ein Beispiel für eine Bedingung könnte der Vergleich des Speicherorts einer Ressource mit einer vordefinierten Liste zulässiger Speicherorte sein. Die Auswirkung einer Richtlinie kann das Überwachen der Bedingung, das Verweigern der Erstellung der Ressource oder das Ändern der erstellten Ressource sein. Im Beispiel für den Speicherort einer Ressource können Sie die Erstellung von Ressourcen verweigern, die nicht in der Liste der zulässigen Speicherorte enthalten sind. Eine ausführlichere Erläuterung der Richtliniendefinitionen finden Sie in der Azure Policy-Definitionsstruktur.

Azure Policy weist einem bestimmten Bereich eine Richtliniendefinition oder eine Initiative zu. Ein Bereich kann entweder eine Verwaltungsgruppe, ein Abonnement oder eine Ressourcengruppe sein. Richtlinienzuweisungen werden automatisch von allen Bereichen unterhalb der Zuweisung geerbt, es sei denn, Sie richten eine Ausnahme ein. Mehrere Richtliniendefinitionen können für einen bestimmten Bereich gelten. Das Schichten von Richtliniendefinitionen führt kumulativ zur stärksten Einschränkung. Falls mehrere Richtlinien für eine bestimmte Ressource gelten, ist diese Ressource also nur konform, wenn alle auf sie angewendeten Richtliniendefinitionen konform sind.

Richtlinienzuweisungen werden während der Erstellung oder Aktualisierung von Azure-Ressourcen, wenn die Definition oder der Bereich geändert wird, und in regelmäßigen Abständen für die kontinuierliche Überwachung ausgewertet. Praktisch bedeutet dies, dass die Richtlinie sofort wirksam wird, wenn Sie neue Ressourcen erstellen. Alle Verlaufsressourcen werden ebenfalls überprüft, sodass Sie einen durchgängigen Überblick über die Konformität all Ihrer Ressourcen erhalten.

Integration von Azure Policy mit AKS

Es gibt zwei Möglichkeiten, wie Azure Policy mit AKS integriert werden kann.

  • Richtlinien, die die Konformität auf der Azure-Steuerungsebene für AKS erzwingen
  • Richtlinien, die die Konformität für die Workload erzwingen, die in Ihrem Cluster ausgeführt wird. Die erste Gruppe von Richtlinien konzentriert sich eher auf die Azure-Ressourcen, die den Clusterentwurf darstellen, während sich die zweite Gruppe von Richtlinien auf Workloads konzentriert, die innerhalb des Clusters ausgeführt werden.

Ein Beispiel für eine Richtlinie, die sich auf die Azure-Steuerungsebene für AKS konzentriert, ist die Richtlinie zum Erzwingen der Verwendung privater Cluster. Diese Richtlinie wertet aus, ob ein AKS-Cluster die Funktionalität des privaten Clusters verwendet. Dabei handelt es sich um eine Konfiguration in der Azure-API, die den Entwurf des Clusters selbst steuert.

Ein Beispiel für die Gruppe von Richtlinien, die sich auf die in Ihrem Cluster ausgeführte Workload konzentrieren, ist die Richtlinie zum Erzwingen der Verwendung zulässiger Images. Diese Richtlinie wertet aus, ob eine Poddefinition in Kubernetes ein Image verwendet, das einem bestimmten regulären Ausdruck gleicht. Dies ist eine Konfiguration innerhalb des Clusters selbst und interagiert nicht mit der Azure-API.

Die erste Gruppe von Richtlinien funktioniert mit der Azure-API selbst. Die zweite Gruppe von Richtlinien interagiert mit der Kubernetes-API. Um dies zu erreichen, müssen Sie das Azure Policy-Add-On für AKS in Ihrem AKS-Cluster einrichten.

Grundlegendes zur Funktionsweise von Azure Policy für AKS im Hintergrund

Zum Erzwingen von Richtlinien auf der Grundlage der Kubernetes-API nutzt Azure Policy für Kubernetes viele Tools: Zugangswebhooks, Open Policy Agent (OPA), Gatekeeper und schließlich einen Azure Policy-Pod.

Azure Policy verwendet Zugangswebhooks in Kubernetes. Zugangswebhooks sind eine integrierte Funktion der Kubernetes-API. Sie ermöglichen der Kubernetes-API das Aufrufen eines externen Webhooks, um zu überprüfen, ob eine Anforderung zum Erstellen, Löschen, Ändern oder Herstellen einer Verbindung mit einer Ressource zugelassen oder verweigert werden soll (ValidatingAdmissionWebhook) oder ob die Anforderung geändert werden soll (MutatingAdmissionWebhook).

Open Policy Agent (OPA) ist eine Open-Source-Richtlinien-Engine. OPA bietet eine höhere Programmiersprache für die Definition von Richtlinien. Sie können OPA verwenden, um Richtlinien in Ihren eigenen Microservices, in CI/CD-Pipelines und in Kubernetes zu erzwingen. Azure Policy für Kubernetes übersetzt Azure-Richtlinien in die OPA-Sprache, die in Ihrem Kubernetes-Cluster bereitgestellt werden soll.

OPA Gatekeeper ist eine Kubernetes-spezifische Implementierung von OPA, die mit der Kubernetes-API integriert wird. Sie lässt sich mit den zuvor erläuterten Zugangswebhooks integrieren. Anstatt Ihre eigenen Webhookhandler bereitstellen zu müssen, können Sie OPA Gatekeeper verwenden, um die Antworten des Zugangswebhooks zu verarbeiten. Azure Policy für Kubernetes stellt OPA Gatekeeper in Ihrem Kubernetes-Cluster zur Verfügung, um diese Funktionalität zu erreichen.

1.

Wie weisen Sie allen Abonnements Ihrer Organisation eine Azure-Richtlinie zu?

2.

Sie müssen sicherstellen, dass für alle in Ihrem Kubernetes-Cluster erstellten Pods Anforderungen und Grenzwerte konfiguriert sind und mit Ausnahme dieser erstellten Pods alle Pods abgelehnt werden. Wie erreichen Sie dies in Azure?

3.

Sie weisen der Ressourcengruppe Ihres Kubernetes-Clusters die Richtlinie „Container in einem Kubernetes-Cluster dürfen nur zugelassene Images verwenden“ zu. Was geschieht mit vorhandenen Pods, die keine zulässigen Images verwenden?