Grundlegendes zu Azure Policy für die AKS-EngineUnderstand Azure Policy for AKS Engine

Azure Policy wird in die AKS-Engine integriert, ein System, das praktische Tools bereitstellt, um schnell einen Bootstrapvorgang für einen selbstverwalteten Kubernetes-Cluster in Azure auszuführen.Azure Policy integrates with AKS Engine, a system that provides convenient tooling to quickly bootstrap a self-managed Kubernetes cluster on Azure. Diese Integration ermöglicht das zentrale und einheitliche Anwenden von Schutz- und Sicherheitsmaßnahmen in großem Umfang für Ihre selbstverwalteten Cluster der AKS-Engine.This integration enables at-scale enforcements and safeguards on your AKS Engine self-managed clusters in a centralized, consistent manner. Durch die erweiterte Verwendung von Open Policy Agent (OPA) von Gatekeeper v3 (Betaversion), einem Webhook für die Zugangssteuerung für Kubernetes, bietet Azure Policy die Möglichkeit, den Konformitätsstatus Ihrer Azure-Ressourcen und selbstverwalteten Cluster der AKS-Engine von einer zentralen Stelle aus zu verwalten und zu melden.By extending use of Open Policy Agent (OPA) Gatekeeper v3 (beta), an admission controller webhook for Kubernetes, Azure Policy makes it possible to manage and report on the compliance state of your Azure resources and AKS Engine self-managed clusters from one place.

Hinweis

Azure Policy für die AKS-Engine befindet sich in der öffentlichen Vorschauphase und weist keine SLA auf.Azure Policy for AKS Engine is in Public Preview and has no SLA. Gatekeeper v3 ist in der Betaversion erhältlich und wird von der Open Source-Community unterstützt.Gatekeeper v3 is in Beta and is supported by the open source community. Der Dienst unterstützt nur integrierte Richtliniendefinitionen und einen einzelnen AKS-Engine-Cluster für jede Ressourcengruppe, die mit einem Dienstprinzipal konfiguriert ist.The service only supports built-in policy definitions and a single AKS Engine cluster for each resource group configured with a Service Principal.

Wichtig

Um Unterstützung für Azure Policy für die AKS-Engine, AKS-Engine oder Gatekeeper v3 zu erhalten, erstellen Sie ein neues Problem im GitHub-Repository der AKS-Engine.To get support for Azure Policy for AKS Engine, AKS Engine, or Gatekeeper v3, create a new issue in the AKS Engine GitHub repository.

ÜbersichtOverview

Führen Sie die folgenden Aktionen aus, um Azure Policy für die AKS-Engine für Ihren selbstverwalteten Kubernetes-Cluster in Azure zu aktivieren und zu verwenden:To enable and use Azure Policy for AKS Engine with your self-managed Kubernetes cluster on Azure, take the following actions:

VoraussetzungenPrerequisites

Bevor Sie das Azure Policy-Add-On installieren oder eines der Dienstfeatures aktivieren, muss in Ihrem Abonnement der Microsoft.PolicyInsights-Ressourcenanbieter aktiviert und eine Rollenzuweisung für den Clusterdienstprinzipal erstellt werden.Before installing the Azure Policy Add-on or enabling any of the service features, your subscription must enable the Microsoft.PolicyInsights resource provider and create a role assignment for the cluster service principal.

  1. 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:To enable the resource provider, follow the steps in Resource providers and types or run either the Azure CLI or Azure PowerShell command:

    • Azure-BefehlszeilenschnittstelleAzure 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 PowerShellAzure 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'
      
  2. Erstellen Sie eine Rollenzuweisung für den Clusterdienstprinzipal.Create a role assignment for the cluster service principal

    • Wenn Ihnen die App-ID des Clusterdienstprinzipals nicht bekannt ist, suchen Sie mit dem folgenden Befehl danach.If you don't know the cluster service principal app ID, look it up with the following command.

      # Get the kube-apiserver pod name
      kubectl get pods -n kube-system
      
      # Find the aadClientID value
      kubectl exec <kube-apiserver pod name> -n kube-system cat /etc/kubernetes/azure.json
      
    • Weisen Sie der App-ID des Clusterdienstprinzipals (Wert aadClientID aus dem vorherigen Schritt) mit der Azure CLI die Rolle „Policy Insights Data Writer (Preview)“ zu.Assign 'Policy Insights Data Writer (Preview)' role assignment to the cluster service principal app ID (value aadClientID from previous step) with Azure CLI. Ersetzen Sie <subscriptionId> durch Ihre Abonnement-ID und <aks engine cluster resource group> durch die Ressourcengruppe, in der sich der selbstverwaltete Kubernetes-Cluster der AKS-Engine befindet.Replace <subscriptionId> with your subscription ID and <aks engine cluster resource group> with the resource group the AKS Engine self-managed Kubernetes cluster is in.

      az role assignment create --assignee <cluster service principal app ID> --scope "/subscriptions/<subscriptionId>/resourceGroups/<aks engine cluster resource group>" --role "Policy Insights Data Writer (Preview)"
      

