Einrichten von Amazon Redshift IAM OAuth
Diese Anweisungen gelten für den älteren AWS-IAM-Service. Informationen zur IAM-IDC-Integration finden Sie unter Einrichten von Amazon Redshift IAM Identity Center OAuth.
Je nach Identitätsanbieter sind unterschiedliche Schritte zur Konfiguration der Integration erforderlich. Dies ist ein allgemeiner Überblick. Tableau kann keine detaillierten Anweisungen zur Konfiguration von AWS oder vom Identitätsanbieter bereitstellen, eine allgemeine Vorgehensweise wird aber unten beschrieben.
Hinweis: Einmalig zu verwendende Aktualisierungstoken (auch rollierende Aktualisierungstoken oder Aktualisierungstoken-Rotation genannt) werden für OAuth-Verbindungen zu Tableau derzeit nicht unterstützt. Die Unterstützung dieser Token ist für eine zukünftige Version geplant.
Schritt 1: Konfigurieren des IDP
Erstellen Sie OAuth-Clients auf dem IDP für Tableau Desktop und Tableau Server oder Tableau Cloud. Am Desktop-Client sollte
PKCE
aktiviert sein undhttp://localhost
-Weiterleitungen sollten verwendet werden.Fügen Sie benutzerdefinierte Ansprüche für die Autorisierung von Rollen hinzu. Insbesondere wenn Sie das Original-IAM verwenden, möchten Sie möglicherweise Ansprüche für
DbUser
undDbGroups
hinzufügen. Diese können später in Ihren IAM-Richtlinien verwendet werden.Erstellen Sie die Tableau-OAuth-Konfigurationsdateien. Siehe die Dokumentation zu GitHub(Link wird in neuem Fenster geöffnet) und diese Beispiele(Link wird in neuem Fenster geöffnet). Wir freuen uns über Beispiele für andere IDPs.
Achten Sie darauf, den Tableau-OAuth-Konfigurations-IDs die Zeichenfolge
custom_
voranzustellen.Wenn Ihr IDP den dynamischen Localhost-Port unterstützt, deaktivieren Sie
OAUTH_CAP_FIXED_PORT_IN_CALLBACK_URL
. Wenn Ihr IDP dies nicht unterstützt, fügen Sie mehrere Localhost-Rückruf-URLs zur Zulassungsliste in der Konfigurationsdatei und auf dem IDP hinzu.
Installieren Sie die neuen Tableau-OAuth-Konfigurationsdateien in dem
OAuthConfigs
-Ordner, der auf Desktop-Hosts (Tableau Desktop, Tableau Prep Builder, Tableau Bridge) mit den einzelnen Anwendungen verknüpft ist, und auf jeder Tableau Server- und Tableau Cloud-Site, die OAuth verwenden wird.
Konfigurieren des IDP auf AWS
1. Erstellen Sie das IDP-Modell auf AWS. Siehe die Amazon-Dokumente Web Identity Federation(Link wird in neuem Fenster geöffnet) und Erstellen eines OIDC-Identitätsanbieters(Link wird in neuem Fenster geöffnet).
2. Erstellen Sie Rollen und Richtlinien speziell für den IDP. Siehe Erstellen einer Rolle für OIDC(Link wird in neuem Fenster geöffnet) in der AWS-Dokumentation.
Konfigurieren von Rollen für Redshift-Benutzer
Fügen Sie die für Redshift erforderlichen Richtlinien bei. Sie können benutzerdefinierte Ansprüche vom Token verwenden, um Rollen zu autorisieren. Es gibt mehrere Beispiele mit SAML in der AWS-Dokumentation(Link wird in neuem Fenster geöffnet). Diese können einfach an OAuth angepasst werden. Im Fall von OAuth lauten die Ansprüche nur "DbUser
", "DbGroups
" usw.
Hier ist ein Beispiel der Richtlinie in der AWS-Dokumentation:
{
"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": "*"
}
]
}
Verbinden mit Redshift
Der Benutzer muss den zu übernehmenden Rollen-ARN angeben und die zuvor installierte OAuth-Konfiguration auswählen.
Bei ordnungsgemäßer Konfiguration wird der Benutzer zum IDP weitergeleitet, um Token für Tableau zu authentifizieren und zu autorisieren. Tableau erhält OpenID- und Refresh-Token. AWS ist in der Lage, das Token und die Signatur vom IDP zu validieren, die Ansprüche vom Token zu extrahieren, die Zuordnung von Ansprüchen zur IAM-Rolle abzurufen und Tableau die Übernahme der Rolle im Namen des Benutzers entweder zu erlauben oder zu blockieren. (mit anderen Worten: AssumeRoleWithWebIdentity(Link wird in neuem Fenster geöffnet)).
Token
In der Standardeinstellung übergibt Redshift OAuth IAM das ID-Token an den Treiber. Für lokale Kunden – inklusive von Kunden, die Tableau Bridge verwenden – können Sie stattdessen eine TDC-Datei verwenden, um das Zugriffstoken zu übergeben.
<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>
Weitere Informationen über das Konfigurieren und Installieren von TDC-Dateien finden Sie unter Anpassen und Optimieren einer Verbindung(Link wird in neuem Fenster geöffnet) und Verwenden einer .tdc-Datei mit Tableau Server(Link wird in neuem Fenster geöffnet).
Über Group Federation
Wenn Sie die OAuth-Authentifizierung mit einer IAM-Rolle verwenden, können Sie auswählen, ob Sie die Group Federation verwenden oder nicht. Dadurch ändert sich die Art, wie der Connector mit der Authentifizierungs-API interagiert, um eine Schnittstelle zu Redshift herzustellen:
- Wenn das Kontrollkästchen „Group Federation“ beim Herstellen der Verbindung aktiviert ist, verwendet der Redshift-Treiber die API
getClusterCredentialsWithIAM
(Link wird in neuem Fenster geöffnet) zum Abrufen der Anmeldeinformationen in den bereitgestellten Clustern. - Wenn das Kontrollkästchen „Group Federation“ nicht aktiviert ist, wird stattdessen die API
getClusterCredentials
(Link wird in neuem Fenster geöffnet) verwendet.
Diese beiden APIs geben IAM-Token mit leicht unterschiedlichen Eigenschaften zurück. Weitere Informationen finden Sie in der oben verlinkten AWS-API-Dokumentation.
Hinweise zur Verwendung
- Diese Funktion ist ab Version 2025.1 allgemein sowohl für Tableau Server als auch für Tableau Cloud (einschließlich der Webdokumenterstellung) verfügbar. Bei älteren Versionen kann die Funktion im Verbindungsdialog von Tableau Desktop entweder über die Registerkarte „Erweitert“ des Verbindungsdialogs oder mithilfe einer TDC-Datei konfiguriert werden. Weitere Informationen zur Verwendung einer TDC-Datei finden Sie unter Anpassen und Optimieren von Verbindungen.
- Um Group Federatoin mit Tableau Server zu verwenden, muss „group_federation“ zur ODBC-extras-Zulassungsliste hinzugefügt werden. Weitere Informationen finden Sie unter Anpassen der Verbindungszeichenfolge für native Connectoren.
Okta
Wenn Sie Okta verwenden, ist es besser, einen "benutzerdefinierten Autorisierungsserver" anstelle des "Organisationsautorisierungsservers" zu verwenden. Die benutzerdefinierten Autorisierungsserver sind flexibler. Standardmäßig wird ein benutzerdefinierter Autorisierungsserver erstellt, der "Standard" heißt. Die Autorisierungs-URL sollte folgendermaßen aussehen:
https://${yourOktaDomain}/oauth2/{authServerName}/v1/authorize
Aktualisieren von Treibern
Wenn Redshift OAuth den ursprünglichen IAM-Dienst verwendet, können Sie einen dieser Treiber verwenden:
Redshift-Treiber ODBC v1 ab Version 1.59, der unter https://docs.aws.amazon.com/redshift/latest/mgmt/configure-odbc-connection.html(Link wird in neuem Fenster geöffnet) heruntergeladen werden kann.
Redshift-Treiber ODBC v2 ab Version 2.0.1.0, der unter https://github.com/aws/amazon-redshift-odbc-driver/tags(Link wird in neuem Fenster geöffnet) heruntergeladen werden kann. Beachten Sie, dass es für OSX keinen v2-Treiber gibt.
Problembehebung
Diese Fehler lassen sich am besten untersuchen, indem Sie Tableau außen vor lassen. Sie können die Tests stattdessen mithilfe des Treibermanagers oder einem ähnlichen Tool durchführen. Dies gilt nur für die Fehlerbehebung – für die reguläre Verwendung dieses Features sollten Sie keinen DSN- oder „anderen ODBC“-Port verwenden. Damit der Test aussagekräftig ist, sollten die Parameter – mit Ausnahme der Cluster-, Datenbank-, Token- und Namespace-Informationen – dieselben sein wie unten aufgeführt.
Wenn der Treiber beim ersten Herstellen einer Verbindung eine Fehlermeldung bezüglich eines ungültigen/abgelaufenen Tokens zurückgibt (mit einem SQLState-Fehlercode wie [28000] oder [08001]), bedeutet dies, dass Tableau den OAuth-Ablauf erfolgreich abgeschlossen hat und der Fehler ist im Treiber vorliegt. Dies bedeutet, dass entweder bei AWS oder beim IDP eine fehlerhafte Konfiguration vorliegt. Möglicherweise werden vom Treiber auch Berechtigungs- oder Autorisierungsfehler zurückgegeben, was ebenfalls außerhalb der Kontrolle von Tableau liegt.
Vor Beginn des Tests müssen Sie ein Zugriffstoken (Standard für IAM IDC) oder ein Aktualisierungstoken (sofern angepasst) erhalten, das an den Treiber gesendet werden soll.
Hier ist ein Beispiel mit Okta. Fast alle IDPs bieten diese Möglichkeit, die bei allen sehr ähnlich ist. Beachten Sie, dass Sie zur Verwendung dieses Schemas den Kennwort-Gewährungstyp "Ressourcenbesitzer" aktiviert haben müssen. Ersetzen Sie die IDP-URL, den geheimen Clientschlüssel, die Client-ID, den Benutzernamen und das Kennwort.
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"
Sobald Sie das Token haben, können Sie einen DSN zum Testen verwenden. Unter Windows können Sie den ODBC-Treibermanager verwenden. Auf einem Mac können Sie die Benutzeroberfläche des iODBC-Treibermanagers verwenden. Unter Linux können Sie das isql-Befehlszeilentool verwenden, das in Tableau Server im Ordner "customer-bin" verfügbar ist.
Tableau empfiehlt, zum Testen keine anderen Plug-Ins zu verwenden, da diese in einer Serverumgebung möglicherweise nicht funktionieren. Sie verwenden entweder ein festes AWS-Profil oder erfordern direkten Zugriff auf einen Browser.
Nachfolgend finden Sie ein Beispiel für die Verwendung des ODBC-Treibermanagers unter Windows.