Configurar OAuth de IAM para Amazon Redshift
A partir de Tableau 2023.3.2, puede utilizar OAuth 2.0/OIDC para federar la identidad de un proveedor de identidad externo a Amazon Redshift.
Estas instrucciones hacen referencia al servicio AWS IAM anterior. Para la integración de IAM IDC, consulte Configurar OAuth desde el Centro de identidades de IAM para Amazon Redshift.
Según el proveedor de identidad, se necesitan diferentes pasos para configurar la integración. Esta es una descripción general de alto nivel. Tableau no puede proporcionar instrucciones detalladas sobre cómo configurar AWS o el proveedor de identidad (IdP), pero a continuación se expone el enfoque general.
Paso 1: configurar el IDP
Cree clientes OAuth en el IdP para Tableau Desktop y Tableau Server o Tableau Cloud. El cliente de Desktop debe habilitar
PKCE
y usar las redireccioneshttp://localhost
.Agregue notificaciones personalizadas para la autorización de roles. En concreto, si está utilizando el servicio IAM original, es posible que desee agregar notificaciones para
DbUser
yDbGroups
. Podrán utilizarse en sus políticas de IAM más adelante.Cree los archivos de configuración de OAuth para Tableau. Consulte la documentación en GitHub(El enlace se abre en una ventana nueva) y ejemplos aquí (en inglés)(El enlace se abre en una ventana nueva). Agradeceremos cualquier ejemplo para otros IdP.
Asegúrese de anteponer “
custom_
” a los ID de configuración de OAuth para Tableau.Si su IdP admite el puerto dinámico localhost, deshabilite
OAUTH_CAP_FIXED_PORT_IN_CALLBACK_URL
. Si su IdP no admite este puerto, asegúrese de agregar varias URL de devolución de llamada de localhost a la lista de permitidos del archivo de configuración y el IdP.
Instale los nuevos archivos de configuración de Tableau OAuth en la carpeta
OAuthConfigs
asociada con cada aplicación en los hosts de escritorio (Tableau Desktop, Tableau Prep Builder o Tableau Bridge) y en cada sitio de Tableau Server y Tableau Cloud que usará OAuth.
Configuración del IdP en AWS
1. Cree el modelo del IdP en AWS. Consulte la documentación de Amazon Acerca de identidades web federadas(El enlace se abre en una ventana nueva) y Creación de proveedores de identidad OpenID Connect (OIDC)(El enlace se abre en una ventana nueva).
2. Cree roles y políticas específicos para el IdP. Consulte Creación de un rol para identidades web o de OpenID Connect Federation (consola)(El enlace se abre en una ventana nueva) en la documentación de AWS.
Configuración de roles para los usuarios de Redshift
Adjunte las directivas necesarias para Redshift. Puede utilizar notificaciones personalizadas del token para autorizar roles. Hay varios ejemplos de SAML en la documentación de AWS(El enlace se abre en una ventana nueva). Estos ejemplos pueden adaptarse fácilmente a OAuth. En el caso de OAuth, las notificaciones son solo “DbUser
”, “DbGroups
”, etc.
A continuación se muestra un ejemplo de la política extraído de la documentación de AWS:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "redshift:GetClusterCredentials",
"Resource": [
"arn:aws:redshift:us-west-1:123456789012:dbname:cluster-identifier/dev",
"arn:aws:redshift:us-west-1:123456789012:dbuser:cluster-identifier/${redshift:DbUser}",
"arn:aws:redshift:us-west-1:123456789012:cluster:cluster-identifier"
],
"Condition": {
"StringEquals": {
"aws:userid": "AROAJ2UCCR6DPCEXAMPLE:${redshift:DbUser}@example.com"
}
}
},
{
"Effect": "Allow"
"Action": "redshift:CreateClusterUser",
"Resource": "arn:aws:redshift:us-west-1:12345:dbuser:cluster-identifier/${redshift:DbUser}"
},
{
"Effect": "Allow",
"Action": "redshift:JoinGroup",
"Resource": "arn:aws:redshift:us-west-1:12345:dbgroup:cluster-identifier/my_dbgroup"
},
{
"Effect": "Allow",
"Action": [
"redshift:DescribeClusters",
"iam:ListRoles"
],
"Resource": "*"
}
]
}
Conexión con Redshift
El usuario debe especificar el ARN del rol que asumirá y luego seleccionar la configuración de OAuth instalada anteriormente.
Cuando se configura correctamente, se redirige al usuario al IdP para autenticar y autorizar tokens para Tableau. Tableau recibe tokens de actualización y openid. AWS puede validar el token y la firma del IdP, extraer las notificaciones del token, buscar la asignación de las notificaciones al rol de IAM y permitir o bloquear que Tableau asuma el rol en nombre del usuario. (en otras palabras, AssumeRoleWithWebIdentity [en inglés](El enlace se abre en una ventana nueva)).
Tokens
De forma predeterminada, Redshift OAuth IAM pasa el token de identificación al conductor. Para los clientes locales, incluidos aquellos que usan Tableau Bridge, pueden usar un archivo TDC para pasar el token de acceso.
<connection-customization class='redshift' enabled='true' version='10.0'> <vendor name='redshift' /> <driver name='redshift' /> <customizations> <customization name='CAP_OAUTH_FEDERATE_ACCCESS_TOKEN' value='yes'/> </customizations> </connection-customization>
Para obtener más información sobre la configuración e instalación de archivos .tdc, consulte Personalizar y ajustar una conexión(El enlace se abre en una ventana nueva) y Usar un archivo .tdc con Tableau Server(El enlace se abre en una ventana nueva).
Okta
Si usa Okta, es mejor usar un “servidor de autorización personalizado” en lugar del “servidor de autorización de la organización”. Los servidores de autorización personalizados son más flexibles. Hay un servidor de autorización personalizado creado de forma predeterminada con el nombre “default”. La URL de autorización debe tener este aspecto:
https://${yourOktaDomain}/oauth2/{authServerName}/v1/authorize
Actualización del controlador
Si el OAuth de Redshift utiliza el servicio IAM original, puede utilizar una de las siguientes opciones:
El controlador ODBC v1 de Redshift a partir de la versión 1.59, que se puede descargar desde https://docs.aws.amazon.com/redshift/latest/mgmt/configure-odbc-connection.html(El enlace se abre en una ventana nueva).
El controlador ODBC v2 de Redshift a partir de la versión 2.0.1.0, que se puede descargar desde https://github.com/aws/amazon-redshift-odbc-driver/tags (en inglés)(El enlace se abre en una ventana nueva). Tenga en cuenta que no hay disponible ningún controlador v2 para OSX.
Solución de problemas
La mejor forma de diagnosticar errores es eliminar Tableau de la ecuación. En lugar de eso, puede probar usando el administrador de controladores o una herramienta similar. Esto es solo para solucionar problemas: no debe utilizar un DSN o el conector "Otro ODBC" para el uso regular de esta funcionalidad. Para ayudar a garantizar una prueba válida, los parámetros deben ser los mismos que se muestran a continuación, excepto la información del clúster, la base de datos, el token y el espacio de nombres.
Si ve un mensaje de error sobre un token no válido o caducado procedente del controlador al realizar la primera conexión (en el mensaje de error aparecerá un código de error SQLState como [28000] o [08001]), entonces Tableau ha completado correctamente el flujo de OAuth, pero se ha producido un fallo en el controlador. Eso significa que hay un fallo de configuración en el lado de AWS o del IdP. Asimismo, es posible que el controlador devuelva algún error de permiso o autorización, lo que también está fuera del control de Tableau.
Antes de empezar a hacer pruebas, debe obtener un token de acceso (el predeterminado para IAM IDC) o un token de actualización (si está personalizado) para enviárselo al controlador.
A continuación, puede ver un ejemplo con Okta. Casi todos los IdP permiten hacerlo de una forma bastante similar. Tenga en cuenta que para utilizar este flujo debe habilitar el tipo de concesión de contraseña del propietario del recurso. Sustituya la URL del IdP, el secreto de cliente, el ID de cliente, el nombre de usuario y la contraseña.
curl -X POST "https://OKTA_URL/v1/token" \
-H 'accept: application/json' \
-H "Authorization: Basic $(echo -n 'CLIENTID:CLIENTSECRET' | base64)" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "grant_type=password&username=USER&password=PASSWORD&scope=openid"
Una vez que tenga el token, podrá usar un DSN para realizar la prueba. En el caso de Windows, puede utilizar la interfaz de usuario del administrador de controladores ODBC. En el caso de Mac, puede utilizar la interfaz de usuario del administrador de controladores iODBC. En Linux, puede utilizar la herramienta de línea de comandos isql que se incluye con Tableau Server en la carpeta customer-bin.
Tableau recomienda no utilizar otros complementos para realizar pruebas, ya que es posible que no funcionen en un entorno de servidor. Utilizan un perfil de AWS fijo o requieren acceso directo a un navegador.
A continuación, se muestra un ejemplo del uso del administrador de controladores ODBC en Windows.