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.
ADMIN
Acceso completo a todas las aplicaciones y configuraciones:
-
Creación, actualización y eliminación de aplicaciones y ApplicationSets
-
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
-
Administración de proyectos
-
Visualización del estado y el historial de todas las aplicaciones
EDITOR
Puede crear y modificar aplicaciones, pero no puede cambiar la configuración de Argo CD:
-
Creación y actualización de aplicaciones y ApplicationSets
-
Sincronización y actualización de aplicaciones
-
Visualización del estado y el historial de las aplicaciones
-
Imposibilidad de eliminar aplicaciones
-
Imposibilidad de cambiar la configuración de Argo CD
-
Imposibilidad de administrar clústeres o repositorios
VIEWER
Acceso de solo lectura a las aplicaciones:
-
Visualización del estado y el historial de las aplicaciones
-
Visualización de los manifiestos y los recursos de las aplicaciones
-
Imposibilidad de hacer cambios
-
Imposibilidad de sincronizar o actualizar aplicaciones
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 eksfe 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.
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 # 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
Asigne usuarios a los proyectos:
Los usuarios con los roles EDITOR o VIEWER pueden restringirse a proyectos específicos. Los usuarios ADMIN tienen acceso a todos los proyectos.
apiVersion: argoproj.io/v1alpha1 kind: AppProject metadata: name: team-a spec: # ... project configuration ... # Map Identity Center groups to project roles roles: - name: developer description: Team A developers policies: - p, proj:team-a:developer, applications, *, team-a/*, allow groups: - TeamADevelopers - name: viewer description: Team A viewers policies: - p, proj:team-a:viewer, applications, get, team-a/*, allow groups: - TeamAViewers
Patrones de permisos comunes
Patrón 1: equipo de administración con acceso completo
{ "rbacRoleMapping": { "ADMIN": ["PlatformTeam", "SRETeam"] } }
Patrón 2: los desarrolladores pueden implementar, otros pueden ver
{ "rbacRoleMapping": { "ADMIN": ["PlatformTeam"], "EDITOR": ["DevelopmentTeam", "DevOpsTeam"], "VIEWER": ["AllEmployees"] } }
Patrón 3: aislamiento basado en equipos con proyectos
-
Asigne todos los desarrolladores al rol EDITOR.
-
Cree AppProjects independientes para cada equipo.
-
Use los roles del proyecto para restringir el acceso a las aplicaciones específicas del equipo.
{ "rbacRoleMapping": { "ADMIN": ["PlatformTeam"], "EDITOR": ["AllDevelopers"] } }
A continuación, cree proyectos con asignaciones de roles y restricciones específicas del equipo.
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