Amazon Redshift IAM OAuth instellen
Belangrijk: het Redshift ODBC-stuurprogramma dat momenteel is geïmplementeerd in Tableau Cloud ondersteunt OAuth niet. We kunnen het nieuwste stuurprogramma (v2.x) niet implementeren vanwege Unicode-problemen in Linux. Wanneer Amazon een bijgewerkte versie uitbrengt met oplossingen voor de Unicode-fouten, wordt het stuurprogramma geïmplementeerd in Tableau Cloud. Tot die tijd kunt u het huidige stuurprogramma 2.0 gebruiken met Tableau Bridge in Windows of, als uw ID's (databasenamen, tabelnamen, weergavenamen en kolomnamen) in het Engels zijn, kunt u het huidige stuurprogramma 2.0 gebruiken met Tableau Bridge in Linux. Zie Bridge gebruiken om data actueel te houden voor meer informatie over Bridge.
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
Maak OAuth-clients in de IDP voor Tableau Desktop en Tableau Server of Tableau Cloud. De Desktop-client moet
PKCE
inschakelen enhttp://localhost
-omleidingen gebruiken.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
enDbGroups
. Deze kunnen later in uw IAM-beleid worden gebruikt.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.
Zorg ervoor dat u het voorvoegsel '
custom_
' gebruikt voor OAuth Config-ID's van Tableau.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.
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:
Redshift ODBC v1-stuurprogramma vanaf versie 1.59, dat kan worden gedownload van https://docs.aws.amazon.com/redshift/latest/mgmt/configure-odbc-connection.html(Link wordt in een nieuw venster geopend).
Redshift ODBC v2-stuurprogramma vanaf versie 2.0.1.0, dat kan worden gedownload van https://github.com/aws/amazon-redshift-odbc-driver/tags(Link wordt in een nieuw venster geopend). Er is geen v2-stuurprogramma voor OSX.
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.