

 **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.

# Autoriser le contrôleur d'équilibrage de charge en mode automatique EKS à accéder à un secret spécifique
<a name="auto-managed-rbac-example"></a>

Dans ce didacticiel, vous accordez au contrôleur d'équilibrage de charge Amazon EKS Auto Mode l'accès en lecture à un `Secret` Kubernetes spécifique. Cela débloque l'authentification OIDC sur un ALB. `Ingress` Vous utilisez un espace de noms limité `Role` et `RoleBinding` ciblé sur le groupe. `eks:managed`

Ce didacticiel dure environ 15 minutes. Les objets Kubernetes RBAC que vous créez ne sont pas payants. AWS 

Le contrôleur d'équilibrage de charge Amazon EKS Auto Mode prend en charge l'authentification OIDC sur les objets `Ingress` ALB. Il utilise l'`alb.ingress.kubernetes.io/auth-type: oidc`annotation pour activer cette authentification. Pour résoudre la configuration OIDC, le contrôleur lit un Kubernetes `Secret` nommé dans l'annotation. `alb.ingress.kubernetes.io/auth-idp-oidc` Sa politique d'accès géré n'autorise `get` actuellement aucun `Secret` objet. Le réconciliateur échoue donc avec un message similaire à :

```
Failed build model due to ingress: <ns>/<name>:
  secrets "<secret>" is forbidden:
  User "arn:aws:sts::<acct>:assumed-role/AWSServiceRoleForAmazonEKS/<session>"
  cannot get resource "secrets" in API group "" in the namespace "<ns>"
```

À l'aide du mécanisme décrit dans[Accordez un Kubernetes RBAC supplémentaire aux contrôleurs gérés EKS Auto Mode](auto-managed-rbac.md), vous pouvez attribuer au contrôleur géré exactement `get` l'OIDC dont `Secret` il a besoin.

## Conditions préalables
<a name="_prerequisites"></a>

Avant de commencer, assurez-vous d'avoir :
+ Un cluster Amazon EKS Auto Mode avec l'entrée d'`AWSServiceRoleForAmazonEKS`accès créée automatiquement.
+  `kubectl`configuré avec un accès au cluster.
+ La AWS CLI est installée et configurée avec des autorisations pour `aws sts get-caller-identity` et`aws eks describe-access-entry`.
+ Un ALB `Ingress` qui utilise l'`alb.ingress.kubernetes.io/auth-type: oidc`annotation et le `Secret` Kubernetes auquel il fait référence.

## Étape 1 : Identifiez le secret à ajouter à la liste des autorisations
<a name="_step_1_identify_the_secret_to_add_to_the_allow_list"></a>

La configuration OIDC sur un ALB `Ingress` ressemble à ce qui suit. Enregistrez le `Secret` nom et l'`Ingress`espace de noms : les objets RBAC doivent se trouver dans le même espace de noms que le. `Secret`

```
annotations:
  alb.ingress.kubernetes.io/auth-type: oidc
  alb.ingress.kubernetes.io/auth-idp-oidc: >
    {
      "issuer": "...",
      "authorizationEndpoint": "...",
      "tokenEndpoint": "...",
      "userInfoEndpoint": "...",
      "secretName": "oidc"
    }
```

Le reste de cet exemple utilise l'espace de noms `monitoring` et `Secret` le nom`oidc`.

## Étape 2 : appliquez un rôle limité à l'espace de noms et RoleBinding
<a name="_step_2_apply_a_namespace_scoped_role_and_rolebinding"></a>

Ce formulaire attribue exactement `get` le nom `Secret` dans un seul espace de noms. Enregistrez les informations suivantes sous `eks-managed-oidc-secret-reader.yaml` :

```
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: eks-managed-oidc-secret-reader
  namespace: monitoring
rules:
- apiGroups: [""]
  resources: ["secrets"]
  resourceNames: ["oidc"]
  verbs: ["get"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: eks-managed-oidc-secret-reader
  namespace: monitoring
subjects:
- kind: Group
  name: eks:managed
  apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: Role
  name: eks-managed-oidc-secret-reader
  apiGroup: rbac.authorization.k8s.io
```

Appliquez-le :

```
kubectl apply -f eks-managed-oidc-secret-reader.yaml
```

Pour ajouter d'autres `Secret` objets à la liste d'autorisation ultérieurement, ajoutez leurs noms à la `Role’s `resourceNames` liste et présentez une nouvelle demande.

## Étape 3 : Confirmez que l'entrée est rétablie
<a name="_step_3_confirm_the_ingress_recovers"></a>

Le contrôleur d'équilibrage de charge les réconcilie `Ingress` lors de son prochain passage (généralement en quelques minutes). Lorsque la subvention fonctionne, l'`secrets "oidc" is forbidden`erreur précédente cesse d'apparaître `Ingress` et l'équilibreur de charge progresse. Si l'erreur persiste, revérifiez le `Role’s `namespace``resourceNames`, et le `RoleBinding` sujet.

## Supprimer la subvention
<a name="_removing_the_grant"></a>

**Important**  
Maintenez `Role` le sable `RoleBinding` en place aussi longtemps que l'ALB l'`Ingress`utilise`alb.ingress.kubernetes.io/auth-type: oidc`. Leur suppression interrompt à nouveau la résolution OIDC sur le. `Ingress`

Si vous arrêtez d'utiliser OIDC sur le`Ingress`, supprimez la subvention :

```
kubectl delete rolebinding eks-managed-oidc-secret-reader -n monitoring
kubectl delete role        eks-managed-oidc-secret-reader -n monitoring
```

## Ressources connexes
<a name="_related_resources"></a>
+  [Accordez un Kubernetes RBAC supplémentaire aux contrôleurs gérés EKS Auto Mode](auto-managed-rbac.md)— Aperçu conceptuel du `eks:managed` groupe et de la définition des subventions.
+  [Attribution de l’accès Kubernetes aux utilisateurs IAM avec les entrées d’accès EKS](access-entries.md)— Entrées d'accès Amazon EKS.
+  [Utilisation de l'autorisation RBAC ](https://kubernetes.io/docs/reference/access-authn-authz/rbac/) dans la documentation Kubernetes.