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 unter, 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
Dieses Thema behandelt wichtige Sicherheitsüberlegungen für EKS-Funktionen, einschließlich der IAM-Rollenkonfiguration, Kubernetes-Berechtigungen und Architekturmuster für Multi-Cluster-Bereitstellungen und kontoübergreifendes Ressourcenmanagement. AWS
EKS-Funktionen verwenden eine Kombination aus IAM-Rollen, EKS-Zugriffseinträgen und Kubernetes RBAC, um sicheren Zugriff auf Dienste, Cluster-Kubernetes-Ressourcen und Integrationen mit Secrets Manager und anderen AWS Diensten zu ermöglichen. AWS CodeConnections AWS AWS
Fähigkeit: IAM-Rolle
Wenn Sie eine Funktion erstellen, geben Sie eine IAM-Funktionsrolle an, die EKS verwendet, um Aktionen in Ihrem Namen auszuführen. Diese Rolle muss:
-
Im selben AWS Konto wie der Cluster und die Funktionsressource sein
-
Verfügen Sie über eine Vertrauensrichtlinie, die es dem
capabilities---eks.amazonaws.com.rproxy.goskope.comDienstprinzipal 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. Detaillierte 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 Ihren Anforderungen entsprechen. 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 vollen Zugriff auf einen oder mehrere Dienste gewähren können. AWS
Wichtig
Einige Anwendungsfälle rechtfertigen zwar die Verwendung umfassender Administratorrechte, aber folgen Sie dem Prinzip der geringsten Rechte, indem Sie nur die für Ihren speziellen Anwendungsfall erforderlichen IAM-Berechtigungen gewähren und den Zugriff auf bestimmte Ressourcen mithilfe von ARNs und 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 Funktion grundlegende Kubernetes-Funktionsberechtigungen.
Anmerkung
Zugriffseinträge werden für den Cluster erstellt, in dem die Funktion erstellt wird. 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 zur Bereitstellung und Verwaltung von Anwendungen erstellen.
Der Zugriffseintrag beinhaltet:
-
Die IAM-Rolle ARN als Principal
-
Capability-specific greifen Sie auf Eintragsrichtlinien zu, die grundlegende Kubernetes-Berechtigungen gewähren
-
Angemessener Geltungsbereich (clusterweit oder Namespace-spezifisch), basierend auf dem Funktionstyp
Anmerkung
Für Argo CD werden Namespace-spezifische Berechtigungen für den in der Capability-Konfiguration angegebenen Namespace gewährt (Standardeinstellung ist). argocd
Standardmäßige Zugriffsrichtlinien nach Funktionen
Jeder Funktionstyp gewährt der Funktionsrolle die erforderlichen Berechtigungen und legt unterschiedliche Standard-Zugriffsrichtlinien wie folgt fest:
- 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 RGDs definiert werden.
-
- ACK
-
-
arn:aws:eks::aws:cluster-access-policy/AmazonEKSACKPolicy(im Clusterbereich)Gewährt 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 erkennen 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 eine der folgenden Arten gewähren:
-
Zugriffsrichtlinien: Ordnen Sie dem Zugriffseintrag zusätzliche verwaltete Richtlinien zu
-
Kubernetes RBAC: Erstellen Sie
RoleunsereClusterRoleBindungen für den Kubernetes-Benutzer der Funktion
Geheime Leserberechtigungen ACK
Einige ACK-Controller müssen Kubernetes-Geheimnisse lesen, um vertrauliche Daten wie Datenbankkennwörter abzurufen. Die folgenden ACK-Controller benötigen einen geheimen Lesezugriff:
-
acm,acmpca,documentdb,memorydb,mq,rds,secretsmanager
Um geheime Leseberechtigungen zu gewähren:
-
Ordnen Sie die
arn:aws:eks::aws:cluster-access-policy/AmazonEKSSecretReaderPolicyZugriffsrichtlinie dem Zugriffseintrag der Funktion zu -
Passen Sie die Richtlinie auf bestimmte Namespaces an, in denen ACK-Ressourcen auf Geheimnisse verweisen oder clusterweiten Zugriff gewähren
Wichtig
Geheime Leseberechtigungen beziehen sich auf die Namespaces, die Sie beim Zuordnen der Zugriffsrichtlinie angeben. Auf diese Weise können Sie einschränken, auf welche Geheimnisse die Funktion zugreifen kann.
Erledigen Sie beliebige Ressourcenberechtigungen
Standardmäßig kann Kro ResourceGraphDefinitions (RGDs) und ihre Instanzen beobachten und verwalten. Um zusammengesetzte Ressourcen wie Deployments, Services oder zu verwalten ConfigMaps, konfigurieren Sie zusätzliche Kubernetes-Berechtigungen.
So erteilst du Kro-Berechtigungen zum Erstellen von Ressourcen:
Option 1: Greifen Sie auf Zugangsrichtlinien zu
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 (in Großbuchstaben) wird automatisch von der EKS-Kro-Funktion festgelegt.
Für die Funktion erforderliche IAM-Berechtigungen
- kro (Kube Resource Orchestrator)
-
Keine IAM-Berechtigungen erforderlich. Sie können eine Capability-Rolle 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 für bestimmte Dienste, Aktionen und Ressourcen auf der Grundlage Ihrer Anforderungen festlegen. Detaillierte Informationen zur Konfiguration von ACK-Berechtigungen, einschließlich bewährter Methoden für die Produktion mit IAM-Role Selectors, 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 Sie Git-Repository-Anmeldeinformationen in Secrets Manager speichern
-
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
ICH BIN AM WENIGSTEN BERECHTIGT
Gewähren Sie Ihren Funktionsressourcen 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.
Rollen im Bereich Fähigkeiten:
-
ACK: Wenn möglich, beschränken Sie die IAM-Berechtigungen je nach Anwendungsfall und Anforderungen auf bestimmte AWS Dienste und Ressourcen, die Ihre Teams benötigen
-
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 stattdessen Muster für bestimmte Ressourcen oder Gruppen von "Resource": "*" Ressourcen 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 „Überlegungen“ zu den einzelnen Funktionen.
Namespace-Isolierung für Argo-CD-Geheimnisse
Die verwaltete Argo-CD-Funktion hat Zugriff auf alle Kubernetes-Geheimnisse in ihrem konfigurierten Namespace (Standard:). argocd Um ein optimales Sicherheitsniveau aufrechtzuerhalten, folgen Sie diesen Methoden zur Namespace-Isolierung:
-
Bewahren Sie nur CD-relevant Argo-Secrets 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 der Argo-CD auf nur die Anmeldeinformationen beschränkt ist, die für die Git-Repository-Authentifizierung und andere Argo-Operationen benötigt werden. CD-specific
Kubernetes RBAC
Steuern Sie, welche Benutzer und Dienstkonten Funktionsressourcen erstellen und verwalten können. Es hat sich bewährt, Funktionsressourcen in dedizierten Namespaces mit entsprechenden RBAC-Richtlinien bereitzustellen.
Beispiel: RBAC-Rolle für die Arbeit mit ACK, die eine S3-Bucket-Ressourcenverwaltung im Namespace ermöglicht: 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
-
Wenn sich die Funktionskonfigurationen geändert haben
-
Welche Funktionsrollen werden verwendet
Netzwerkzugriff und VPC-Endpunkte
Privater Zugriff auf die Argo CD API
Sie können den Zugriff auf den Argo CD API-Server einschränken, indem Sie dem gehosteten Argo CD-Endpunkt einen oder mehrere VPC-Endpunkte zuordnen. Dies ermöglicht private Konnektivität innerhalb Ihrer VPC, ohne das öffentliche Internet zu nutzen. Der VPC-Endpunkt bietet Zugriff sowohl auf die Argo CD-Weboberfläche als auch auf die Argo CD-API (einschließlich CLI-Zugriff).
Anmerkung
VPC-Endpunkte, die mit gehosteten Argo CD-API-Endpunkten verbunden sind (mithilfe 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. Dies bietet einen erheblichen Betriebsvorteil, da kein VPC-Peering oder komplexe Netzwerkkonfigurationen erforderlich sind. Beachten Sie beim Entwurf dieser Architektur jedoch, dass Argo CD die Konfiguration aus Git-Repositorys (die möglicherweise öffentlich sind) 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
-
Prüfen und genehmigen Sie Änderungen vor dem Zusammenführen mithilfe von Pull-Requests
-
Erwägen Sie, die Synchronisierungsfenster von Argo CD zu verwenden, um zu steuern, wann Bereitstellungen erfolgen können
-
Überwachen Sie die Auditprotokolle 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 Compliance-Informationen finden Sie unter AWS Services im Umfang nach Compliance-Programm
Nächste Schritte
-
ACK-Berechtigungen konfigurieren- Konfigurieren Sie die IAM-Berechtigungen für ACK
-
Kro-Berechtigungen konfigurieren- Konfiguriere Kubernetes RBAC für Kro
-
Argo-CD-Berechtigungen konfigurieren- Konfigurieren Sie die Identity Center-Integration für Argo CD
-
Fehlerbehebung bei EKS-Funktionen- Beheben Sie Sicherheits- und Berechtigungsprobleme