Konfigurieren von Richtlinien für AKS-Ressourcenkontingente mit Azure Policy für Kubernetes

Abgeschlossen

Azure Policy unterstützt Sie bei der Durchsetzung von Standards und der Bewertung der Compliance für Ihre Cloudumgebung im richtigen Maßstab. Es wird empfohlen, dass Unternehmen Geschäftsregeln implementieren, um festzulegen, wie Mitarbeiter*innen Software, Hardware und andere Ressourcen des Unternehmens nutzen dürfen. Daher verwenden Unternehmen Richtlinien, um den Zugriff zu erzwingen, zu überprüfen und zu definieren. Richtlinien unterstützen eine Organisation dabei, Governance- und gesetzliche Anforderungen zu erfüllen, bewährte Methoden zu implementieren und organisatorische Konventionen einzurichten.

Mit Azure Kubernetes Service (AKS) können Sie Ihre cloudnativen Anwendungen effizient mit Richtlinien orchestrieren. Sie erkennen, dass Sie Geschäftsregeln durchsetzen müssen, um zu verwalten, wie die Teams AKS verwenden, um einen kosteneffektiven Ansatz zu gewährleisten. Sie entscheiden sich dafür, Azure Policy zu verwenden, um diese Idee auf Ihre auf Azure basierenden Cloudressourcen zu übertragen.

Bevor die Verwendung von Azure Policy für Kubernetes behandelt wird, sollten Sie einige zusätzliche Konzepte verstehen, die das Feature innerhalb von Kubernetes ermöglichen.

Was ist ein Kubernetes-Zugangscontroller?

Ein Zugangscontroller ist ein Kubernetes-Plug-In, das authentifizierte und autorisierte Anforderungen an die Kubernetes-API abfängt, bevor das angeforderte Kubernetes-Objekt persistent gespeichert wird. Angenommen, Sie stellen beispielsweise eine neue Workload bereit und die Bereitstellung enthält eine Pod-Anforderung mit spezifischen Arbeitsspeicheranforderungen. Der Zugangscontroller fängt die Bereitstellungsanforderung ab und muss die Bereitstellung autorisieren, bevor sie im Cluster gespeichert wird.

Sie können sich einen Zugangscontroller als Software vorstellen, die regelt und erzwingt, wie der Cluster verwendet und entworfen wird. Er schränkt Anforderungen zum Erstellen, Löschen und Bearbeiten von Kubernetes-Objekten ein.

Was ist ein Zugangscontroller-Webhook?

Ein Zugangscontroller-Webhook ist eine HTTP-Rückruffunktion, die Zugangsanforderungen empfängt und diese Anforderungen dann verarbeitet. Die Steuerungscontroller müssen zur Laufzeit konfiguriert werden. Diese Controller sind entweder für Ihr kompiliertes Zugangs-Plug-In oder für Ihre bereitgestellte Erweiterung verfügbar, die als Webhook ausgeführt wird.

Es sind zwei Arten von Zugangscontroller-Webhooks verfügbar: ein überprüfender Webhook und ein verändernder Webhook. Ein verändernder Webhook wird zuerst aufgerufen und kann die Standardwerte der an den API-Server gesendeten Objekte ändern und anwenden. Ein Validierungswebhook überprüft Objektwerte und kann Anforderungen ablehnen.

Was ist der Open Policy Agent (OPA)?

Beim Open Policy Agent (OPA) handelt es sich um eine universelle Open-Source-Richtlinien-Engine, die eine allgemeine deklarative Sprache zum Erstellen von Richtlinien bietet. Diese Richtlinien ermöglichen es Ihnen, Regeln zu definieren, die das Verhalten Ihres Systems überwachen.

Was ist OPA Gatekeeper?

OPA Gatekeeper ist ein validierender Open-Source-Kubernetes-Zugangscontroller-Webhook, der CRD-basierte (Custom Resource Definition) Richtlinien erzwingt, die der OPA-Syntax folgen.

Das Ziel von OPA Gatekeeper besteht darin, Ihnen das Anpassen von Zugangsrichtlinien mithilfe der Konfiguration anstelle von hartcodierten Richtlinienregeln für Dienste zu ermöglichen. Außerdem erhalten Sie einen vollständigen Überblick über Ihren Cluster, um Ressourcen mit Richtlinienverletzungen zu identifizieren.

