Zephyrnet-Logo

Föderieren Sie den Zugriff auf den Amazon Redshift-Abfrageeditor V2 mit Active Directory Federation Services (AD FS): Teil 3

Datum:

Im ersten Beitrag dieser Serie Föderieren Sie den Zugriff auf Ihren Amazon Redshift-Cluster mit Active Directory Federation Services (AD FS): Teil 1haben Sie die auf Microsoft Active Directory Federation Services (AD FS) und Security Assertion Markup Language (SAML) basierende Authentifizierung eingerichtet und den SAML-Verbund mithilfe eines Webbrowsers getestet.

In Teil 2, Sie haben gelernt, ein einzurichten Amazon RedShift Cluster und verwenden Sie die Verbundauthentifizierung mit AD FS, um eine Verbindung über ein JDBC-SQL-Clienttool herzustellen.

In diesem Beitrag gehen wir die Schritte zur Konfiguration durch Amazon Redshift-Abfrage-Editor v2 um mit AD FS Federation SSO zu arbeiten.

Unternehmen möchten ihren Endbenutzern wie Datenanalysten, Datenwissenschaftlern und Datenbankentwicklern die Verwendung des Abfrageeditors v2 ermöglichen, um Self-Service-Analysen zu beschleunigen. Mit dem Abfrageeditor v2 von Amazon Redshift können Benutzer Daten erkunden, analysieren und gemeinsam daran arbeiten. Mit dem Abfrageeditor können Sie Datenbanken, Schemata und Tabellen erstellen und Daten aus Amazon Simple Storage Service (Amazon S3) laden, indem Sie den COPY-Befehl oder einen Assistenten verwenden. Sie können mehrere Datenbanken durchsuchen und Abfragen in Ihrem Amazon Redshift Data Warehouse oder Data Lake ausführen oder Verbundabfragen an operative Datenbanken ausführen, z Amazonas-Aurora.

In diesem Beitrag zeigen wir, wie Sie Ihr Unternehmens-Active Directory (AD) und den SAML 2.0 AD FS-Identitätsanbieter (IdP) verwenden können, um Ihren Benutzern den einfachen Zugriff auf Amazon Redshift-Cluster über den Abfrageeditor v2 unter Verwendung von Unternehmensbenutzernamen zu ermöglichen, ohne Datenbankbenutzer verwalten zu müssen und Passwörter. Wir zeigen auch, wie Sie den Zugriff Ihrer Benutzer auf die Verwendung nur des Abfrageeditors beschränken können, ohne ihnen Zugriff auf die Ausführung von Administratorfunktionen zu gewähren AWS-Managementkonsole.

Lösungsüberblick

Nachdem Sie die in erläuterten Schritte ausgeführt haben Teil 1, Sie richten ein tiefe Verbindung für Verbundbenutzer über SAML 2.0 RelayState Parameter in AD FS. Sie verwenden den Benutzer, den Sie in Ihrem AD in Teil 1 eingerichtet haben (Bob), um sich mithilfe von AD FS zu authentifizieren und den Zugriff auf Datenbankobjekte basierend auf der Gruppe zu steuern, der der Benutzer zugewiesen ist. Sie testen auch, ob Benutzer Bob ist in Amazon Redshift-Datenbankgruppen integriert, wie in AD-Gruppen gesteuert.

Am Ende dieses Beitrags haben Sie einen eindeutigen Deep-Link erstellt, der den Benutzer authentifiziert Bob mithilfe von AD FS und leitet sie direkt an die Konsole des Abfrageeditors v2 weiter, wo sie mithilfe der Verbund-SSO-Option authentifiziert werden.

