Control de Acceso

Gestionar el Control de Acceso

Jenkins X utiliza políticas de control de acceso basado en roles - en inglés Role-Based Access Control (RBAC) - para controlar el acceso a sus diversos recursos. La aplicación de las políticas es proporcionada por el RBAC de Kubernetes.

Los Equipos pueden tener varios Entornos (p.ej, Dev, Staging, Production) junto con dinámicos Entornos de Vista Previa. Mantener sincronizados los recursos Role y RoleBinding pertenecientes al mecanismo RBAC de Kubernetes con todos los namespaces y miembros de su equipo puede ser un desafío.

Para facilitar esta gestión, Jenkins X crea un nuevo Recurso Personalizado llamado EnvironmentRoleBinding que le permite asociar un Role etiquetado con jenkins.io/kind=EnvironmentRole con tantos Users o ServiceAccounts como desee. Luego, el controlador de roles tiene la misión de mantener la información replicada y consistente a través de todos los namespaces y entornos. El controlador de roles garantiza esta tarea actualizando constantemente los recursos Role y RoleBinding de cada namespace.

Los roles son por equipo, por lo que es posible tener roles especiales por equipo o utilizar nombres comunes para los roles, pero personalizarlos para cada equipo.

Implicaciones de Seguridad para el namespace admin

Jenkins X almacena varias configuraciones y ajustes (por ejemplo, Users, Teams) en el namespace de administración principal (jx). Tenga cuidado al otorgar roles en el equipo jx predeterminado, ya que permitir a los usuarios editar algunos de estos archivos puede permitirles escalar sus permisos. En lugar de otorgar a los usuarios que no son administradores acceso al espacio de nombres jx, cree equipos y otorgue acceso a los usuarios cuando usen un clúster compartido.

Roles Predeterminados

Jenkins X incluye una colección de objetos Role predeterminados que puede utilizar en la plantilla jenkins-x-platform. Puede crear el suyo si lo desea, pero cualquier edición puede perderse cuando se actualiza Jenkins X.

viewer
El rol viewer permite el acceso de lectura a proyectos, construcciones y logs. No permite el acceso a información confidencial.
committer
El role committer proporciona los mismos permisos que el viewer y permite al usuario iniciar construcciones e importar nuevos proyectos.
owner
El rol owner permite a los usuarios modificar todos los recursos del equipo.

Adicionar Usuarios

Para adicionar usuarios utilice el comando jx create user, p.ej:

jx create user --email "joe@example.com" --login joe --name "Joe Bloggs"

Modificar Roles del Usuario

Para modificar los roles de un usuario utilice el comando jx edit userroles, p.ej:

jx edit userrole --login joe

Si no utiliza el parámetro --login (-l) en la línea de comando el sistema le pedirá que elija el usuario a editar.

Por ejemplo, para asignarle a joe el role committer (y elimine cualquier otro rol existente):

jx edit userrole --login joe --role committer

Si tiene roles específicos y desea otorgar múltiples roles a un usuario, puede especificar los roles como una lista separada por comas:

jx edit userrole --login joe --role committer,viewer

La modificación de los roles de un usuario cambia el EnvironmentRoleBinding. El controlador de roles replicará estos cambios en todos los namespaces de entorno subyacentes.


Last modified April 3, 2020: release 0.0.1621 (b20f572)