Ingeniería

Control de acceso basado en roles y autenticación externa disponibles en ECE 2.3

Estamos muy entusiasmados por anunciar que con el lanzamiento de Elastic Cloud Enterprise (ECE) 2.3, el control de acceso basado en roles y la autenticación con fuentes externas ahora están disponibles de manera general. Estas características te permiten tener varios usuarios cuyo acceso a la plataforma ECE está controlado por el rol. Puedes agregar usuarios de forma nativa en ECE y conectar tus propios servidores de directorio o proveedores de identidad para otorgar acceso a los usuarios existentes.

Inicialmente, agregamos soporte beta para estas características en ECE 2.2. No solo solucionamos errores en la versión 2.3, sino que agregamos soporte para Active Directory además de las opciones existentes de LDAP y SAML.

¿Cómo funciona?

Habilitar RBAC para ECE agrega un despliegue de seguridad, que es un despliegue de sistema que gestiona todos los permisos y la configuración de autenticación. Cuando un usuario intenta iniciar sesión, ECE verifica la autenticación mediante el despliegue de seguridad y recurre a los usuarios del sistema si es necesario. Si el usuario se autentica correctamente, ECE aplica sus roles asignados y los traduce en permisos refinados que controlan los datos que puede ver y las acciones que puede realizar cada usuario.

Ten en cuenta que los roles de ECE de un usuario son independientes de cualquier credencial que posea para los despliegues hospedados en ECE. Un usuario podría no tener acceso a ECE, pero sí tener acceso administrativo a los despliegues hospedados, y viceversa.

¿Qué roles están disponibles?

ECE ofrece un conjunto completo de operaciones, tanto a nivel de la plataforma como de los despliegues. Para ahorrarle a los administradores el esfuerzo de definir y mantener sus propias definiciones de roles, ECE proporciona un conjunto de roles predefinidos que abarcan los casos de uso más comunes. Estos roles se mantendrán actualizados a medida que se incluyan más características, por lo que no debes preocuparte por mantener actualizadas tus definiciones.

Los roles se describen a continuación. Los usuarios pueden tener más de un rol y combinarlos según sea necesario: por ejemplo, “Platform admin” (Administrador de la plataforma) puede hacer todo, por lo que no es necesario asignarle otro rol. Sin embargo, “Platform viewer” (Visualizador de la plataforma) puede ver todo, pero no puede cambiar nada; por lo que quizás elijas combinar este rol con el de “Deployments manager” (Gerenciador de despliegues).

Platform admin

Este rol le permite a un usuario ver todos los datos y realizar cualquier operación en ECE del mismo modo que el usuario admin a nivel del sistema (o root en ECE 1.x) que se crea durante el proceso de instalación. Por lo general, este rol lo tienen solamente los administradores responsables de toda la plataforma ECE. La sección “Platform” (Plataforma) en la UI es un buen ejemplo, dado que proporciona información sobre, por ejemplo, allocators y sus despliegues, y la capacidad de vaciar un allocator o colocarlo en modo de mantenimiento.

Platform viewer

Este rol te proporciona permiso de solo visualización de la plataforma completa y los despliegues hospedados. Los permisos asociados son los mismos que los de un usuario readonly a nivel del sistema. Es útil para la automatización, por ejemplo, para monitorear el estado de ECE.

Deployments manager

Este rol permite a un usuario crear y gestionar los despliegues en la plataforma. Un usuario con este rol puede realizar todas las acciones en un despliegue: aumentar la escala, reducir la escala, configurar snapshots, reiniciar nodos, restablecer contraseñas y más. Este rol no le permite al usuario acceder a ninguna operación ni recurso a nivel de la plataforma, como plantillas de despliegue, configuraciones de instancias, allocators, despliegues de sistema, etc.

Es un rol adecuado para cualquiera que tenga la responsabilidad de gestionar despliegues, pero no requiere ver la información a nivel de la plataforma, como por ejemplo líderes del equipo de desarrollo.

Deployments viewer

