Amazon Redshift IAM OAuth instellen

Vanaf Tableau 2023.3.2 voor gebruik op locatie van (Tableau Desktop, Tableau Server en Tableau Prep), kunt u met OAuth 2.0/OIDC identiteiten van een externe identiteitsprovider federatief gebruiken in Amazon Redshift.

Opmerking: vanwege Unicode-problemen in Linux kan het Redshift ODBC 2.0-stuurprogramma momenteel niet worden gebruikt met Linux, als uw ID's (databasenamen, tabelnamen, weergavenamen en kolomnamen) niet in het Engels zijn. We wachten op een bijgewerkt stuurprogramma van Amazon.

Deze instructies hebben betrekking op de oudere AWS IAM-service. Zie Amazon Redshift IAM Identity Center OAuth instellen voor IAM IDC-integratie.

Afhankelijk van de identiteitsprovider zijn er verschillende stappen nodig om de integratie te configureren. Dit is een algemeen overzicht. Tableau kan geen gedetailleerde instructies geven voor het configureren van AWS of de IDP, maar de algemene methode wordt hieronder beschreven.

De IDP configureren

  1. Maak OAuth-clients in de IDP voor Tableau Desktop en Tableau Server of Tableau Cloud. De Desktop-client moet PKCE inschakelen en http://localhost-omleidingen gebruiken.

  2. Voeg aangepaste claims toe die voor autorisatie van rollen worden gebruikt. Met name als u het originele IAM gebruikt, wilt u mogelijk claims toevoegen voor DbUser en DbGroups. Deze kunnen later in uw IAM-beleid worden gebruikt.

  3. Maak de Tableau OAuth-configuratiebestanden. Bekijk de documentatie op GitHub(Link wordt in een nieuw venster geopend) en de voorbeelden hier(Link wordt in een nieuw venster geopend). Voorbeelden voor andere IDP's zijn van harte welkom.

    1. Zorg ervoor dat u het voorvoegsel 'custom_' gebruikt voor OAuth Config-ID's van Tableau.

    2. Als uw IDP de dynamische poort voor localhost ondersteunt, schakelt u OAUTH_CAP_FIXED_PORT_IN_CALLBACK_URL uit. Als uw IDP dit niet ondersteunt, voeg dan verschillende localhost callback-URL's toe aan de toelatingslijst in het configuratiebestand en in de IDP.

  4. Installeer OAuth-configuratiebestanden voor Tableau op desktopcomputers en Tableau Server- of Tableau Cloud-sites.

IDP op AWS configureren

1. Maak het IDP-model in AWS. Bekijk de Amazon-documenten Web Identity Federation(Link wordt in een nieuw venster geopend) en Create OIDC Identity Provider(Link wordt in een nieuw venster geopend).

2. Maak specifiek voor de IDP bestemde rollen en beleid. Zie Create Role for OIDC(Link wordt in een nieuw venster geopend) in de AWS-documenten.

Rollen configureren voor Redshift-gebruikers

Koppel het beleid dat nodig is voor Redshift. U kunt aangepaste claims uit het token gebruiken om rollen te autoriseren. U kunt verschillende voorbeelden met SAML in de AWS-documentatie(Link wordt in een nieuw venster geopend) vinden. Deze kunnen eenvoudig worden aangepast aan OAuth. In het geval van OAuth zijn de claims gewoon 'DbUser', 'DbGroups', enzovoort.

Hier volgt een voorbeeld van het beleid uit de AWS-documentatie:

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

Verbinding maken met Redshift

De gebruiker moet de ARN (Amazon-resourcenaam) voor de rol opgeven om de Oauth-configuratie die eerder is geïnstalleerd op te vragen en te selecteren.

Wanneer de gebruiker correct is geconfigureerd, wordt deze doorgestuurd naar de IDP om tokens voor Tableau te verifiëren en autoriseren. Tableau ontvangt OpenId en vernieuwt tokens. AWS kan het token en de handtekening van de IDP valideren, de claims uit het token halen, de toewijzing van claims aan de IAM-rol opzoeken en Tableau toestaan of blokkeren om de rol namens de gebruiker op zich te nemen. (met andere woorden, AssumeRoleWithWebIdentity(Link wordt in een nieuw venster geopend)).

Okta

Als u Okta gebruikt, is het beter om een 'aangepaste autorisatieserver' te gebruiken in plaats van de 'org-autorisatieserver'. De aangepaste autorisatieservers zijn flexibeler. Er is een aangepaste autorisatieserver die standaard wordt gemaakt en die de naam 'standaard’ heeft. De autorisatie-URL ziet er ongeveer als volgt uit:

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

 

Stuurprogramma bijwerken

Als u wilt dat Redshift OAuth gebruikmaakt van de originele IAM-service, hebt u de volgende opties:

Problemen oplossen

Als u bij de eerste keer dat er verbinding wordt gemaakt een foutmelding ziet over een ongeldig/verlopen token afkomstig van het stuurprogramma (de foutmelding bevat een SQLState-foutcode, zoals [28000] of [08001]), dan is de OAuth-stroom voltooid, maar is er een fout opgetreden met het stuurprogramma. Dit betekent dat er een verkeerde configuratie is aan de kant van AWS of IDP. Er kunnen ook fouten met de machtigingen of autorisatie worden geretourneerd door het stuurprogramma, waar wij ook geen invloed op hebben.

De beste manier om een diagnose te stellen van deze fouten is door Tableau buiten beeld te laten. U moet eerst een ID-token (de standaard) of toegangstoken (indien aangepast) verkrijgen die u naar het stuurprogramma verzendt. Hier volgt een voorbeeld met Okta. Bijna alle IDP's hebben een (soortgelijke) manier om dit op te lossen. Als u deze stroom wilt gebruiken, moet u het wachtwoordtoekenningstype voor de resource-eigenaar hebben ingeschakeld. Vervang de IDP-URL, het clientgeheim, de client-ID, de gebruikersnaam en het wachtwoord.

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"

Wanneer u het token eenmaal hebt, kunt u met DSN een test uitvoeren. Hieronder ziet u een voorbeeld van het gebruik van de ODBC-stuurprogrammamanager in Windows. Op Mac kunt u de gebruikersinterface van de iODBC-stuurprogrammamanager gebruiken. In Linux kunt u de isql-opdrachtregeltool gebruiken die bij Tableau Server wordt geleverd in de map customer-bin.

Bedankt voor uw feedback.De feedback is verzonden. Dank u wel.