Sicherheitsüberlegungen für EKS-Funktionen - Amazon EKS

Unterstützung für die Verbesserung dieser Seite beitragen

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Um zu diesem Benutzerhandbuch beizutragen, wählen Sie den GitHub Link Diese Seite bearbeiten auf, der sich im rechten Bereich jeder Seite befindet.

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Sicherheitsüberlegungen für EKS-Funktionen

In diesem Thema werden wichtige Sicherheitsaspekte für EKS-Funktionen behandelt, darunter die IAM-Rollenkonfiguration, Kubernetes-Berechtigungen und Architekturmuster für Bereitstellungen mit mehreren Clustern und kontenübergreifendes Ressourcenmanagement. AWS

EKS-Funktionen verwenden eine Kombination aus IAM-Rollen, EKS-Zugriffseinträgen und Kubernetes RBAC, um sicheren Zugriff auf AWS Dienste, Cluster-Kubernetes-Ressourcen und Integrationen mit Secrets Manager und anderen Diensten zu ermöglichen. AWS CodeConnections AWS AWS

Fähigkeit: IAM-Rolle

Wenn Sie eine Funktion erstellen, geben Sie eine IAM-Fähigkeitsrolle an, die EKS verwendet, um Aktionen in Ihrem Namen auszuführen. Diese Rolle muss:

Es hat sich bewährt, den Umfang der für Ihren speziellen Anwendungsfall erforderlichen Rechte zu berücksichtigen und nur die Berechtigungen zu gewähren, die für Ihre Anforderungen erforderlich sind. Wenn Sie beispielsweise die EKS-Funktion für Kube Resource Orchestrator verwenden, sind möglicherweise keine IAM-Berechtigungen erforderlich, während Sie bei Verwendung der EKS-Funktion für AWS Controller für Kubernetes Vollzugriff auf einen oder mehrere Dienste gewähren können. AWS

Wichtig

In einigen Anwendungsfällen kann die Verwendung umfassender Administratorrechte gerechtfertigt sein. Folgen Sie jedoch dem Prinzip der geringsten Rechte, indem Sie nur die für Ihren speziellen Anwendungsfall erforderlichen IAM-Berechtigungen gewähren ARNs und den Zugriff auf bestimmte Ressourcen mithilfe von Bedingungsschlüsseln einschränken, anstatt Platzhalterberechtigungen zu verwenden.

Ausführliche Informationen zum Erstellen und Konfigurieren von Capability-IAM-Rollen finden Sie unter. IAM-Rolle für Amazon EKS-Funktionen

EKS-Zugriffseinträge

Wenn Sie eine Funktion mit einer IAM-Rolle erstellen, erstellt Amazon EKS automatisch einen Zugriffseintrag für diese Rolle in Ihrem Cluster. Dieser Zugriffseintrag gewährt der Fähigkeit grundlegende Funktionsberechtigungen für Kubernetes.

Anmerkung

Zugriffseinträge werden für den Cluster erstellt, in dem die Funktion erstellt wurde. Für Argo-CD-Bereitstellungen auf Remote-Clustern müssen Sie Zugriffseinträge auf diesen Clustern mit den entsprechenden Berechtigungen für die Argo-CD-Funktion erstellen, um Anwendungen bereitzustellen und zu verwalten.

Der Zugriffseintrag umfasst:

  • Die IAM-Rolle ARN als Principal

  • Funktionsspezifische Zugriffsrichtlinien, die grundlegende Kubernetes-Berechtigungen gewähren

  • Angemessener Geltungsbereich (clusterweit oder namespace-bezogen) je nach Funktionstyp

Anmerkung

Für Argo CD werden namespace-bezogene Berechtigungen für den in der Capability-Konfiguration angegebenen Namespace gewährt (standardmäßig). argocd

Standardrichtlinien für den Zugriff nach Fähigkeit

Jeder Funktionstyp gewährt der Funktionsrolle die erforderlichen Berechtigungen, wobei unterschiedliche Standardzugriffsrichtlinien wie folgt festgelegt werden:

kro
  • arn:aws:eks::aws:cluster-access-policy/AmazonEKSKROPolicy(im Clusterbereich)

    Erteilt Berechtigungen zum Überwachen, Verwalten ResourceGraphDefinitions und Erstellen von Instanzen benutzerdefinierter Ressourcen, die von definiert sind. RGDs

ZURÜCK
  • arn:aws:eks::aws:cluster-access-policy/AmazonEKSACKPolicy(im Clusterbereich)

    Erteilt Berechtigungen zum Erstellen, Lesen, Aktualisieren und Löschen von benutzerdefinierten ACK-Ressourcen in allen Namespaces.

Argo-CD
  • arn:aws:eks::aws:cluster-access-policy/AmazonEKSArgoCDClusterPolicy(im Clusterbereich)

    Gewährt Argo CD Berechtigungen auf Clusterebene, um Ressourcen zu ermitteln und Objekte im Clusterbereich zu verwalten.

  • arn:aws:eks::aws:cluster-access-policy/AmazonEKSArgoCDPolicy(mit Namespace-Bereich)

    Gewährt Argo CD Berechtigungen auf Namespace-Ebene zur Bereitstellung und Verwaltung von Anwendungen. Gültig für den in der Capability-Konfiguration angegebenen Namespace (standardmäßig). argocd

Weitere Informationen finden Sie unterBerechtigungen von Zugriffsrichtlinien überprüfen.

Zusätzliche Kubernetes-Berechtigungen

Für einige Funktionen sind möglicherweise zusätzliche Kubernetes-Berechtigungen erforderlich, die über die standardmäßigen Zugriffsrichtlinien hinausgehen. Sie können diese Berechtigungen auf folgende Weise gewähren:

  • Richtlinien für den Zugriff: Ordnen Sie dem Zugriffseintrag zusätzliche verwaltete Richtlinien zu

  • Kubernetes RBAC: Erstellen Role oder ClusterRole Bindungen für den Kubernetes-Benutzer der Funktion

Geheime ACK-Leserberechtigungen

Einige ACK-Controller müssen Kubernetes-Geheimnisse lesen, um sensible Daten wie Datenbankpasswörter abzurufen. Die folgenden ACK-Controller benötigen geheimen Lesezugriff:

  • acm, acmpca, documentdb, memorydb, mq, rds, secretsmanager

So gewähren Sie geheime Leseberechtigungen:

  1. Ordnen Sie die arn:aws:eks::aws:cluster-access-policy/AmazonEKSSecretReaderPolicy Zugriffsrichtlinie dem Zugriffseintrag der Funktion zu

  2. Richten Sie die Richtlinie auf bestimmte Namespaces ein, in denen ACK-Ressourcen auf geheime Informationen verweisen oder clusterweiten Zugriff gewähren

Wichtig

Geheime Leseberechtigungen sind auf die Namespaces beschränkt, die Sie bei der Zuordnung der Zugriffsrichtlinie angeben. Auf diese Weise können Sie einschränken, auf welche Geheimnisse die Fähigkeit zugreifen kann.

kro, beliebige Ressourcenberechtigungen.

kro benötigt Berechtigungen zum Erstellen und Verwalten der in Ihrem definierten Ressourcen. ResourceGraphDefinitions Standardmäßig kann Kro nur sich selbst überwachen und verwalten RGDs .

So gewähren Sie Kro-Berechtigungen zum Erstellen von Ressourcen:

Option 1: Zugriffsrichtlinien

Ordnen Sie vordefinierte Zugriffsrichtlinien wie AmazonEKSAdminPolicy oder AmazonEKSEditPolicy dem Zugriffseintrag der Funktion zu.

Option 2: Kubernetes RBAC

Erstellen Sie eineClusterRoleBinding, die dem Kubernetes-Benutzer der Funktion die erforderlichen Berechtigungen gewährt:

apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: kro-cluster-admin subjects: - kind: User name: arn:aws:sts::111122223333:assumed-role/my-kro-role/kro apiGroup: rbac.authorization.k8s.io roleRef: kind: ClusterRole name: cluster-admin apiGroup: rbac.authorization.k8s.io
Anmerkung

Der Kubernetes-Benutzername für kro folgt dem Muster: arn:aws:sts::ACCOUNT_ID:assumed-role/ROLE_NAME/kro

Der Sitzungsname /kro wird automatisch von der EKS-Kro-Fähigkeit festgelegt.

Je nach Funktion sind IAM-Berechtigungen erforderlich

kro (Kube Resource Orchestrator)

Keine IAM-Berechtigungen erforderlich. Sie können eine Funktionsrolle ohne angehängte Richtlinien erstellen. kro benötigt nur Kubernetes-RBAC-Berechtigungen.

ACK (Controller für Kubernetes)AWS

Erfordert Berechtigungen zur Verwaltung der AWS Ressourcen, die ACK erstellt und verwaltet. Sie sollten die Berechtigungen auf bestimmte Dienste, Aktionen und Ressourcen auf der Grundlage Ihrer Anforderungen einschränken. Ausführliche Informationen zur Konfiguration von ACK-Berechtigungen, einschließlich bewährter Produktionsmethoden mit IAM-Rollenselektoren, finden Sie unter. ACK-Berechtigungen konfigurieren

Argo CD

Standardmäßig sind keine IAM-Berechtigungen erforderlich. Optionale Berechtigungen können erforderlich sein für:

  • AWS Secrets Manager: Wenn die Anmeldeinformationen für das Git-Repository in Secrets Manager gespeichert werden

  • AWS CodeConnections: Bei Verwendung CodeConnections für die Git-Repository-Authentifizierung

  • Amazon ECR: Wenn Sie Helm-Diagramme verwenden, die im OCI-Format in Amazon ECR gespeichert sind

Bewährte Methoden für die Gewährleistung der Sicherheit

IAM hat das geringste Privileg

Gewähren Sie Ihren Capability-Ressourcen nur die Berechtigungen, die für Ihren Anwendungsfall erforderlich sind. Dies bedeutet nicht, dass Sie Ihren Fähigkeiten bei Bedarf keine umfassenden Administratorberechtigungen gewähren können. In solchen Fällen sollten Sie den Zugriff auf diese Ressourcen angemessen regeln.

Fähigkeitsrollen:

  • ACK: Beschränken Sie die IAM-Berechtigungen nach Möglichkeit auf bestimmte AWS Dienste und Ressourcen, die Ihre Teams benötigen, je nach Anwendungsfall und Anforderungen

  • Argo CD: Beschränken Sie den Zugriff auf bestimmte Git-Repositorys und Kubernetes-Namespaces

  • kro: Erfordert eine Capability-Rolle für die Vertrauensrichtlinie, es sind jedoch keine IAM-Berechtigungen erforderlich (verwendet nur Cluster-RBAC)

Beispiel: Geben Sie statt "Resource": "*" dessen Muster für bestimmte Ressourcen oder Ressourcengruppen an.

"Resource": [ "arn:aws:s3:::my-app-*", "arn:aws:rds:us-west-2:111122223333:db:prod-*" ]

Verwenden Sie IAM-Bedingungsschlüssel, um den Zugriff weiter einzuschränken:

"Condition": { "StringEquals": { "aws:ResourceTag/Environment": "production" } }

Weitere Informationen zur IAM-Konfiguration finden Sie im Abschnitt mit den Überlegungen zu den einzelnen Funktionen.

Namespace-Isolierung für Argo-CD-Geheimnisse