Der Anmeldevorgang läuft wie folgt ab:

  1. Der Benutzer wählt einen Deep-Link, der zur Authentifizierung zum IdP weiterleitet, wobei die Informationen über die Ziel-URL (in unserem Fall Abfrageeditor v2) darin eingebettet sind RelayState Parameter. Der Benutzer gibt seine Zugangsdaten auf der Anmeldeseite ein.
  2. Ihr IdP (im Fall AD FS) überprüft die Identität des Benutzers in Ihrer Organisation.
  3. Ihr IdP generiert eine SAML-Authentifizierungsantwort, die Behauptungen zur Identifizierung des Benutzers und Attribute über den Benutzer enthält. Der IdP sendet diese Antwort an den Browser des Benutzers.
  4. Der Browser des Benutzers wird auf die umgeleitet AWS-Einzelanmeldung Endpunkt und veröffentlicht die SAML-Behauptung und die RelayState Parameters.
  5. Der Endpunkt ruft die auf AssumeRoleWithSAML API-Aktion zum Anfordern temporärer Anmeldeinformationen von AWS Identity and Access Management and (IAM)-Rolle, die in der SAML-Assertion angegeben ist, und erstellt eine Anmelde-URL für die Abfrage-Editor-v2-Konsole, die diese Anmeldeinformationen verwendet. Die IAM-Rolle vertraut der SAML-Verbundentität und verfügt außerdem über eine Richtlinie, die Zugriff auf den Abfrageeditor V2 hat. Wenn die SAML-Authentifizierungsantwort Attribute enthält, die mehreren IAM-Rollen zugeordnet sind, wird der Benutzer zunächst aufgefordert, die Rolle auszuwählen, die für den Zugriff auf die Konsole des Abfrageeditors v2 verwendet werden soll. Die Anmelde-URL ist diejenige, die von angegeben wird RelayState Parameters.
  6. AWS sendet die Anmelde-URL als Weiterleitung zurück an den Browser des Benutzers.
  7. Der Browser des Benutzers wird an die vom Amazon Redshift Query Editor v2 definierte Konsole umgeleitet RelayState Parameters.

Das folgende Diagramm veranschaulicht diesen Ablauf.

In diesem Beitrag führen wir Sie durch die folgenden Schritte:

  1. Richten Sie die Sales Gruppe in AD und richten Sie die ein PrincipalTag Anspruchsregeln in AD FS.
  2. Aktualisieren Sie die IAM-Rollen.
  3. Erstellen Sie die SSO-URL, um Benutzer zu authentifizieren und zur Amazon Redshift Query Editor v2-Konsole umzuleiten.
  4. Richten Sie die Amazon Redshift-Datenbank ein Gruppen und Berechtigungen für den Amazon-Redshift-Cluster.
  5. Richten Sie Amazon Redshift Query Editor v2 so ein, dass die Verbundauthentifizierung mit AD FS verwendet wird, um eine direkte Verbindung über die Schnittstelle des Query Editors herzustellen.
  6. Fragen Sie Amazon-Redshift-Objekte ab, um Ihre Autorisierung zu validieren.

Voraussetzungen:

Führen Sie für diese exemplarische Vorgehensweise die folgenden erforderlichen Schritte aus:

  1. Erstellen Sie einen Amazon-Redshift-Cluster. Anweisungen finden Sie unter Erstellen Sie einen Amazon Redshift-Beispielcluster oder führen Sie die Schritte in aus Teil 2 dieser Serie.
  2. Führen Sie die Schritte aus Teil 1 So richten Sie einen SAML-Verbund mit AD FS ein:
    1. Richten Sie einen AD-Domänencontroller mithilfe eines ein AWS CloudFormation Vorlage auf einem Windows 2016 Amazon Elastic Compute-Cloud (Amazon EC2)-Instanz.
    2. Konfigurieren Sie den Verbund in AD FS.
    3. Konfigurieren Sie AWS als vertrauende Partei mit AD FS mithilfe eines IAM-SAML-Anbieters und SAML-Rollen mit einer angehängten Richtlinie, um den Zugriff auf den Amazon-Redshift-Cluster zu ermöglichen.
    4. Anspruchsregeln konfigurieren.
    5. Testen Sie die SAML-Authentifizierung mit einem Webbrowser.
  3. Stellen Sie sicher, dass Ihr IdP dies unterstützt RelayState und ist aktiviert. Wenn Sie AD FS 2.0 verwenden, müssen Sie eines davon herunterladen und installieren Update-Rollup 3 or Update-Rollup 2 von Microsoft, um das zu aktivieren RelayState Parameters.

Konfigurieren Sie AD und AD FS

Nachdem Sie Ihre AD FS- und AD-Dienste konfiguriert haben, indem Sie den Anweisungen in folgen Teil 1können Sie die folgenden AD-Gruppen- und Anspruchsregeln einrichten.

In diesem Beitrag verwenden Sie den Benutzer Bob Melden Sie sich bei Amazon Redshift an und prüfen Sie, ob Bob kann auf die zugreifen Sales und Marketing Schemata auf dem Amazon-Redshift-Cluster. Um das zu erstellen sales Gruppe und weisen Sie den Benutzer zu Bob@adfsredshift.com Melden Sie sich dazu bei Ihrem AD FS-Server (Amazon EC2-Computer) an, den Sie in Teil 1 erstellt haben, und führen Sie mit dem Windows-Befehlstool den folgenden Befehl aus:

