Sicherheitskonzepte für Anwendungen und Cluster in Azure Kubernetes Service (AKS)Security concepts for applications and clusters in Azure Kubernetes Service (AKS)

Damit Ihre Kundendaten während der Ausführung von Anwendungsworkloads in Azure Kubernetes Service (AKS) geschützt werden, kommt der Sicherheit des Clusters eine besondere Bedeutung zu.To protect your customer data as you run application workloads in Azure Kubernetes Service (AKS), the security of your cluster is a key consideration. Kubernetes enthält Sicherheitskomponenten wie Netzwerkrichtlinien und Geheimnisse.Kubernetes includes security components such as network policies and Secrets. Durch Azure kommen Komponenten wie Netzwerksicherheitsgruppen und orchestrierte Clusterupgrades hinzu.Azure then adds in components such as network security groups and orchestrated cluster upgrades. Diese Sicherheitskomponenten werden dann so miteinander kombiniert, dass auf dem AKS-Cluster jederzeit die aktuellen Betriebssystem-Sicherheitsupdates und Kubernetes-Versionen ausgeführt werden, der Datenverkehr zwischen den Pods geschützt und der Zugriff auf sensible Anmeldeinformationen gesichert ist.These security components are combined to keep your AKS cluster running the latest OS security updates and Kubernetes releases, and with secure pod traffic and access to sensitive credentials.

In diesem Artikel werden die wichtigsten Konzepte vorgestellt, mit denen Sie Anwendungen in AKS schützen können:This article introduces the core concepts that secure your applications in AKS:

Sicherheit der MasterkomponentenMaster security

In AKS sind die Kubernetes-Masterkomponenten Bestandteil des verwalteten Diensts, der von Microsoft bereitgestellt wird.In AKS, the Kubernetes master components are part of the managed service provided by Microsoft. Jeder AKS-Cluster verfügt über seinen eigenen dedizierten Kubernetes-Master mit einem einzelnen Mandanten, um API-Server, Scheduler usw. bereitzustellen. Dieser Master wird von Microsoft verwaltet und gepflegt.Each AKS cluster has its own single-tenanted, dedicated Kubernetes master to provide the API Server, Scheduler, etc. This master is managed and maintained by Microsoft.

Standardmäßig verwendet der Kubernetes-API-Server eine öffentliche IP-Adresse und einen vollqualifizierten Domänennamen (FQDN).By default, the Kubernetes API server uses a public IP address and a fully qualified domain name (FQDN). Sie können den Zugriff auf den API-Serverendpunkt mithilfe von autorisierten IP-Adressbereichen einschränken.You can limit access to the API server endpoint using authorized IP ranges. Alternativ können Sie einen vollständig privaten Cluster erstellen, um den Zugriff des API-Servers auf Ihr virtuelles Netzwerk einzuschränken.You can also create a fully private cluster to limit API server access to your virtual network.

Mithilfe der rollenbasierten Zugriffssteuerung (RBAC) von Kubernetes und Azure Active Directory können Sie den Zugriff auf den API-Server steuern.You can control access to the API server using Kubernetes role-based access control (RBAC) and Azure Active Directory. Weitere Informationen finden Sie unter Azure AD-Integration mit AKS.For more information, see Azure AD integration with AKS.

KnotensicherheitNode security

AKS-Knoten sind virtuelle Azure-Computer, die von Ihnen verwaltet und gepflegt werden.AKS nodes are Azure virtual machines that you manage and maintain. Linux-Knoten führen eine optimierte Ubuntu-Distribution mit der Moby-Containerruntime aus.Linux nodes run an optimized Ubuntu distribution using the Moby container runtime. Windows Server-Knoten führen eine optimierte Version von Windows Server 2019 aus. Auch sie verwenden die Moby-Containerruntime.Windows Server nodes run an optimized Windows Server 2019 release and also use the Moby container runtime. Wenn ein AKS-Cluster erstellt oder zentral hochskaliert wird, werden die Knoten automatisch mit den aktuellen Betriebssystem-Sicherheitsupdates und -konfigurationen bereitgestellt.When an AKS cluster is created or scaled up, the nodes are automatically deployed with the latest OS security updates and configurations.

