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 d'Argo CD
La fonctionnalité gérée par Argo CD s'intègre à AWS Identity Center pour l'authentification et utilise des rôles RBAC intégrés pour l'autorisation. Cette rubrique explique comment configurer les autorisations pour les utilisateurs et les équipes.
Comment fonctionnent les autorisations avec Argo CD
La fonctionnalité Argo CD utilise AWS Identity Center pour l'authentification et fournit trois rôles RBAC intégrés pour l'autorisation.
Lorsqu'un utilisateur accède à Argo CD :
-
Ils s'authentifient à l'aide AWS d'Identity Center (qui peut être fédéré auprès de votre fournisseur d'identité d'entreprise)
-
AWS Identity Center fournit des informations sur les utilisateurs et les groupes à Argo CD
-
Argo CD associe les utilisateurs et les groupes aux rôles RBAC en fonction de votre configuration
-
Les utilisateurs ne voient que les applications et les ressources auxquelles ils sont autorisés à accéder
Rôles RBAC intégrés
La fonctionnalité Argo CD fournit trois rôles intégrés que vous pouvez associer aux utilisateurs et aux groupes AWS d'Identity Center. Il s'agit de rôles de portée mondiale qui contrôlent l'accès aux ressources Argo CD telles que les projets, les clusters et les référentiels.
Important
Les rôles globaux contrôlent l'accès à Argo CD lui-même, et non aux ressources liées au projet, telles que les applications. Les utilisateurs de EDITOR et VIEWER ne peuvent pas voir ou gérer les applications par défaut. Ils ont besoin de rôles de projet pour accéder aux ressources spécifiques au projet. Consultez Rôles du projet et accès délimité par le projet pour plus de détails sur l'octroi de l'accès aux applications et à d'autres ressources liées au projet.
ADMINISTRATEUR
Accès complet à toutes les ressources et à tous les paramètres d'Argo CD :
-
Créez, mettez à jour et supprimez des applications et ApplicationSets dans n'importe quel projet
-
Gérer la configuration d'Argo CD
-
Enregistrez et gérez les clusters cibles de déploiement
-
Configuration de l'accès au référentiel
-
Création et gestion de projets
-
Afficher l'état et l'historique de toutes les demandes
-
Répertorier et accéder à tous les clusters et référentiels
RÉDACTEUR
Peut mettre à jour des projets et configurer les rôles des projets, mais ne peut pas modifier les paramètres globaux d'Argo CD :
-
Mettre à jour les projets existants (impossible de créer ou de supprimer des projets)
-
Configuration des rôles et des autorisations du projet
-
Afficher les clés et certificats GPG
-
Impossible de modifier la configuration globale d'Argo CD
-
Impossible de gérer directement les clusters ou les référentiels
-
Impossible de voir ou de gérer les applications sans rôles dans le projet
SPECTATEUR
Accès en lecture seule aux ressources Argo CD :
-
Afficher les configurations de projet
-
Répertorier tous les projets (y compris les projets auxquels l'utilisateur n'est pas affecté)
-
Afficher les clés et certificats GPG
-
Impossible de répertorier les clusters ou les référentiels
-
Impossible d'apporter des modifications
-
Impossible de voir ou de gérer les applications sans rôles dans le projet
Note
Pour accorder aux utilisateurs EDITOR ou VIEWER l'accès aux applications, un ADMINISTRATEUR ou un ÉDITEUR doit créer des rôles de projet qui associent les groupes Identity Center à des autorisations spécifiques au sein d'un projet.
Rôles du projet et accès délimité par le projet
Les rôles globaux (ADMIN, EDITOR, VIEWER) contrôlent l'accès à Argo CD lui-même. Les rôles de projet contrôlent l'accès aux ressources et aux capacités au sein d'un projet spécifique, notamment :
-
Ressources : applications, informations d'identification du référentiel ApplicationSets, informations d'identification du cluster
-
Fonctionnalités : accès aux journaux, accès exec aux modules de l'application
Comprendre le modèle d'autorisation à deux niveaux :
-
Portée globale : les rôles intégrés déterminent ce que les utilisateurs peuvent faire avec les projets, les clusters, les référentiels et les paramètres d'Argo CD
-
Portée du projet : les rôles du projet déterminent ce que les utilisateurs peuvent faire avec les ressources et les capacités d'un projet spécifique
Autrement dit :
-
Les utilisateurs ADMIN peuvent accéder à toutes les ressources et fonctionnalités du projet sans configuration supplémentaire
-
Les utilisateurs EDITOR et VIEWER doivent se voir attribuer des rôles de projet pour accéder aux ressources et aux capacités du projet
-
Les utilisateurs de l'ÉDITEUR peuvent créer des rôles de projet pour s'accorder, ainsi qu'à d'autres, un accès au sein de projets qu'ils peuvent mettre à jour
Exemple de flux de travail :
-
Un ADMINISTRATEUR associe un groupe Identity Center au rôle EDITOR à l'échelle mondiale
-
Un ADMIN crée un projet pour une équipe
-
L'ÉDITEUR configure les rôles du projet au sein de ce projet pour permettre aux membres de l'équipe d'accéder aux ressources définies dans le cadre du projet.
-
Les membres de l'équipe (qui peuvent avoir un rôle global VIEWER) peuvent désormais voir et gérer les applications de ce projet en fonction de leurs autorisations de rôle dans le projet
Pour plus de détails sur la configuration des rôles du projet, consultezContrôle d'accès basé sur le projet.
Configuration des mappages de rôles
Associez les utilisateurs et les groupes AWS d'Identity Center aux rôles Argo CD lors de la création ou de la mise à jour de la fonctionnalité.
Exemple de mappage des rôles :
{ "rbacRoleMapping": { "ADMIN": ["AdminGroup", "alice@example.com"], "EDITOR": ["DeveloperGroup", "DevOpsTeam"], "VIEWER": ["ReadOnlyGroup", "bob@example.com"] } }
Note
Les noms de rôles distinguent les majuscules des minuscules et doivent être en majuscules (ADMIN, EDITOR, VIEWER).
Important
L'intégration d'EKS Capabilities à AWS Identity Center prend en charge jusqu'à 1 000 identités par fonctionnalité Argo CD. Une identité peut être un utilisateur ou un groupe.
Mettre à jour les mappages de rôles :
aws eks update-capability \ --regionus-east-1\ --cluster-namecluster\ --capability-namecapname\ --endpoint "https://eks.ap-northeast-2.amazonaws.com" \ --role-arn "arn:aws:iam::[.replaceable]111122223333:role/[.replaceable]`EKSCapabilityRole`" \ --configuration '{ "argoCd": { "rbacRoleMappings": { "addOrUpdateRoleMappings": [ { "role": "ADMIN", "identities": [ { "id": "686103e0-f051-7068-b225-e6392b959d9e", "type": "SSO_USER" } ] } ] } } }'
Utilisation du compte administrateur
Le compte administrateur est conçu pour la configuration initiale et les tâches administratives telles que l'enregistrement de clusters et la configuration de référentiels.
Lorsque le compte administrateur est approprié :
-
Configuration et configuration initiales des fonctionnalités
-
Développement en solo ou démonstrations rapides
-
Tâches administratives (enregistrement du cluster, configuration du référentiel, création de projets)
Bonnes pratiques pour le compte administrateur :
-
Ne confiez pas les jetons de compte au contrôle de version
-
Faites pivoter les jetons immédiatement s'ils sont exposés
-
Limitez l'utilisation des jetons de compte aux tâches de configuration et d'administration
-
Définissez des délais d'expiration courts (maximum 12 heures)
-
Seuls 5 jetons de compte peuvent être créés à un moment donné
Quand utiliser plutôt l'accès basé sur le projet :
-
Environnements de développement partagés avec plusieurs utilisateurs
-
Tout environnement similaire à celui de la production
-
Lorsque vous avez besoin de pistes d'audit pour savoir qui a effectué des actions
-
Lorsque vous devez appliquer des restrictions de ressources ou des limites d'accès
Pour les environnements de production et les scénarios multi-utilisateurs, utilisez le contrôle d'accès basé sur le projet avec des rôles RBAC dédiés mappés aux groupes Identity Center. AWS
Contrôle d'accès basé sur le projet
Utilisez Argo CD Projects (AppProject) pour fournir un contrôle d'accès précis et une isolation des ressources aux équipes.
Important
Avant d'affecter des utilisateurs ou des groupes à des rôles spécifiques au projet, vous devez d'abord les associer à un rôle Argo CD global (ADMIN, EDITOR ou VIEWER) dans la configuration des fonctionnalités. Les utilisateurs ne peuvent pas accéder à Argo CD sans mappage global des rôles, même s'ils sont affectés à des rôles de projet.
Envisagez de mapper les utilisateurs au rôle VIEWER de manière globale, puis d'accorder des autorisations supplémentaires via des rôles spécifiques au projet. Cela fournit un accès de base tout en permettant un contrôle précis au niveau du projet.
Les projets fournissent :
-
Restrictions relatives aux sources : limite les référentiels Git pouvant être utilisés
-
Restrictions de destination : limitez les clusters et les espaces de noms pouvant être ciblés
-
Restrictions de ressources : limitez les types de ressources Kubernetes pouvant être déployés
-
Intégration RBAC : associez les projets à des groupes AWS Identity Center ou à des rôles Argo CD
Exemple de projet pour isoler une équipe :
apiVersion: argoproj.io/v1alpha1 kind: AppProject metadata: name: team-a namespace: argocd spec: description: Team A applications # Required: Specify which namespaces this project watches for Applications sourceNamespaces: - argocd # Source restrictions sourceRepos: - https://github.com/myorg/team-a-apps # Destination restrictions destinations: - namespace: team-a-* server: arn:aws:eks:us-west-2:111122223333:cluster/production # Resource restrictions clusterResourceWhitelist: - group: '' kind: Namespace namespaceResourceWhitelist: - group: 'apps' kind: Deployment - group: '' kind: Service - group: '' kind: ConfigMap
Espaces de noms sources
Lorsque vous utilisez la fonctionnalité EKS Argo CD, le spec.sourceNamespaces champ est obligatoire dans AppProject les définitions. Ce champ indique quel espace de noms peut contenir des applications ou ApplicationSets qui font référence à ce projet.
Important
La fonctionnalité EKS Argo CD ne prend en charge qu'un seul espace de noms pour les applications, à savoir l'espace de ApplicationSets noms que vous avez spécifié lors de la création de la fonctionnalité (généralement). argocd Cela diffère de l'Argo CD open source qui prend en charge plusieurs espaces de noms.
AppProject configuration
Tous AppProjects doivent inclure l'espace de noms configuré pour la fonctionnalité dans sourceNamespaces :
apiVersion: argoproj.io/v1alpha1 kind: AppProject metadata: name: team-a-project namespace: argocd spec: description: Applications for Team A # Required: Specify the capability's configured namespace (configuration.argoCd.namespace) sourceNamespaces: - argocd # Must match your capability's namespace configuration # Source repositories this project can deploy from sourceRepos: - 'https://github.com/my-org/team-a-*' # Destination restrictions destinations: - namespace: 'team-a-*' server: arn:aws:eks:us-west-2:111122223333:cluster/my-cluster
Note
Si vous omettez l'espace de noms de la fonctionnalité danssourceNamespaces, les applications ou ApplicationSets dans cet espace de noms ne peuvent pas faire référence à ce projet, ce qui entraîne des échecs de déploiement.
Affecter des utilisateurs à des projets :
Les rôles de projet permettent aux utilisateurs de EDITOR et VIEWER d'accéder aux ressources du projet (applications ApplicationSets, informations d'identification du référentiel et du cluster) et aux fonctionnalités (journaux, exec) du projet. Sans rôles de projet, ces utilisateurs ne peuvent pas accéder à ces ressources même s'ils disposent d'un accès global aux rôles.
Les utilisateurs ADMIN ont accès à toutes les applications sans avoir besoin de rôles de projet.
Exemple : accorder l'accès à l'application aux membres de l'équipe
apiVersion: argoproj.io/v1alpha1 kind: AppProject metadata: name: team-a namespace: argocd spec: # ... project configuration ... sourceNamespaces: - argocd # Project roles grant Application-level access roles: - name: developer description: Team A developers - can manage Applications policies: - p, proj:team-a:developer, applications, *, team-a/*, allow - p, proj:team-a:developer, clusters, get, *, allow # See cluster names in UI groups: - 686103e0-f051-7068-b225-e6392b959d9e # Identity Center group ID - name: viewer description: Team A viewers - read-only Application access policies: - p, proj:team-a:viewer, applications, get, team-a/*, allow - p, proj:team-a:viewer, clusters, get, *, allow # See cluster names in UI groups: - 786203e0-f051-7068-b225-e6392b959d9f # Identity Center group ID
Note
Incluez clusters, get, *, allow les rôles dans le projet pour permettre aux utilisateurs de voir les noms des clusters dans l'interface utilisateur. Sans cette autorisation, le cluster de destination s'affiche comme « inconnu ».
Comprendre les politiques relatives aux rôles du projet :
Le format de la politique est le suivant : p, proj:<project>:<role>, <resource>, <action>, <object>, <allow/deny>
Politiques relatives aux ressources :
-
applications, , team-a/, allow- Accès complet à toutes les applications de l'équipe-un projet -
applications, get, team-a/*, allow- Accès en lecture seule aux applications -
applications, sync, team-a/*, allow- Peut synchroniser les applications mais pas les créer/supprimer -
applications, delete, team-a/*, allow- Peut supprimer des applications (à utiliser avec prudence) -
applicationsets, , team-a/, allow- Accès complet à ApplicationSets -
repositories, *, *, allow- Accès aux informations d'identification du référentiel -
clusters, *, *, allow- Accès aux informations d'identification du cluster
Politiques de capacité :
-
logs, , team-a/, allow- Accès aux journaux des applications -
exec, , team-a/, allow- Accès exécutif aux modules d'applications
Note
Les utilisateurs de l'ÉDITEUR peuvent créer des rôles de projet pour s'octroyer, ainsi qu'à d'autres, des autorisations au sein de projets qu'ils peuvent mettre à jour. Cela permet aux chefs d'équipe de contrôler l'accès aux ressources définies dans le cadre du projet pour leur équipe sans nécessiter l'intervention de l'ADMINISTRATEUR.
Note
Utilisez le groupe Identity Center IDs (et non les noms de groupe) dans le groups champ. Vous pouvez également utiliser Identity Center User IDs pour un accès utilisateur individuel. Retrouvez-les IDs dans la console AWS Identity Center ou à l'aide de la AWS CLI.
Modèles d'autorisation courants
Modèle 1 : équipe d'administration avec accès complet
{ "rbacRoleMapping": { "ADMIN": ["PlatformTeam", "SRETeam"] } }
Les utilisateurs ADMIN peuvent voir et gérer toutes les ressources liées au projet sans configuration supplémentaire.
Schéma 2 : les chefs d'équipe gèrent les projets, les développeurs y accèdent via les rôles du projet
{ "rbacRoleMapping": { "ADMIN": ["PlatformTeam"], "EDITOR": ["TeamLeads"], "VIEWER": ["AllDevelopers"] } }
-
ADMIN crée des projets pour chaque équipe
-
Les chefs d'équipe (EDITOR) configurent les rôles du projet pour permettre à leurs développeurs d'accéder aux ressources du projet (applications ApplicationSets, informations d'identification) et aux fonctionnalités (journaux, exécutifs)
-
Les développeurs (VIEWER) ne peuvent accéder qu'aux ressources et fonctionnalités autorisées par leurs rôles dans le projet
Modèle 3 : accès basé sur l'équipe avec des rôles de projet
-
L'ADMINISTRATEUR crée des projets et cartographie l'équipe mène au rôle d'ÉDITEUR à l'échelle mondiale
-
Les chefs d'équipe (ÉDITEUR) attribuent aux membres de l'équipe des rôles de projet au sein de leurs projets
-
Les membres de l'équipe n'ont besoin que du rôle global VIEWER : les rôles de projet donnent accès aux ressources et aux capacités du projet
{ "rbacRoleMapping": { "ADMIN": ["PlatformTeam"], "EDITOR": ["TeamLeads"], "VIEWER": ["AllDevelopers"] } }
Bonnes pratiques
Utilisez des groupes plutôt que des utilisateurs individuels : associez les groupes AWS Identity Center aux rôles Argo CD plutôt qu'aux utilisateurs individuels pour faciliter la gestion.
Commencez avec le moins de privilèges : commencez par l'accès VIEWER et accordez EDITOR ou ADMIN selon les besoins.
Utilisez des projets pour isoler les équipes : créez des projets distincts AppProjects pour les différentes équipes ou environnements afin de renforcer les limites.
Tirez parti de la fédération Identity Center : configurez AWS Identity Center pour qu'il soit fédéré avec votre fournisseur d'identité d'entreprise afin de centraliser la gestion des utilisateurs.
Révisions d'accès régulières : passez régulièrement en revue les mappages de rôles et les attributions de projets pour garantir des niveaux d'accès appropriés.
Limiter l'accès au cluster : n'oubliez pas qu'Argo CD RBAC contrôle l'accès aux ressources et aux opérations Argo CD, mais ne correspond pas au RBAC Kubernetes. Les utilisateurs disposant d'un accès à Argo CD peuvent déployer des applications sur des clusters auxquels Argo CD a accès. Limitez les clusters auxquels Argo CD peut accéder et utilisez les restrictions de destination du projet pour contrôler où les applications peuvent être déployées.
AWS autorisations de service
Pour utiliser les AWS services directement dans les ressources de l'application (sans créer de ressources de référentiel), associez les autorisations IAM requises au rôle de capacité.
ECR pour les cartes Helm :
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ecr:GetAuthorizationToken", "ecr:BatchCheckLayerAvailability", "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage" ], "Resource": "*" } ] }
CodeCommit référentiels :
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codecommit:GitPull" ], "Resource": "arn:aws:codecommit:region:account-id:repository-name" } ] }
CodeConnections (GitHub GitLab, Bitbucket) :
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codeconnections:UseConnection" ], "Resource": "arn:aws:codeconnections:region:account-id:connection/connection-id" } ] }
Consultez Configuration de l'accès au référentiel pour plus de détails sur l'utilisation de ces intégrations.
Étapes suivantes
-
Travailler avec Argo CD- Apprenez à créer des applications et à gérer les déploiements
-
Concepts d'Argo CD- Comprendre les concepts d'Argo CD, y compris les projets
-
Considérations relatives à la sécurité relatives aux fonctionnalités EKS- Passez en revue les meilleures pratiques de sécurité en termes de fonctionnalités