Einrichten von Amazon Redshift IAM OAuth

Sie können OAuth 2.0/OIDC ab Tableau 2023.3.2 für On-Premise-Anwendungen (Tableau Desktop, Tableau Server und Tableau Prep) und ab Ende März 2024 auch für Tableau Cloud verwenden. Dadurch können die für einen externen Identitätsanbieter verwendeten Identitäten auch in Amazon Redshift genutzt werden.

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 eine allgemeine Anleitung. Tableau kann keine detaillierten Anweisungen zur Konfiguration von AWS oder vom Identitätsanbieter bereitstellen, eine allgemeine Vorgehensweise wird aber unten beschrieben.

Konfigurieren des Identitätsanbieters (IDP)

  1. Erstellen Sie OAuth-Clients auf dem IDP für Tableau Desktop und Tableau Server oder Tableau Cloud. Am Desktop-Client sollte PKCE aktiviert sein und http://localhost-Weiterleitungen sollten verwendet werden.

  2. 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 und DbGroups hinzufügen. Diese können später in Ihren IAM-Richtlinien verwendet werden.

  3. 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.

    1. Achten Sie darauf, den Tableau-OAuth-Konfigurations-IDs “custom_” voranzustellen.

    2. 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.

  4. Installieren Sie Tableau-OAuth-Konfigurationsdateien auf Desktop-Computern sowie auf Tableau Server oder Tableau Cloud-Sites.

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)).

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:

Problembehebung

Wenn beim ersten Verbindungsversuch eine Fehlermeldung bezüglich eines ungültigen/abgelaufenen Token vom Treiber angezeigt wird (die Fehlermeldung weist einen SQLState-Fehlercode auf, z. B. [28000] oder [08001]), wurde das OAuth-Schema erfolgreich erstellt und der Fehler liegt am Treiber. Dies bedeutet, dass entweder bei AWS oder beim IDP eine fehlerhafte Konfiguration vorliegt. Möglicherweise werden auch Berechtigungs- oder Autorisierungsfehler vom Treiber zurückgegeben, was ebenfalls außerhalb unserer Kontrolle liegt.

Um diese Fehler zu diagnostizieren, ist es am besten, den Vorgang ohne Tableau auszuführen. Zunächst benötigen Sie ein ID-Token (Standardeinstellung) oder ein Zugriffstoken (sofern festgelegt), um es an den Treiber zu senden. 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. Nachfolgend finden Sie ein Beispiel für die Verwendung des ODBC-Treibermanagers unter Windows. 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.

Vielen Dank für Ihr Feedback!Ihr Feedback wurde erfolgreich übermittelt. Vielen Dank.