Die Azure-Plattform wendet über Nacht automatisch Betriebssystem-Sicherheitspatches auf die Linux-Knoten an.The Azure platform automatically applies OS security patches to Linux nodes on a nightly basis. Wenn ein Betriebssystem-Sicherheitsupdate für Linux einen Neustart des Hosts erfordert, wird dieser Neustart nicht automatisch ausgeführt.If a Linux OS security update requires a host reboot, that reboot is not automatically performed. Sie können die Linux-Knoten manuell neu starten. Eine andere gängige Methode ist die Verwendung von kured, einem Open-Source-Neustartdaemon für Kubernetes.You can manually reboot the Linux nodes, or a common approach is to use Kured, an open-source reboot daemon for Kubernetes. Kured wird als ein DaemonSet ausgeführt und überwacht jeden Knoten auf das Vorhandensein einer Datei, die angibt, dass ein Neustart erforderlich ist.Kured runs as a DaemonSet and monitors each node for the presence of a file indicating that a reboot is required. Neustarts werden clusterübergreifend verwaltet, wobei derselbe Vorgang des Absperrens und Ausgleichens wie bei einem Clusterupgrade angewendet wird.Reboots are managed across the cluster using the same cordon and drain process as a cluster upgrade.

Für Windows Server-Knoten werden die neuesten Updates von Windows Update nicht automatisch ausgeführt und angewendet.For Windows Server nodes, Windows Update does not automatically run and apply the latest updates. Sie sollten in regelmäßigen Abständen ein Upgrade für die Windows Server-Knotenpools in Ihrem AKS-Cluster durchführen, passend zum Windows Update-Freigabezyklus und Ihrem eigenen Validierungsprozess.On a regular schedule around the Windows Update release cycle and your own validation process, you should perform an upgrade on the Windows Server node pool(s) in your AKS cluster. Während dieses Upgrades werden Knoten erstellt, die das neueste Windows Server-Image und die neuesten Windows Server-Patches ausführen und die älteren Knoten entfernen.This upgrade process creates nodes that run the latest Windows Server image and patches, then removes the older nodes. Weitere Informationen zu diesem Prozess finden Sie unter Durchführen eines Upgrades für einen Knotenpool in AKS.For more information on this process, see Upgrade a node pool in AKS.

Knoten werden in einem Subnetz des privaten virtuellen Netzwerks ohne öffentliche IP-Adresse bereitgestellt.Nodes are deployed into a private virtual network subnet, with no public IP addresses assigned. Zur Problembehandlung und Verwaltung ist SSH standardmäßig aktiviert.For troubleshooting and management purposes, SSH is enabled by default. Dieser SSH-Zugriff ist nur über die interne IP-Adresse verfügbar.This SSH access is only available using the internal IP address.

Die Knoten verwenden Azure Managed Disks, um Speicher bereitzustellen.To provide storage, the nodes use Azure Managed Disks. Bei den meisten VM-Knotengrößen handelt es sich um Premium-Datenträger, die von Hochleistungs-SSDs unterstützt werden.For most VM node sizes, these are Premium disks backed by high-performance SSDs. Die auf verwalteten Datenträgern gespeicherten Daten werden im Ruhezustand auf der Azure-Plattform automatisch verschlüsselt.The data stored on managed disks is automatically encrypted at rest within the Azure platform. Zur Verbesserung der Redundanz werden diese Datenträger außerdem sicher im Azure-Rechenzentrum repliziert.To improve redundancy, these disks are also securely replicated within the Azure datacenter.

