Aidez à améliorer cette page
Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Pour contribuer à ce guide de l'utilisateur, cliquez sur le GitHub lien Modifier cette page qui se trouve dans le volet droit de chaque page.
Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Accès des utilisateurs à Kubernetes via un fournisseur OIDC externe
Amazon EKS prend en charge l'utilisation des fournisseurs d'identité OpenID Connect (OIDC) comme méthode d'authentification des utilisateurs de votre cluster. Les fournisseurs d'identité OIDC peuvent être utilisés avec ou comme alternative à la gestion des AWS identités et des accès (IAM). Pour plus d'informations sur l'utilisation d'IAM, consultez Accorder aux utilisateurs et aux rôles IAM l'accès aux API Kubernetes. Après avoir configuré l'authentification dans votre cluster, vous pouvez créer des roles et des clusterroles Kubernetes pour attribuer des autorisations aux rôles, puis lier les rôles aux identités à l'aide de liaisons rolebindings et clusterrolebindings Kubernetes. Pour plus d'informations, consultez Utilisation de l'autorisation RBAC
-
Kubernetes ne fournit pas de fournisseur d’identité OIDC. Vous pouvez utiliser un fournisseur d'identité OIDC public existant ou vous exécuter votre propre fournisseur d'identité. Pour obtenir la liste des fournisseurs certifiés, consultez Certification OpenID
sur le site OpenID. -
L'URL de l'émetteur du fournisseur d'identité OIDC doit être accessible publiquement, afin qu'Amazon EKS puisse découvrir les clés de signature. Amazon EKS ne prend pas en charge les fournisseurs d’identité OIDC utilisant des certificats autosignés.
-
Vous ne pouvez pas désactiver l’authentification IAM de votre cluster, car elle reste nécessaire pour joindre des nœuds au cluster.
-
Un cluster Amazon EKS doit cependant être créé par un principal IAM AWS plutôt que par un utilisateur de fournisseur d'identité OIDC. En effet, le créateur de cluster interagit avec les API Amazon EKS et non pas avec les API Kubernetes.
-
Les utilisateurs authentifiés par le fournisseur d'identité OIDC sont répertoriés dans le journal d'audit du cluster si les CloudWatch journaux sont activés pour le plan de contrôle. Pour de plus amples informations, veuillez consulter Activer ou désactiver les journaux du plan de contrôle.
-
Vous ne pouvez pas vous connecter à l' Console de gestion AWS aide d'un compte d'un fournisseur OIDC. Vous ne pouvez le faire qu'en vous Consultez les ressources Kubernetes dans le Console de gestion AWS connectant à l' Console de gestion AWS aide d'un compte de gestion des AWS identités et des accès.
Le nombre de fournisseurs d'identité OIDC que vous pouvez associer à un cluster dépend de la version Kubernetes du cluster. Sur les clusters exécutant Kubernetes version 1.32 ou ultérieure, vous pouvez associer jusqu'à 10 fournisseurs d'identité OIDC. La taille combinée de toutes les configurations de fournisseurs OIDC doit être inférieure à 12 Ko. Sur les clusters exécutant une version antérieure à la version 1.32, vous ne pouvez associer qu'un seul fournisseur d'identité OIDC.
-
L'URL (
issuerUrl) et le nom (name) de l'émetteur doivent être uniques parmi tous les fournisseurs d'identité OIDC associés au cluster. Vous ne pouvez pas associer le même fournisseur plusieurs fois. -
L'association d'un fournisseur d'identité OIDC constitue une mise à jour du cluster. Le cluster entre dans
UPDATINGcet état et la modification peut prendre plusieurs minutes pour être entièrement appliquée aux serveurs d'API du cluster. Vous pouvez suivre la progression de la mise à jour grâce à l'DescribeUpdateopération.
Note
Le plan de contrôle extrait les clés de signature du fournisseur à partir de l'URL de l'émetteur. L'émetteur doit donc être joignable depuis le plan de contrôle. Si votre cluster utilise le plan de contrôle egress (controlPlaneEgressMode=CUSTOMER_ROUTED) routé par le client, assurez-vous que le point de terminaison de l'émetteur est accessible via le chemin de sortie que vous configurez dans votre VPC. Pour de plus amples informations, veuillez consulter Configuration du routage de sortie du plan de contrôle.
Associer un fournisseur d'identité OIDC
Pour pouvoir associer un fournisseur d'identité OIDC à votre cluster, vous devez obtenir les informations suivantes de votre fournisseur :
- URL de l'émetteur
-
L'URL du fournisseur d'identité OIDC qui permet au serveur d'API de découvrir les clés de signature publiques pour vérifier les jetons. L’URL doit commencer par
https://et correspondre à la revendicationissfigurant dans les jetons d’ID OIDC du fournisseur. Conformément à la norme OIDC, les composants du chemin sont autorisés, mais pas les paramètres de requête. Généralement, l'URL se compose uniquement d'un nom d'hôte, commehttps://server.example.orgouhttps://example.com. Cette URL doit pointer vers le niveau sous.well-known/openid-configurationet doit être accessible publiquement sur Internet. L'URL de l'émetteur doit être unique pour tous les fournisseurs d'identité OIDC associés au cluster. - ID client (également appelé audience)
-
L'ID de l'application cliente qui envoie les demandes d'authentification au fournisseur d'identité OIDC.
Vous pouvez associer un fournisseur d'identité à l'aide de eksctl ou de la Console de gestion AWS.
Association d’un fournisseur d’identité à l’aide d’eksctl
-
Créez un fichier nommé
associate-identity-provider.yamlavec les contenus suivants. Remplacez les exemples de valeurs par les vôtres. Les valeurs de la sectionidentityProviderssont obtenues de votre fournisseur d'identité OIDC. Des valeurs ne sont requises que pour les paramètresname,type,issuerUrletclientIdsousidentityProviders.--- 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: devImportant
Ne spécifiez pas
system:, ni aucune portion de cette chaîne, pourgroupsPrefixouusernamePrefix. -
Créez le fournisseur.
eksctl associate identityprovider -f associate-identity-provider.yaml -
Pour utiliser
kubectlavec votre cluster et un fournisseur d’identité OIDC, consultez Utilisation de kubectldans la documentation Kubernetes.
Associez un fournisseur d'identité à l'aide du AWS Console
-
Ouvrez la console Amazon EKS
. -
Sélectionnez votre cluster, puis sélectionnez l’onglet Accès.
-
Dans la section Fournisseurs d'identité OIDC, sélectionnez Fournisseur d'identité associé.
-
Sur la page Associate OIDC Identity Provider (Associer un fournisseur d'identité OIDC), saisissez ou sélectionnez les options suivantes, puis sélectionnez Associate (Associer).
-
Dans Nom, saisissez un nom unique pour le fournisseur.
-
Pour URL de l'émetteur, saisissez l'URL de votre fournisseur. Cette URL doit être accessible via Internet.
-
Pour ID client, saisissez l’ID client du fournisseur d’identité OIDC (également appelé audience).
-
Pour Nom d'utilisateur, saisissez la revendication à utiliser comme nom d'utilisateur.
-
Pour Revendication de groupes, saisissez la revendication à utiliser comme groupe de l’utilisateur.
-
(Facultatif) Sélectionnez Options avancées, puis saisissez ou sélectionnez les informations suivantes :
-
Nom d'utilisateur : saisissez un préfixe à ajouter aux revendications de nom d'utilisateur. Le préfixe est ajouté aux revendications de nom d'utilisateur pour éviter les conflits avec les noms existants. Si vous ne fournissez aucune valeur et que le nom d'utilisateur est une valeur autre que
email, le préfixe correspond par défaut à la valeur URL de l'émetteur. Vous pouvez utiliser cette valeur-pour désactiver tous les préfixages. Ne spécifiez passystem:ni aucune partie de cette chaîne. -
Préfixe de groupes : saisissez un préfixe à ajouter aux revendications de groupes. Le préfixe est ajouté aux revendications de groupe afin d'éviter tout conflit avec des noms existants (tels que).
system:groupsPar exemple, la valeuroidc:crée des noms de groupe commeoidc:engineeringetoidc:infra. Ne spécifiez passystem:ni aucune partie de cette chaîne. -
Revendications requises : sélectionnez Ajouter une revendication et saisissez une ou plusieurs paires de valeurs clés qui décrivent les revendications requises dans le jeton d'ID de client. Les paires décrivent les revendications requises dans le jeton d’ID. Si elle est définie, la présence de chaque revendication est vérifiée dans le jeton d'ID avec une valeur correspondante.
-
Pour utiliser
kubectlavec votre cluster et un fournisseur d’identité OIDC, consultez Utilisation de kubectldans la documentation Kubernetes.
-
-
-
Meilleures pratiques pour plusieurs fournisseurs d'identité
Utiliser des préfixes de nom d'utilisateur et de groupe : définissez un préfixe de nom d'utilisateur (usernamePrefix) et un préfixe de groupe (groupsPrefix) pour chaque fournisseur d'identité OIDC afin de réduire le risque de chevauchement des identités de différents fournisseurs. Si vous n'utilisez pas de préfixes, utilisez des revendications de nom d'utilisateur et de groupes uniques par fournisseur. L'une ou l'autre approche garantit que deux fournisseurs ne peuvent pas produire le même nom d'utilisateur ou le même nom de groupe Kubernetes.
Validez les revendications de jetons : utilisez les revendications requises (requiredClaims) pour spécifier les paires clé-valeur qui doivent être présentes dans le jeton d'identification, afin que votre cluster n'accepte que les jetons que vous autorisez.
Limitez le nombre de demandes pour chaque jeton : configurez votre fournisseur d'identité pour qu'il émette des jetons contenant uniquement les revendications dont votre cluster a besoin. La limitation des réclamations réduit les informations exposées en cas de compromission d'un jeton.
Exemple de politique IAM
Si vous voulez empêcher un fournisseur d'identité OIDC d'être associé à un cluster, créez et associez la politique IAM suivante aux comptes IAM de vos administrateurs Amazon EKS. Pour plus d’informations, consultez Création de politiques IAM et Ajout d’autorisations d’identité IAM dans le Guide de l’utilisateur IAM, ainsi que Actions dans la Référence d’autorisation de service.
{ "Version":"2012-10-17", "Statement": [ { "Sid": "denyOIDC", "Effect": "Deny", "Action": [ "eks:AssociateIdentityProviderConfig" ], "Resource": "arn:aws:eks:us-west-2:111122223333:cluster/*" }, { "Sid": "eksAdmin", "Effect": "Allow", "Action": [ "eks:*" ], "Resource": "*" } ] }
L'exemple de politique suivant autorise l'association de fournisseur d'identité OIDC si clientID est kubernetes et issuerUrl est https://cognito-idp.us-west-2.amazonaws.com/*.
{ "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": "*" } ] }