Unterstützung für die Verbesserung dieser Seite beitragen
Um zu diesem Benutzerhandbuch beizutragen, klicken Sie auf den Link Diese Seite auf GitHub bearbeiten, der sich im rechten Bereich jeder Seite befindet.
Benutzern Zugriff auf Kubernetes mit einem externen OIDC-Anbieter gewähren
Amazon EKS unterstützt die Verwendung von OpenID-Connect(OIDC)-Identitätsanbietern als Methode zur Authentifizierung von Benutzern bei Ihrem Cluster. OIDC-Identitätsanbieter können mit oder als Alternative zu AWS Identity and Access Management (IAM) verwendet werden. Weitere Informationen zur Verwendung von IAM finden Sie unter Gewähren von Zugriff auf Kubernetes-APIs für IAM-Benutzer und Rollen. Nachdem Sie die Authentifizierung für Ihren Cluster konfiguriert haben, können Sie Kubernetes roles und clusterroles erstellen, um den Rollen Berechtigungen zuzuweisen, und dann die Rollen mithilfe von Kubernetes rolebindings und clusterrolebindings an die Identitäten binden. Weitere Informationen finden Sie unter Verwendung der RBAC-Autorisierung
-
Sie können Ihrem Cluster einen OIDC-Identitätsanbieter zuordnen.
-
Kubernetes stellt keinen OIDC-Identitätsanbieter bereit. Sie können einen vorhandenen öffentlichen OIDC-Identitätsanbieter verwenden oder Ihren eigenen Identitätsanbieter ausführen. Eine Liste zertifizierter Anbieter finden Sie unter OpenID-Zertifizierung
auf der OpenID-Website. -
Die Aussteller-URL des OIDC-Identitätsanbieters muss öffentlich zugänglich sein, damit Amazon EKS die Signaturschlüssel erkennen kann. Amazon EKS unterstützt keine OIDC-Identitätsanbieter mit selbstsignierten Zertifikaten.
-
Sie können die IAM-Authentifizierung in Ihrem Cluster nicht deaktivieren, da sie weiterhin erforderlich ist, um einem Cluster Knoten hinzufügen zu können.
-
Ein Amazon EKS-Cluster muss weiterhin von einem AWS-IAM-Prinzipal erstellt werden und nicht von einem OIDC-Identitätsanbieter-Benutzer. Dies liegt daran, dass der Cluster-Ersteller mit den Amazon-EKS-APIs interagiert und nicht mit den Kubernetes-APIs.
-
Vom OIDC-Identitätsanbieter authentifizierte Benutzer werden im Überwachungsprotokoll des Clusters aufgeführt, wenn CloudWatch-Protokolle für die Steuerebene aktiviert sind. Weitere Informationen finden Sie unter Aktivierung oder Deaktivierung der Steuerebenen-Protokolle.
-
Sie können sich nicht mit einem Konto eines OIDC-Anbieters beim AWS-Managementkonsole anmelden. Sie können Kubernetes-Ressourcen in AWS-Managementkonsole anzeigen nur durchführen, indem Sie sich mit einem Verwaltungskonto für AWS Identity and Access Management bei AWS-Managementkonsole anmelden.
Verknüpfen Sie einen OIDC-Identitätsanbieter
Bevor Sie Ihrem Cluster einen OIDC-Identitätsanbieter zuordnen können, benötigen Sie die folgenden Informationen von Ihrem Anbieter:
- URL des Ausstellers
-
Die URL des OIDC-Identitätsanbieters, die es dem API-Server ermöglicht, öffentliche Signierschlüssel zur Verifizierung von Token zu ermitteln. Die URL muss mit
https://beginnen und sollte demiss-Anspruch in den OIDC-ID-Token des Anbieters entsprechen. Gemäß dem OIDC-Standard sind Pfadkomponenten erlaubt, Abfrageparameter jedoch nicht. Normalerweise besteht die URL nur aus einem Hostnamen wiehttps://server.example.orgoderhttps://example.com. Diese URL sollte auf die Ebene unterhalb von.well-known/openid-configurationverweisen und muss über das Internet öffentlich zugänglich sein. - Client-ID (auch als Zielgruppe bezeichnet)
-
Die ID für die Client-Anwendung, die Authentifizierungsanforderungen an den OIDC-Identitätsanbieter stellt.
Sie können einen Identitätsanbieter mit eksctl oder AWS-Managementkonsole zuordnen.
Identitätsanbieter mit eksctl zuordnen
-
Erstellen Sie eine Datei mit dem Namen
associate-identity-provider.yamlund dem folgenden Inhalt. Ersetzen Sie dieBeispielwertedurch Ihre eigenen Werte. Die Werte im AbschnittidentityProviderserhalten Sie von Ihrem OIDC-Identitätsanbieter. Werte werden nur für diename-,type-,issuerUrl- undclientId-Einstellungen unteridentityProvidersbenötigt.--- apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: my-cluster region: your-region-code identityProviders: - name: my-provider type: oidc issuerUrl: https://example.com clientId: kubernetes usernameClaim: email usernamePrefix: my-username-prefix groupsClaim: my-claim groupsPrefix: my-groups-prefix requiredClaims: string: string tags: env: devWichtig
Geben Sie weder
system:noch einen Teil dieser Zeichenfolge fürgroupsPrefixoderusernamePrefixan. -
Erstellen Sie den Anbieter.
eksctl associate identityprovider -f associate-identity-provider.yaml -
Informationen zum Verwenden von
kubectlfür die Arbeit mit Ihrem Cluster und OIDC-Identitätsanbieter finden Sie unter Verwendung von kubectlin der Kubernetes-Dokumentation.
Identitätsanbieter über die AWS-Konsole zuordnen
-
Öffnen Sie die Amazon-EKS-Konsole
. -
Wählen Sie Ihren Cluster aus und anschließend die Registerkarte Zugriff.
-
Wählen Sie im Abschnitt OIDC-Identitätsanbieter die Option „Identitätsanbieter zuordnen“ aus.
-
Geben Sie auf der Seite OIDC-Identitätsanbieter zuordnen die folgenden Optionen ein oder wählen Sie sie aus, und wählen Sie dann Zuordnen aus.
-
Geben Sie für Name einen eindeutigen Namen für den Anbieter ein.
-
Geben Sie für Aussteller-URL die URL Ihres Anbieters ein. Diese URL muss über das Internet zugänglich sein.
-
Geben Sie für Client-ID die Client-ID des OIDC-Identitätsanbieters (auch als Zielgruppe bezeichnet) ein.
-
Geben Sie für Benutzernamenanspruch den Anspruch ein, der als Benutzername verwendet werden soll.
-
Geben Sie für Gruppenanspruch den Anspruch ein, der als Benutzergruppe verwendet werden soll.
-
(Optional) Wählen Sie Erweiterte Optionen, geben Sie die folgenden Informationen ein oder wählen Sie sie aus.
-
Benutzernamen-Präfix – Geben Sie ein Präfix ein, das den Benutzernamenansprüchen vorangestellt wird. Das Präfix wird den Benutzernamensansprüchen vorangestellt, um Konflikte mit bestehenden Namen zu vermeiden. Wenn Sie keinen Wert angeben und der Benutzername ein anderer Wert als
emailist, wird als Präfix standardmäßig der Wert für die Aussteller-URL verwendet. Sie können den Wert-verwenden, um alle Präfixe zu deaktivieren. Geben Sie wedersystem:, noch einen Teil dieser Zeichenfolge an. -
Gruppen-Präfix – Geben Sie ein Präfix ein, das den Gruppenansprüchen vorangestellt werden soll. Das Präfix wird Gruppenansprüchen vorangestellt, um Konflikte mit vorhandenen Namen (wie beispielsweise
system: groups) zu vermeiden. Der Wertoidc:erstellt beispielsweise Gruppennamen wieoidc:engineeringundoidc:infra. Geben Sie wedersystem:, noch einen Teil dieser Zeichenfolge an. -
Erforderliche Ansprüche – Wählen Sie Anspruch hinzufügen aus, und geben Sie ein oder mehrere Schlüsselwertpaare ein, die erforderliche Ansprüche im Client-ID-Token beschreiben. Die Paare beschreiben erforderliche Ansprüche im ID-Token. Wenn festgelegt, wird überprüft, ob jeder Anspruch im ID-Token mit einem übereinstimmenden Wert vorhanden ist.
-
Informationen zum Verwenden von
kubectlfür die Arbeit mit Ihrem Cluster und OIDC-Identitätsanbieter finden Sie unter Verwendung von kubectlin der Kubernetes-Dokumentation.
-
-
-
Beispiel für eine IAM-Richtlinie
Wenn Sie verhindern möchten, dass ein OIDC-Identitätsanbieter mit einem Cluster verknüpft wird, erstellen Sie die folgende IAM-Richtlinie und verknüpfen Sie sie mit den IAM-Konten Ihrer Amazon-EKS-Administratoren. Weitere Informationen finden Sie unter Erstellen von IAM-Richtlinien und Hinzufügen von IAM-Identitätsberechtigungen im IAM-Benutzerhandbuch sowie unter Aktionen in der Referenz zur Service-Autorisierung.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "denyOIDC", "Effect": "Deny", "Action": [ "eks:AssociateIdentityProviderConfig" ], "Resource": "arn:aws:eks:us-west-2.amazonaws.com:111122223333:cluster/*" }, { "Sid": "eksAdmin", "Effect": "Allow", "Action": [ "eks:*" ], "Resource": "*" } ] }
Die folgende Beispielrichtlinie lässt die Zuordnung von OIDC-Identitätsanbietern zu, wenn clientID kubernetes und issuerUrl
https://cognito-idp.us-west-2amazonaws.com/* ist.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCognitoOnly", "Effect": "Deny", "Action": "eks:AssociateIdentityProviderConfig", "Resource": "arn:aws:eks:us-west-2:111122223333:cluster/my-instance", "Condition": { "StringNotLikeIfExists": { "eks:issuerUrl": "https://cognito-idp.us-west-2.amazonaws.com/*" } } }, { "Sid": "DenyOtherClients", "Effect": "Deny", "Action": "eks:AssociateIdentityProviderConfig", "Resource": "arn:aws:eks:us-west-2:111122223333:cluster/my-instance", "Condition": { "StringNotEquals": { "eks:clientId": "kubernetes" } } }, { "Sid": "AllowOthers", "Effect": "Allow", "Action": "eks:*", "Resource": "*" } ] }