Kubernetes-Umgebungen, ob in AKS oder an anderer Stelle, sind derzeit nicht völlig sicher vor feindlicher Verwendung mit mehreren Mandanten.Kubernetes environments, in AKS or elsewhere, currently aren't completely safe for hostile multi-tenant usage. Zusätzliche Sicherheitsfeatures wie Podsicherheitsrichtlinien oder die differenziertere rollenbasierte Zugriffssteuerung (Role-Based Access Control, RBAC) für Knoten erschweren Angriffe.Additional security features like Pod Security Policies, or more fine-grained role-based access control (RBAC) for nodes, make exploits more difficult. Für echte Sicherheit bei der Ausführung feindlicher Workloads mit mehreren Mandanten ist jedoch ein Hypervisor die einzige Sicherheitsstufe, der Sie vertrauen sollten.However, for true security when running hostile multi-tenant workloads, a hypervisor is the only level of security that you should trust. Die Sicherheitsdomäne für Kubernetes wird zum gesamten Cluster und nicht zu einem einzelnen Knoten.The security domain for Kubernetes becomes the entire cluster, not an individual node. Für diese Art von feindlichen Workloads mit mehreren Mandanten sollten Sie physisch isolierte Cluster verwenden.For these types of hostile multi-tenant workloads, you should use physically isolated clusters. Weitere Informationen zu Möglichkeiten zur Isolierung von Workloads finden Sie unter Bewährte Methoden für die Isolierung der Cluster in AKS.For more information on ways to isolate workloads, see Best practices for cluster isolation in AKS.

ComputeisolationCompute isolation

Bestimmte Workloads erfordern möglicherweise aufgrund von Konformitäts- oder gesetzlichen Anforderungen einen hohen Grad an Isolation von anderen Kundenworkloads.Certain workloads may require a high degree of isolation from other customer workloads due to compliance or regulatory requirements. Für diese Workloads bietet Azure isolierte virtuelle Computer, die als Agentknoten in einem AKS-Cluster verwendet werden können.For these workloads, Azure provides isolated virtual machines, which can be used as the agent nodes in an AKS cluster. Diese isolierten VMs sind für einen bestimmten Hardwaretyp isoliert und für einen einzelnen Kunden bestimmt.These isolated virtual machines are isolated to a specific hardware type and dedicated to a single customer.

Wenn Sie diese isolierten virtuellen Computer mit einem AKS-Cluster verwenden möchten, wählen Sie eine der hier aufgeführten Größen für isolierte virtuelle Computer als Knotengröße beim Erstellen eines AKS-Clusters oder Hinzufügen eines Knotenpools aus.To use these isolated virtual machines with an AKS cluster, select one of the isolated virtual machines sizes listed here as the Node size when creating an AKS cluster or adding a node pool.

ClusterupgradesCluster upgrades

Aus Sicherheits- und Compliancegründen (oder zur Verwendung der neuesten Features) stellt Azure Tools bereit, um das Upgrade eines AKS-Clusters und seiner Komponenten zu orchestrieren.For security and compliance, or to use the latest features, Azure provides tools to orchestrate the upgrade of an AKS cluster and components. Diese Upgradeorchestrierung umfasst sowohl die Kubernetes-Master- als auch die Agent-Komponenten.This upgrade orchestration includes both the Kubernetes master and agent components. Sie können eine Liste der verfügbaren Kubernetes-Versionen für Ihren AKS-Cluster anzeigen.You can view a list of available Kubernetes versions for your AKS cluster. Um den Upgradevorgang zu starten, geben Sie eine dieser verfügbaren Versionen an.To start the upgrade process, you specify one of these available versions. Azure verwendet dann für jeden AKS-Knoten den sicheren Vorgang des Absperrens und Ausgleichens und führt das Upgrade aus.Azure then safely cordons and drains each AKS node and performs the upgrade.

Absperren und AusgleichenCordon and drain

Während des Upgrades werden AKS-Knoten einzeln vom Cluster abgesperrt, damit auf ihnen keine neuen Pods geplant werden.During the upgrade process, AKS nodes are individually cordoned from the cluster so new pods aren't scheduled on them. Die Knoten werden dann wie folgt ausgeglichenund aktualisiert:The nodes are then drained and upgraded as follows:

  • Ein neuer Knoten wird im Knotenpool bereitgestellt.A new node is deployed into the node pool. Dieser Knoten führt das neueste Betriebssystemimage und die neuesten Patches aus.This node runs the latest OS image and patches.
  • Einer der bereits vorhandenen Knoten wird für das Upgrade identifiziert.One of the existing nodes is identified for upgrade. Pods auf diesem Knoten werden ordnungsgemäß beendet und auf den anderen Knoten im Knotenpool geplant.Pods on this node are gracefully terminated and scheduled on the other nodes in the node pool.
  • Der vorhandene Knoten wird aus dem AKS-Cluster gelöscht.This existing node is deleted from the AKS cluster.
  • Der nächste Knoten im Cluster wird mit der gleichen Methode abgesperrt und ausgeglichen, bis alle Knoten als Teil des Upgradeprozesses erfolgreich ersetzt wurden.The next node in the cluster is cordoned and drained using the same process until all nodes are successfully replaced as part of the upgrade process.