dsadd group "cn=RSDB-sales, cn=Users, dc=adfsredshift, dc=com" -members "cn=Bob, cn=Users, dc=adfsredshift, dc=com"

Jetzt können Sie Ihre benutzerdefinierten Anspruchsregeln erstellen: PrincipalTag:RedshiftDbUser und PrincipalTag:RedshiftDbGroup.

PrincipalTag:RedshiftDbUser

Die benutzerdefinierte Anspruchsregel PrincipalTag:RedshiftDbUser wird dem universellen Prinzipalnamen in AD FS zugeordnet. Wenn sich ein Benutzer über Verbund-SSO authentifiziert, wird diese Anspruchsregel dem Benutzernamen zugeordnet. Wenn der Benutzer nicht in der Amazon-Redshift-Datenbank vorhanden ist, wird der Benutzer automatisch erstellt. Die Option zum automatischen Erstellen wird durch eine IAM-Richtlinie gewährt, die der IAM-Rolle zugeordnet ist. Der CreateClusterUser Die Berechtigung ermöglicht die automatische Erstellung des Benutzers (Sie richten dies als Teil von Teil 1 als Voraussetzung ein).

Führen Sie die folgenden Schritte aus, um Ihre benutzerdefinierte Anspruchsregel zu erstellen:

    1. Wählen Sie in der AD FS-Verwaltungskonsole die Option aus Vertrauenden Partei Trusts.
    2. Auswählen Anspruchsausstellungsrichtlinie bearbeiten.
    3. Auswählen Wählen Sie Regeltyp.
    4. Aussichten für Anspruchsregelvorlage, wählen Senden Sie Ansprüche mithilfe einer benutzerdefinierten Regel.
    5. Auswählen Weiter.
    6. Aussichten für Name der Anspruchsregel, eingeben RedshiftDbUser.
    7. Fügen Sie die folgende benutzerdefinierte Regel hinzu:
      c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname", Issuer == "AD AUTHORITY"]
       => issue(store = "Active Directory", types = ("https://aws.amazon.com/SAML/Attributes/PrincipalTag:RedshiftDbUser"), query = ";userPrincipalName;{0}", param = c.Value);

    8. Auswählen Endziel.
    9. Erfassen Sie die Anspruchsregeln, die in einer SAML-Assertionsantwort über Ihren Browser gesendet werden. Anweisungen finden Sie unter So zeigen Sie eine SAML-Antwort in Ihrem Browser zur Fehlerbehebung an.

In meinem Beispiel verwende ich das folgende SAML-Attribut für RedshiftDbUser PrincipalTag:

<Attribute Name="https://aws.amazon.com/SAML/Attributes/PrincipalTag:RedshiftDbUser"> <AttributeValue>bob@adfsredshift.com</AttributeValue>
</Attribute>

PrincipalTag:RedshiftDbGroup

Die benutzerdefinierte Anspruchsregel PrincipalTag:RedshiftDbGroup besteht aus AD-Gruppen, denen der Benutzer angehört. Diese Regel wird den Amazon-Redshift-Datenbankgruppen zugeordnet. Die Namen der AD-Gruppen und der Amazon-Redshift-Datenbankgruppen sollten übereinstimmen. JoinGroup Die in der IAM-Richtlinie festgelegte Berechtigung ermöglicht es dem Benutzer, eine Datenbankgruppe zu übernehmen, und ist sitzungsbasiert. Wenn der Benutzer mehreren Gruppen in der AD-Gruppe zugeordnet ist, sollte die SAML-Assertionsantwort diese Gruppen als getrennte Werte und nicht als Mehrfachwertansprüche senden. Die folgenden Schritte veranschaulichen, wie AD-Gruppen als getrennte Werte gesendet werden.

