Azure Policy und die Integration mit Azure Kubernetes Service

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 die gleichen Azure-Richtlinien in Ihren Kubernetes-Clustern verwenden, wodurch Sie den Konformitätszustand von Kubernetes-Ressourcen wie Pods, Bereitstellungen und Diensten so verwalten können wie bei einer Azure-Ressource.

Einführung von Azure Policy

Mit Azure Policy können Sie den Konformitätsstatus Ihrer Azure-Dienste verwalten. Hierzu wird der Zustand Ihrer Azure-Ressourcen mit 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 nur konform, wenn alle auf sie angewendeten Richtliniendefinitionen konform sind.

Richtlinienzuweisungen werden während der Erstellung oder Aktualisierung von Azure-Ressourcen ausgewertet. Sie werden auch ausgewertet, wenn die Definition oder der Bereich geändert wird, sowie in regelmäßigen Abständen, um eine kontinuierliche Überwachung sicherzustellen. In der Praxis wird die Richtlinie sofort wirksam, wenn Sie neue Ressourcen erstellen. Alle historischen Ressourcen werden ebenfalls überprüft, sodass Sie einen durchgängigen Überblick über die Konformität all Ihrer Ressourcen erhalten.

Integration von Azure Policy mit AKS

Azure Policy kann auf zwei Arten in Azure Kubernetes Service (AKS) integriert werden.

  • 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. Die Richtlinie wertet aus, ob ein AKS-Cluster die Funktionalität des privaten Clusters verwendet. Bei dieser Richtlinie handelt es sich um eine Konfiguration in der Azure-API, die das Design 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 entspricht. Diese Richtlinie 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 diese integrierten Sicherheitsrichtlinien anzuwenden und zu erzwingen, 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

Um Richtlinien auf der Grundlage der Kubernetes-API zu erzwingen, 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.

Wie können Sie mithilfe von Azure sicherstellen, dass für alle in Ihrem Kubernetes-Cluster erstellten Pods Anforderungen und Grenzwerte konfiguriert sind und keine Pods ohne diese Konfigurationen erstellt werden können?

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?