Inhaltsverzeichnis
In dieser Schritt-für-Schritt-Anleitung erfahren wir, wie man die SSO-Authentifizierung mit Redshift und AWS IAM Identity Center einrichtet, um die Sicherheit zu erhöhen und den Benutzerzugang zu erleichtern.
Verwendete Quellen:
- https://aws.amazon.com/blogs/big-data/federated-authentication-to-amazon-redshift-using-aws-single-sign-on/
- https://aws.amazon.com/blogs/big-data/amazon-redshift-identity-federation-with-multi-factor-authentication/
Begriffslexikon:
Begriff | Bedeutung |
---|---|
Identity Center Konto | Das Konto, in dem das IAM Identity Center konfiguriert ist. |
Redshift Konto | Das Unterkonto des Identity Center Kontos, das den Redshift-Cluster enthält, mit dem wir eine Verbindung herstellen möchten. |
IDP | Identity Provider |
Was ist Redshift?
AWS Redshift ist ein vollständig verwalteter Data-Warehouse-Dienst, der von Amazon Web Services (AWS) bereitgestellt wird.
Es ist darauf ausgelegt, groß angelegte Datenanalyse-Workloads zu bewältigen und ermöglicht es Organisationen, große Datenmengen schnell und kostengünstig zu analysieren.
Was ist IAM Identity Center?
IAM Identity Center bietet einen zentralen Ort, an dem Sie Arbeitsbenutzer erstellen oder verbinden und deren Zugriff auf alle AWS-Konten und Anwendungen zentral verwalten können.
Sie können Mehrkontenberechtigungen verwenden, um Ihren Arbeitsbenutzern Zugriff auf AWS-Konten zu gewähren.
Warum SSO?
SSO verringert die Anzahl der Angriffsflächen, da sich Benutzer nur einmal täglich anmelden und nur ein Satz Anmeldeinformationen verwenden.
Die Reduzierung auf einen Satz Anmeldeinformationen verbessert die Sicherheit des Unternehmens.
Wenn Mitarbeiter separate Passwörter für jede App verwenden müssen, tun sie dies normalerweise nicht.
Voraussetzungen
- Vorkonfiguriertes IAM Identity Center → Erste Schritte – AWS IAM Identity Center.
- Vorkonfigurierter Redshift-Cluster mit administrativem Zugriff.
- Benutzername und Passwort der Identitätsquelle (Okta, PingOne, etc.).
- JetBrains DataGrip installiert (kann kostenlos sein).
Schritt für Schritt:
Identity Center-Anwendung konfigurieren
Unser erster Schritt wird sein, eine neue AWS Identity Center-Anwendung im Identity Center Konto zu erstellen, die als Hauptkanal zwischen Benutzern und dem Redshift-Cluster verwendet wird.
- Klicken Sie im Seitenbereich des IAM Identity Centers auf „Anwendungen“.
- Klicken Sie in der oberen rechten Ecke auf „Anwendung hinzufügen“.
- Wählen Sie „benutzerdefinierte SAML 2.0-Anwendung hinzufügen“ und klicken Sie auf „Weiter“.
- Legen Sie einen geeigneten Anzeigenamen fest, wir nennen unsere Anwendung „Redshift-ReadOnly“, da diese Anwendung verwendet wird, um Lesezugriff auf die Clusterdaten zu erhalten.
- Laden Sie die SAML-Metadatendatei des Identity Centers herunter, wir werden sie später verwenden, um unsere Redshift-Kontoanwendung zu konfigurieren.
- Kopieren Sie die Anmelde-URL der Anwendung URL, da wir sie später benötigen.
- Als nächstes konfigurieren wir die SAML-Anwendungs-ACS (auch bekannt als Assertion Consumer Service).
Kurz gesagt, ACS ist der Ort, an den die SAML-Anwendungsantwort gesendet wird.
Da wir den AWS Redshift JDBC-Treiber verwenden werden, um eine Verbindung zu unserem Redshift-Cluster herzustellen, müssen wir die Anwendungs-ACS aufhttp://localhost:7890/redshift/
setzen – da der JDBC-Treiber standardmäßig einen Server auf Port 7890 startet. - Um die SAML-Anwendungsassertion nur auf Redshift zu beschränken, konfigurieren wir das Feld „Anwendungs-SAML-Zielgruppe“ auf
urn:amazon:webservices:redshift
.
Identity Provider erstellen
Nachdem wir unsere Redshift-ReadOnly-Anwendung im Identity Center Konto erstellt haben, müssen wir einen Identity Provider konfigurieren, der von der Redshift-ReadOnly-Anwendung verwendet wird, um eine Verbindung zum Redshift-Konto-Redshift-Cluster herzustellen.
- Klicken Sie im Seitenbereich des IAM-Dashboards Ihres Redshift-Kontos auf Identity Providers.
- Klicken Sie in der oberen rechten Ecke auf „Provider hinzufügen“.
- Füllen Sie die Details für den neuen IDP aus:
- Setzen Sie den „Provider-Namen“ auf Redshift-ReadOnly (gleich wie unsere zuvor konfigurierte Anwendung).
- Laden Sie die Metadatendatei hoch, die wir während des Konfigurationsprozesses unserer IAM Identity Center-Anwendung heruntergeladen haben. Klicken Sie auf „Provider hinzufügen“ und beenden Sie.
- Gehen Sie zur IDP-Beschreibungsseite und kopieren Sie die IDP ARN, wir werden sie später verwenden.
IAM-Rolle und -Richtlinie erstellen
Nachdem wir den Identity Provider erstellt haben, der von unserer IAM Identity Center-Anwendung verwendet wird, können wir die Rolle erstellen, die verwendet wird, um eine Verbindung zum Redshift-Cluster herzustellen.
- Klicken Sie im Seitenbereich des IAM-Dashboards Ihres Redshift-Kontos auf Rollen.
- Klicken Sie in der oberen rechten Ecke auf „Rolle erstellen“.
- Erstellen Sie eine vertrauenswürdige Entität vom Typ SAML 2.0-Föderation und setzen Sie Folgendes:
- Setzen Sie den IDP auf den „Redshift-ReadOnly“-IDP, den wir zuvor erstellt haben.
- Wählen Sie die Option „Nur programmgesteuerten Zugriff zulassen“ und setzen Sie:
Attribut: „SAML:aud“ → Festlegung, welche Zielgruppe diese Rolle übernehmen kann.
Wert: „http://localhost:7890/redshift/“ → Festlegung der Zielgruppe auf unseren lokalen Redshift JDBC-Treiber-Server (wie im ersten Abschnitt erklärt).
Klicken Sie auf „Weiter“.
- Klicken Sie auf „Richtlinie erstellen“ und ein neuer Tab wird geöffnet.
- Wählen Sie „JSON“.
- Fügen Sie im Richtlinien-Editor-Panel die folgende Richtlinienanweisung ein und bearbeiten Sie die folgenden Werte im „Ressourcen“-Bereich, um sie an Ihre eigenen anzupassen:
<region>, <account>, <clusterName>
.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "redshift:CreateClusterUser", "redshift:JoinGroup", "redshift:GetClusterCredentials", "redshift:ListSchemas", "redshift:ListTables", "redshift:ListDatabases", "redshift:ExecuteQuery", "redshift:FetchResults", "redshift:CancelQuery", "redshift:DescribeClusters", "redshift:DescribeQuery", "redshift:DescribeTable" ], "Resource": [ "arn:aws:redshift: : :cluster: ", "arn:aws:redshift: : :dbuser: /${redshift:DbUser}", "arn:aws:redshift: : :dbname: /${redshift:DbName}", "arn:aws:redshift: : :dbgroup: /bi_users_group", ] } ] } - Benennen Sie die Richtlinie „Redshift-ReadOnly-policy“ und klicken Sie auf „Create policy“.
- Gehen Sie zurück zum ursprünglichen Tab, in dem wir begonnen haben, unsere IAM-Rolle zu erstellen
→ klicken Sie auf Aktualisieren → geben Sie „Redshift-ReadOnly-policy“ in die Suchleiste ein → markieren Sie die Richtlinie „Redshift-ReadOnly-policy“ → klicken Sie auf „Next“. - Benennen Sie die Rolle „Redshift-ReadOnly-role“ und klicken Sie in der unteren rechten Ecke auf „Create role“.
- Jetzt, da wir die IAM-Rolle erstellt haben, gehen Sie zu ihrer Beschreibungsseite und kopieren Sie die Rollen-ARN, die wir später verwenden werden.
Konfigurieren Sie die IAM Identity Center Anwendungsattribute
Um unsere Anwendung so zu konfigurieren, dass sie mit Redshift funktioniert, müssen wir einige Anwendungsattribute konfigurieren, die ihr „wie man sich verbindet“ anleiten.
- Gehen Sie im IAM Identity Center zum Anwendungsbereich und wählen Sie die Anwendung aus, die wir zuvor erstellt haben.
- Weisen Sie Benutzer und Gruppen zu, denen Sie Berechtigungen für diese Anwendung erteilen möchten → Weisen Sie Benutzern Zugriff auf Anwendungen in der IAM Identity Center-Konsole zu – AWS IAM Identity Center (Nachfolger von AWS Single Sign-On).
- Klicken Sie auf „Attributzuordnungen“.
- Setzen Sie die Attribute gemäß der folgenden Tabelle und ersetzen Sie die
<role_arn>
&<idp_arn>
Platzhalter durch die ARNs, die Sie in den vorherigen Schritten kopiert haben:
Attribut | Wert | Erklärung |
---|---|---|
Subjekt (Standardattribut) | ${user:email} | Das verwendete Subjekt. |
https://aws.amazon.com/SAML/Attributes/RoleSessionName | ${user:email} | Der gegen den Cluster erstellte Sitzungsname. |
https://redshift.amazon.com/SAML/Attributes/AutoCreate | true | Konfigurieren Sie die Anwendung so, dass der Redshift-Benutzer bei der Authentifizierung automatisch erstellt wird. |
https://aws.amazon.com/SAML/Attributes/Role | Die zu verwendende IAM-Rolle und IDP zur Verbindung mit Redshift. | |
https://redshift.amazon.com/SAML/Attributes/DbUser | ${user:email} | Der zu erstellende DB-Benutzername. |
https://redshift.amazon.com/SAML/Attributes/DbGroups | readonly | Die DB-Gruppe, der der neu erstellte Benutzer zugewiesen werden soll. |
Klicken Sie auf „Änderungen speichern“.
Erstellen Sie die Redshift-Gruppe & Berechtigungen erteilen
In diesem Schritt konfigurieren wir die readonly
Redshift-Gruppe (wie in den Anwendungsattributen im vorherigen Schritt definiert), der jeder Benutzer zugewiesen wird, wenn er sich über die Anwendung verbindet.
- Verbinden Sie sich mit Ihrem Redshift-Cluster mit einem privilegierten Benutzer (Superuser).
- Führen Sie das folgende SQL-Skript aus, um die
readonly
Gruppe zu erstellen und ihrread
Berechtigungen für das öffentliche Schema (das Standardschema) zuzuweisen.
create group readonly; grant usage on schema public to group readonly; grant select on all tables in schema public to group readonly;
Konfigurieren Sie die DataGrip-Client-Datenquelle
Wir sind fertig eingerichtet und endlich bereit, unsere Früchte zu ernten!
In diesem Schritt konfigurieren wir eine DataGrip-Datenquelle, die als Verbindung zwischen uns und dem Redshift-Cluster verwendet wird.
- Öffnen Sie DataGrip und erstellen Sie eine neue Redshift-Datenquelle.
- Ein Datenquellenassistent wird geöffnet, um die Verbindung zu konfigurieren. Setzen Sie die folgenden Attribute:
- Name: Redshift ReadOnly SSO.
- Host: Ihr Redshift-Server-Endpunkt.
- Benutzer: Ihr email-Identifikator (wird als Redshift-DB-Benutzer verwendet).
- Passwort: das Passwort, das Sie in Ihrer Identitätsquelle (Okta, PingOne usw.) konfiguriert haben.
- Datenbank: die Datenbank, mit der Sie sich verbinden möchten.
- URL: die URL wird größtenteils an diesem Punkt konfiguriert sein (aufgrund der DataGrip-Autovervollständigung), alles, was Sie noch tun müssen, ist das JDBC-URL-Präfix von
jdbc:redshift://
zujdbc:redshift:iam://
zu ändern.
- Gehen Sie zum
Advanced
Tab und konfigurieren Sie diese 3 Attribute:- plugin_name:
com.amazon.redshift.plugin.BrowserSamlCredentialsProvider
– bereits definiert, also bearbeiten Sie es. - idp_reponse_timeout: 60 – erstellen Sie einen neuen Wert.
- login_url: <Ihre zuvor kopierte SAML-Anmelde-URL der Anwendung> – erstellen Sie einen neuen Wert.
- plugin_name:
- Klicken Sie unten im Datenquellenkonfigurationsassistenten auf „Verbindung testen“.
Nach dem Klicken wird Ihr Browser geöffnet und zeigt den folgenden Bildschirm an:
Wenn alles richtig konfiguriert ist, sollten Sie das folgende Popup in DataGrip sehen:
Klicken Sie auf OK.
Das war’s! Vielen Dank fürs Lesen 🙂
Suchen Sie nach neuen Inhalten?
Erhalten Sie Artikel und Einblicke aus unserem wöchentlichen Newsletter.
Durch die Eingabe Ihrer E-Mail-Adresse erklären Sie sich mit dem Erhalt von Elementor-E-Mails, einschließlich Marketing-E-Mails,
einverstanden und stimmen unseren Allgemeinen Geschäftsbedingungen und unserer Datenschutzrichtlinie zu.