Ayude a mejorar esta página
Para contribuir a esta guía del usuario, elija el enlace Edit this page on GitHub que se encuentra en el panel derecho de cada página.
Configuración de los permisos de Argo CD
La capacidad administrada de Argo CD se integra con AWS Identity Center para la autenticación y utiliza roles de RBAC integrados para la autorización. En este tema, se explica cómo configurar los permisos para los usuarios y los equipos.
Cómo funcionan los permisos con Argo CD
La capacidad de Argo CD utiliza AWS Identity Center para la autenticación y proporciona tres roles de RBAC integrados para la autorización.
Cuando un usuario accede a Argo CD:
-
Se autentican mediante AWS Identity Center (que puede federarse con su proveedor de identidad corporativa)
-
AWS Identity Center proporciona información sobre los usuarios y grupos a Argo CD
-
Argo CD asigna usuarios y grupos a roles de RBAC en función de su configuración
-
Los usuarios solo ven las aplicaciones y los recursos a los que tienen permiso de acceso
Roles de RBAC integrados
La capacidad de Argo CD proporciona tres roles integrados que se asignan a los usuarios y grupos de AWS Identity Center. Son roles con alcance global que controlan el acceso a recursos de Argo CD, como proyectos, clústeres y repositorios.
importante
Los roles globales controlan el acceso a Argo CD en sí, no a recursos con alcance de proyecto, como las aplicaciones. Los usuarios Editor y Visualizador no pueden ver ni administrar aplicaciones de forma predeterminada; necesitan roles de proyecto para acceder a recursos con alcance de proyecto. Consulte Roles de proyecto y acceso con alcance de proyecto para obtener más información sobre cómo conceder acceso a las aplicaciones y a otros recursos con alcance de proyecto.
ADMIN
Acceso completo a todos los recursos y configuraciones de Argo CD:
-
Crear, actualizar y eliminar aplicaciones y ApplicationSets en cualquier proyecto
-
Administración de la configuración de Argo CD
-
Registro y administración de los clústeres de destino de la implementación
-
Configuración del acceso al repositorio
-
Crear y administrar proyectos
-
Visualización del estado y el historial de todas las aplicaciones
-
Enumerar y acceder a todos los clústeres y repositorios
EDITOR
Puede actualizar proyectos y configurar roles de proyecto, pero no puede modificar la configuración global de Argo CD:
-
Actualizar proyectos existentes (no puede crear ni eliminar proyectos)
-
Configurar roles y permisos de proyecto
-
Ver claves GPG y certificados
-
No puede modificar la configuración global de Argo CD
-
No puede administrar clústeres ni repositorios directamente
-
No puede ver ni administrar aplicaciones sin roles de proyecto
VIEWER
Acceso de solo lectura a los recursos de Argo CD:
-
Ver configuraciones de proyectos
-
Enumerar todos los proyectos (incluidos los proyectos a los que el usuario no está asignado)
-
Ver claves GPG y certificados
-
No puede enumerar clústeres ni repositorios
-
Imposibilidad de hacer cambios
-
No puede ver ni administrar aplicaciones sin roles de proyecto
nota
Para conceder a los usuarios Editor o Visualizador acceso a las aplicaciones, un Administrador o un Editor debe crear roles de proyecto que asignen grupos de Identity Center a permisos específicos dentro de un proyecto.
Roles de proyecto y acceso con alcance de proyecto
Los roles globales Administrador, Editor y Visualizador controlan el acceso a Argo CD en sí. Los roles de proyecto controlan el acceso a los recursos y las capacidades dentro de un proyecto específico, incluidos:
-
Recursos: aplicaciones, ApplicationSets, credenciales de repositorios y credenciales de clústeres
-
Capacidades: acceso a registros y acceso de ejecución (exec) a los pods de aplicaciones
Explicación del modelo de permisos de dos niveles:
-
Alcance global: los roles integrados determinan lo que los usuarios pueden hacer con los proyectos, los clústeres, los repositorios y la configuración de Argo CD
-
Alcance de proyecto: los roles de proyecto determinan lo que los usuarios pueden hacer con los recursos y las capacidades dentro de un proyecto específico
Esto significa:
-
Los usuarios Administrador pueden acceder a todos los recursos y capacidades de los proyectos sin configuración adicional
-
Los usuarios Editor y Visualizador deben recibir roles de proyecto para acceder a los recursos y las capacidades del proyecto
-
Los usuarios Editor pueden crear roles de proyecto para concederse a sí mismos y a otros acceso dentro de los proyectos que pueden actualizar
Flujo de trabajo de ejemplo:
-
Un Administrador asigna un grupo de Identity Center al rol Editor a nivel global
-
Un Administrador crea un proyecto para un equipo
-
El Editor configura roles de proyecto dentro de ese proyecto para conceder a los miembros del equipo acceso a recursos con alcance de proyecto
-
Los miembros del equipo (que pueden tener el rol global Visualizador) ahora pueden ver y administrar aplicaciones en ese proyecto según los permisos de su rol de proyecto
Para obtener más información sobre la configuración de roles de proyecto, consulte Control de acceso basado en proyectos.
Configuración de las asignaciones de roles
Asigne los usuarios y grupos de AWS Identity Center a los roles de Argo CD al crear o actualizar la capacidad.
Ejemplo de asignación de roles:
{ "rbacRoleMapping": { "ADMIN": ["AdminGroup", "alice@example.com"], "EDITOR": ["DeveloperGroup", "DevOpsTeam"], "VIEWER": ["ReadOnlyGroup", "bob@example.com"] } }
nota
Los nombres de los roles distinguen entre mayúsculas y minúsculas y deben estar en mayúsculas (ADMIN, EDITOR, VIEWER).
importante
La integración de capacidades de EKS con AWS Identity Center admite hasta 1000 identidades por capacidad de Argo CD. Una identidad puede ser un usuario o un grupo.
Actualice las asignaciones de roles:
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" } ] } ] } } }'
Uso de la cuenta de administrador
La cuenta de administrador está diseñada para la configuración inicial y las tareas administrativas, como el registro de clústeres y la configuración de repositorios.
Cuándo es adecuado usar la cuenta de administrador:
-
Configuración inicial de la capacidad
-
Desarrollo individual o demostraciones rápidas
-
Tareas administrativas (registro de clústeres, configuración de repositorios, creación de proyectos)
Prácticas recomendadas para la cuenta de administrador:
-
No asigne tokens de la cuenta al control de versiones.
-
Cambie los tokens inmediatamente si se han expuesto.
-
Limite el uso de los tokens de la cuenta a las tareas administrativas y de configuración.
-
Establezca tiempos de vencimiento cortos (máximo 12 horas).
-
Solo se pueden crear 5 tokens de la cuenta en un momento determinado.
Cuándo se usa el acceso basado en proyectos:
-
Entornos de desarrollo compartidos con varios usuarios
-
Cualquier entorno que se asemeje al de producción
-
Cuando necesite registros de auditoría sobre quién llevó a cabo las acciones
-
Cuando necesite aplicar restricciones de recursos o límites de acceso
Para entornos de producción y escenarios de varios usuarios, utilice el control de acceso basado en proyectos con roles de RBAC dedicados asignados a grupos de AWS Identity Center.
Control de acceso basado en proyectos
Utilice proyectos de Argo CD (AppProject) para proporcionar un control del acceso y un aislamiento de los recursos detallados para los equipos.
importante
Antes de asignar usuarios o grupos a roles específicos de proyecto, primero debe asignarlos a un rol global de Argo CD (Administrador, Editor o Visualizador) en la configuración de la capacidad. Los usuarios no pueden acceder a Argo CD sin una asignación a un rol global, incluso si están asignados a roles de proyecto.
Considere asignar a los usuarios el rol Visualizador a nivel global y, posteriormente, conceder permisos adicionales mediante roles específicos de proyecto. Esto proporciona un acceso básico y permite un control detallado a nivel de proyecto.
Los proyectos proporcionan lo siguiente:
-
Restricciones de origen: limite los repositorios de Git que se pueden usar.
-
Restricciones de destino: limite los clústeres y espacios de nombres que se pueden usar como destino.
-
Restricciones de recursos: limite los tipos de recursos de Kubernetes que se pueden implementar.
-
Integración con RBAC: asigne los proyectos a grupos de AWS Identity Center o roles de Argo CD.
Ejemplo de proyecto para el aislamiento de equipos:
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
Espacios de nombres de origen
Cuando se utiliza la capacidad de Argo CD en EKS, el campo spec.sourceNamespaces es obligatorio en las definiciones de AppProject. Este campo especifica qué espacio de nombres puede contener aplicaciones o ApplicationSets que hagan referencia a este proyecto.
importante
La capacidad de Argo CD en EKS solo admite un único espacio de nombres para las aplicaciones y los ApplicationSets: el espacio de nombres que especificó al crear la capacidad (normalmente, argocd). Esto difiere de Argo CD de código abierto, que admite múltiples espacios de nombres.
Configuración de AppProject
Todos los AppProjects deben incluir el espacio de nombres configurado de la capacidad en 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
nota
Si omite el espacio de nombres de la capacidad en sourceNamespaces, las aplicaciones o los ApplicationSets de ese espacio de nombres no podrán hacer referencia a este proyecto, lo que provocará errores en la implementación.
Asigne usuarios a los proyectos:
Los roles de proyecto conceden a los usuarios Editor y Visualizador acceso a los recursos del proyecto (aplicaciones, ApplicationSets y credenciales de repositorios y clústeres) y a las capacidades (registros y ejecución [exec]). Sin roles de proyecto, estos usuarios no pueden acceder a estos recursos, incluso si tienen acceso mediante un rol global.
Los usuarios Administrador tienen acceso a todas las aplicaciones sin necesidad de roles de proyecto.
Ejemplo: concesión de acceso a aplicaciones a los miembros del equipo
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
nota
Incluya clusters, get, *, allow en los roles de proyecto para permitir que los usuarios vean los nombres de los clústeres en la interfaz de usuario. Sin este permiso, el clúster de destino aparece como “desconocido”.
Explicación sobre las políticas de los roles de proyecto:
El formato de la política es: p, proj:<project>:<role>, <resource>, <action>, <object>, <allow/deny>
Políticas de recursos:
-
applications, , team-a/, allow: acceso completo a todas las aplicaciones en el proyecto team-a -
applications, get, team-a/*, allow: acceso de solo lectura a las aplicaciones -
applications, sync, team-a/*, allow: puede sincronizar aplicaciones, pero no crear ni eliminar -
applications, delete, team-a/*, allow: puede eliminar aplicaciones (utilícelo con precaución) -
applicationsets, , team-a/, allow: acceso completo a los ApplicationSets -
repositories, *, *, allow: acceso a las credenciales de repositorios -
clusters, *, *, allow: acceso a las credenciales de clústeres
Políticas de capacidades:
-
logs, , team-a/, allow: acceso a los registros de aplicaciones -
exec, , team-a/, allow: acceso de ejecución (exec) a los pods de aplicaciones
nota
Los usuarios Editor pueden crear roles de proyecto para concederse a sí mismos y a otros permisos dentro de los proyectos que pueden actualizar. Esto permite a los líderes de equipo controlar el acceso a los recursos con alcance de proyecto para su equipo sin requerir la intervención de un Administrador.
nota
Utilice los ID de grupos de Identity Center (no los nombres de los grupos) en el campo groups. También puede utilizar los ID de usuario de Identity Center para conceder acceso a usuarios individuales. Puede encontrar estos ID en la consola de AWS Identity Center o mediante la CLI de AWS.
Patrones de permisos comunes
Patrón 1: equipo de administración con acceso completo
{ "rbacRoleMapping": { "ADMIN": ["PlatformTeam", "SRETeam"] } }
Los usuarios Administrador pueden ver y administrar todos los recursos con alcance de proyecto sin configuración adicional.
Patrón 2: los líderes de equipo administran proyectos; los desarrolladores acceden mediante roles de proyecto
{ "rbacRoleMapping": { "ADMIN": ["PlatformTeam"], "EDITOR": ["TeamLeads"], "VIEWER": ["AllDevelopers"] } }
-
El Administrador crea proyectos para cada equipo
-
Los líderes de equipo (Editor) configuran roles de proyecto para conceder a sus desarrolladores acceso a los recursos del proyecto (aplicaciones, ApplicationSets y credenciales) y a las capacidades (registros y ejecución [exec])
-
Los desarrolladores (visualizador) solo pueden acceder a los recursos y las capacidades permitidos por sus roles de proyecto
Patrón 3: acceso basado en equipos mediante roles de proyecto
-
El administrador crea proyectos y asigna a los líderes de equipo el rol de editor a nivel global
-
Los líderes de equipo (editor) asignan a los miembros del equipo a roles de proyecto dentro de sus proyectos
-
Los miembros del equipo solo necesitan el rol global de visualizador; los roles de proyecto proporcionan acceso a los recursos y las capacidades del proyecto
{ "rbacRoleMapping": { "ADMIN": ["PlatformTeam"], "EDITOR": ["TeamLeads"], "VIEWER": ["AllDevelopers"] } }
Prácticas recomendadas
Utilice grupos en lugar de usuarios individuales: asigne grupos de AWS Identity Center a roles de Argo CD en lugar de usuarios individuales para facilitar la administración.
Comience con el privilegio mínimo: comience con el acceso de VIEWER y otorgue el de EDITOR o ADMIN según sea necesario.
Use los proyectos para el aislamiento de equipos: cree AppProjects independientes para diferentes equipos o entornos a fin de aplicar los límites.
Aproveche la federación de Identity Center: configure AWS Identity Center para federarse con su proveedor de identidad corporativa a fin de administrar los usuarios de forma centralizada.
Revise el acceso periódicamente: revise periódicamente las asignaciones de roles y de proyectos para garantizar los niveles de acceso adecuados.
Limite el acceso a los clústeres: recuerde que el RBAC de Argo CD controla el acceso a los recursos y las operaciones de Argo CD, pero no se corresponde con el RBAC de Kubernetes. Los usuarios con acceso de Argo CD pueden implementar aplicaciones en los clústeres a los que Argo CD tiene acceso. Limite los clústeres a los que puede acceder Argo CD y utilice las restricciones de destino del proyecto para controlar dónde se pueden implementar las aplicaciones.
AWSPermisos de servicios de
Para utilizar los servicios de AWS directamente en los recursos de la aplicación (sin crear recursos del repositorio), adjunte los permisos de IAM necesarios al rol de capacidad.
ECR para gráficos de Helm:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ecr:GetAuthorizationToken", "ecr:BatchCheckLayerAvailability", "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage" ], "Resource": "*" } ] }
Repositorios de CodeCommit:
{ "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" } ] }
Consulte Configuración del acceso al repositorio para obtener más información sobre el uso de estas integraciones.
Siguientes pasos
-
Uso de Argo CD: más información sobre cómo crear aplicaciones y administrar implementaciones
-
Conceptos de Argo CD: descripción de los conceptos de Argo CD, como los proyectos
-
Consideraciones sobre la seguridad para las capacidades de EKS: revisión de las prácticas recomendadas de seguridad para capacidades