

 **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 sur** 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
<a name="authenticate-oidc-identity-provider"></a>

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 à AWS Identity and Access Management (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](grant-k8s-access.md). 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](https://kubernetes.io/docs/reference/access-authn-authz/rbac/) dans la documentation Kubernetes.
+ Vous pouvez associer un fournisseur d'identité OIDC à votre cluster.
+ 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](https://openid.net/certification/) 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](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html#iam-term-principal) 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](control-plane-logs.md#enabling-control-plane-log-export).
+ Vous ne pouvez pas vous connecter au AWS Management Console avec un compte auprès d'un fournisseur OIDC. Vous ne pouvez le faire qu'en vous [Consultez les ressources Kubernetes dans le AWS Management Console](view-kubernetes-resources.md) connectant AWS Management Console à l'aide d'un compte AWS Identity and Access Management.

## Associer un fournisseur d'identité OIDC
<a name="associate-oidc-identity-provider"></a>

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 revendication `iss` figurant 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, comme `https://server.example.org` ou `https://example.com`. Cette URL doit pointer vers le niveau sous `.well-known/openid-configuration` et doit être accessible publiquement sur Internet.

 **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 AWS Management Console.

### Association d’un fournisseur d’identité à l’aide d’eksctl
<a name="identity-associate-eksctl"></a>

1. Créez un fichier nommé `associate-identity-provider.yaml` avec les contenus suivants. Remplacez les exemples de valeurs par les vôtres. Les valeurs de la section `identityProviders` sont obtenues de votre fournisseur d'identité OIDC. 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 pas `system:`, ni aucune portion de cette chaîne, pour `groupsPrefix` ou `usernamePrefix`.

1. Créez le fournisseur.

   ```
   eksctl associate identityprovider -f associate-identity-provider.yaml
   ```

1. Pour utiliser `kubectl` avec votre cluster et un fournisseur d’identité OIDC, consultez [Utilisation de kubectl](https://kubernetes.io/docs/reference/access-authn-authz/authentication/#using-kubectl) dans la documentation Kubernetes.

### Associer un fournisseur d'identité à l'aide de la AWS console
<a name="identity-associate-console"></a>

1. Ouvrez la [console Amazon EKS](https://console.aws.amazon.com/eks/home#/clusters).

1. Sélectionnez votre cluster, puis sélectionnez l’onglet **Accès**.

1. Dans la section **Fournisseurs d’identité OIDC**, sélectionnez Associer un fournisseur d’identité.

1. 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éfixes. Ne spécifiez pas `system:` 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: groups` Par exemple, la valeur `oidc:` crée des noms de groupe comme `oidc:engineering` et `oidc:infra`. Ne spécifiez pas `system:` 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.

       1. Pour utiliser `kubectl` avec votre cluster et un fournisseur d’identité OIDC, consultez [Utilisation de kubectl](https://kubernetes.io/docs/reference/access-authn-authz/authentication/#using-kubectl) dans la documentation Kubernetes.

## Exemple de politique IAM
<a name="oidc-identity-provider-iam-policy"></a>

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](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html) et [Ajout d’autorisations d’identité IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html#add-policies-console) dans le *Guide de l’utilisateur IAM*, ainsi que [Actions](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonelasticcontainerserviceforkubernetes.html) 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": "*"
        }
    ]
}
```