Konfigurera OAuth för Amazon Redshift IAM Identity Center
Från och med Tableau 2023.3.2 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.
Obs! Uppdateringstoken för engångsbruk (ibland kallade rullande uppdateringstoken eller rotation av uppdateringstoken) stöds för närvarande inte för OAuth-anslutningar till Tableau. Stöd för dessa token planeras för en framtida version.
Steg 1: Konfigurera en IDP
Skapa OAuth-klienter på identitetsprovidern för Tableau Desktop och Tableau Server eller Tableau Cloud. Desktop-klienten ska aktivera
PKCE
och användahttp://localhost
-omdirigeringar.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
ochDbGroups
. Dessa kan användas i dina IAM-policyer senare.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.
Se till att lägga till prefixet ”
custom_
” i konfigurations-ID:na för Tableau OAuth.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.
Installera de nya OAuth-konfigurationsfilerna för Tableau i mappen
OAuthConfigs
för varje associerat program på värddatorerna (Tableau Desktop, Tableau Prep Builder, Tableau Bridge) och på alla Tableau Server- och Tableau Cloud-platser som ska använda OAuth.
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).)
Token
Som standard skickar Redshift OAuth IAM ID-token till föraren. För kunder på plats, inklusive de som använder Tableau Bridge, kan du använda en TDC-fil för att skicka åtkomsttoken istället.
<connection-customization class='redshift' enabled='true' version='10.0'> <vendor name='redshift' /> <driver name='redshift' /> <customizations> <customization name='CAP_OAUTH_FEDERATE_ACCESS_TOKEN' value='yes'/> </customizations> </connection-customization>
Mer information om att konfigurera och installera .tdc-filer finns i Anpassa och ställa in en anslutning(Länken öppnas i ett nytt fönster) och Using a .tdc File with Tableau Server(Länken öppnas i ett nytt fönster) (på engelska).
Om Gruppfederation
När du använder OAuth-autentisering med en IAM-roll kan du välja att använda gruppfederation eller inte. Detta ändrar hur kopplingen interagerar med autentiserings-API:et för att interagera med Redshift:
- När rutan Gruppfederation är markerad när du ansluter, använder Redshift-drivrutinen API:et
getClusterCredentialsWithIAM
(Länken öppnas i ett nytt fönster) för att hämta autentiseringsuppgifterna i provisionerade kluster. - När rutan Gruppfederation inte är markerad, används API:et
getClusterCredentials
(Länken öppnas i ett nytt fönster) istället.
Dessa två API:er returnerar IAM-token med något olika egenskaper. Mer information finns i den AWS API-dokumentation som länkas till ovan.
Användningsanteckningar
- Den här funktionen är allmänt tillgänglig för både Tableau Server och Tableau Cloud (inklusive webbredigering) från och med version 2025.1. För äldre versioner kan den konfigureras i anslutningsdialogrutan för Tableau Desktop med antingen fliken Avancerat i anslutningsdialogrutan eller genom att använda en TDC. Mer information om användningen av en TDC finns i Anpassa och ställa in en anslutning.
- För att använda gruppfederation med Tableau Server måste du lägga till group_federation i godkännandelistan för ODBC. Mer information finns i Anpassa anslutningssträngen för inbyggda kopplingar.
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:
Redshift ODBC v1-drivrutinen från och med version 1.59, som kan laddas ner från https://docs.aws.amazon.com/redshift/latest/mgmt/configure-odbc-connection.html(Länken öppnas i ett nytt fönster).
Redshift ODBC v2-drivrutinen från och med version 2.0.1.0, som kan laddas ner från https://github.com/aws/amazon-redshift-odbc-driver/tags(Länken öppnas i ett nytt fönster). Observera att det inte finns någon v2-drivrutin för OSX.
Felsökning
Det bästa sättet att diagnostisera fel är att plocka bort Tableau ur bilden. Du kan i stället testa med drivrutinshanteraren eller ett liknande verktyg. Detta är bara för felsökning – du bör inte använda ett DSN eller kopplingen ”Andra databaser (ODBC)” för regelbunden användning av den här funktionen. För att testet ska vara giltigt bör parametrarna vara desamma som de nedan, med undantag för klusterinformation, databas, token och namnutrymme.
Om det visas ett felmeddelande om ogiltig/förfallen token från drivrutinen vid den första anslutningen (med en SQLState-felkod som [28000] eller [08001] i felmeddelandet), så har Tableau slutfört OAuth-flödet utan fel men misslyckats med 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 också ligger utanför Tableaus kontroll.
Innan du börjar testa måste du först få en åtkomsttoken (standard för IAM IDC) eller en uppdateringstoken (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. På Windows kan du använda ODBC-drivrutinshanteraren. 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.
Tableau rekommenderar att du inte använder andra plugin-program för testning, eftersom de kanske inte fungerar i en servermiljö. De använder antingen en fast AWS-profil eller kräver direkt tillgång till en webbläsare.
Nedan visas ett exempel på hur du använder ODBC-drivrutinshanteraren i Windows.