Utiliser AWS les secrets et le fournisseur de configuration CSI avec Pod Identity pour Amazon EKS - AWS Secrets Manager

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 AWS les secrets et le fournisseur de configuration CSI avec Pod Identity pour Amazon EKS

L'intégration du fournisseur de AWS secrets et de configuration à l'agent Pod Identity pour Amazon Elastic Kubernetes Service améliore la sécurité, simplifie la configuration et améliore les performances des applications exécutées sur Amazon EKS. Pod Identity simplifie l'authentification IAM pour Amazon EKS lors de la récupération de secrets depuis Secrets Manager ou de paramètres depuis AWS Systems Manager Parameter Store.

L’identité du pod Amazon EKS rationalise le processus de configuration des autorisations IAM pour les applications Kubernetes en permettant de configurer les autorisations directement via les interfaces Amazon EKS, en réduisant le nombre d’étapes et en éliminant le besoin de basculer entre les services Amazon EKS et IAM. L’identité du pod permet d’utiliser un seul rôle IAM sur plusieurs clusters sans mettre à jour les politiques de confiance et prend en charge les balises de session de rôle pour un contrôle d’accès plus granulaire. Cette approche simplifie non seulement la gestion des politiques en permettant la réutilisation des politiques d'autorisation entre les rôles, mais elle améliore également la sécurité en autorisant l'accès aux AWS ressources en fonction des balises correspondantes.

Fonctionnement

  1. L’identité du pod attribue un rôle IAM au pod.

  2. ASCP utilise ce rôle pour s'authentifier auprès de. Services AWS

  3. S'il est autorisé, l'ASCP récupère les secrets demandés et les met à la disposition du Pod.

Pour plus d’informations, consultez Comprendre le l’identité du pod Amazon EKS dans le Guide de l’utilisateur Amazon EKS.

Prérequis

Important

L’identité du pod n’est prise en charge que pour Amazon EKS dans le cloud. Il n'est pas pris en charge pour Amazon EKS Anywhere Red Hat OpenShift Service on AWS, ni pour les clusters Kubernetes autogérés sur les instances Amazon. EC2

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

  • Accès à un AWS CLI cluster Amazon EKS via kubectl

  • Accès à deux Comptes AWS (pour un accès entre comptes)

Installer l’agent d’identité du pod Amazon EKS

Pour utiliser l’identité du pod avec votre cluster, vous devez installer le module complémentaire Agent d’identité du pod Amazon EKS.

Installer l’agent d’identité du pod
  • Installez le module complémentaire Pod Identity Agent sur votre cluster :

    eksctl create addon \ --name eks-pod-identity-agent \ --cluster clusterName \ --region region

Configurer l’ASCP avec l’identité du pod

  1. Créez une politique d'autorisation qui accorde secretsmanager:GetSecretValue une secretsmanager:DescribeSecret autorisation aux secrets auxquels le Pod a besoin pour accéder. Pour un exemple de politique, consultez Exemple : autorisation de lire et de décrire des secrets individuels.

  2. Créez un rôle IAM qui peut être assumé par le principal de service Amazon EKS pour l’identité du pod :

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "pods.eks.amazonaws.com" }, "Action": [ "sts:AssumeRole", "sts:TagSession" ] } ] }

    Associez la politique IAM au rôle :

    aws iam attach-role-policy \ --role-name MY_ROLE \ --policy-arn POLICY_ARN
  3. Créez une association d’identité du pod. Par exemple, consultez Créer une association d’identité du pod dans le Guide de l’utilisateur Amazon EKS.

  4. Créez le SecretProviderClass qui spécifie les secrets à monter dans le Pod :

    kubectl apply -f https://raw.githubusercontent.com/aws/secrets-store-csi-driver-provider-aws/main/examples/ExampleSecretProviderClass-PodIdentity.yaml

    La principale différence dans SecretProviderClass entre IRSA et l’identité du pod réside dans le paramètre facultatif usePodIdentity. Il s’agit d’un champ facultatif qui détermine l’approche d’authentification. Lorsqu’il n’est pas spécifié, les rôles IAM pour les comptes de service (IRSA) sont utilisés par défaut.

    • Pour utiliser l’identité du pod EKS, utilisez l’une des valeurs suivantes : "true", "True", "TRUE", "t", "T".

    • Pour utiliser IRSA de manière explicite, définissez l’une des valeurs suivantes : "false", "False", "FALSE", "f", or "F".

  5. Déployez le pod qui contient les secrets sous /mnt/secrets-store :

    kubectl apply -f https://raw.githubusercontent.com/aws/secrets-store-csi-driver-provider-aws/main/examples/ExampleDeployment-PodIdentity.yaml
  6. Si vous utilisez un cluster Amazon EKS privé, assurez-vous que le VPC dans lequel se trouve le cluster possède un AWS STS point de terminaison. 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 .

Vérifier le montage du secret

Pour vérifier que le secret est correctement monté, exécutez la commande suivante :

kubectl exec -it $(kubectl get pods | awk '/pod-identity-deployment/{print $1}' | head -1) -- cat /mnt/secrets-store/MySecret
Pour configurer Amazon EKS Pod Identity afin d'accéder aux secrets dans Secrets Manager
  1. Créez une politique d'autorisation qui accorde secretsmanager:GetSecretValue une secretsmanager:DescribeSecret autorisation aux secrets auxquels le Pod a besoin pour accéder. Pour un exemple de politique, consultez Exemple : autorisation de lire et de décrire des secrets individuels.

  2. Créez un secret dans Secrets Manager, si vous n'en avez pas déjà un.

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

    kubectl get pods
  2. Pour décrire le Pod, dans la commande suivante, PODID utilisez l'ID du Pod indiqué dans les Pods que vous avez 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/PODID
Pour voir les erreurs pour l'ASCP
  • Pour obtenir plus d'informations dans les journaux du fournisseur, utilisez la commande suivante pour PODID utiliser l'ID du module csi-secrets-store-provider-aws.

    kubectl -n kube-system get pods kubectl -n kube-system logs pod/PODID