Configurare OAuth di IAM per Amazon Redshift

A partire da Tableau 2023.3.2, 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.

Fase 1. Configurare il token 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 nuovi file di configurazione Tableau Oauth nella cartella OAuthConfigs associata a ciascuna applicazione sugli host desktop (Tableau Desktop, Tableau Prep Builder, Tableau Bridge) e su ciascun sito Tableau Server e Tableau Cloud che utilizzerà OAuth.

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).

Token

Per impostazione predefinita, Redshift OAuth IAM passa il token ID al driver. Per i clienti locali, compresi quelli che utilizzano Tableau Bridge, puoi invece utilizzare un file TDC per passare il token di accesso.

<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>
		

Per maggiori informazioni sulla configurazione e l'installazione dei file .tdc, consulta Personalizzare e ottimizzare una connessione(Il collegamento viene aperto in una nuova finestra) e Utilizzare un file .tdc con Tableau Server(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

Il modo migliore per diagnosticare gli errori è rimuovere Tableau dal contesto. In alternativa, è possibile effettuare un test utilizzando il gestore driver o uno strumento simile. Questo serve solo per la risoluzione dei problemi: non dovresti usare un DSN o il connettore "Altro ODBC" per l'uso regolare di questa funzionalità. Per garantire la validità del test, i parametri devono essere gli stessi indicati di seguito, ad eccezione delle informazioni sul cluster, del database, del token e dello spazio dei nomi.

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), Tableau ha 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 controllo di Tableau.

Prima di iniziare il test, devi ottenere un token di accesso (predefinito per IAM IDC) o un token di aggiornamento (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. Per Windows puoi utilizzare l’interfaccia utente del gestore driver ODBC. 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.

Tableau consiglia di non utilizzare altri plugin per i test, perché potrebbero non funzionare in un ambiente server. Utilizzano un profilo AWS fisso oppure richiedono l'accesso diretto a un browser.

Di seguito è riportato un esempio di utilizzo del gestore driver ODBC in Windows.

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