Azure Policy-Add-OnAzure Policy Add-on

Das Azure Policy-Add-On für Kubernetes verbindet den Azure Policy-Dienst mit der Gatekeeper-Zugangssteuerung.The Azure Policy Add-on for Kubernetes connects the Azure Policy service to the Gatekeeper admission controller. Das Add-On, das in den Namespace kube-system installiert wird, führt die folgenden Funktionen aus:The add-on, which is installed into the kube-system namespace, enacts the following functions:

  • Überprüfen auf Zuweisungen an den AKS-Engine-Cluster mit Azure PolicyChecks with Azure Policy for assignments to the AKS Engine cluster
  • Herunterladen und Installieren von Richtliniendetails, Einschränkungsvorlagen und EinschränkungenDownloads and installs policy details, constraint templates, and constraints
  • Ausführen einer vollständigen Konformitätsprüfung für den AKS-Engine-ClusterRuns a full scan compliance check on the AKS Engine cluster
  • Senden von Details zur Überwachung und Konformität an Azure PolicyReports auditing and compliance details back to Azure Policy

Installieren des Add-OnsInstalling the add-on

Sobald die Voraussetzungen erfüllt sind, kann das Azure Policy-Add-On installiert werden.Once the prerequisites are completed, the Azure Policy Add-on can be installed. Die Installation kann während des Erstellungs- oder Aktualisierungszyklus einer AKS-Engine oder als unabhängige Aktion auf einem vorhandenen Cluster erfolgen.The installation can be during the creation or update cycle of an AKS Engine or as an independent action on an existing cluster.

  • Installation während des Erstellungs- oder AktualisierungszyklusInstall during creation or update cycle

    Um das Azure Policy Add-On während der Erstellung eines neuen selbstverwalteten Clusters oder als Update für einen vorhandenen Cluster zu aktivieren, schließen Sie die Eigenschaft addons in die Clusterdefinition für die AKS-Engine ein.To enable the Azure Policy Add-on during the creation of a new self-managed cluster or as an update to an existing cluster, include the addons property cluster definition for AKS Engine.

    "addons": [{
        "name": "azure-policy",
        "enabled": true,
        "config": {
            "auditInterval": "30",
            "constraintViolationsLimit": "20"
        }
    }]
    

    Weitere Informationen dazu finden Sie im externen Leitfaden zur Clusterdefinition für die AKS-Engine.For more information about, see the external guide AKS Engine cluster definition.

  • Installation in vorhandenem Cluster mit Helm-DiagrammenInstall in existing cluster with Helm Charts

    Führen Sie die folgenden Schritte aus, um den Cluster vorzubereiten und das Add-On zu installieren:Use the following steps to prepare the cluster and install the add-on:

    1. Installieren Sie Gatekeeper im Namespace gatekeeper-system.Install Gatekeeper to the gatekeeper-system namespace.

      kubectl apply -f https://raw.githubusercontent.com/open-policy-agent/gatekeeper/master/deploy/gatekeeper.yaml
      
    2. Fügen Sie das Label control-plane zu kube-system hinzu.Add control-plane label to kube-system. Dieses Label schließt die Überwachung von kube-system-Pods und -Diensten durch Gatekeeper und das Azure Policy-Add-On aus.This label excludes the auditing of kube-system pods and services by Gatekeeper and the Azure Policy Add-on.

      kubectl label namespaces kube-system control-plane=controller-manager
      
    3. Synchronisieren Sie Kubernetes-Daten (Namespace, Pod, Eingang, Dienst) mit OPA.Sync Kubernetes data (Namespace, Pod, Ingress, Service) with OPA.

      kubectl apply -f https://raw.githubusercontent.com/Azure/azure-policy/master/built-in-references/Kubernetes/gatekeeper-opa-sync.yaml
      

      Weitere Informationen finden Sie unter OPA – Replizieren von Daten.For more information, see OPA - Replicating data.

    4. Fügen Sie Helm das Azure Policy-Repository hinzu.Add the Azure Policy repo to Helm.

      helm repo add azure-policy https://raw.githubusercontent.com/Azure/azure-policy/master/extensions/policy-addon-kubernetes/helm-charts
      

      Weitere Informationen finden Sie in der Schnellstartanleitung zum Helm-Diagramm.For more information, see Helm Chart - Quickstart Guide.

    5. Installieren Sie das Add-On mit einem Helm-Diagramm.Install the add-on with a Helm Chart. Ersetzen Sie <subscriptionId> durch Ihre Abonnement-ID und <aks engine cluster resource group> durch die Ressourcengruppe, in der sich der selbstverwaltete Kubernetes-Cluster der AKS-Engine befindet.Replace <subscriptionId> with your subscription ID and <aks engine cluster resource group> with the resource group the AKS Engine self-managed Kubernetes cluster is in.

      helm install azure-policy/azure-policy-addon-aks-engine --name azure-policy-addon --set azurepolicy.env.resourceid="/subscriptions/<subscriptionId>/resourceGroups/<aks engine cluster resource group>"
      

      Weitere Informationen dazu, was mit dem Helm-Diagramm des Add-Ons installiert wird, finden Sie in der Definition des Helm-Diagramms für das Azure Policy Add-On auf GitHub.For more information about what the add-on Helm Chart installs, see the Azure Policy Add-on Helm Chart definition on GitHub.

      Hinweis

      Aufgrund der Beziehung zwischen Azure Policy Add-On und Ressourcengruppen-ID unterstützt Azure Policy nur einen AKS-Engine-Cluster für jede Ressourcengruppe.Because of the relationship between Azure Policy Add-on and the resource group id, Azure Policy supports only one AKS Engine cluster for each resource group.

Führen Sie den folgenden Befehl aus, um zu überprüfen, ob die Installation des Add-Ons erfolgreich war und der azure-policy-Pod ausgeführt wird:To validate that the add-on installation was successful and that the azure-policy pod is running, run the following command:

kubectl get pods -n kube-system

Häufigkeit der Prüfung und BerichterstellungValidation and reporting frequency

Das Add-On prüft alle fünf Minuten mit Azure Policy, ob sich die Richtlinienzuweisungen geändert haben.The add-on checks in with Azure Policy for changes in policy assignments every 5 minutes. Während dieses Aktualisierungszyklus nimmt das Add-On eine Prüfung auf Änderungen vor.During this refresh cycle, the add-on checks for changes. Diese Änderungen lösen das Erstellen, Aktualisieren oder Löschen der Einschränkungsvorlagen und Einschränkungen aus.These changes trigger creates, updates, or deletes of the constraint templates and constraints.

Hinweis

Obwohl ein Clusteradministrator berechtigt sein kann, Änderungen an Einschränkungsvorlagen und Einschränkungen vorzunehmen, wird es nicht empfohlen oder unterstützt, Einschränkungsvorlagen oder Einschränkungen zu ändern, die von Azure Policy erstellt wurden.While a cluster admin may have permission to make changes to constraint templates and constraints, it's not recommended or supported to make changes to constraint templates or constraints created by Azure Policy. Alle manuellen Änderungen gehen während des Aktualisierungszyklus verloren.Any manual changes made are lost during the refresh cycle.

Das Add-On fordert alle fünf Minuten einen vollständigen Scan des Clusters an.Every 5 minutes, the add-on calls for a full scan of the cluster. 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.After gathering details of the full scan and any real-time evaluations by Gatekeeper of attempted changes to the cluster, the add-on reports the results back to Azure Policy for inclusion in compliance details like any Azure Policy assignment. Während des Prüfzyklus werden nur Ergebnisse für aktive Richtlinienzuweisungen zurückgegeben.Only results for active policy assignments are returned during the audit cycle. Prüfungsergebnisse können auch als Verstöße angezeigt werden, die im Statusfeld der fehlerhaften Einschränkung aufgeführt sind.Audit results can also be seen as violations listed in the status field of the failed constraint.

RichtliniensprachePolicy language

Die Azure Policy-Sprachstruktur zum Verwalten der AKS-Engine folgt derjenigen der bestehenden Richtlinien.The Azure Policy language structure for managing AKS Engine follows that of existing policies. Die Auswirkung EnforceOPAConstraint wird verwendet, um Ihre AKS-Engine-Cluster zu verwalten, und er übernimmt details-Eigenschaften, die für die Arbeit mit OPA Constraint Framework und Gatekeeper v3 spezifisch sind.The effect EnforceOPAConstraint is used to manage your AKS Engine clusters and takes details properties specific to working with OPA Constraint Framework and Gatekeeper v3. Details und Beispiele finden Sie unter der Auswirkung EnforceOPAConstraint.For details and examples, see the EnforceOPAConstraint effect.

Als Teil der Eigenschaften details.constraintTemplate und details.constraint in der Richtliniendefinition übergibt Azure Policy die URIs dieser CustomResourceDefinitions (CRD) an das Add-On.As part of the details.constraintTemplate and details.constraint properties in the policy definition, Azure Policy passes the URIs of these CustomResourceDefinitions (CRD) to the add-on. Rego ist die Sprache, die von OPA und Gatekeeper unterstützt wird, um eine Anforderung an den Kubernetes-Cluster zu validieren.Rego is the language that OPA and Gatekeeper support to validate a request to the Kubernetes cluster. 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.By supporting an existing standard for Kubernetes management, Azure Policy makes it possible to reuse existing rules and pair them with Azure Policy for a unified cloud compliance reporting experience. Weitere Informationen finden Sie unter Was ist Rego?For more information, see What is Rego?.

Integrierte RichtlinienBuilt-in policies

Um die integrierten Richtlinien für die Verwaltung Ihres AKS-Engine-Clusters über das Azure-Portal zu finden, führen Sie die folgenden Schritte aus:To find the built-in policies for managing your AKS Engine cluster using the Azure portal, follow these steps:

  1. Starten Sie den Azure Policy-Dienst im Azure-Portal.Start the Azure Policy service in the Azure portal. Wählen Sie Alle Dienste im linken Bereich aus, suchen Sie dann nach der Option Richtlinie und wählen Sie sie aus.Select All services in the left pane and then search for and select Policy.

  2. Wählen Sie im linken Bereich der Seite „Azure Policy“ die Option Definitionen aus.In the left pane of the Azure Policy page, select Definitions.

  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.From the Category drop-down list box, use Select all to clear the filter and then select Kubernetes.

  4. Wählen Sie die Richtliniendefinition und dann die Schaltfläche Zuweisen aus.Select the policy definition, then select the Assign button.

Hinweis

Bei der Zuweisung der Azure-Richtlinie für die AKS-Engine-Definition muss der Bereich die Ressourcengruppe des AKS-Engine-Clusters sein.When assigning the Azure Policy for AKS Engine definition, the Scope must be the resource group of the AKS Engine cluster.

Verwenden Sie alternativ die Schnellstartanleitung Zuweisen einer Richtlinie – Portal, um eine AKS-Engine-Richtlinie zu finden und zuzuweisen.Alternately, use the Assign a policy - Portal quickstart to find and assign an AKS Engine policy. Suchen Sie nach einer AKS-Engine-Richtliniendefinition anstelle des Musters „audit vms“.Search for an AKS Engine policy definition instead of the sample 'audit vms'.

Wichtig

Integrierte Richtlinien in der Kategorie Kubernetes können nur mit der AKS-Engine verwendet werden.Built-in policies in category Kubernetes are only for use with AKS Engine.

ProtokollierungLogging

Protokolle des Azure Policy-Add-OnsAzure Policy Add-on logs

Als Kubernetes-Controller/-Container erstellt das Azure Policy-Add-On Protokolle im AKS-Engine-Cluster und sucht nach einer Kubernetes-Richtliniendefinition anstelle des Musters „audit vms“.As a Kubernetes controller/container, the Azure Policy Add-on keeps logs in the AKS Engine cluster.

Zum Anzeigen der Protokolle des Azure Policy-Add-Ons verwenden Sie kubectl:To view the Azure Policy Add-on logs, use kubectl:

# Get the Azure Policy Add-on pod name
kubectl -n kube-system get pods -l app=azure-policy --output=name

# Get the logs for the add-on
kubectl logs <Azure Policy Add-on pod name> -n kube-system

Gatekeeper-ProtokolleGatekeeper logs

Der Gatekeeper-Pod, gatekeeper-controller-manager-0, befindet sich normalerweise im Namespace gatekeeper-system oder kube-system, kann jedoch je nach Art der Bereitstellung auch in einem anderer Namespace enthalten sein.The Gatekeeper pod, gatekeeper-controller-manager-0, is usually in the gatekeeper-system or kube-system namespace, but can be in a different namespace depending on how it's deployed.

Zum Anzeigen der Gatekeeper-Protokolle verwenden Sie kubectl:To view the Gatekeeper logs, use kubectl:

NAMESPACE=<namespace of gatekeeper>
kubectl logs gatekeeper-controller-manager-0 -n $NAMESPACE

