Étape 1 : configurer le cluster Amazon EKS et configurer les autorisations IAM - Amazon Keyspaces (pour Apache Cassandra)

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.

Étape 1 : configurer le cluster Amazon EKS et configurer les autorisations IAM

Configurez le cluster Amazon EKS et créez les ressources IAM nécessaires pour permettre à un compte de service Amazon EKS de se connecter à votre table Amazon Keyspaces
  1. Créez un fournisseur Open ID Connect (OIDC) pour le cluster Amazon EKS. Cela est nécessaire pour utiliser les rôles IAM pour les comptes de service. Pour plus d'informations sur les fournisseurs OIDC et sur la façon de les créer, consultez la section Création d'un fournisseur OIDC IAM pour votre cluster dans le guide de l'utilisateur Amazon EKS.

    1. Créez votre fournisseur d'identité OIDC IAM pour votre cluster avec la commande suivante. Cet exemple suppose que le nom de votre cluster estmy-eks-cluster. Si vous avez un cluster portant un nom différent, pensez à le mettre à jour dans toutes les futures commandes.

      eksctl utils associate-iam-oidc-provider --cluster my-eks-cluster --approve
    2. Vérifiez que le fournisseur d'identité OIDC a été enregistré auprès d'IAM à l'aide de la commande suivante.

      aws iam list-open-id-connect-providers --region aws-region

      La sortie doit ressembler à ceci. Prenez note du nom de ressource Amazon (ARN) de l'OIDC, vous en aurez besoin à l'étape suivante lorsque vous créerez une politique de confiance pour le compte de service.

      { "OpenIDConnectProviderList": [ .. { "Arn": "arn:aws:iam::111122223333:oidc-provider/oidc.eks.aws-region.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE" } ] }
  2. Créez un compte de service pour le cluster Amazon EKS. Les comptes de service fournissent une identité pour les processus qui s'exécutent dans un Pod. Un Pod est l'objet Kubernetes le plus petit et le plus simple que vous puissiez utiliser pour déployer une application conteneurisée. Créez ensuite un rôle IAM que le compte de service peut assumer pour obtenir des autorisations d'accès aux ressources. Vous pouvez accéder à n'importe quel AWS service à partir d'un Pod configuré pour utiliser un compte de service pouvant assumer un rôle IAM avec des autorisations d'accès à ce service.

    1. Créez un nouvel espace de noms pour le compte de service. Un espace de noms permet d'isoler les ressources du cluster créées pour ce didacticiel. Vous pouvez créer un nouvel espace de noms à l'aide de la commande suivante.

      kubectl create namespace my-eks-namespace
    2. Pour utiliser un espace de noms personnalisé, vous devez l'associer à un profil Fargate. Le code suivant en est un exemple.

      eksctl create fargateprofile \ --cluster my-eks-cluster \ --name my-fargate-profile \ --namespace my-eks-namespace \ --labels *=*
    3. Créez un compte de service dont le nom figure my-eks-serviceaccount dans l'espace de noms my-eks-namespace de votre cluster Amazon EKS à l'aide de la commande suivante.

      cat >my-serviceaccount.yaml <<EOF apiVersion: v1 kind: ServiceAccount metadata: name: my-eks-serviceaccount namespace: my-eks-namespace EOF kubectl apply -f my-serviceaccount.yaml
    4. Exécutez la commande suivante pour créer un fichier de politique de confiance qui indique au rôle IAM de faire confiance à votre compte de service. Cette relation de confiance est requise avant qu'un mandant puisse assumer un rôle. Vous devez apporter les modifications suivantes au fichier :

      • Pour lePrincipal, entrez l'ARN renvoyé par IAM à la list-open-id-connect-providers commande. L'ARN contient votre numéro de compte et votre région.

      • Dans l'conditioninstruction, remplacez le Région AWS et l'identifiant OIDC.

      • Vérifiez que le nom du compte de service et l'espace de noms sont corrects.

      Vous devez joindre le fichier de politique de confiance à l'étape suivante lorsque vous créez le rôle IAM.

      cat >trust-relationship.json <<EOF { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::111122223333:oidc-provider/oidc.eks.aws-region.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "oidc.eks.aws-region.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:sub": "system:serviceaccount:my-eks-namespace:my-eks-serviceaccount", "oidc.eks.aws-region.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:aud": "sts.amazonaws.com" } } } ] } EOF

      Facultatif : vous pouvez également ajouter plusieurs entrées dans les StringLike conditions StringEquals ou pour permettre à plusieurs comptes de service ou espaces de noms d'assumer le rôle. Pour autoriser votre compte de service à assumer un rôle IAM dans un autre AWS compte, consultez la section Autorisations IAM entre comptes dans le guide de l'utilisateur Amazon EKS.

  3. Créez un rôle IAM avec le nom my-iam-role que le compte de service Amazon EKS doit assumer. Joignez le fichier de politique de confiance créé lors de la dernière étape au rôle. La politique de confiance spécifie le compte de service et le fournisseur OIDC auxquels le rôle IAM peut faire confiance.

    aws iam create-role --role-name my-iam-role --assume-role-policy-document file://trust-relationship.json --description "EKS service account role"
  4. Attribuez les autorisations du rôle IAM à Amazon Keyspaces en joignant une politique d'accès.

    1. Joignez une politique d'accès pour définir les actions que le rôle IAM peut effectuer sur des ressources Amazon Keyspaces spécifiques. Pour ce didacticiel, nous utilisons la politique AWS géréeAmazonKeyspacesFullAccess, car notre application va écrire des données dans votre table Amazon Keyspaces. À titre de bonne pratique, il est toutefois recommandé de créer des politiques d'accès personnalisées qui mettent en œuvre le principe du moindre privilège. Pour plus d’informations, consultez Comment fonctionne Amazon Keyspaces avec IAM.

      aws iam attach-role-policy --role-name my-iam-role --policy-arn=arn:aws:iam::aws:policy/AmazonKeyspacesFullAccess

      Vérifiez que la politique a été correctement attachée au rôle IAM à l'aide de l'instruction suivante.

      aws iam list-attached-role-policies --role-name my-iam-role

      La sortie doit ressembler à ceci.

      { "AttachedPolicies": [ { "PolicyName": "AmazonKeyspacesFullAccess", "PolicyArn": "arn:aws:iam::aws:policy/AmazonKeyspacesFullAccess" } ] }
    2. Annotez le compte de service avec l'Amazon Resource Name (ARN) du rôle IAM qu'il peut assumer. Assurez-vous de mettre à jour l'ARN du rôle avec votre identifiant de compte.

      kubectl annotate serviceaccount -n my-eks-namespace my-eks-serviceaccount eks.amazonaws.com/role-arn=arn:aws:iam::111122223333:role/my-iam-role
  5. Vérifiez que le rôle IAM et le compte de service sont correctement configurés.

    1. Vérifiez que la politique de confiance du rôle IAM est correctement configurée à l'aide de l'instruction suivante.

      aws iam get-role --role-name my-iam-role --query Role.AssumeRolePolicyDocument

      La sortie doit ressembler à ceci.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::111122223333:oidc-provider/oidc.eks.aws-region.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "oidc.eks.aws-region/id/EXAMPLED539D4633E53DE1B71EXAMPLE:aud": "sts.amazonaws.com", "oidc.eks.aws-region.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:sub": "system:serviceaccount:my-eks-namespace:my-eks-serviceaccount" } } } ] }
    2. Vérifiez que le compte de service Amazon EKS est annoté avec le rôle IAM.

      kubectl describe serviceaccount my-eks-serviceaccount -n my-eks-namespace

      La sortie doit ressembler à ceci.

      Name: my-eks-serviceaccount Namespace:my-eks-namespace Labels: <none> Annotations: eks.amazonaws.com/role-arn: arn:aws:iam::111122223333:role/my-iam-role Image pull secrets: <none> Mountable secrets: <none> Tokens: <none> [...]

Après avoir créé le compte de service Amazon EKS, le rôle IAM et configuré les relations et les autorisations requises, passez àÉtape 2 : Configuration de l'application.