In diesem Beispiel der Benutzer Bob ist dem zugeordnet marketing und sales Gruppen. Der folgende Code zeigt, wie mehrere Gruppen über die SAML-Antwort gesendet werden, wenn der Benutzer mehreren Gruppen angehört, und wie mit der Situation umgegangen wird, wenn ein Benutzer in keiner bestimmten Gruppe vorhanden ist.

  1. Befolgen Sie die gleichen Schritte wie im vorherigen Abschnitt, um die Regel zu erstellen Marketing, indem Sie den folgenden Code für die benutzerdefinierte Regel verwenden:
    c:[Type == " http://temp/groups", Value =~ "RSDB-Marketing"] => add(Type = " http://temp/marketing", Value = c.Value);

  2. Erstellen Sie die Regel MarketingNotExists unter Verwendung des folgenden Codes:
    NOT EXISTS([Type == "http://temp/variable", Value =~ "RSDB-marketing"]) => add(Type = "http://temp/marketing", Value = ""); 

  3. Erstellen Sie die Regel sales unter Verwendung des folgenden Codes:
    c:[Type == " http://temp/groups", Value =~ "RSDB-sales"] => add(Type = " http://temp/marketing", Value = c.Value);

  4. Erstellen Sie die Regel SalesNotExists unter Verwendung des folgenden Codes:
    NOT EXISTS([Type == "http://temp/variable", Value =~ "RSDB-sales"])
     => add(Type = "http://temp/sales", Value = ""); 

  5. Erstellen Sie die Regel RedshiftDbGroups unter Verwendung des folgenden Codes:
    c:[Type == "http://temp/marketing"]
     && c2:[Type == "http://temp/sales"]
     => issue(Type = "https://aws.amazon.com/SAML/Attributes/PrincipalTag:RedshiftDbGroups", Value = c.Value + ":" + c2.Value);

Der folgende Screenshot zeigt die Liste der Regeln, die ich in meinem AD FS erstellt habe. Beachten Sie die Anzahl der Regeln und die Reihenfolge, in der sie positioniert sind. Im Rahmen dieses Beitrags haben wir die Regeln 6–11 erstellt.

Wenn Sie eine ähnliche SAML-Antwort für sehen RedshiftDbGroups, dein Setup ist gut:

<Attribute Name="https://redshift.amazon.com/SAML/Attributes/PrincipalTag:RedshiftDbGroups"> <AttributeValue> marketing:sales</AttributeValue>

Wenn ein Benutzer in einer der Gruppen nicht vorhanden ist, wird ein leerer Wert an die Anspruchsregel übergeben. Wenn beispielsweise der Benutzer bob aus dem entfernt wird marketing Gruppe, die SAML-Antwort für PrincipalTag:RedshiftDbGroup wäre :sales.

IAM-Rollen aktualisieren

In Teil 1 In dieser Serie haben Sie zwei IAM-Rollen erstellt: ADFZ-Dev und ADFZ-Production. Diese beiden Rollen sind noch nicht mit Berechtigungen für den Abfrageeditor eingerichtet. In diesem Abschnitt aktualisieren Sie diese Rollen mit Abfrage-Editor-Berechtigungen.

Der Amazon Redshift-Abfrageeditor v2 bietet mehrere verwaltete Richtlinien für den Zugriff auf den Abfrageeditor. Eine Liste aller verwalteten Richtlinien finden Sie unter Konfigurieren Ihres AWS-Kontos. Für diesen Beitrag fügen wir die bei AmazonRedshiftQueryEditorV2ReadSharing verwaltete Richtlinie für die Rollen.

  1. Wählen Sie in der IAM-Konsole Rollen im Navigationsbereich.
  2. Wählen Sie die Rolle ADFZ-Dev.
  3. Auswählen Berechtigungen hinzufügen und dann Richtlinien anhängen.
  4. Der Andere Berechtigungsrichtlinien, suche nach dem AmazonRedshiftQueryEditorV2ReadSharing verwaltete Richtlinie.
  5. Wählen Sie die Richtlinie aus und wählen Sie Richtlinien anhängen.
  6. Ändern Sie die Vertrauensbeziehungen für Ihre Rolle und fügen Sie sie hinzu sts:TagSession. Während der Rollenauswahl Vertrauensbeziehungen und klicken Sie auf Vertrauensrichtlinie bearbeiten.Bei der Verwendung von Sitzungs-Tags müssen Vertrauensrichtlinien für alle Rollen, die mit den IdP-Passing-Tags verbunden sind, die haben sts:TagSession Erlaubnis. Für Rollen ohne diese Berechtigung in der Vertrauensrichtlinie wird die AssumeRole Betrieb schlägt fehl.
  7. Wählen Sie Richtlinie aktualisieren.
  8. Wiederholen Sie diese Schritte, um das anzubringen AmazonRedshiftQueryEditorV2ReadSharing verwaltete Richtlinie zur ADFZ-Produktionsrolle hinzufügen.