Verwenden Sie OPA Gatekeeper, um organisationsweite Richtlinien mit Regeln zu definieren:

  • Dass die maximalen Ressourcenlimits, z. B. die CPU- und Arbeitsspeicherlimits, für alle konfigurierten Pods erzwungen werden

  • Dass die Bereitstellung von Images nur aus genehmigten Repositorys zulässig ist

  • Die Namenskonvention für Bezeichnungen für alle Namespaces in einem Cluster muss einen Kontaktpunkt für jeden Namespace angeben.

  • Legen Sie fest, dass Clusterdienste global eindeutige Selektoren haben müssen.

Azure Policy für AKS

Azure Policy erweitert OPA Gatekeeper-Version 3 und wird über integrierte Richtlinien mit AKS integriert. Diese Richtlinien wenden maßgerechte Erzwingungen und Schutzvorrichtungen auf zentralisierte und konsistente Weise auf Ihren Cluster an.

Die Entwicklungsteams Ihres Unternehmens möchten die Entwicklung optimieren und Entwicklungstools wie DevSpaces einführen, um ihren Kubernetes-Entwicklungsworkflow zu vereinfachen. Sie möchten sicherstellen, dass die Teammitglieder bestimmte Ressourcenlimits für ihre Projekte einhalten. Sie beschließen, eine Richtlinie bereitzustellen, die die zulässigen Computeressourcen, Speicherressourcen und die in den Entwicklungsnamespaces zulässige Objektanzahl definiert.

Zum Einrichten von Ressourcenlimits können Sie Ressourcenkontingente auf Namespaceebene anwenden und die Ressourcennutzung überwachen, um Richtlinienkontingente anzupassen. Verwenden Sie diese Strategie, um Ressourcen für das Entwicklungsteam zu reservieren und einzuschränken.

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

Zum Registrieren des Features „Azure Policy-Add-On für AKS“ sind einige Schritte erforderlich. Hier finden Sie Beispiele, aber in der nächsten Einheit führen Sie die Schritte tatsächlich aus.

  1. Registrieren Sie zwei Ressourcenanbieter mithilfe des az provider register-Befehls:

    • Microsoft.ContainerService und Microsoft.PolicyInsights: Diese Ressourcenanbieter unterstützen Aktionen wie die Abfrage von Informationen über Richtlinienereignisse und die Verwaltung von Containern. Dies sind Aktionen zum Abfragen, Erstellen, Aktualisieren oder Löschen von Richtlinienabhilfen.

    Im Folgenden finden Sie ein Beispiel für die beiden Registrierungsbefehle:

    az provider register --namespace Microsoft.ContainerService
    az provider register --namespace Microsoft.PolicyInsights
    
  2. Registrieren Sie das Feature AKS-AzurePolicyAutoApprove mit dem Ressourcenanbieter Microsoft. ContainerService. Das folgende Beispiel zeigt den Befehl:

    az feature register --namespace Microsoft.ContainerService --name AKS-AzurePolicyAutoApprove
    
  3. Nachdem Sie die erfolgreiche Featureregistrierung bestätigt haben, führen Sie den Befehl az provider register mit dem Parameter --namespace aus, um die neue Featureregistrierung zu verteilen. Das folgende Beispiel zeigt den Befehl:

    az provider register -n Microsoft.ContainerService
    
  4. Aktivieren des Azure Policy-Add-Ons:

    az aks enable-addons \
        --addons azure-policy \
        --name myAKSCluster \
        --resource-group myResourceGroup
    

    Wenn Sie das Add-On aktivieren, werden Workloads in zwei Namespaces auf Ihrem Cluster geplant. Der erste Namespace ist kube-system, der azure-policy und azure-policy-webhook enthält. Der zweite Namespace ist gatekeeper-system, der gatekeeper-controller-manager enthält. Diese Workloads sind für das Auswerten von Anforderungen verantwortlich, die an die AKS-Steuerungsebene gesendet werden. Auf der Grundlage der von Ihnen konfigurierten Richtlinien kann Ihr Richtlinien-Webhook Anforderungen zulassen oder ablehnen.

Zuweisen einer integrierten Richtliniendefinition

Sie verwalten die Richtlinien Ihrer Azure-Umgebung mithilfe des Azure Policy-Compliancedashboards. Das Dashboard ermöglicht Ihnen Drilldowns auf spezifische Ressourcen und Richtlinien. Es hilft Ihnen, Compliance für Ihre Ressourcen durch Massenkorrekturen für vorhandene Ressourcen und automatische Korrekturen für neue Ressourcen zu erreichen.

