Utiliser un fournisseur de secrets et de configuration AWS CSI avec des rôles IAM pour les comptes de service (IRSA) - AWS Systems Manager

AWS Systems ManagerChange Managern'est plus ouvert aux nouveaux clients. Les clients existants peuvent continuer à utiliser le service normalement. Pour plus d'informations, consultez AWS Systems ManagerChange Managerla section Modification de la disponibilité.

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.

Utiliser un fournisseur de secrets et de configuration AWS CSI avec des rôles IAM pour les comptes de service (IRSA)

Prérequis

  • Cluster Amazon EKS (version 1.17 ou ultérieure).

  • Accès à AWS CLI et aux clusters Amazon EKS via kubectl

Configurer le contrôle d'accès

L’ASCP récupère l’identité du pod Amazon EKS et l’échange pour un rôle IAM. Vous définissez des autorisations dans une politique IAM pour ce rôle IAM. Lorsque l’ASCP assume le rôle IAM, il a accès aux paramètres que vous avez autorisés. Les autres conteneurs ne peuvent pas accéder aux paramètres sauf si vous les associez également au rôle IAM.

Autoriser votre pod Amazon EKS à accéder aux paramètres de Parameter Store
  1. Créez une politique d’autorisation qui accorde les autorisations ssm:GetParameters et ssm:DescribeParameters aux paramètres auxquels le pod a besoin pour accéder.

  2. Créez un fournisseur OpenID Connect (OIDC) IAM pour le cluster si vous n'en avez pas déjà un. Pour plus d’informations, consultez Créer un fournisseur IAM OIDC pour votre cluster dans le Guide de l’utilisateur Amazon EKS.

  3. Créez un Rôle IAM pour le compte de service et attachez la politique. Pour plus d’informations, veuillez consulter Créer un rôle IAM pour un compte de service dans le Guide de l’utilisateur Amazon EKS.

  4. Si vous utilisez un cluster Amazon EKS privé, assurez-vous que le VPC dans lequel se trouve le cluster possède un point de terminaison AWS STS. Pour en savoir plus sur la création d’un point de terminaison, consultez Points de terminaison de VPC d’interface dans le Guide de l’utilisateur AWS Identity and Access Management.

Identifier les paramètres à monter

Pour déterminer quels paramètres l’ASCP monte dans Amazon EKS en tant que fichiers du système de fichiers, vous devez créer un fichier YAML SecretProviderClass. SecretProviderClass répertorie les paramètres à monter et le nom de fichier sous lequel les monter. La SecretProviderClass doit se trouver dans le même espace de noms que le pod Amazon EKS auquel il fait référence.

Monter les paramètres sous forme de fichiers

Les instructions suivantes indiquent comment monter des paramètres sous forme de fichiers à l’aide des exemples de fichiers YAML ExampleSecretProviderClass.yaml et ExampleDeployment.yaml.

Monter les paramètres dans Amazon EKS
  1. Appliquez la SecretProviderClass au pod :

    kubectl apply -f ExampleSecretProviderClass.yaml
  2. Déployez votre pod :

    kubectl apply -f ExampleDeployment.yaml
  3. L’ASCP monte les fichiers.

Dépannage

Vous pouvez afficher la plupart des erreurs en décrivant le déploiement du pod.

Pour afficher les messages d'erreur pour votre conteneur
  1. Obtenez une liste de noms de pod à l’aide de la commande suivante. Si vous n'utilisez pas l'espace de noms par défaut, utilisez -n name-space.

    kubectl get pods
  2. Pour décrire le pod, dans la commande suivante, pour pod-id, utilisez l’ID de pod des pods trouvés à l’étape précédente. Si vous n'utilisez pas l'espace de noms par défaut, utilisez -n nameSpace.

    kubectl describe pod/pod-id
Pour voir les erreurs pour l'ASCP
  • Pour trouver plus d’informations dans les journaux du fournisseur, dans la commande suivante, pour pod-id, utilisez l’ID du pod csi-secrets-store-provider-aws.

    kubectl -n kube-system get pods kubectl -n kube-system logs Pod/pod-id
  • Vérifiez que le CRD SecretProviderClass est installé :
    kubectl get crd secretproviderclasses.secrets-store.csi.x-k8s.io

    Cette commande doit renvoyer des informations sur la définition de ressource personnalisée SecretProviderClass.

  • Vérifiez que l’objet SecretProviderClass a été créé.
    kubectl get secretproviderclass SecretProviderClassName -o yaml