Configurer les autorisations ACK - Amazon EKS

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.

Configurer les autorisations ACK

ACK nécessite des autorisations IAM pour créer et gérer AWS des ressources en votre nom. Cette rubrique explique comment IAM fonctionne avec ACK et fournit des conseils sur la configuration des autorisations pour différents cas d'utilisation.

Comment IAM travaille avec ACK

ACK utilise des rôles IAM pour s'authentifier auprès de vos ressources AWS et effectuer des actions sur celles-ci. Il existe deux manières de fournir des autorisations à ACK :

Rôle de capacité : rôle IAM que vous fournissez lors de la création de la fonctionnalité ACK. Ce rôle est utilisé par défaut pour toutes les opérations ACK.

Sélecteurs de rôles IAM : rôles IAM supplémentaires pouvant être mappés à des espaces de noms ou à des ressources spécifiques. Ces rôles remplacent le rôle de capacité pour les ressources relevant de leur champ d'application.

Lorsqu'ACK doit créer ou gérer une ressource, il détermine le rôle IAM à utiliser :

  1. Vérifiez si un IAMRole sélecteur correspond à l'espace de noms de la ressource

  2. Si une correspondance est trouvée, supposons que le rôle IAM

  3. Sinon, utilisez le rôle de capacité

Cette approche permet une gestion flexible des autorisations, qu'il s'agisse de configurations simples à rôle unique ou de configurations complexes impliquant plusieurs comptes et plusieurs équipes.

Mise en route : configuration simple des autorisations

Pour le développement, les tests ou les cas d'utilisation simples, vous pouvez ajouter toutes les autorisations de service nécessaires directement au rôle de capacité.

Cette approche fonctionne bien lorsque :

  • Vous commencez à utiliser ACK

  • Toutes les ressources se trouvent dans le même AWS compte

  • Une seule équipe gère toutes les ressources de l'ACK

  • Vous êtes sûr que tous les utilisateurs d'ACK ont les mêmes autorisations

Bonnes pratiques de production : sélecteurs de rôles IAM

Pour les environnements de production, utilisez les sélecteurs de rôle IAM pour implémenter l'accès avec le moindre privilège et l'isolation au niveau de l'espace de noms.

Lorsque vous utilisez des sélecteurs de rôle IAM, le rôle de capacité n'a besoin que d'sts:TagSessionautorisations pour assumer sts:AssumeRole les rôles spécifiques au service. Vous n'avez pas besoin d'ajouter d'autorisations de AWS service (comme S3 ou RDS) au rôle de capacité lui-même. Ces autorisations sont accordées aux rôles IAM individuels assumés par le rôle de capacité.

Choix entre les modèles d'autorisation :

Utilisez des autorisations directes (ajout d'autorisations de service au rôle de capacité) lorsque :

  • Vous êtes sur le point de démarrer et vous souhaitez la configuration la plus simple

  • Toutes les ressources se trouvent dans le même compte que votre cluster

  • Vous avez des exigences en matière d'autorisations administratives à l'échelle du cluster

  • Toutes les équipes peuvent partager les mêmes autorisations

Utilisez les sélecteurs de rôles IAM lorsque :

  • Gestion des ressources sur plusieurs AWS comptes

  • Des équipes ou des espaces de noms différents ont besoin d'autorisations différentes

  • Vous avez besoin d'un contrôle d'accès précis par espace de noms

  • Vous souhaitez suivre les pratiques de sécurité fondées sur le principe du moindre privilège

Vous pouvez commencer par des autorisations directes et migrer vers les sélecteurs de rôle IAM ultérieurement à mesure que vos besoins augmentent.

Pourquoi utiliser les sélecteurs de rôles IAM en production :

  • Privilège minimal : chaque espace de noms ne reçoit que les autorisations dont il a besoin

  • Isolement de l'équipe : l'équipe A ne peut pas utiliser accidentellement les autorisations de l'équipe B

  • Audit simplifié : mappage clair de l'espace de noms qui utilise quel rôle

  • Support multicompte : nécessaire pour gérer les ressources de plusieurs comptes

  • Séparation des préoccupations : différents services ou environnements utilisent des rôles différents

Configuration de base du sélecteur de rôle IAM

Étape 1 : créer un rôle IAM spécifique au service

Créez un rôle IAM avec des autorisations pour des AWS services spécifiques :

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:*" ], "Resource": "*" } ] }

Configurez la politique de confiance pour permettre au rôle de capacité de l'assumer :

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ACKCapabilityRole" }, "Action": ["sts:AssumeRole", "sts:TagSession"] } ] }

Étape 2 : Accorder AssumeRole l'autorisation à Capability Role

Ajoutez l'autorisation au rôle de capacité pour assumer le rôle spécifique au service :

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["sts:AssumeRole", "sts:TagSession"], "Resource": "arn:aws:iam::111122223333:role/ACK-S3-Role" } ] }