Die verwaltete Argo-CD-Funktion hat Zugriff auf alle Kubernetes-Secrets innerhalb des konfigurierten Namespace (Standard:). argocd Um ein optimales Sicherheitsniveau aufrechtzuerhalten, befolgen Sie die folgenden Methoden zur Namespace-Isolierung:

  • Bewahren Sie nur Argo-CD-relevante Geheimnisse im Argo-CD-Namespace auf

  • Vermeiden Sie es, Anwendungsgeheimnisse, die nichts miteinander zu tun haben, im selben Namespace wie Argo-CD zu speichern

  • Verwenden Sie separate Namespaces für Anwendungsgeheimnisse, die für Argo-CD-Operationen nicht erforderlich sind

Diese Isolierung stellt sicher, dass der geheime Zugriff von Argo CD nur auf die Anmeldeinformationen beschränkt ist, die es für die Git-Repository-Authentifizierung und andere Argo-CD-spezifische Operationen benötigt.

Kubernetes RBAC

Steuern Sie, welche Benutzer und Dienstkonten Funktionsressourcen erstellen und verwalten können. Es hat sich bewährt, Capability-Ressourcen in dedizierten Namespaces mit entsprechenden RBAC-Richtlinien bereitzustellen.

Beispiel: Die RBAC-Rolle funktioniert mit ACK und ermöglicht die S3-Bucket-Ressourcenverwaltung im Namespace: app-team

apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: ack-s3-manager namespace: app-team rules: - apiGroups: ["s3.services.k8s.aws"] resources: ["buckets"] verbs: ["get", "list", "create", "update", "delete"]

Audit-Protokollierung

CloudTrail: Alle EKS-Capability-API-Operationen (Erstellen, Aktualisieren, Löschen) werden protokolliert. AWS CloudTrail

Aktivieren Sie die CloudTrail Protokollierung, um Folgendes zu verfolgen:

  • Wer hat Funktionen erstellt oder geändert

  • Wann sich die Funktionskonfigurationen geändert haben

  • Welche Funktionsrollen werden verwendet

Netzwerkzugriff und VPC-Endpunkte

Privater Argo CD-API-Zugriff

Sie können den Zugriff auf den Argo CD API-Server einschränken, indem Sie einen oder mehrere VPC-Endpunkte mit dem gehosteten Argo CD-Endpunkt verknüpfen. Dies ermöglicht eine private Konnektivität zur Benutzeroberfläche und API von Argo CD aus Ihrer VPC heraus, ohne das öffentliche Internet zu durchqueren.

Anmerkung

VPC-Endpunkte, die mit gehosteten Argo CD-API-Endpunkten verbunden sind (unter Verwendung von eks-Capabilities). region.amazonaws.com) unterstützen keine VPC-Endpunktrichtlinien.

Bereitstellung auf privaten Clustern

Mit der Argo-CD-Funktion können Anwendungen auf vollständig privaten EKS-Clustern bereitgestellt werden, was einen erheblichen betrieblichen Vorteil bietet, da kein VPC-Peering oder komplexe Netzwerkkonfigurationen erforderlich sind. Beachten Sie beim Entwerfen dieser Architektur jedoch, dass Argo CD die Konfiguration aus Git-Repositorys (die möglicherweise öffentlich sein können) abruft und auf Ihre privaten Cluster anwendet.

Stellen Sie sicher, dass Sie:

  • Verwenden Sie private Git-Repositorys für sensible Workloads

  • Implementieren Sie die richtigen Zugriffskontrollen und Authentifizierung für das Git-Repository

  • Überprüfe und genehmige Änderungen mithilfe von Pull-Requests, bevor du sie zusammenführst

  • Erwägen Sie, die Synchronisierungsfenster von Argo CD zu verwenden, um zu kontrollieren, wann Bereitstellungen erfolgen können

  • Überwachen Sie die Audit-Logs von Argo CD auf unbefugte Konfigurationsänderungen

Compliance

Die EKS-Funktionen werden vollständig verwaltet und verfügen über die Compliance-Zertifizierungen von Amazon EKS.

Aktuelle Informationen zur Einhaltung der Vorschriften finden Sie unter AWS Services in Scope by Compliance Program.

Nächste Schritte