Índice
En esta guía paso a paso, aprenderemos cómo configurar la autenticación SSO con Redshift y AWS IAM Identity Center para aumentar la seguridad y facilitar el acceso de los usuarios.
Fuentes Utilizadas:
- https://aws.amazon.com/blogs/big-data/federated-authentication-to-amazon-redshift-using-aws-single-sign-on/
- https://aws.amazon.com/blogs/big-data/amazon-redshift-identity-federation-with-multi-factor-authentication/
Diccionario de Términos:
Término | Significado |
---|---|
Cuenta del Identity Center | La cuenta donde se configura el IAM Identity Center. |
Cuenta de Redshift | La cuenta secundaria de la cuenta del Identity Center que contiene el clúster de Redshift al que queremos conectarnos. |
IDP | Proveedor de Identidad |
¿Qué es Redshift?
AWS Redshift es un servicio de almacenamiento de datos completamente gestionado proporcionado por Amazon Web Services (AWS).
Está diseñado para manejar cargas de trabajo de análisis de datos a gran escala y permite a las organizaciones analizar grandes cantidades de datos de manera rápida y rentable.
¿Qué es IAM Identity Center?
IAM Identity Center proporciona un lugar donde puedes crear o conectar usuarios de la fuerza laboral y gestionar centralmente su acceso a todas sus cuentas y aplicaciones de AWS.
Puedes usar permisos de múltiples cuentas para asignar a tus usuarios de la fuerza laboral acceso a cuentas de AWS.
¿Por qué SSO?
SSO reduce el número de superficies de ataque porque los usuarios solo inician sesión una vez al día y solo usan un conjunto de credenciales.
Reducir el inicio de sesión a un conjunto de credenciales mejora la seguridad de la empresa.
Cuando los empleados tienen que usar contraseñas separadas para cada aplicación, generalmente no lo hacen.
Requisitos Previos
- IAM Identity Center preconfigurado → Empezando – AWS IAM Identity Center.
- Clúster de Redshift preconfigurado con acceso administrativo.
- Usuario y contraseña de la fuente de identidad (Okta, PingOne, etc.).
- JetBrains DataGrip instalado (puede ser la versión gratuita).
Paso a Paso:
Configurar la aplicación del Identity Center
Nuestro primer paso será crear una nueva aplicación de AWS Identity Center en la cuenta del Identity Center para ser utilizada como el canal principal entre los usuarios y el clúster de Redshift.
- En el panel lateral de IAM Identity Center, haz clic en “Aplicaciones”.
- En la esquina superior derecha, haz clic en “Agregar aplicación”.
- Marca “agregar aplicación SAML 2.0 personalizada” y haz clic en “Siguiente”.
- Establece un nombre de visualización apropiado, llamaremos a nuestra aplicación “Redshift-ReadOnly”, ya que esta aplicación se utilizará para obtener acceso de solo lectura a los datos del clúster.
- Descargar el archivo de metadatos SAML del Identity Center, lo utilizaremos más tarde para configurar nuestra aplicación de cuenta de Redshift.
- Copia la URL de inicio de sesión de la aplicación ya que la necesitaremos más tarde.
- A continuación, configuraremos la ACS de la aplicación SAML (también conocido como Servicio de Consumidor de Aserciones).
Brevemente, ACS es la ubicación donde se enviará la respuesta de la aplicación SAML.
Como utilizaremos el controlador JDBC de AWS Redshift para conectarnos a nuestro clúster de Redshift, necesitaremos configurar la ACS de la aplicación ahttp://localhost:7890/redshift/
– ya que el controlador JDBC inicia un servidor que escucha en el puerto 7890 por defecto. - Para restringir la aserción de la aplicación SAML solo a redshift, configuraremos el campo “Audiencia de la aplicación SAML” a
urn:amazon:webservices:redshift
.
Crear Proveedor de Identidad
Después de crear nuestra aplicación Redshift-ReadOnly en la cuenta del Identity Center, necesitamos configurar un proveedor de identidad para ser utilizado por la aplicación Redshift-ReadOnly para conectarse al clúster de Redshift de la cuenta de Redshift.
- En el panel lateral del Dashboard de IAM de tu cuenta de Redshift, haz clic en Proveedores de Identidad.
- En la esquina superior derecha, haz clic en “Agregar proveedor”.
- Rellena los detalles para el nuevo IDP:
- Establece el “Nombre del proveedor” a Redshift-ReadOnly (igual que nuestra aplicación configurada previamente).
- Sube el archivo de metadatos que descargamos durante el proceso de configuración de nuestra aplicación de IAM Identity Center. Haz clic en “Agregar proveedor” y finaliza.
- Ve a la página de descripción del IDP y copia el ARN del IDP, lo utilizaremos más tarde.
Crear Rol y Política de IAM
Ahora que hemos creado el Proveedor de Identidad para ser utilizado por nuestra aplicación de IAM Identity Center, podemos crear el rol que se utilizará para conectarse al clúster de Redshift.
- En el panel lateral del Dashboard de IAM de tu cuenta de Redshift, haz clic en Roles.
- En la esquina superior derecha, haz clic en “Crear Rol”.
- Crea una entidad de confianza de tipo federación SAML 2.0 y establece lo siguiente:
- Establece el IDP al IDP “Redshift-ReadOnly” que creamos anteriormente.
- Marca el botón de radio “Permitir solo acceso programático” y establece:
Atributo: “SAML:aud” → estableciendo qué audiencia puede asumir este rol.
Valor: “http://localhost:7890/redshift/” → Estableciendo la audiencia a nuestro servidor local del controlador JDBC de Redshift (como se explicó en la primera sección).
Haz clic en “Siguiente”.
- Haz clic en “Crear política” y se abrirá una nueva pestaña.
- Selecciona “JSON”.
- En el panel del editor de Políticas, pega la siguiente declaración de política y edita los siguientes valores en el ámbito “Resource” para que coincidan con los tuyos:
<region>, <account>, <clusterName>
.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "redshift:CreateClusterUser", "redshift:JoinGroup", "redshift:GetClusterCredentials", "redshift:ListSchemas", "redshift:ListTables", "redshift:ListDatabases", "redshift:ExecuteQuery", "redshift:FetchResults", "redshift:CancelQuery", "redshift:DescribeClusters", "redshift:DescribeQuery", "redshift:DescribeTable" ], "Resource": [ "arn:aws:redshift: : :cluster: ", "arn:aws:redshift: : :dbuser: /${redshift:DbUser}", "arn:aws:redshift: : :dbname: /${redshift:DbName}", "arn:aws:redshift: : :dbgroup: /bi_users_group", ] } ] } - Nombra la política “Redshift-ReadOnly-policy” y haz clic en “Create policy”.
- Vuelve a la pestaña de origen donde comenzamos a crear nuestro rol IAM
→ haz clic en actualizar → escribe “Redshift-ReadOnly-policy” en la barra de búsqueda → marca la política “Redshift-ReadOnly-policy” → haz clic en “Next”. - Nombra el rol “Redshift-ReadOnly-role” y haz clic en “Create role” en la esquina inferior derecha.
- Ahora que hemos creado el rol IAM, ve a su página de descripción y copia el ARN del rol, lo usaremos más adelante.
Configura los Atributos de la Aplicación del Centro de Identidad IAM
Para configurar nuestra aplicación para trabajar con Redshift, necesitamos configurar algunos atributos de la aplicación que le guiarán “cómo conectarse” a ella.
- En el Centro de Identidad IAM, ve al panel de Aplicaciones y elige la aplicación que creamos anteriormente.
- Asigna usuarios y grupos a los que te gustaría dar permisos para esta aplicación → Asigna acceso de usuario a aplicaciones en la consola del Centro de Identidad IAM – AWS IAM Identity Center (sucesor de AWS Single Sign-On).
- Haz clic en “attribute mappings”.
- Configura los atributos según la siguiente tabla y reemplaza el
<role_arn>
&<idp_arn>
marcador de posición con los ARNs que copiaste en los pasos anteriores:
Atributo | Valor | Explicación |
---|---|---|
Sujeto (atributo predeterminado) | ${user:email} | El sujeto utilizado. |
https://aws.amazon.com/SAML/Attributes/RoleSessionName | ${user:email} | El nombre de la sesión creada contra el clúster. |
https://redshift.amazon.com/SAML/Attributes/AutoCreate | true | Configura la aplicación para crear el usuario de Redshift automáticamente al autenticarse. |
https://aws.amazon.com/SAML/Attributes/Role | El rol IAM y el IDP que se utilizarán para conectarse a Redshift. | |
https://redshift.amazon.com/SAML/Attributes/DbUser | ${user:email} | El nombre del usuario de la base de datos a crear. |
https://redshift.amazon.com/SAML/Attributes/DbGroups | readonly | El grupo de la base de datos al que se asignará el nuevo usuario creado. |
Haz clic en “Save changes”.
Crear grupo de Redshift & Otorgar permisos
En esta etapa, configuraremos el readonly
grupo de Redshift (como se define en los atributos de la aplicación en la etapa anterior) al que se asignará cada usuario al conectarse a través de la aplicación.
- Conéctate a tu clúster de Redshift con un usuario privilegiado (superusuario).
- Ejecuta el siguiente script SQL para crear el
readonly
grupo y asignarleread
permisos al esquema público (el esquema predeterminado).
create group readonly; grant usage on schema public to group readonly; grant select on all tables in schema public to group readonly;
Configura la Fuente de Datos del cliente DataGrip
¡Estamos listos y finalmente a punto de cosechar nuestros frutos!
En este paso, configuraremos una fuente de datos de DataGrip que se utilizará como la conexión entre nosotros y el clúster de Redshift.
- Abre DataGrip y crea una nueva fuente de datos de Redshift.
- Se abrirá un asistente de fuente de datos para que configures la conexión, establece los siguientes atributos:
- Nombre: Redshift ReadOnly SSO.
- Host: tu endpoint del servidor de Redshift.
- Usuario: tu identificador de correo electrónico (se utilizará como el Usuario de la BD de Redshift).
- Contraseña: la contraseña que has configurado en tu Fuente de Identidad (Okta, PingOne, etc.)
- Base de datos: la base de datos a la que deseas conectarte.
- URL: la URL estará mayormente configurada en este punto (debido al autocompletado de DataGrip), todo lo que queda por hacer es cambiar el prefijo de la URL JDBC de
jdbc:redshift://
ajdbc:redshift:iam://
.
- Ve a la pestaña
Advanced
y configura estos 3 atributos:- plugin_name:
com.amazon.redshift.plugin.BrowserSamlCredentialsProvider
– ya definido, así que edítalo. - idp_reponse_timeout: 60 – crea un nuevo valor.
- login_url: <tu URL de inicio de sesión de la aplicación SAML copiada previamente> – crea un nuevo valor.
- plugin_name:
- En la parte inferior del asistente de configuración de la fuente de datos, haz clic en “test connection”.
Una vez hecho clic, tu navegador se abrirá y mostrará la siguiente pantalla:
Si todo está configurado correctamente, deberías ver el siguiente mensaje emergente en DataGrip:
Haz clic en OK.
¡Eso es todo! Gracias por leer 🙂
¿Buscas contenido nuevo?
Recibe artículos y novedades en nuestro boletín semanal.
Al introducir tu correo electrónico, aceptas recibir correos electrónicos de Elementor, incluidos los de marketing,
y aceptas nuestros Términos y condiciones y Política de privacidad.