Beschränken des Benutzerzugriffs nur auf den Abfrageeditor

Wenn Sie möchten, dass Benutzer nur auf den Abfrageeditor zugreifen, aktualisieren Sie die Richtlinie redshift-marketing die Sie in Teil 1 des Blogbeitrags erstellt haben, siehe unten.

Hinweis: Sobald die Aktualisierung erfolgt ist, verlieren Benutzer Administratorrechte, beispielsweise zum Erstellen eines Clusters.

Ersetzen Sie die Regions-, Konto- und Clusterparameter. Diese benutzerdefinierte Richtlinie gewährt Zugriff auf Amazon Redshift, um Cluster-Anmeldeinformationen abzurufen, Benutzer zu erstellen und Benutzern den Beitritt zu Gruppen zu ermöglichen.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "RedshiftClusterPermissions",
            "Effect": "Allow",
            "Action": [
                "redshift:GetClusterCredentials",
                "redshift:CreateClusterUser",
                "redshift:JoinGroup"
            ],
            "Resource": [
                "arn:aws:redshift:<region>:<account>:cluster:<cluster>,
                "arn:aws:redshift:<region>:<account>:dbuser:<cluster>/${aws:PrincipalTag/RedshiftDbUser}",
                "arn:aws:redshift:<region>:<account>:dbgroup:<cluster>/marketing",
                "arn:aws:redshift:<region>:<account>:dbgroup:<cluster>/sales",
                "arn:aws:redshift:<region>:<account>:dbname:<cluster>/${redshift:DBName}"
            ]
        }
    ]
}

Es gibt ein paar wichtige Dinge zu beachten:

  1. Die Gruppenmitgliedschaft gilt nur für die Dauer der Benutzersitzung.
  2. Es gibt kein CreateGroup Berechtigung, da Gruppen manuell erstellt und DB-Berechtigungen gewährt werden müssen.

Generieren Sie die SSO-Ziel-URL als Amazon Redshift Query Editor v2-Konsole

In diesem Schritt erstellen Sie die Anmelde-URL für den AD FS-IdP, um Benutzer zur Konsole des Amazon Redshift-Abfrageeditors v2 umzuleiten. Anweisungen finden Sie unter So verwenden Sie SAML, um Verbundbenutzer automatisch zu einer bestimmten AWS-Managementkonsolenseite weiterzuleiten.

Um den Endbenutzern ein umfassendes SSO-Erlebnis zu bieten, kann die SAML-Antwort einen optionalen Parameter namens „ RelayState. Dieser Parameter enthält die Ziel-URL.

Microsoft stellt ein Tool zur Verfügung, das beim Generieren dieser SSO-URLs für AD FS hilft AD FS 2.0 RelayState-Generator.

Um diese URL zu erstellen, benötigen Sie drei Informationen:

  • IdP-URL-Zeichenfolge – Die Zeichenfolge liegt im Format vor https://ADFSSERVER/adfs/ls/idpinitiatedsignon.aspx. Für diesen Beitrag verwenden wir https://EC2AMAZ-F9TJOIC.adfsredshift.com/adfs/ls/IdpInitiatedSignOn.aspx.
  • Kennung der vertrauenden Partei – Für AWS ist dies der Fall urn:amazon:webservices.
  • Relay-Status oder Ziel-App - Dies ist das AWS-Managementkonsole URL, zu der Ihre authentifizierten Benutzer weitergeleitet werden sollen. In diesem Fall ist es so https://eu-west-1.console.aws.amazon.com/sqlworkbench/home?. Für diesen Beitrag verwenden wir die eu-west-1 Region, aber Sie können dies nach Bedarf anpassen.

Ich habe die Anweisungen in befolgt So verwenden Sie SAML, um Verbundbenutzer automatisch zu einer bestimmten AWS-Managementkonsolenseite weiterzuleiten und nutzte den AD FS 2.0 RelayState Generator, um die im folgenden Screenshot gezeigte URL zu generieren.