Weitere Informationen finden Sie unter Aktualisieren eines AKS-Clusters.For more information, see Upgrade an AKS cluster.

NetzwerksicherheitNetwork security

Für Konnektivität und Sicherheit bei lokalen Netzwerken können Sie Ihren AKS-Cluster in Subnetzen eines vorhandenen virtuellen Azure-Netzwerks bereitstellen.For connectivity and security with on-premises networks, you can deploy your AKS cluster into existing Azure virtual network subnets. Diese virtuellen Netzwerke können über ein Azure-Site-to-Site-VPN oder eine Expressroute-Verbindung zurück zu Ihrem lokalen Netzwerk verfügen.These virtual networks may have an Azure Site-to-Site VPN or Express Route connection back to your on-premises network. Kubernetes-Eingangscontroller können mit privaten, internen IP-Adressen definiert werden, damit die Dienste nur über diese interne Netzwerkverbindung zugänglich sind.Kubernetes ingress controllers can be defined with private, internal IP addresses so services are only accessible over this internal network connection.

Azure-NetzwerksicherheitsgruppenAzure network security groups

Zum Filtern des Datenverkehrsflusses in virtuellen Netzwerken verwendet Azure Netzwerksicherheitsgruppen-Regeln.To filter the flow of traffic in virtual networks, Azure uses network security group rules. Diese Regeln bestimmen die Quell- und Ziel-IP-Adressbereiche, Ports und Protokolle, die für den Zugriff auf Ressourcen zugelassen oder abgelehnt werden.These rules define the source and destination IP ranges, ports, and protocols that are allowed or denied access to resources. Standardregeln werden erstellt, um TLS-Datenverkehr zum Kubernetes-API-Server zu ermöglichen.Default rules are created to allow TLS traffic to the Kubernetes API server. Wenn Sie Dienste mit Lastenausgleich, Portzuordnungen oder Eingangsrouten erstellen, ändert AKS automatisch die Netzwerksicherheitsgruppe, damit der Datenverkehr entsprechend fließen kann.As you create services with load balancers, port mappings, or ingress routes, AKS automatically modifies the network security group for traffic to flow appropriately.

Nehmen Sie in Fällen, in denen Sie Ihr eigenes Subnetz für Ihren AKS-Cluster bereitstellen und den Datenverkehrsfluss ändern möchten, keine Änderungen an der von AKS verwalteten Netzwerksicherheitsgruppe auf Subnetzebene vor.In cases where you provide your own subnet for your AKS cluster and you wish to modify the flow of traffic, do not modify the subnet-level network security group managed by AKS. Sie können zusätzliche Netzwerksicherheitsgruppen auf Subnetzebene erstellen, um den Datenverkehrsfluss zu ändern, solange sie nicht den für die Verwaltung des Clusters erforderlichen Datenverkehr beeinträchtigen, z. B. den Zugriff auf das Lastenausgleichsmodul, die Kommunikation mit der Steuerungsebene und den ausgehenden Datenverkehr.You may create additional subnet-level network security groups to modify the flow of traffic as long as they do not interfere with traffic needed for managing the cluster, such as load balancer access, communication with the control plane, and egress.

Kubernetes-NetzwerkrichtlinieKubernetes network policy

