Konfigurera OAuth för Amazon Redshift IAM Identity Center

Från och med Tableau 2023.3.2 för lokala installationer (Tableau Desktop, Tableau Server och Tableau Prep) och från och med april 2024 för Tableau Cloud kan du använda OAuth 2.0/OIDC för att federera identitet från en extern identitetsprovider till Amazon Redshift.

De här instruktionerna är för den äldre AWS IAM-tjänsten. Läs mer om IAM IDC-integrering i Konfigurera OAuth för Amazon Redshift IAM Identity Center.

Beroende på identitetsprovider finns det olika steg som måste genomföras för att konfigurera integreringen. Detta är en översikt. Tableau kan inte tillhandahålla detaljerade instruktioner för hur man konfigurerar AWS eller identitetsprovidern, men det allmänna tillvägagångssättet beskrivs nedan.

Konfigurera identitetsprovidern

  1. Skapa OAuth-klienter på identitetsprovidern för Tableau Desktop och Tableau Server eller Tableau Cloud. Tableau Desktop-klienten ska aktivera PKCE och använda http://localhost-omdirigeringar.

  2. Lägg till anpassade anspråk för auktorisering till roller. Om du använder den ursprungliga IAM-tjänsten kan du vilja lägga till anspråk för DbUser och DbGroups. Dessa kan användas i dina IAM-policyer senare.

  3. Skapa Tableau OAuth-konfigurationsfilerna. Läs dokumentationen hos GitHub(Länken öppnas i ett nytt fönster) och exempel här(Länken öppnas i ett nytt fönster). Vi tar gärna emot exempel för andra identitetsprovider.

    1. Se till att lägga till prefixet ”custom_” i konfigurations-ID:na för Tableau OAuth.

    2. Om identitetsprovidern har stöd för en dynamisk localhost-port inaktiverar du OAUTH_CAP_FIXED_PORT_IN_CALLBACK_URL. Om din identitetsprovider inte har stöd för detta ska du lägga till flera URL:er för localhost-återanrop i godkännandelistan i konfigurationsfilen och på identitetsprovidern.

  4. Installera Tableau OAuth-konfigurationsfiler på stationära datorer och Tableau Server- eller Tableau Cloud-platser.

Konfigurera identitetsprovider på AWS

1. Skapa identitetsprovidermodellen på AWS. Se Amazon-dokumenten About web identity federation(Länken öppnas i ett nytt fönster) och Creating OpenID Connect (OIDC) identity providers(Länken öppnas i ett nytt fönster).

2. Skapa roller och policyer specifikt för identitetsprovidern. Se AWS-dokumentet Create a role for OpenID Connect federation (console)(Länken öppnas i ett nytt fönster).

Konfigurera roller för Redshift-användare

Bifoga de policyer som behövs för Redshift. Du kan använda anpassade anspråk från token för att auktorisera roller. Det finns flera exempel med SAML i AWS-dokumentationen(Länken öppnas i ett nytt fönster). Dessa kan enkelt anpassas till OAuth. När det gäller OAuth är anspråken bara ”DbUser”, ”DbGroups” osv.

Här är ett exempel på policyn från AWS-dokumentationen:

{
"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": "*"
}
]
}

Ansluta till Redshift

Användaren måste ange vilken roll ARN ska anta och välja den OAuth-konfiguration som har installerats tidigare.

När den har konfigurerats korrekt kommer användaren att omdirigeras till identitetsprovidern för att autentisera och auktorisera token för Tableau. Tableau kommer att få openid- och uppdateringstoken. AWS kan validera token och signaturen från identitetsprovidern, extrahera anspråken från token, slå upp mappningen av anspråk mot IAM-roll och antingen tillåta eller neka Tableau att anta rollen å användarens vägnar. (Med andra ord AssumeRoleWithWebIdentity(Länken öppnas i ett nytt fönster).)

Okta

Om du använder Okta är det bättre att använda en ”custom authorization server” (anpassad auktoriseringsserver) i stället för ”org authorization server” (organisationens auktoriseringsserver). De anpassade auktoriseringsservrarna är mer flexibla. En anpassad auktoriseringsserver skapas som standard och kallas ”standard”. Auktoriserings-URL:en bör se ut så här:

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

 

Uppdatera drivrutinen

Du kan använda något av följande för Redshift OAuth som använder den ursprungliga IAM-tjänsten:

Felsökning

Om du ser ett felmeddelande om ogiltig/förfallen token från drivrutinen vid den första anslutningen (den kommer att ha en SQLState-felkod som [28000] eller [08001] i felmeddelandet) lyckades vi slutföra OAuth-flödet men misslyckades i drivrutinen. Detta betyder att det finns en felkonfiguration antingen på AWS-sidan eller hos identitetsprovidern. Det kan också finnas behörighets- eller auktoriseringsfel som returneras från drivrutinen, vilket ligger utanför vår kontroll.

Det bästa sättet att diagnostisera de här felen är att plocka bort Tableau ur bilden. Du måste först få en ID-token (standard) eller åtkomsttoken (om anpassad) att skicka till drivrutinen. Här är ett exempel med Okta. Nästan alla identitetsprovider gör detta på ungefär samma sätt. Tänk på att du måste ha aktiverat lösenord som behörighetstyp för resursägaren för att använda det här flödet. Ersätt identitetsproviderns URL, klienthemligheten, klient-ID:t, användarnamnet och lösenordet.

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"

När du väl har token kan du använda ett DSN för att testa. Nedan visas ett exempel på hur du använder ODBC-drivrutinshanteraren i Windows. På Mac kan du använda iODBC-drivrutinshanterarens gränssnitt. På Linux kan du använda kommandoradsverktyget isql som ingår i Tableau Server i mappen customer-bin.

Tack för din feedback!Din feedback har skickats in. Tack!