Das Folgende ist ein Beispiel für die endgültige URL, die Sie verwenden, um sich zu authentifizieren und auch zum Amazon Redshift-Abfrageeditor v2 umgeleitet zu werden (diese URL funktioniert in Ihrem Setup nicht, da sie speziell für einen AD FS-Server in meinem Konto erstellt wurde). : https://EC2AMAZ-F9TJOIC.adfsredshift.com/adfs/ls/IdpInitiatedSignOn.aspx?RelayState=RPID%3Durn%253Aamazon%253Awebservices%26RelayState%3Dhttps%253A%252F%252Feu-west-1.console.aws.amazon.com%252Fsqlworkbench%252Fhome%253Fregion%253Deu-west-1%2523%252Fclient

Sie können diese URL jetzt speichern und von überall aus verwenden, wo Sie Ihren AD FS-Server erreichen können. Nachdem Sie die URL in einen Browser eingegeben haben, authentifizieren Sie sich zunächst bei AD FS und werden dann zur Konsole des Amazon Redshift-Abfrageeditors v2 weitergeleitet.

Richten Sie DB-Gruppen im Amazon-Redshift-Cluster ein

In diesem Schritt richten Sie Ihre Amazon Redshift-Datenbankgruppe ein. Dieser Schritt ist erforderlich, da der Benutzer bei der Authentifizierung Teil einer Amazon-Redshift-DB-Gruppe mit den entsprechenden Berechtigungen für ein Schema oder eine Tabelle (oder Ansicht) sein muss.

In Active Directory der Benutzer Bob ist Teil von zwei Gruppen: Sales und Marketing. In Ihrer Amazon-Redshift-Datenbank gibt es drei Datenbankgruppen: Sales, Marketing und Finance.

Wenn Benutzer Bob Meldet sich der Benutzer über die föderierte Authentifizierung an, übernimmt der Benutzer die Sales und Marketing Datenbankgruppen, sodass dieser Benutzer Tabellen in beiden Datenbankgruppen abfragen kann Sales und Marketing Schemata. Weil der Benutzer Bob ist nicht Teil der Finance Gruppe, wenn sie versuchen, auf die zuzugreifen Finance Schema erhalten sie eine Fehlermeldung, dass die Berechtigung verweigert wurde.

Das folgende Diagramm veranschaulicht diese Konfiguration.

Führen Sie die folgenden Schritte aus, um Ihre DB-Gruppen einzurichten:

  1. Verbinden als awsuser (ein Superuser).
  2. Erstellen Sie drei Datenbankgruppen:
    CREATE GROUP sales;
    CREATE GROUP marketing;
    CREATE GROUP finance;

  3. Erstellen Sie drei Schemata:
    CREATE SCHEMA sales;
    CREATE SCHEMA marketing;
    CREATE SCHEMA finance;

  4. Erstellen Sie in jedem Schema eine Tabelle:
    CREATE TABLE IF NOT EXISTS marketing.employee
    (
    	n_empkey INTEGER
    	,n_name CHAR(25)
    	,n_regionkey INTEGER
    	,n_comment VARCHAR(152)
    )
    DISTSTYLE AUTO
     SORTKEY (n_empkey);
    
    CREATE TABLE IF NOT EXISTS sales.employee_sales
    (
    	n_empkey INTEGER
    	,n_name CHAR(25)
    	,n_regionkey INTEGER
    	,n_comment VARCHAR(152)
    )
    DISTSTYLE AUTO
     SORTKEY (n_empkey);
    
    
    CREATE TABLE IF NOT EXISTS finance.accounts
    (
    	account_id INTEGER
    	,account_name CHAR(25)
    
    )
    DISTSTYLE AUTO
     SORTKEY (account_id);

  5. Fügen Sie Beispieldaten in die drei Tabellen ein:
    INSERT INTO marketing.employee
    VALUES(1, 'Bob', 0, 'Marketing');
    
    INSERT INTO sales.employee_sales
    VALUES(1, 'John', 0, 'Sales');
    
    INSERT INTO finance.accounts
    VALUES(1, 'online company');

  6. Überprüfen Sie, ob die Daten in den Tabellen verfügbar sind:
    Select * from marketing.employee;
    Select * from sales.employee_sales;
    Select * from finance.accounts;