Zur Einschränkung von Netzwerkdatenverkehr zwischen Pods in Ihrem Cluster bietet AKS Unterstützung für Kubernetes-Netzwerkrichtlinien.To limit network traffic between pods in your cluster, AKS offers support for Kubernetes network policies. Mit Netzwerkrichtlinien können Sie den Zugriff auf bestimmte Netzwerkpfade im Cluster basierend auf Namespaces und Bezeichnungsselektoren zulassen oder verweigern.With network policies, you can choose to allow or deny specific network paths within the cluster based on namespaces and label selectors.

Kubernetes-GeheimnisseKubernetes Secrets

Ein Kubernetes-Geheimnis wird verwendet, um sensible Daten wie Anmeldeinformationen oder Schlüssel in Pods einzufügen.A Kubernetes Secret is used to inject sensitive data into pods, such as access credentials or keys. Zuerst erstellen Sie ein Geheimnis mit der Kubernetes-API.You first create a Secret using the Kubernetes API. Wenn Sie Ihren Pod oder die Bereitstellung definieren, kann ein bestimmtes Geheimnis angefordert werden.When you define your pod or deployment, a specific Secret can be requested. Geheimnisse werden nur für Knoten bereitgestellt, die über einen eingeplanten Pod verfügen, der es benötigt, und das Geheimnis wird in tmpfs gespeichert, nicht auf den Datenträger geschrieben.Secrets are only provided to nodes that have a scheduled pod that requires it, and the Secret is stored in tmpfs, not written to disk. Wenn der letzte Pod auf einem Knoten gelöscht wird, der ein Geheimnis benötigt, wird das Geheimnis aus dem Verzeichnis „tmpfs“ des Knotens gelöscht.When the last pod on a node that requires a Secret is deleted, the Secret is deleted from the node's tmpfs. Geheimnisse werden in einem bestimmten Namespace gespeichert, und nur Pods im gleichen Namespace können darauf zugreifen.Secrets are stored within a given namespace and can only be accessed by pods within the same namespace.

Die Verwendung von Geheimnissen reduziert die vertraulichen Informationen, die im YAML-Manifest für den Pod oder den Dienst definiert werden.The use of Secrets reduces the sensitive information that is defined in the pod or service YAML manifest. Stattdessen fordern Sie im Rahmen Ihres YAML-Manifests das im Kubernetes-API-Server gespeicherte Geheimnis an.Instead, you request the Secret stored in Kubernetes API Server as part of your YAML manifest. Mit diesem Ansatz erhält nur der spezielle Pod Zugriff auf das Geheimnis.This approach only provides the specific pod access to the Secret. Hinweis: Die unformatierten geheimen Manifestdateien enthalten die geheimen Daten im Base64-Format (weitere Einzelheiten finden Sie in der offiziellen Dokumentation).Please note: the raw secret manifest files contains the secret data in base64 format (see the official documentation for more details). Aus diesem Grund sollte diese Datei wie vertrauliche Daten behandelt und nie in die Quellcodeverwaltung committet werden.Therefore, this file should be treated as sensitive information, and never committed to source control.

Kubernetes-Geheimnisse werden in „etcd“ gespeichert, einem verteilten Schlüssel-Wert-Speicher.Kubernetes secrets are stored in etcd, a distributed key-value store. Der etcd-Speicher wird vollständig von AKS verwaltet, und Daten werden im Ruhezustand innerhalb der Azure Platform verschlüsselt.Etcd store is fully managed by AKS and data is encrypted at rest within the Azure platform.

Nächste SchritteNext steps

Die ersten Schritte zum Sichern Ihrer AKS-Cluster sind unter Aktualisieren eines AKS-Clusters beschrieben.To get started with securing your AKS clusters, see Upgrade an AKS cluster.

Entsprechende bewährte Methoden finden Sie unter Best Practices für Clustersicherheit und Upgrades in Azure Kubernetes Service (AKS) und Best Practices für Podsicherheit in Azure Kubernetes Service (AKS).For associated best practices, see Best practices for cluster security and upgrades in AKS and Best practices for pod security in AKS.

Weitere Informationen zu den wesentlichen Konzepten von Kubernetes und AKS finden Sie in den folgenden Artikeln:For additional information on core Kubernetes and AKS concepts, see the following articles: