Accorder aux utilisateurs l'accès à Kubernetes avec un appareil externe OIDC provider - Amazon EKS

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.

Vous souhaitez contribuer à ce guide de l'utilisateur ? Faites défiler cette page vers le bas et sélectionnez Modifier cette page sur GitHub. Vos contributions contribueront à améliorer notre guide de l'utilisateur pour tous.

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.

Accorder aux utilisateurs l'accès à Kubernetes avec un appareil externe OIDC provider

Amazon EKS prend en charge l'utilisation OpenID Connect (OIDC) fournisseurs d'identité en tant que méthode d'authentification des utilisateurs auprès de votre cluster. OIDC les fournisseurs d'identité peuvent être utilisés avec Identity and Access Management () ou comme alternative à AWS Identity and Access Management (IAM). Pour plus d'informations sur l'utilisation de IAM, consultez Accorder IAM aux utilisateurs et aux rôles l'accès à Kubernetes APIs. Après avoir configuré l'authentification auprès de votre cluster, vous pouvez créer Kubernetes roleset clusterroles pour attribuer des autorisations aux rôles, puis pour lier les rôles aux identités en utilisant Kubernetes rolebindings et clusterrolebindings. Pour plus d'informations, consultez la section Utilisation de RBAC l'autorisation dans le Kubernetes .

  • Vous pouvez en associer un OIDC fournisseur d'identité pour votre cluster.

  • Kubernetes ne fournit pas de OIDC fournisseur d'identité. Vous pouvez utiliser un public existant OIDC fournisseur d'identité, ou vous pouvez gérer votre propre fournisseur d'identité. Pour obtenir la liste des fournisseurs certifiés, consultez Certification OpenID sur le site OpenID.

  • L'émetteur URL du OIDC le fournisseur d'identité doit être accessible au public, afin qu'Amazon EKS puisse découvrir les clés de signature. Amazon EKS ne prend pas en charge OIDC fournisseurs d'identité dotés de certificats auto-signés.

  • Vous ne pouvez pas désactiver IAM l'authentification auprès de votre cluster, car elle est toujours requise pour joindre des nœuds à un cluster.

  • Un EKS cluster Amazon doit toujours être créé par un AWS IAMprincipal, plutôt que par un OIDC utilisateur du fournisseur d'identité. Cela est dû au fait que le créateur du cluster interagit avec Amazon EKSAPIs, plutôt qu'avec Kubernetes APIs.

  • OIDC les utilisateurs authentifiés par le fournisseur d'identité 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 au AWS Management Console avec un compte à partir d'un OIDC fournisseur. Vous ne pouvez le faire qu'en vous Consultez les ressources Kubernetes dans AWS Management Console connectant AWS Management Console à l'aide d'un compte AWS Identity and Access Management.

Associer un OIDC fournisseur d'identité

Avant de pouvoir associer un OIDC fournisseur d'identité avec votre cluster, vous avez besoin des informations suivantes auprès de votre fournisseur :

Émetteur URL

Le fournisseur URL d'OIDCidentité qui permet au API serveur de découvrir les clés de signature publiques pour vérifier les jetons. Le URL doit commencer par https:// et doit correspondre à la iss réclamation contenue dans les jetons d'OIDCidentification du fournisseur. Conformément à la OIDC norme, les composants du chemin sont autorisés, mais pas les paramètres de requête. Généralement, il ne s'URLagit que d'un nom d'hôte, tel que https://server.example.org ou https://example.com . Cela URL doit indiquer le niveau ci-dessous .well-known/openid-configuration et doit être accessible au public sur Internet.

