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:
-
Sie müssen sich im selben AWS Konto befinden wie der Cluster und die Capability-Ressource
-
Verfügen Sie über eine Vertrauensrichtlinie, die es dem
capabilities---eks.amazonaws.com.rproxy.govskope.caDienstprinzipal ermöglicht, die Rolle zu übernehmen -
Verfügen Sie je nach Ihren Anforderungen über IAM-Berechtigungen, die für den Funktionstyp und den Anwendungsfall geeignet sind. Ausführliche Informationen zu den erforderlichen IAM-Berechtigungen finden Sie unterConnect zu Git-Repositorys her mit AWS CodeConnections, und Anwendungsgeheimnisse mit AWS Secrets Manager verwalten ACK-Berechtigungen konfigurieren
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
RoleoderClusterRoleBindungen 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:
-
Ordnen Sie die
arn:aws:eks::aws:cluster-access-policy/AmazonEKSSecretReaderPolicyZugriffsrichtlinie dem Zugriffseintrag der Funktion zu -
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
-
ACK-Berechtigungen konfigurieren- Konfigurieren Sie IAM-Berechtigungen für ACK
-
Kro-Berechtigungen konfigurieren- Konfigurieren Sie Kubernetes RBAC für Kro
-
Argo-CD-Berechtigungen konfigurieren- Konfigurieren Sie die Identity Center-Integration für Argo CD
-
Problembehebung bei EKS-Funktionen- Beheben Sie Sicherheits- und Berechtigungsprobleme