Für jede Richtlinie wird eine Übersicht über die folgenden Informationen aufgeführt:

Element Beschreibung Beispiel
Name Der Name der Richtlinie. [Vorschau]: Sicherstellen, dass Limits für CPU- und Arbeitsspeicherressourcen im Kubernetes-Cluster nicht überschritten werden.
Bereich Die Abonnementressourcengruppe, für die diese Richtlinie gilt. mySubscription/rg-akscostsaving.
Konformitätszustand Hierbei handelt es sich um den Status der zugewiesenen Richtlinien. Compliant (Konform), Conflicted (Konflikt), Not started (Nicht gestartet) oder Not Registered (Nicht registriert).
Ressourcenkonformität Hierbei handelt es sich um den Prozentsatz der Ressourcen, die der Richtlinie entsprechen. Bei dieser Berechnung werden konforme, nicht konforme und in Konflikt stehende Ressourcen berücksichtigt. 100
Nicht konforme Ressourcen Hierbei handelt es sich um die Anzahl von eindeutigen Ressourcen, die gegen mindestens eine Richtlinienregel verstoßen. 3
Nicht konforme Richtlinien Hierbei handelt es sich um die Anzahl der nicht konformen Richtlinien. 5

Hier können Sie die Details zu den ausgelösten Ereignissen pro Ressource und pro Richtlinie aufschlüsseln. Sie können zum Beispiel Details einer verweigerten Workload-Bereitstellung untersuchen.

Zuweisen von Richtlinien

Wenn Sie eine Richtlinie zuweisen möchten, wählen Sie im Azure Policy-Navigationsbereich die Option Zuweisungen im Abschnitt Erstellung aus.

Ihnen stehen zwei Vorgehensweisen zum Zuweisen von Azure-Richtlinien zur Auswahl: als Gruppe von Richtlinien (Initiative) oder als einzelne Richtlinie.

Initiativenzuweisung

Eine Initiativenzuweisung ist eine Sammlung von Azure-Richtliniendefinitionen, die zusammengefasst werden, um ein bestimmtes Ziel oder einen bestimmten Zweck zu erfüllen. Beispielsweise kann es das Ziel sein, den „Payment Card Industry Data Security Standard“ auf Ihre Ressourcen anzuwenden.

Richtlinienzuweisung

Bei einer Richtlinienzuweisung wird eine einzelne Richtlinie zugewiesen, z. B. Privilegierte Container im Kubernetes-Cluster nicht zulassen.

Zuweisen einer Richtlinie

Alle Richtlinien werden mithilfe einer Reihe von Konfigurationsschritten definiert. Die Menge der Informationen, die Sie erfassen, hängt von der Art der ausgewählten Richtlinie ab.

Wenn Sie z. B. die Ressourcenbereitstellung durch Entwickler in der Cloudumgebung des Unternehmens einschränken möchten, können Sie eine der integrierten Azure-Richtlinien für Azure Kubernetes Service zuweisen. Der Name der Richtlinie lautet Sicherstellen, dass Limits für CPU- und Arbeitsspeicherressourcen im Kubernetes-Cluster nicht überschritten werden.

Die Richtlinie erfordert, dass Sie den Grenzwert für die zulässigen Ressourcen festlegen, die von Bereitstellungsanforderungen angefordert werden.

Werfen wir einen Blick auf die konfigurierbaren Optionen, wenn Sie eine Richtlinie zuweisen.

Grundlegende Richtlinieninformationen

Für den ersten Schritt müssen Sie grundlegende Informationen auswählen und eingeben, die die neue Richtlinie definieren. Diese Informationen können zum Beispiel die Richtlinie und der Ressourcenbereich sein. Diese Tabelle zeigt die einzelnen Elemente, die Sie konfigurieren können:

Element BESCHREIBUNG
Bereich Der Geltungsbereich legt fest, für welche Ressourcen oder Gruppen von Ressourcen die Richtlinienzuweisung erzwungen wird. Dieser Wert basiert auf einem Abonnement oder einer Verwaltungsgruppe. Sie können Ressourcen auf einer Ebene unterhalb der Bereichsebene aus Ihrer Auswahl ausschließen.
Richtliniendefinition Hierbei handelt es sich um die Richtlinie, die Sie anwenden möchten. Sie können aus mehreren integrierten Richtlinienoptionen auswählen.
Zuweisungsname Der Name, der zur Identifizierung der zugewiesenen Richtlinie verwendet wird.
Beschreibung Hierbei handelt es sich um eine Freitextbeschreibung der Richtlinie.
Richtlinienerzwingung Sie können Aktiviert und Deaktiviert auswählen. Wenn diese Option deaktiviert ist, wird die Richtlinie nicht angewendet, und Anforderungen werden bei Nichtkonformität nicht verweigert.
Zugewiesen von Dieser Freitextwert gibt standardmäßig den registrierten Benutzer an. Sie können diesen Wert ändern.

Richtlinienparameter

Richtlinien erfordern, dass Sie die Geschäftsregeln konfigurieren, die für die jeweilige Richtlinie gelten. Nicht alle Richtlinien verfügen über dieselben Geschäftsregeln, weshalb jede Richtlinie unterschiedliche Parameter aufweist.

Die Richtlinie Sicherstellen, dass Containerlimits für CPU- und Arbeitsspeicherressourcen im Kubernetes-Cluster nicht überschritten werden erfordert beispielsweise das Festlegen von drei Parametern:

  • Die maximal zulässigen CPU-Einheiten für einen Container
  • Die maximal zulässige Anzahl von Arbeitsspeicherbytes für einen Container
  • Eine Liste der Kubernetes-Namespaces, die aus der Richtlinie ausgeschlossen werden sollen

Vergleichen Sie diese Richtlinie mit der Richtlinie Zugriff auf Webanwendung nur über HTTPS gestatten, die über keine benutzerdefinierten Parameter verfügt, die konfiguriert werden können.

Alle Richtlinien verfügen über eine Einstellung Auswirkung. Diese Einstellung aktiviert oder deaktiviert die Richtlinienausführung. Wie Parameter können auch Richtlinien verschiedene Optionen für die Auswirkung aufweisen.

Beispielsweise können Sie für die Richtlinie für die Ressourcenverwaltung Überwachen, Verweigern oder Deaktivieren als Wert für Auswirkung auswählen. Für die Webanwendungsrichtlinie können Sie nur audit (Überwachen) oder disable (Deaktivieren) auswählen.

In der folgenden Tabelle werden alle Auswirkungen aufgelistet, die derzeit in Richtliniendefinitionen unterstützt werden:

Auswirkung Beschreibung
Append (Anfügen) Fügt der angeforderten Ressource weitere Felder hinzu
Überwachung Erstellt ein Warnereignis im Aktivitätsprotokoll
AuditIfNotExists Ermöglicht die Überwachung von Ressourcen im Zusammenhang mit der Ressource, die mit der Bedingung übereinstimmt
Deny (Verweigern) Verhindert Ressourcenanforderungen, die nicht mit den über eine Richtliniendefinition definierten Standards übereinstimmen, wodurch die Anforderung fehlschlägt
DeployIfNotExists Führt eine Vorlagenbereitstellung aus, wenn eine bestimmte Bedingung erfüllt ist
Disabled Ist für Testsituationen oder für den Fall nützlich, dass die Richtliniendefinition die Auswirkung parametrisiert hat und Sie eine einzelne Zuweisung deaktivieren möchten
Änderung Fügt für eine Ressource während der Erstellung oder Aktualisierung Tags hinzu, ändert oder entfernt sie

Richtlinienwartung

Im letzten Schritt befassen Sie sich mit der Richtlinienwartung. Wenn Sie Richtlinien zuweisen, ist es möglich, dass bereits Ressourcen existieren, die gegen die neue Richtlinie verstoßen. Standardmäßig werden nur neu erstellte Ressourcen auf die neue Richtlinie angewendet. Verwenden Sie die Nachbesserung, um vorhandene Ressourcen zu überprüfen, nachdem Sie eine neue Richtlinie zugewiesen haben. Nachbesserungsaufgaben können sich je nach Art der angewandten Richtlinien unterscheiden.

In der nächsten Übung verwenden Sie die Richtlinie Sicherstellen, dass die CPU- und Speicherressourcen der Container die in der Kubernetes-Cluster-Richtlinie festgelegten Grenzwerte nicht überschreiten, um die Kosten weiter zu senken.