Wie erteile ich Zugriffsberechtigungen für externe Schemas in Amazon Redshift?
Meine Benutzer können nicht auf Objekte im externen Schema in meinem Amazon Redshift-Cluster zugreifen.
Kurzbeschreibung
Wenn du externe Schemas in Amazon Redshift verwendest, erhältst du möglicherweise die folgenden Fehlermeldungen:
- „Permission denied“
- „Operation is not supported“
- „External tables are not supported in views“
Falsche Konfigurationen der AWS Lake Formation-Berechtigungen können auch zu Fehlern bei Amazon Redshift Spectrum führen. Um dieses Problem zu beheben, musst du Berechtigungen für die externen Schemas gewähren, nicht auf Tabellenebene.
Lösung
Die Erlaubnis erteilen, auf Objekte im externen Schema zuzugreifen
Wenn ein Amazon Redshift-Benutzer nicht berechtigt ist, auf Objekte in einem externen Schema zuzugreifen, wird ihm möglicherweise die folgende Fehlermeldung angezeigt:
„ERROR: permission denied for schema external_schema_name“
Gehe wie folgt vor, um dem Benutzer Berechtigungen zu gewähren:
-
Öffne die Amazon Redshift-Konsole.
-
Melde dich als Superuser ein.
-
Führe den folgenden Befehl aus, um die Benutzerberechtigungen für das externe Schema zu überprüfen, auf das sie zugreifen möchten:
SELECT * FROM SVV_SCHEMA_PRIVILEGES WHERE identity_name = 'name_of_the_user/role/group' AND namespace_name = 'external_schema_name';Hinweis: Ersetze name_of_the_user/role/group durch den Namen, die Rolle oder die Gruppe des Benutzers, dem du Zugriff gewähren möchtest. Ersetze external_schema_name durch den Namen des externen Schemas.
Wenn der vorhergehende Befehl den USAGE-Berechtigungstyp nicht zurückgibt, ist der Benutzer, die Rolle oder die Gruppe nicht berechtigt, das externe Schema abzufragen.
-
Führe einen der folgenden GRANT-Befehle aus, um die Berechtigung zur Verwendung des externen Schemas zu erteilen:
GRANT USAGE ON SCHEMA external_schema_name TO user_name;GRANT USAGE ON SCHEMA external_schema_name TO role role_name;GRANT USAGE ON SCHEMA external_schema_name TO group group_name;Hinweis: Ersetze external_schema_name durch den Namen des externen Schemas. Ersetze user_name, role_name oder group_name durch den Benutzer, die Rolle oder die Gruppe, dem du Zugriff gewähren möchtest.
Probleme mit Datashare-Berechtigungen lösen
Wenn du versuchst, Berechtigungen für Objekte in einem externen Schema zu erteilen, wird möglicherweise die folgende Fehlermeldung angezeigt:
„ERROR: Operation is not supported through datashares“.
Dieser Fehler tritt in den folgenden Situationen auf:
- Das externe Schema stammt aus einer Datenbank, die du aus einem Datashare erstellt hast.
- Das ursprüngliche Datashare enthielt die Klausel MIT BERECHTIGUNGEN nicht.
Um dieses Problem zu beheben, erstelle die Datenbank aus dem Datashare mit der Klaisel MIT BERECHTIGUNG neu.
Führe die folgenden Schritte aus:
-
Führe den folgenden Befehl aus, um die bestehende Datashare-Datenbank zu löschen:
DROP database database_created_from_datashare_name;Hinweis: Ersetze database_created_from_datashare_name durch den Namen der Datenbank.
-
Führe den folgenden Befehl aus, um den Pod neu zu erstellen:
CREATE DATABASE database_created_from_datashare_name WITH PERMISSIONS FROM DATASHARE 'datashare_name' OF ACCOUNT 'account_number' NAMESPACE 'namespace_uuid';Hinweis: Ersetze database_created_from_datashare_name durch den Namen der Datenbank und datashare_name durch den Namen des Datashare. Ersetze die Kontonummer durch die AWS-Kontonummer und den namespace_uuid durch die universell eindeutige Kennung (UUID) des Namespace.
-
Führe den folgenden Befehl aus, um das externe Schema zu erstellen:
CREATE EXTERNAL SCHEMA external_schema_name FROM REDSHIFT DATABASE database_created_from_datashare_name SCHEMA schema_in_database_created_from_datashare;Hinweis: Ersetze external_schema_name durch den Namen des externen Schemas und database_created_from_datashare_name durch den Namen der Datenbank. Ersetze schema_in_database_created_from_datashare durch den Namen des Schemas, das du aus einem Datashare erstellt hast.
-
Führe den folgenden Befehl aus, um Nutzungsberechtigungen zu gewähren:
GRANT USAGE on SCHEMA external_schema_name to user_name; GRANT USAGE ON SCHEMA database_created_from_datashare_name.schema_in_datashare_name TO user_name;Hinweis: Ersetze external_schema_name durch den externen Schemanamen. Ersetze user_name durch den Namen des Benutzers, dem su die Nutzung gewähren möchtest. Ersetze database_created_from_datashare_name durch den Namen der Datenbank, die du aus einem Datashare erstellt hast und schema_in_datashare_name durch den Namen des Schemas.
-
Führe den folgenden SELECT-Befehl aus, um die Zugriffsberechtigung für bestimmte Tabellen zu gewähren:
GRANT SELECT ON TABLE database_created_from_datashare_name.schema_in_datashare_name.table_name TO user_name;Hinweis: Ersetze database_created_from_datashare_name durch den Namen der Datenbank, die du aus einem Datashare erstellt hast und schema_in_datashare_name durch den Namen des Schemas. Ersetze table_name durch den Namen der Tabelle und user_name durch den Benutzernamen.
Führe den folgenden Befehl aus, um Zugriff auf alle Tabellen im Schema zu gewähren:
GRANT SELECT ON ALL TABLES IN SCHEMA database_created_from_datashare_name.schema_in_datashare_name TO user_name;Hinweis: Ersetze database_created_from_datashare_name durch den Namen der Datenbank, die du aus einem Datashare erstellt hast und schema_in_datashare_name durch den Namen des Schemas. Ersetze user_name durch den Benutzernamen.
Externe Schemas mit Lake Formation-Berechtigungsproblemen
Stelle sicher, dass du Lake Formation für den AWS-Glue-Datenkatalog aktiviert hast und dass die AWS Identity and Access Management (IAM)-Rolle des Amazon Redshift-Clusters über die erforderlichen AWS-Glue-Datenkatalogberechtigungen verfügt.
Weitere Informationen findest du unter Redshift Spectrum und AWS Lake Formation und Verwalten der Lake Formation-Berechtigungen.
Eine granulare Zugriffskontrolle mit externen Schemas gewähren
Verwende Lake Formation oder Rollenverkettung, um eine granulare Zugriffskontrolle in Amazon Redshift Spectrum zu gewähren. Du kannst Berechtigungen auf Schema-, Tabellen- oder Spaltenebene gewähren.
Weitere Informationen findest du unter Beschränken des Zugriffs auf externe Amazon Redshift Spectrum-Tabellen auf Amazon Redshift IAM-Benutzer und -Gruppen mithilfe von Rollenverkettung und Erteilen von Berechtigungen für Datenkatalogressourcen.
Die Klausel OHNE SCHEMABINDUNG verwenden, wenn du Ansichten mit externen Tabellen erstellst
Wenn du eine Ansicht erstellst, die auf eine externe Tabelle verweist, wird möglicherweise die folgende Fehlermeldung angezeigt:
„ERROR: External tables are not supported in views“.
Um dieses Problem zu beheben, führe den folgenden Befehl aus, um die Ansicht mit der Klausel OHNE SCHEMABINDUNG zu erstellen:
CREATE OR REPLACE VIEW view_name AS SELECT * FROM external_schema_name.external_table_name WITH NO SCHEMA BINDING ;
Hinweis: Ersetze external_schema_name durch den externen Schemanamen und external_table_name durch den Namen der externen Tabelle.
Ähnliche Informationen
Parameter für die Verwendung von DATENBANK ERSTELLEN mit einem Datashare
- Themen
- Analytics
- Tags
- Amazon Redshift
- Sprache
- Deutsch

Relevanter Inhalt
AWS OFFICIALAktualisiert vor einem Jahr
AWS OFFICIALAktualisiert vor 2 Jahren
AWS OFFICIALAktualisiert vor einem Jahr