Weitere Informationen finden Sie unter Debuggen von Gatekeeper in der OPA-Dokumentation.For more information, see Debugging Gatekeeper in the OPA documentation.

Entfernen des Add-OnsRemove the add-on

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:To remove the Azure Policy Add-on and Gatekeeper from your AKS Engine cluster, use the method that aligns with how the add-on was installed:

  • Bei Installation durch Festlegen der addons-Eigenschaft in der Clusterdefinition für die AKS-Engine:If installed by setting the addons property in the cluster definition for 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:Redeploy the cluster definition to AKS Engine after changing the addons property for azure-policy to false:

    "addons": [{
        "name": "azure-policy",
        "enabled": false
    }]
    
  • Bei Installation mit Helm-Diagrammen:If installed with Helm Charts:

    1. Entfernen Sie alte Einschränkungen.Remove old constraints

      Derzeit werden durch den Deinstallationsmechanismus nur das Gatekeeper-System entfernt. Weder Ressourcen vom Typ ConstraintTemplate, Constraint oder Config, die vom Benutzer erstellt wurden, noch die zugehörigen CRDs werden entfernt.Currently the uninstall mechanism only removes the Gatekeeper system, it doesn't remove any ConstraintTemplate, Constraint, or Config resources that have been created by the user, nor does it remove their accompanying CRDs.

      Beim Ausführen von Gatekeeper können unerwünschte Einschränkungen wie folgt entfernt werden:When Gatekeeper is running, it's possible to remove unwanted constraints by:

      • Löschen aller Instanzen der EinschränkungsressourceDeleting all instances of the constraint resource
      • Löschen der ConstraintTemplate-Ressource, wodurch automatisch die CRD bereinigt werden sollteDeleting the ConstraintTemplate resource, which should automatically clean up the CRD
      • Löschen der Config-Ressource, wodurch Finalizer für synchronisierte Ressourcen entfernt werdenDeleting the Config resource removes finalizers on synced resources
    2. Deinstallieren Sie das Azure Policy-Add-On.Uninstall Azure Policy Add-on

      helm del --purge azure-policy-addon
      
    3. Deinstallieren Sie Gatekeeper.Uninstall Gatekeeper

      kubectl delete -f https://raw.githubusercontent.com/open-policy-agent/gatekeeper/master/deploy/gatekeeper.yaml
      

Vom Azure Policy-Add-On gesammelte DiagnosedatenDiagnostic data collected by Azure Policy Add-on

Das Azure Policy-Add-On für Kubernetes sammelt begrenzte Clusterdiagnosedaten.The Azure Policy Add-on for Kubernetes collects limited cluster diagnostic data. Diese Diagnosedaten sind wichtige technische Daten in Bezug auf Software und Leistung.This diagnostic data is vital technical data related to software and performance. Sie werden für folgende Zwecke verwendet:It's used in the following ways:

  • Azure Policy Add-On auf dem neuesten Stand haltenKeep Azure Policy Add-on up-to-date
  • Azure Policy Add-On sicher, zuverlässig und leistungsfähig haltenKeep Azure Policy Add-on secure, reliable, performant
  • Azure Policy Add-On verbessern – durch die aggregierte Analyse der Verwendung des Add-OnsImprove Azure Policy Add-on - through the aggregate analysis of the use of the add-on

Die vom Add-On gesammelten Informationen sind keine persönlichen Daten.The information collected by the add-on isn't personal data. Die folgenden Details werden derzeit gesammelt:The following details are currently collected:

  • Version des Azure Policy-Add-On-AgentsAzure Policy Add-on agent version
  • ClustertypCluster type
  • ClusterregionCluster region
  • ClusterressourcengruppeCluster resource group
  • Clusterressourcen-IDCluster resource ID
  • Clusterabonnement-IDCluster subscription ID
  • Clusterbetriebssystem (Beispiel: Linux)Cluster OS (Example: Linux)
  • Ort für den Cluster (Beispiel: Seattle)Cluster city (Example: Seattle)
  • Bundesland oder Kanton für den Cluster (Beispiel: Washington)Cluster state or province (Example: Washington)
  • Land oder Region für den Cluster (Beispiel: USA)Cluster country or region (Example: United States)
  • Ausnahmen/Fehler, die während der Installation des Agents bei der Richtlinienauswertung durch das Azure Policy Add-On festgestellt werdenExceptions/errors encountered by Azure Policy Add-on during agent installation on policy evaluation
  • Anzahl von Gatekeeper-Richtlinien, die nicht vom Azure Policy Add-On installiert werdenNumber of Gatekeeper policies not installed by Azure Policy Add-on

Nächste SchritteNext steps