ID client (également connu sous le nom d'audience)

ID de l'application cliente qui envoie des demandes d'authentification au fournisseur OIDC d'identité.

Vous pouvez associer un fournisseur d'identité à l'aide de eksctl ou de la AWS Management Console.

Associer un fournisseur d'identité à l'aide de eksctl

  1. Créez un fichier nommé associate-identity-provider.yaml avec les contenus suivants. Remplacez les example values par vos propres valeurs. Les valeurs de identityProviders cette section sont obtenues à partir de votre OIDC fournisseur d'identité. Des valeurs ne sont requises que pour les paramètres name, type, issuerUrl et clientId sous identityProviders.

    --- 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: dev
    Important

    Ne spécifiez system: aucune partie de cette chaîne pour groupsPrefix ouusernamePrefix.

  2. Créez le fournisseur.

    eksctl associate identityprovider -f associate-identity-provider.yaml
  3. À utiliser kubectl pour travailler avec votre cluster et OIDC fournisseur d'identité, voir Utilisation de kubectl dans Kubernetes .

Associer un fournisseur d'identité à l'aide de la AWS console

  1. Ouvrez la EKSconsole Amazon.

  2. Sélectionnez votre cluster, puis sélectionnez l'onglet Accès.

  3. Dans OIDC Dans la section Fournisseurs d'identité, sélectionnez Fournisseur d'identité associé.

  4. À propos de l'associé OIDC Page du fournisseur d'identité, entrez ou sélectionnez les options suivantes, puis sélectionnez Associer.

    • Dans Nom, saisissez un nom unique pour le fournisseur.

    • Dans le champ Émetteur URL, saisissez le nom URL de votre fournisseur. Cela URL doit être accessible via Internet.

    • Dans le champ ID client, entrez OIDC ID client du fournisseur d'identité (également appelé audience).

    • Pour Nom d'utilisateur, saisissez la revendication à utiliser comme nom d'utilisateur.

    • Pour la réclamation de groupe, entrez la réclamation à utiliser en tant que groupe d'utilisateurs.

    • (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 queemail, le préfixe prend par défaut la valeur de l'émetteur. URL Vous pouvez utiliser la valeur - pour désactiver toutes les préfixes. Ne spécifiez system: 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 pour éviter les conflits avec des noms existants (tels que system: groups). Par exemple, la valeur oidc: crée des noms de groupe comme oidc:engineering et oidc:infra. Ne spécifiez system: 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 demandes requises dans le jeton d'identification. Si elle est définie, la présence de chaque revendication est vérifiée dans le jeton d'ID avec une valeur correspondante.

        1. À utiliser kubectl pour travailler avec votre cluster et OIDC fournisseur d'identité, voir Utilisation de kubectl dans Kubernetes .

Exemple de stratégie IAM

Si vous souhaitez empêcher une OIDC fournisseur d'identité pour ne pas être associé à un cluster, créez et associez la IAM politique suivante aux IAM comptes de vos EKS administrateurs Amazon. Pour plus d'informations, voir Création de IAM politiques et ajout IAM d'autorisations d'identité dans le guide de IAM l'utilisateur et 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.amazonaws.com:111122223333:cluster/*" }, { "Sid": "eksAdmin", "Effect": "Allow", "Action": [ "eks:*" ], "Resource": "*" } ] }

L'exemple de politique suivant permet OIDC association du fournisseur d'identité si clientID c'est le cas kubernetes et si issuerUrl c'est le cas https://cognito-idp.us-west-2amazonaws.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": "*" } ] }

Partenaire validé OIDC fournisseurs d'identité

Amazon EKS entretient des relations avec un réseau de partenaires qui proposent une assistance en matière de compatibilité OIDC fournisseurs d'identité. Consultez la documentation destinée aux partenaires ci-dessous pour en savoir plus sur la manière d'intégrer le fournisseur d'identité à AmazonEKS.

Partenaire Produit (langue française non garantie) Documentation

PingIdentity

PingOne pour Enterprise

Instructions d'installation

Amazon EKS a pour objectif de vous proposer un large choix d'options pour couvrir tous les cas d'utilisation. Si vous développez un OIDC fournisseur d'identité compatible qui n'est pas répertorié ici, puis contactez notre équipe partenaire à l'aws-container-partnersadresse @amazon .com pour plus d'informations.