Sie können nun entsprechende Berechtigungen für die einrichten sales, finance und marketing Gruppen. Gruppen sind Sammlungen von Benutzern, denen alle mit der Gruppe verbundenen Berechtigungen gewährt werden. Sie können Gruppen verwenden, um Berechtigungen nach Jobfunktion zuzuweisen. Sie können beispielsweise unterschiedliche Gruppen für Vertrieb, Verwaltung und Support erstellen und den Benutzern jeder Gruppe den entsprechenden Zugriff auf die Daten gewähren, die sie für ihre Arbeit benötigen. Sie können Berechtigungen auf Gruppenebene gewähren oder entziehen. Diese Änderungen gelten für alle Mitglieder der Gruppe, mit Ausnahme von Superuser.

  1. Geben Sie die folgenden SQL-Abfragen ein, um Zugriff auf alle Tabellen im zu gewähren sales Schema zur Vertriebsgruppe, Zugriff auf alle Tabellen in der marketing Schema zu marketing Gruppe und Zugriff auf alle Tabellen in der finance Schema zu finance Gruppe:
ALTER DEFAULT PRIVILEGES IN SCHEMA sales
GRANT SELECT on TABLES to GROUP sales;
GRANT USAGE on SCHEMA sales to GROUP sales;
GRANT SELECT on ALL TABLES in SCHEMA sales to GROUP sales;

ALTER DEFAULT PRIVILEGES IN SCHEMA marketing
GRANT SELECT on TABLES to GROUP marketing;
GRANT USAGE on SCHEMA marketing to GROUP marketing;
GRANT SELECT on ALL TABLES in SCHEMA marketing to GROUP marketing;

ALTER DEFAULT PRIVILEGES IN SCHEMA finance
GRANT SELECT on TABLES to GROUP finance;
GRANT USAGE on SCHEMA finance to GROUP finance;
GRANT SELECT on ALL TABLES in SCHEMA finance to GROUP finance;

Greifen Sie über die Verbundauthentifizierung auf den Amazon Redshift-Abfrageeditor v2 zu

Nachdem Sie nun Ihre SAML-Integration, die Deep-Link-Einrichtung sowie die Konfiguration von DB-Gruppen und Zugriffsrechten abgeschlossen haben, können Sie den Amazon Redshift-Abfrage-Editor v2 so einrichten, dass er die Verbundauthentifizierung mit AD FS verwendet, um eine direkte Verbindung über die Abfrage-Editor-Schnittstelle herzustellen.

  1. Navigieren Sie zu der Deep-Link-URL, die Sie zuvor erstellt haben.
    Sie werden zur AD FS-Anmeldeseite weitergeleitet.
  2. Melden Sie sich an als bob@adfsredshift.com.
    Für diesen Beitrag habe ich von einem Amazon EC2-Computer aus auf diese URL zugegriffen, Sie können jedoch von jedem Ort aus darauf zugreifen, an dem Sie den AD FS-IdP erreichen können.
    Nachdem AD FS Sie erfolgreich authentifiziert hat, leitet es zum AWS SSO-Endpunkt weiter und veröffentlicht die SAML-Behauptung und RelayState Parameter. Da Sie auf der AWS-Seite zwei IAM-Rollen konfiguriert haben, werden Sie aufgefordert, eine Rolle auszuwählen.
  3. Wählen Sie eine Rolle aus (in diesem Beispiel ADFZ-Dev) und wähle Anmelden.

    AWS sendet die Anmelde-URL, die darauf basiert RelayState Wert als Weiterleitung an Ihren Browser zurück. Ihr Browser wird automatisch zur Konsole des Abfrageeditors v2 weitergeleitet.
  4. Klicken Sie mit der rechten Maustaste auf Ihren Amazon-Redshift-Cluster (für diesen Beitrag: redshift-cluster-1) und wähle Verbindung bearbeiten.

    Der Wert für Benutzername wird automatisch ausgefüllt, und Verbundzugriff wird automatisch ausgewählt.
  5. Auswählen Verbindung bearbeiten um die Verbindung zu speichern und sich bei der Datenbank anzumelden.

    Nachdem Sie sich erfolgreich angemeldet haben, können Sie die Datenbankobjekte im linken Bereich durchsuchen.
  6. Testen Sie die Verbindung, indem Sie die folgende Abfrage ausführen:
    select * from stv_sessions;

Der folgende Screenshot zeigt die Ausgabe.

Die Ausgabe zeigt, dass der Benutzer bob@adfsredshift.com wurde mit AD FS authentifiziert. Der Benutzer ist auch dem beigetreten marketing und Sales Gruppen, wie vom AD FS erzwungen PrincipalTag:RedshiftDbGroups Anspruchsregel und die damit verbundene Richtlinie ADFZ-Dev Rolle, die der Benutzer während dieser Sitzung einnimmt.