Étape 3 : créer un IAMRole sélecteur

Mappez le rôle IAM à un espace de noms :

apiVersion: services.k8s.aws/v1alpha1 kind: IAMRoleSelector metadata: name: s3-namespace-config spec: arn: arn:aws:iam::111122223333:role/ACK-S3-Role namespaceSelector: names: - s3-resources

Étape 4 : créer des ressources dans l'espace de noms mappé

Les ressources de l'espace de s3-resources noms utilisent automatiquement le rôle spécifié :

apiVersion: s3.services.k8s.aws/v1alpha1 kind: Bucket metadata: name: my-bucket namespace: s3-resources spec: name: my-production-bucket

Gestion de plusieurs comptes

Utilisez les sélecteurs de rôle IAM pour gérer les ressources de plusieurs AWS comptes.

Étape 1 : créer un rôle IAM entre comptes

Dans le compte cible (444455556666), créez un rôle qui fait confiance au rôle de capacité du compte source :

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ACKCapabilityRole" }, "Action": ["sts:AssumeRole", "sts:TagSession"] } ] }

Associez des autorisations spécifiques au service à ce rôle.

Étape 2 : Accorder AssumeRole l'autorisation

Dans le compte source (111122223333), autorisez le rôle de capacité à assumer le rôle de compte cible :

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["sts:AssumeRole", "sts:TagSession"], "Resource": "arn:aws:iam::444455556666:role/ACKTargetAccountRole" } ] }

Étape 3 : créer un IAMRole sélecteur

Associez le rôle multicompte à un espace de noms :

apiVersion: services.k8s.aws/v1alpha1 kind: IAMRoleSelector metadata: name: production-account-config spec: arn: arn:aws:iam::444455556666:role/ACKTargetAccountRole namespaceSelector: names: - production

Étape 4 : Création de ressources

Les ressources de l'espace de production noms sont créées dans le compte cible :

apiVersion: s3.services.k8s.aws/v1alpha1 kind: Bucket metadata: name: my-bucket namespace: production spec: name: my-cross-account-bucket

Balises de session

La fonctionnalité EKS ACK définit automatiquement les balises de session pour toutes les demandes AWS d'API. Ces balises permettent un contrôle d'accès et un audit précis en identifiant la source de chaque demande.

Tags de session disponibles

Les balises de session suivantes sont incluses dans chaque appel AWS d'API effectué par ACK :

Clé de tag Description

eks:eks-capability-arn

L'ARN de la capacité EKS à l'origine de la demande

eks:kubernetes-namespace

L'espace de noms Kubernetes de la ressource gérée

eks:kubernetes-api-group

Le groupe d'API Kubernetes de la ressource (par exemple,) s3.services.k8s.aws

Utilisation de balises de session pour le contrôle d'accès

Vous pouvez utiliser ces balises de session dans les conditions de politique IAM pour limiter les ressources qu'ACK peut gérer. Cela fournit une couche de sécurité supplémentaire au-delà des sélecteurs de rôles IAM basés sur des espaces de noms.

Exemple : Restreindre par espace de noms

Autorisez ACK à créer des compartiments S3 uniquement lorsque la demande provient de l'productionespace de noms :

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:CreateBucket", "Resource": "*", "Condition": { "StringEquals": { "aws:PrincipalTag/eks:kubernetes-namespace": "production" } } } ] }

Exemple : Restreindre en fonction de la capacité

Autoriser les actions uniquement à partir d'une fonctionnalité ACK spécifique :

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:*", "Resource": "*", "Condition": { "StringEquals": { "aws:PrincipalTag/eks:eks-capability-arn": "arn:aws:eks:us-west-2:111122223333:capability/my-cluster/ack/my-ack" } } } ] }
Note

Les balises de session sont différentes de l'ACK autogéré, qui ne définit pas ces balises par défaut. Cela permet un contrôle d'accès plus granulaire grâce à la fonctionnalité gérée.

Modèles de sélection de rôles IAM avancés

Pour une configuration avancée, y compris les sélecteurs d'étiquettes, le mappage des rôles spécifiques aux ressources et des exemples supplémentaires, consultez la documentation ACK IRSA.

Étapes suivantes