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.
Configurer les autorisations ACK
ACK a besoin 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 fonctionne IAM avec ACK
ACK utilise les 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 capacité 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 qui peuvent être mappés à des espaces de noms ou à des ressources spécifiques. Ces rôles prévalent sur le rôle de capacité pour les ressources de leur périmètre.
Lorsque ACK doit créer ou gérer une ressource, il détermine le rôle IAM à utiliser :
-
Vérifiez si et IAMRoleSelector correspond à l'espace de noms de la ressource
-
Si une correspondance est trouvée, supposez que le rôle IAM
-
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.
Pour commencer : configuration simple des autorisations
Pour le développement, les tests ou des 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 débutez avec ACK
-
Toutes les ressources sont sur le même AWS compte
-
Une seule équipe gère toutes les ressources ACK
-
Vous êtes sûr que tous les utilisateurs d'ACK disposent des mêmes autorisations
Meilleures pratiques de production : Sélecteurs de rôles IAM
Pour les environnements de production, utilisez les sélecteurs de rôles IAM pour implémenter l'accès au 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 sts:AssumeRole des sts:TagSession autorisations nécessaires pour assumer les rôles spécifiques au service. Vous n'avez pas besoin d'ajouter d'autorisations de AWS service (telles que 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 les autorisations directes (en ajoutant des autorisations de service au rôle de capacité) lorsque :
-
Vous débutez et souhaitez la configuration la plus simple
-
Toutes les ressources se trouvent dans le même compte que votre cluster
-
Vous avez des exigences d'autorisation 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 nécessitent des 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é du moindre privilège
Vous pouvez commencer par des autorisations directes et migrer vers les sélecteurs de rôles IAM ultérieurement en fonction de l'évolution de vos besoins.
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 indiquant quel espace de noms utilise quel rôle
-
Cross-account support : requis pour gérer les ressources de plusieurs comptes
-
Séparation des préoccupations : différents services ou environnements jouent 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 qu'il assume 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éation IAMRoleSelector
Associez 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éation de ressources dans l'espace de noms mappé
Les ressources de l's3-resourcesespace de 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
Multi-account gestion
Utilisez les sélecteurs de rôles IAM pour gérer les ressources de plusieurs AWS comptes.
Étape 1 : Création d'un rôle IAM multicompte
Dans le compte cible (444455556666), créez un rôle qui approuve le 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 à ce rôle des autorisations spécifiques au service.
É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éation IAMRoleSelector
Associez le rôle inter-comptes à 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'productionespace de 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 des 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 |
|---|---|
|
|
L'ARN de la capacité EKS à l'origine de la demande |
|
|
L'espace de noms Kubernetes de la ressource en cours de gestion |
|
|
Le groupe d'API Kubernetes de la ressource (par exemple,) |
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 l'espace 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 par 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, notamment le mappage des rôles entre comptes, la sélection de rôles limitée à l'espace de noms et des exemples supplémentaires, consultez Granular IAM Roles sur le site Web d'ACK.
Étapes suivantes
-
Concepts de l'ACK- Comprendre les concepts ACK et le cycle de vie des ressources
-
Considérations relatives à la sécurité pour les fonctionnalités EKS- Comprendre les meilleures pratiques en matière de sécurité en matière de fonctionnalités