Considérations relatives à la sécurité relatives aux fonctionnalités EKS - 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.

Considérations relatives à la sécurité relatives aux fonctionnalités EKS

Cette rubrique aborde les principales considérations de sécurité relatives aux fonctionnalités EKS, notamment la configuration des rôles IAM, les autorisations Kubernetes et les modèles architecturaux pour les déploiements multi-clusters et la gestion des ressources entre comptes. AWS

Les fonctionnalités d'EKS utilisent une combinaison de rôles IAM, d'entrées d'accès EKS et de Kubernetes RBAC pour fournir un accès sécurisé aux AWS services, aux ressources Kubernetes du cluster et des intégrations avec Secrets Manager et d'autres services. AWS CodeConnections AWS AWS

Capacité : rôle IAM

Lorsque vous créez une fonctionnalité, vous fournissez un rôle de fonctionnalité IAM qu'EKS utilise pour effectuer des actions en votre nom. Ce rôle doit :

Il est recommandé de prendre en compte l'étendue des privilèges requis pour votre cas d'utilisation spécifique et d'accorder uniquement les autorisations nécessaires pour répondre à vos exigences. Par exemple, lorsque vous utilisez la fonctionnalité EKS pour Kube Resource Orchestrator, aucune autorisation IAM peut être requise, tandis que lorsque vous utilisez la fonctionnalité EKS pour les AWS contrôleurs pour Kubernetes, vous pouvez accorder un accès complet à un ou plusieurs services. AWS

Important

Bien que certains cas d'utilisation puissent justifier l'utilisation de privilèges administratifs étendus, suivez le principe du moindre privilège en n'accordant que les autorisations IAM minimales requises pour votre cas d'utilisation spécifique, en limitant l'accès à des ressources spécifiques à l'aide de clés ARNs et de conditions plutôt que d'utiliser des autorisations génériques.

Pour des informations détaillées sur la création et la configuration des rôles IAM liés aux fonctionnalités, consultezFonctionnalité Amazon EKS : rôle IAM.

Entrées d'accès EKS

Lorsque vous créez une fonctionnalité avec un rôle IAM, Amazon EKS crée automatiquement une entrée d'accès pour ce rôle sur votre cluster. Cette entrée d'accès accorde à la base de capacités Kubernetes l'autorisation de fonctionner.

Note

Des entrées d'accès sont créées pour le cluster dans lequel la fonctionnalité est créée. Pour les déploiements d'Argo CD vers des clusters distants, vous devez créer des entrées d'accès sur ces clusters avec les autorisations appropriées pour que l'Argo CD puisse déployer et gérer des applications.

L'entrée d'accès inclut :

  • Le rôle IAM (ARN) en tant que principal

  • Politiques d'entrée d'accès spécifiques aux fonctionnalités qui accordent des autorisations Kubernetes de base

  • Étendue appropriée (à l'échelle du cluster ou étendue à l'espace de noms) en fonction du type de fonctionnalité

Note

