Amazon Redshift IAM OAuth instellen
Vanaf Tableau 2023.3.2 kunt u OAuth 2.0/OIDC gebruiken om de identiteit van een externe identiteitsprovider te federeren naar Amazon Redshift.
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.
Opmerking: Vernieuwingstokens voor eenmalig gebruik (soms ook wel rolling vernieuwingstokens of rotatie van vernieuwingstokens genoemd) worden op dit moment niet ondersteund voor OAuth-verbindingen met Tableau. Ondersteuning voor deze tokens staat gepland voor een toekomstige release.
Stap 1: Configureer de IDP
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 de nieuwe Tableau OAuth-configuratiebestanden in de map
OAuthConfigs
die is gekoppeld aan elke toepassing op desktophosts (Tableau Desktop, Tableau Prep Builder, Tableau Bridge) en op elke Tableau Server- en Tableau Cloud-site die OAuth gaat gebruiken.
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)).
Tokens
Standaard geeft Redshift OAuth IAM het ID-token door aan het stuurprogramma. Voor on-premise klanten, waaronder klanten die Tableau Bridge gebruiken, kunt u in plaats daarvan een TDC-bestand gebruiken om het toegangstoken door te geven.
<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>
Zie Een verbinding aanpassen en afstemmen(Link wordt in een nieuw venster geopend) en Een .tdc-bestand gebruiken met Tableau Server(Link wordt in een nieuw venster geopend) voor meer informatie over het configureren en installeren van .tdc-bestanden.
Informatie over groepsfederatie
Wanneer u OAuth-verificatie met een IAM-rol gebruikt, kunt u selecteren of u groepsfederatie wilt gebruiken. Dit verandert de manier waarop de connector communiceert met de verificatie-API voor interactie met Redshift:
- Als het vakje Groepsfederatie is aangevinkt tijdens het verbinden, gebruikt het Redshift-stuurprogramma de
getClusterCredentialsWithIAM
(Link wordt in een nieuw venster geopend) API voor het verkrijgen van referenties in ingerichte clusters. - Als het vakje Groepsfederatie niet is aangevinkt, wordt in plaats daarvan de
getClusterCredentials
(Link wordt in een nieuw venster geopend) API gebruikt.
Deze twee API's retourneren IAM-tokens met enigszins verschillende eigenschappen. Volg de hierboven vermelde link naar de AWS API-documentatie voor meer informatie.
Opmerkingen bij het gebruik
- Deze functie is vanaf versie 2025.1 algemeen beschikbaar voor zowel Tableau Server als Tableau Cloud (inclusief webauthoring). Voor oudere versies kunt u dit configureren in het dialoogvenster Verbinding van Tableau Desktop via het tabblad Geavanceerd van dit dialoogvenster of via een TDC-bestand. Zie Een verbinding aanpassen en afstemmen voor meer informatie over het gebruik van een TDC-bestand.
- Als u Groepsfederatie wilt gebruiken met Tableau Server, moet group_federation worden toegevoegd aan de ODBC extras-toelatingslijst. Zie De verbindingstekenreeks aanpassen voor systeemeigen connectors voor meer informatie.
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
De beste manier om een diagnose van fouten te stellen is door Tableau buiten beeld te laten. U kunt in plaats daarvan testen met behulp van de stuurprogrammamanager of een vergelijkbare tool. Dit is alleen bedoeld om problemen op te lossen. DSN en de connector 'Andere ODBC' zijn niet bedoeld voor normaal gebruik van deze functie. Voor een geldige test moeten de parameters overeenkomen met de onderstaande parameters, met uitzondering van de clusterinformatie, de database, het token en de naamruimte.
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 heeft Tableau de OAuth-flow 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 Tableau ook geen invloed op heeft.
Voordat u begint met testen, dient u een toegangstoken (de standaard voor IAM IDC) of vernieuwingstoken (indien aangepast) te verkrijgen om naar het stuurprogramma te verzenden.
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. In Windows kunt u de ODBC-stuurprogrammamanager gebruiken. 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.
Tableau raadt u aan om geen andere plug-ins te gebruiken om te testen, omdat deze mogelijk niet werken in een serveromgeving. Deze gebruiken een vast AWS-profiel of vereisen directe toegang tot een browser.
Hieronder ziet u een voorbeeld van het gebruik van de ODBC-stuurprogrammamanager in Windows.