Un usuario con el rol “Deployments viewer” (Visualizador de despliegues) puede ver despliegues, pero no puede modificarlos de ninguna manera. Este rol es adecuado para el personal de soporte o los miembros del equipo de desarrollo.

Administración de usuarios nativos

La manera más sencilla de comenzar con RBAC en ECE es crear usuarios nativos. Estos se mantienen en el despliegue de seguridad, en el realm nativo de Elasticsearch. Solo soportan una cantidad limitada de atributos: nombre de usuario, nombre completo, correo electrónico, contraseña, roles y si actualmente están habilitados.

Haz clic en “Users” (Usuarios) en el menú de navegación para ver tus proveedores de autenticación, uno de los cuales es el perfil “Native users” (Usuarios nativos). Al abrir el perfil, accederás a una lista de todos los usuarios nativos. En la lista se incluyen los dos usuarios del sistema que crea el instalador de ECE. Estos usuarios no pueden editarse ni eliminarse, y no puedes restablecer sus contraseñas aquí; consulta la documentación para acceder a instrucciones más detalladas sobre cómo restablecer las contraseñas.

Demostración de cómo crear usuarios nativos

Puedes crear, editar y eliminar usuarios nativos desde la página “Native users” (Usuarios nativos). Estos usuarios pueden iniciar sesión en ECE simplemente como usuarios del sistema, y su acceso está controlado por los roles que les asignes.

Página de configuración del usuario

En ECE 2.3 también se agrega una página de configuración del usuario. Haz clic en el ícono del usuario en la parte superior derecha de la página y luego en “Settings” (Configuración). Si iniciaste sesión como usuario nativo, puedes editar tu nombre y correo electrónico, o cambiar la contraseña. Si iniciaste sesión con un usuario desde un proveedor de autenticación externo, verás una página de solo lectura con información básica, el nombre y tipo de perfil de autenticación, y los roles que posees.

Demostración de cómo editar la configuración del usuario

Proveedores de autenticación externos

Si ya tienes un servidor LDAP, SAML o de Active Directory, puedes configurar ECE para que los use para autenticación y autorización. Incluso puedes configurar varios servidores, y la autenticación se intentará en el orden que estableciste del mismo modo que Elasticsearch. Usar tus fuentes de autenticación existentes significa que solo tienes que administrar los usuarios en un único lugar. La configuración de mapping de roles de un proveedor externo te permite mapear los atributos de los usuarios con los roles en ECE, por lo que ECE detecta automáticamente cualquier cambio en los atributos de los usuarios (como la asociación a un grupo).

Haz clic en “Add provider” (Agregar proveedor) en la página de visión general de proveedores de autenticación y selecciona un tipo. En la página siguiente configurarás el proveedor. Revisemos las opciones de configuración de una configuración de LDAP básica.

Demostración sobre cómo crear un proveedor LDAP

Proveedor de autenticación LDAP

Configuración general:

  1. Cada perfil tiene un nombre. Además de usarlo para etiquetar el perfil, el nombre también se usa para generar una ID de realm. Ten en cuenta que una vez creado un perfil, la ID de realm nunca cambia.
  2. Se debe configurar al menos un servidor LDAP, que incluya el protocolo ldap: o ldaps: al comienzo. Si eliges una estrategia de balanceo de carga basada en DNS, solo puedes especificar un único servidor.
  3. Elige una estrategia de balanceo de carga teniendo en cuenta la restricción anterior.

Certificados de confianza:

  1. Si la seguridad de tu servidor LDAP requiere que los clientes tengan certificados SSL/TLS específicos, deberás preparar un archivo de paquete y ponerlo a disposición de ECE a través de una URL. Consulta la documentación para obtener más detalles.
  2. Si tu paquete está protegido con contraseña, proporciona la contraseña aquí.

Credenciales de vinculación:

  1. Si se requieren credenciales para establecer un vínculo al servidor LDAP, puedes configurarlas aquí.
  2. Como alternativa, si las credencias no son necesarias, haz clic en el botón de alternancia “Bind anonymously” (Vincular anónimamente).