Führen Sie Abfragen aus, um die Autorisierung über Verbundgruppen zu überprüfen

In diesem letzten Schritt validieren Sie, wie die in AD konfigurierten Gruppen und Mitgliedschaften nahtlos in die Amazon-Redshift-Datenbankgruppen integriert werden.

Führen Sie die folgende Abfrage für aus marketing und sales Schema:

select * from marketing.employee;
select * from sales.employee_sales;

Die folgenden Screenshots zeigen die Ausgabe:

Die vorherigen Bilder zeigen diesen AD-Benutzer Bob ist Teil der AD-Gruppe RSDB-marketing und RSDB-sales, die den DB-Gruppen zugeordnet sind marketing und sales. Diese DB-Gruppen haben ausgewählten Zugriff auf die Schemata Marketing und Vertrieb und alle Tabellen in diesen Schemata. Daher kann der Benutzer die Tabellen erfolgreich abfragen.

Um eine Abfrage für die auszuführen finance Geben Sie für das Schema den folgenden Code ein:

select * from finance.accounts;

Der folgende Screenshot zeigt die Ausgabe.

Die Ausgabe zeigt das Bob ist nur ein Teil der AD-Gruppen RSDB-marketing und RSDB-sales. Aufgrund der Art und Weise, wie die Anspruchsregel eingerichtet ist, Bob hat keinen Zugriff auf die Datenbankgruppe finance, und daher gibt die Abfrage den Fehler „Berechtigung verweigert“ zurück.

Aufräumen

Um zukünftige Gebühren zu vermeiden, löschen Sie die Ressourcen, indem Sie den CloudFormation-Stack löschen. Dadurch werden alle Ressourcen Ihres AWS-Kontos bereinigt, in dem Sie es eingerichtet haben Teil 1.

Zusammenfassung

In diesem Beitrag haben wir gezeigt, wie man einen AD FS-Server einrichtet und anders konfiguriert PrincipalTag Attribute, die für den Amazon Redshift-Abfrageeditor v2 verwendet werden, und generieren Sie eine SSO-URL mit dem Abfrageeditor als Zielort. Anschließend stellten Sie über einen Datenbankbenutzer mit Administratorrechten eine Verbindung zum Amazon-Redshift-DB-Cluster her, um DB-Gruppen und -Berechtigungen einzurichten, und nutzten eine Verbundbenutzerauthentifizierung mit AD FS, um mehrere Abfragen auszuführen. Mit dieser Lösung können Sie den Zugriff auf Ihre Amazon Redshift-Datenbankobjekte durch die nahtlose Verwendung von AD-Gruppen und Mitgliedschaften steuern.

Wenn Sie Feedback oder Fragen haben, hinterlassen Sie diese bitte in den Kommentaren.


Über die Autoren

Sumeet Joshi ist ein Analytics Specialist Solutions Architect mit Sitz in New York. Er ist spezialisiert auf den Aufbau umfangreicher Data-Warehousing-Lösungen. Er verfügt über mehr als 16 Jahre Erfahrung im Bereich Data Warehousing und Analyse.

Bhanu Pittampally ist ein Analytics Specialist Solutions Architect mit Sitz in Dallas. Er ist auf den Aufbau analytischer Lösungen spezialisiert. Sein Hintergrund liegt seit über 14 Jahren im Bereich Daten und Analytik. Sein LinkedIn-Profil ist zu finden hier.

Erol Murtezaoglu, Technical Product Manager bei AWS, ist ein neugieriger und enthusiastischer Denker mit einem Drang nach Selbstverbesserung und Lernen. Er verfügt über einen starken und bewährten technischen Hintergrund in Softwareentwicklung und -architektur, der mit dem Bestreben, kommerziell erfolgreiche Produkte zu liefern, in Einklang gebracht wird. Erol schätzt den Prozess des Verstehens von Kundenbedürfnissen und -problemen sehr, um Lösungen zu liefern, die die Erwartungen übertreffen.

Yanis Telaoumaten ist Softwareentwicklungsingenieur bei AWS. Seine Leidenschaften sind die Entwicklung zuverlässiger Software und Tools, mit denen andere Ingenieure effizienter arbeiten können. In den vergangenen Jahren arbeitete er an Identität, Sicherheit und Zuverlässigkeit von Redshift-Diensten

spot_img

Neueste Intelligenz

spot_img