Pour Argo CD, les autorisations étendues à l'espace de noms sont accordées à l'espace de noms spécifié dans la configuration des fonctionnalités (par défaut, c'est). argocd

Politiques de saisie d'accès par défaut par fonctionnalité

Chaque type de capacité accorde au rôle de capacité les autorisations requises, en définissant différentes politiques d'entrée d'accès par défaut comme suit :

kro
  • arn:aws:eks::aws:cluster-access-policy/AmazonEKSKROPolicy(délimité par cluster)

    Accorde les autorisations nécessaires pour surveiller, gérer ResourceGraphDefinitions et créer des instances de ressources personnalisées définies par RGDs.

ACK
  • arn:aws:eks::aws:cluster-access-policy/AmazonEKSACKPolicy(délimité par cluster)

    Accorde les autorisations nécessaires pour créer, lire, mettre à jour et supprimer des ressources personnalisées ACK dans tous les espaces de noms.

Argo CD
  • arn:aws:eks::aws:cluster-access-policy/AmazonEKSArgoCDClusterPolicy(délimité par cluster)

    Accorde des autorisations au niveau du cluster pour qu'Argo CD découvre des ressources et gère les objets délimités au cluster.

  • arn:aws:eks::aws:cluster-access-policy/AmazonEKSArgoCDPolicy(limité à l'espace de noms)

    Accorde des autorisations au niveau de l'espace de noms permettant à Argo CD de déployer et de gérer des applications. Limité à l'espace de noms spécifié dans la configuration des fonctionnalités (par défaut). argocd

Voir Vérification des autorisations des stratégies d’accès pour des informations plus détaillées.

Autorisations Kubernetes supplémentaires

Certaines fonctionnalités peuvent nécessiter des autorisations Kubernetes supplémentaires au-delà des politiques de saisie d'accès par défaut. Vous pouvez accorder ces autorisations en utilisant l'une des méthodes suivantes :

  • Politiques de saisie d'accès : associez des politiques gérées supplémentaires à l'entrée d'accès

  • Kubernetes RBAC : création Role de ClusterRole liaisons pour l'utilisateur Kubernetes de la fonctionnalité

Autorisations du lecteur secret ACK

Certains contrôleurs ACK doivent lire les secrets de Kubernetes pour récupérer des données sensibles telles que les mots de passe des bases de données. Les contrôleurs ACK suivants nécessitent un accès secret en lecture :

  • acm, acmpca, documentdb, memorydb, mq, rds, secretsmanager

Pour accorder des autorisations de lecture secrète, procédez comme suit :

  1. Associer la politique d'arn:aws:eks::aws:cluster-access-policy/AmazonEKSSecretReaderPolicyaccès à l'entrée d'accès de la fonctionnalité

  2. Étendre la politique à des espaces de noms spécifiques où les ressources ACK référenceront des secrets ou accorderont un accès à l'échelle du cluster

Important

Les autorisations de lecture secrète sont limitées aux espaces de noms que vous spécifiez lors de l'association de la politique d'entrée d'accès. Cela vous permet de limiter les secrets auxquels la fonctionnalité peut accéder.

autorisations de ressources arbitraires kro

kro a besoin d'autorisations pour créer et gérer les ressources définies dans votre ResourceGraphDefinitions. Par défaut, Kro ne peut que se surveiller et RGDs se gérer lui-même.

Pour accorder à Kro l'autorisation de créer des ressources, procédez comme suit :

Option 1 : accéder aux politiques d'entrée

Associez des politiques d'entrée d'accès prédéfinies telles que AmazonEKSAdminPolicy ou AmazonEKSEditPolicy à l'entrée d'accès de la fonctionnalité.

Option 2 : Kubernetes RBAC

Créez un ClusterRoleBinding qui accorde à l'utilisateur Kubernetes de la fonctionnalité les autorisations nécessaires :

apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: kro-cluster-admin subjects: - kind: User name: arn:aws:sts::111122223333:assumed-role/my-kro-role/kro apiGroup: rbac.authorization.k8s.io roleRef: kind: ClusterRole name: cluster-admin apiGroup: rbac.authorization.k8s.io
Note

Le nom d'utilisateur Kubernetes pour kro suit le modèle suivant : arn:aws:sts::ACCOUNT_ID:assumed-role/ROLE_NAME/kro

Le nom de session /kro est automatiquement défini par la fonctionnalité EKS kro.

Autorisations IAM requises par fonctionnalité

kro (Kube Resource Orchestrator)

Aucune autorisation IAM n'est requise. Vous pouvez créer un rôle de capacité sans politique attachée. Kro nécessite uniquement les autorisations RBAC de Kubernetes.

ACK (AWS contrôleurs pour Kubernetes)

Nécessite des autorisations pour gérer les AWS ressources qu'ACK créera et gérera. Vous devez définir les autorisations pour des services, des actions et des ressources spécifiques en fonction de vos besoins. Pour des informations détaillées sur la configuration des autorisations ACK, y compris les meilleures pratiques de production avec les sélecteurs de rôle IAM, consultez. Configurer les autorisations ACK

Argo CD

Aucune autorisation IAM n'est requise par défaut. Des autorisations facultatives peuvent être nécessaires pour :

  • AWS Secrets Manager : si vous stockez les informations d'identification du référentiel Git dans Secrets Manager

  • AWS CodeConnections: en cas d'utilisation CodeConnections pour l'authentification du dépôt Git

  • Amazon ECR : si vous utilisez des diagrammes Helm stockés au format OCI dans Amazon ECR

Bonnes pratiques de sécurité

Le moindre privilège de l'IAM

Accordez à vos ressources de capacité uniquement les autorisations requises pour votre cas d'utilisation. Cela ne signifie pas que vous ne pouvez pas accorder des autorisations administratives étendues à vos fonctionnalités si nécessaire. Dans de tels cas, vous devez gérer l'accès à ces ressources de manière appropriée.

Rôles liés aux capacités :

  • ACK : Dans la mesure du possible, limitez les autorisations IAM aux AWS services et ressources spécifiques dont vos équipes ont besoin, en fonction des cas d'utilisation et des exigences

  • Argo CD : Restreindre l'accès à des référentiels Git et à des espaces de noms Kubernetes spécifiques

  • kro : nécessite un rôle de capacité pour la politique de confiance, mais aucune autorisation IAM n'est requise (utilise uniquement le cluster RBAC)

Exemple : au lieu de"Resource": "*", spécifiez des modèles pour des ressources ou des groupes de ressources spécifiques.

"Resource": [ "arn:aws:s3:::my-app-*", "arn:aws:rds:us-west-2:111122223333:db:prod-*" ]

Utilisez les clés de condition IAM pour restreindre davantage l'accès :

"Condition": { "StringEquals": { "aws:ResourceTag/Environment": "production" } }

Pour plus d'informations sur la configuration IAM, consultez la section des considérations relatives à chaque fonctionnalité.

Isolation de l'espace de noms pour les secrets d'Argo CD

La fonctionnalité Argo CD gérée a accès à tous les secrets Kubernetes dans son espace de noms configuré (par défaut :). argocd Pour maintenir une posture de sécurité optimale, suivez les pratiques d'isolation des espaces de noms suivantes :

  • Conservez uniquement les secrets relatifs à Argo CD dans l'espace de noms Argo CD

  • Évitez de stocker des secrets d'application indépendants dans le même espace de noms qu'Argo CD

  • Utilisez des espaces de noms distincts pour les secrets d'application qui ne sont pas nécessaires pour les opérations sur Argo CD

Cette isolation garantit que l'accès secret d'Argo CD est limité aux seules informations d'identification dont il a besoin pour l'authentification du référentiel Git et pour d'autres opérations spécifiques à Argo CD.

RBAC Kubernetes

Contrôlez les utilisateurs et les comptes de service autorisés à créer et à gérer les ressources de fonctionnalités. Il est recommandé de déployer des ressources de capacité dans des espaces de noms dédiés avec des politiques RBAC appropriées.

Exemple : rôle RBAC compatible avec ACK, permettant de gérer les ressources du compartiment S3 dans l'espace de app-team noms :

apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: ack-s3-manager namespace: app-team rules: - apiGroups: ["s3.services.k8s.aws"] resources: ["buckets"] verbs: ["get", "list", "create", "update", "delete"]

Journaux d’audit

CloudTrail: Toutes les opérations de l'API EKS Capability (création, mise à jour, suppression) sont enregistrées AWS CloudTrail.

Activez la CloudTrail journalisation pour suivre :

  • Qui a créé ou modifié les fonctionnalités

  • Lorsque les configurations des capacités ont changé

  • Quels rôles de capacité sont utilisés

Accès au réseau et points de terminaison VPC

Accès privé à l'API Argo CD

Vous pouvez restreindre l'accès au serveur d'API Argo CD en associant un ou plusieurs points de terminaison VPC au point de terminaison Argo CD hébergé. Cela permet une connectivité privée à l'interface utilisateur et à l'API Argo CD depuis votre VPC sans passer par l'Internet public.

Note

Points de terminaison VPC connectés aux points de terminaison de l'API Argo CD hébergés (à l'aide des fonctionnalités eks). region.amazonaws.com) ne prennent pas en charge les politiques relatives aux points de terminaison VPC.

Déploiement sur des clusters privés

La fonctionnalité Argo CD permet de déployer des applications sur des clusters EKS entièrement privés, offrant ainsi un avantage opérationnel significatif en éliminant le besoin de peering VPC ou de configurations réseau complexes. Cependant, lors de la conception de cette architecture, considérez qu'Argo CD extraira la configuration des référentiels Git (qui peuvent être publics) et l'appliquera à vos clusters privés.

Assurez-vous de :

  • Utiliser des référentiels Git privés pour les charges de travail sensibles

  • Mettre en œuvre des contrôles d'accès et une authentification appropriés au référentiel Git

  • Vérifiez et approuvez les modifications par le biais de pull requests avant de les fusionner

  • Envisagez d'utiliser les fenêtres de synchronisation d'Argo CD pour contrôler le moment où les déploiements peuvent avoir lieu

  • Surveillez les journaux d'audit d'Argo CD pour détecter les modifications de configuration non autorisées

Conformité d’

Les fonctionnalités d'EKS sont entièrement gérées et possèdent les certifications de conformité d'Amazon EKS.

Pour obtenir des informations de conformité actuelles, consultez la section AWS Services concernés par programme de conformité.

Étapes suivantes