Configurare OAuth di IAM per Amazon Redshift

A partire da Tableau 2023.3.2 per gli ambienti locali (Tableau Desktop, Tableau Server e Tableau Prep) e da fine marzo 2024 per Tableau Cloud, puoi utilizzare OAuth 2.0/OIDC per federare l’identità da un provider di identità esterno ad Amazon Redshift.

Queste istruzioni si riferiscono al servizio IAM di AWS precedente. Per l’integrazione con IAM IDC, consulta Configurare OAuth di IAM Identity Center per Amazon Redshift.

A seconda del provider di identità, sono necessari diversi passaggi per configurare l’integrazione. Questa è una panoramica generale. Tableau non può fornire istruzioni dettagliate su come configurare AWS o l’IdP, ma l’approccio complessivo è descritto di seguito.

Configurare l’IdP

  1. Crea i client OAuth nell’IdP per Tableau Desktop e Tableau Server o Tableau Cloud. Il client Desktop dovrebbe abilitare PKCE e utilizzare reindirizzamenti http://localhost.

  2. Aggiungi le attestazioni personalizzate da utilizzare per l’autorizzazione dei ruoli. In particolare, se utilizzi il servizio IAM originale, potrebbe essere utile aggiungere le attestazioni per DbUser e DbGroups. Potranno essere utilizzate nei criteri IAM in un secondo momento.

  3. Crea i file di configurazione OAuth di Tableau. Consulta la documentazione su GitHub(Il collegamento viene aperto in una nuova finestra) e gli esempi disponibili qui(Il collegamento viene aperto in una nuova finestra). Siamo lieti di ricevere esempi per altri IdP.

    1. Assicurati di anteporre il prefisso “custom_” agli ID di configurazione OAuth di Tableau.

    2. Se il tuo IdP supporta la porta localhost dinamica, disabilita OAUTH_CAP_FIXED_PORT_IN_CALLBACK_URL. Se il tuo IdP non la supporta, assicurati di aggiungere diversi URL di callback localhost all’elenco consentiti nel file di configurazione e nell’IdP.

  4. Installa i file di configurazione OAuth di Tableau nei computer desktop e in Tableau Server o nei siti Tableau Cloud.

Configurare l’IdP in AWS

1. Crea il modello IdP in AWS. Consulta i documenti di Amazon Informazioni sulla federazione delle identità Web(Il collegamento viene aperto in una nuova finestra) e Creazione di provider di identità OIDC(Il collegamento viene aperto in una nuova finestra).

2. Creare ruoli e criteri specifici per l’IDP. Consulta Creazione di un ruolo per OIDC(Il collegamento viene aperto in una nuova finestra) nella documentazione di AWS.

Configurare i ruoli per gli utenti Redshift

Associa i criteri necessari per Redshift. Puoi utilizzare le attestazioni personalizzate nel token per autorizzare i ruoli. Esistono diversi esempi con SAML nella documentazione di AWS(Il collegamento viene aperto in una nuova finestra). Questi esempi possono essere facilmente adattati a OAuth. Nel caso di OAuth, le attestazioni sono semplicemente “DbUser”, “DbGroups” e così via.

Ecco un esempio del criterio dalla documentazione di 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": "*"
}
]
}

Eseguire la connessione a Redshift

L’utente deve specificare l’ARN del ruolo da assumere e selezionare la configurazione OAuth installata in precedenza.

Se configurato correttamente, l’utente verrà reindirizzato all’IdP per l’autenticazione e l’autorizzazione dei token per Tableau. Tableau riceverà i token OpenID e di aggiornamento. AWS è in grado di convalidare il token e la firma dell’IdP, estrarre le attestazioni dal token, cercare il mapping delle attestazioni al ruolo IAM e consentire o impedire a Tableau di assumere il ruolo per conto dell’utente. In altre parole, AssumeRoleWithWebIdentity(Il collegamento viene aperto in una nuova finestra).

Okta

Se si utilizza Okta, è meglio utilizzare un “server di autorizzazione personalizzato” anziché il “server di autorizzazione dell’organizzazione”. I server di autorizzazione personalizzati sono più flessibili. Esiste un server di autorizzazione personalizzato creato per impostazione predefinita, denominato “predefinito”. L’URL di autorizzazione dovrebbe essere simile al seguente:

https://${yourOktaDomain}/oauth2/{authServerName}/v1/authorize

 

Aggiornare il driver

Per OAuth di Redshift con il servizio IAM originale, puoi utilizzare:

Risoluzione dei problemi

Se alla prima connessione viene visualizzato un messaggio di errore proveniente dal driver relativo a un token non valido/scaduto (sarà presente un codice di errore SQLState come [28000] o [08001] nel messaggio di errore), è stato completato correttamente il flusso OAuth e si è verificato un problema nel driver. Questo significa che è presente una configurazione errata sul lato AWS o sul lato IdP. Il driver potrebbe inoltre restituire errori relativi alle autorizzazioni, anch’essi fuori dal nostro controllo.

Il modo migliore per diagnosticare questi errori è rimuovere Tableau dal contesto. Devi prima ottenere un token ID (predefinito) o un token di accesso (se personalizzato) da inviare al driver. Ecco un esempio con Okta. Quasi tutti gli IdP offrono un metodo simile per eseguire questa operazione. Tieni presente che per utilizzare questo flusso devi aver abilitato il tipo di concessione della password per il proprietario della risorsa. Sostituisci l’URL l’IdP, il segreto client, l’ID client, il nome utente e la password.

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 volta ottenuto il token, puoi utilizzare un DSN per testarlo. Di seguito è riportato un esempio di utilizzo del gestore driver ODBC in Windows. Su Mac puoi utilizzare l’interfaccia utente del gestore driver iODBC. Su Linux puoi utilizzare lo strumento della riga di comando isql incluso con Tableau Server nella cartella customer-bin.

Grazie per il tuo feedback.Il tuo feedback è stato inviato. Grazie!