Configuración del modo de búsqueda:

  1. Puedes especificar cada detalle de una búsqueda de usuario. Consulta la documentación para obtener información sobre estos campos. Como mínimo, probablemente quieras configurar “Base DN for users” (DN base para usuarios), por ejemplo “cn=users,dc=example,dc=com”.
  2. Como alternativa, si necesitas usar una plantilla para realizar las búsquedas de LDAP, haz clic en el botón de selección “Template” (Plantilla) y proporciona una o más plantillas.

Configuración de búsqueda de grupos:

  1. Tal como en la configuración del modo de búsqueda, puedes configurar cómo ECE debería buscar los grupos de un usuario. Probablemente quieras configurar “Base DN for groups” (DN base para grupos), por ejemplo “cn=groups,dc=example,dc=com”.

Mapping de roles:

  1. Un usuario debe tener uno o más roles para poder realizar acciones con ECE. Puedes especificar roles predeterminados, que se asignarán a todos los usuarios que se autentiquen correctamente. Por ejemplo, podrías otorgar a todos los usuarios el rol “Deployments viewer” (Visualizador de despliegues), de modo que puedan ver todos los despliegues hospedados en ECE, pero que no puedan editar nada.
  2. El otro método de asignación de roles es a través del mapping de roles. Son simplemente reglas que indican que si el DN de usuario o DN de grupo coincide con cierto valor, entonces se asignan el rol o los roles especificados. Puedes tener tantos mappings como necesites: por ejemplo, un mapping que le asigne a los usuarios de Operaciones de TI el rol “Deployment viewer” (Visualizador de despliegues), un mapping que le asigne a todos los desarrolladores el rol “Deployment manager” (Gerente de despliegues) y un mappings que le asigne a todos los administradores el rol “Platform viewer” (Visualizador de la plataforma).

Cuando hayas finalizado, haz clic en Create profile (Crear perfil), y ECE reconfigurará el despliegue de seguridad. Ahora deberías iniciar sesión con diversos usuarios de LDAP para comprobar que puedan autenticarse y que los roles sean los correctos. Puedes comprobar explícitamente los roles desde la página de configuración de usuarios, y también navegando por la UI y asegurándote de que pueden ver y hacer lo que prevés.

Proveedores de autenticación de Active Directory y SAML

Desde un nivel alto, el proceso es similar a LDAP desde el punto de vista de ECE. Creas un proveedor de autenticación de Active Directory o SAML, le asignas un nombre, especificas cómo ECE debe comunicarse con el servidor y defines los mappings que deberían aplicarse.

Consulta la documentación para acceder a una descripción completa de cómo configurar un proveedor de autenticación SAML o un proveedor de autenticación de Active Directory.

Soporte de API REST

Todas las operaciones anteriores también pueden realizarse con la API REST. Por ejemplo, para obtener una lista de todos los usuarios, incluso aquellos actualmente desactivados:

GET /api/v1/users?include_disabled=true

Supongamos que necesitas darle acceso a una nueva administradora del sistema, Sarah. Podrías crear un usuario nativo nuevo para ella de la siguiente manera:

POST /api/v1/users
{
  "user_name": "sarah",
  "security": {
    "roles": ["ece_platform_admin"],
    "password": "deadb33f"
  }
}

Si luego quisieras cambiar el acceso de Sarah, podrías enviar una solicitud PATCH únicamente con el campo que deseas cambiar, en este caso, los roles:

PATCH /api/v1/users/sarah
{
  "security": {
    "roles": ["ece_platform_viewer"]
  }
}

Por último, podrías eliminar la cuenta de Sarah con una solicitud DELETE:

DELETE /api/v1/users/sarah

Consulta la documentación de API REST para acceder a detalles y ejemplos de los puntos finales del proveedor de autenticación.

Comienza hoy mismo

Para acceder a una lista completa de los cambios en ECE 2.3, asegúrate de leer las notas de lanzamiento, y si deseas probarlo tú mismo, comienza hoy con una prueba gratuita de 30 días.