Nutzungshinweise - Amazon Redshift

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Nutzungshinweise

Um Rechte für ein Objekt zu gewähren, müssen Sie mindestens eines der folgenden Kriterien erfüllen:

  • Sie müssen der Besitzer des Objekts sein.

  • Sie müssen ein Superuser sein.

  • Sie müssen das Recht besitzen, Rechte für dieses Objekt und Recht zu gewähren.

Der folgende Befehl gewährt beispielsweise dem Benutzer HR die erforderlichen Rechte, um SELECT-Befehle für die Mitarbeitertabelle ausführen, anderen Benutzern dieselben Recht gewähren und diese Rechte für andere Benutzer widerrufen zu können.

grant select on table employees to HR with grant option;

Beachten Sie, dass HR keine Rechte für andere Operationen als SELECT oder für andere Tabellen als die Mitarbeitertabelle gewähren kann.

Der folgende Befehl gewährt beispielsweise dem Benutzer HR die erforderlichen Rechte, um ALTER-Befehle für die Mitarbeitertabelle ausführen, anderen Benutzern dieselben Rechte gewähren und diese Rechte für andere Benutzer widerrufen zu können.

grant ALTER on table employees to HR with grant option;

Beachten Sie, dass HR keine Rechte für andere Operationen als ALTER oder für andere Tabellen als die Mitarbeitertabelle gewähren kann.

Die Gewährung von Rechten für eine Ansicht impliziert nicht, dass auch Rechte in Bezug auf die zugrunde liegenden Tabellen gewährt werden. Gleichermaßen impliziert die Gewährung von Rechten für ein Schema nicht, dass auch Rechte in Bezug auf die zugrunde liegenden Tabellen gewährt werden. Sie müssen den Zugriff auf die zugrunde liegenden Tabellen explizit gewähren.

Um einer AWS Lake Formation Tabelle Berechtigungen zu gewähren, muss die IAM-Rolle, die dem externen Schema der Tabelle zugeordnet ist, über die Berechtigung verfügen, der externen Tabelle Berechtigungen zu gewähren. Im folgenden Beispiel wird ein externes Schema mit einer zugeordneten IAM-Rolle erstellt myGrantor. Die IAM-Rolle myGrantor verfügt über die Berechtigung, anderen Berechtigungen zu gewähren. Der Befehl GRANT nutzt die Berechtigung der IAM-Rolle myGrantor, die dem externen Schema zugeordnet ist, um der IAM-Rolle myGrantee Berechtigungen zu gewähren.

create external schema mySchema from data catalog database 'spectrum_db' iam_role 'arn:aws:iam::123456789012:role/myGrantor' create external database if not exists;
grant select on external table mySchema.mytable to iam_role 'arn:aws:iam::123456789012:role/myGrantee';

Wenn Sie einer IAM-Rolle mit GRANT ALL alle Berechtigungen gewähren, werden individuelle Berechtigungen im zugehörigen Lake Formation-fähigen Datenkatalog gewährt. Mit dem folgenden GRANT ALL-Befehl werden beispielsweise die einzelnen Berechtigungen (SELECT, ALTER, DROP, DELETE und INSERT) gewährt, wie in der Lake Formation-Konsole gezeigt.

grant all on external table mySchema.mytable to iam_role 'arn:aws:iam::123456789012:role/myGrantee';

Superuser können auf alle Objekte zugreifen, unabhängig von GRANT- und REVOKE-Befehlen, mit denen Objektrechte festgelegt werden.

Verwendungshinweise für die Zugriffskontrolle auf Spaltenebene

Die folgenden Verwendungshinweise gelten für Berechtigungen auf Spaltenebene für Amazon-Redshift-Tabellen und -Ansichten. Diese Hinweise beschreiben Tabellen; die gleichen Hinweise gelten für Ansichten, sofern nicht ausdrücklich anderweitig vermerkt.

  • Für eine Amazon-Redshift-Tabelle können Sie nur die SELECT- und UPDATE-Berechtigungen Spaltenebene erteilen. Für eine Amazon-Redshift-Ansicht können Sie nur die SELECT-Berechtigung auf Spaltenebene erteilen.

  • Das Schlüsselwort ALL ist ein Synonym für kombinierte SELECT- und UPDATE-Berechtigungen, wenn es im Kontext eines GRANT auf Spaltenebene für eine Tabelle verwendet wird.

  • Wenn Sie nicht über die Berechtigung SELECT für alle Spalten in einer Tabelle verfügen, werden bei Ausführung einer Operation SELECT * nur die Spalten zurückgegeben, auf die Sie Zugriff haben. Wenn Sie eine Ansicht verwenden, versucht eine SELECT *-Operation, auf alle Spalten in der Ansicht zuzugreifen. Wenn Sie nicht berechtigt sind, auf alle Spalten zuzugreifen, schlagen diese Abfragen fehl und es wird die Fehlermeldung „Zugriff verweigert“ angezeigt.

  • SELECT * wird in den folgenden Fällen nicht nur auf die zugänglichen Spalten erweitert:

    • Sie können mit SELECT * keine reguläre Ansicht nur mit zugänglichen Spalten erstellen.

    • Sie können mit SELECT * keine materialisierte Ansicht nur mit zugänglichen Spalten erstellen.

  • Wenn Sie über SELECT- oder UPDATE-Berechtigungen für eine Tabelle oder Ansicht verfügen und eine Spalte hinzufügen, haben Sie weiterhin die gleichen Berechtigungen für die Tabelle oder Ansicht und damit alle ihre Spalten.

  • Nur der Besitzer einer Tabelle oder ein Superuser kann Berechtigungen auf Spaltenebene erteilen.

  • Die WITH GRANT OPTION-Klausel wird für Berechtigungen auf Spaltenebene nicht unterstützt.

  • Sie können nicht dieselbe Berechtigung sowohl auf Tabellenebene als auch auf Spaltenebene besitzen. Beispielsweise kann der Benutzer data_scientist nicht sowohl über die SELECT-Berechtigung für die Tabelle employee als auch über die SELECT-Berechtigung für die Spalte employee.department verfügen. Berücksichtigen Sie die folgenden Ergebnisse, wenn Sie einer Tabelle und einer Spalte innerhalb der Tabelle dieselbe Berechtigung erteilen:

    • Wenn ein Benutzer über eine Berechtigung auf Tabellenebene für eine Tabelle verfügt, hat das Gewähren derselben Berechtigung auf Spaltenebene keine Auswirkungen.

    • Wenn ein Benutzer über eine Berechtigung auf Tabellenebene für eine Tabelle verfügt, wird beim Widerrufen derselben Berechtigung für eine oder mehrere Spalten der Tabelle ein Fehler zurückgegeben. Widerrufen Sie stattdessen die Berechtigung auf Tabellenebene.

    • Wenn ein Benutzer über eine Berechtigung auf Spaltenebene verfügt, dann wird beim Erteilen derselben Berechtigung auf Tabellenebene ein Fehler zurückgegeben.

    • Wenn ein Benutzer über eine Berechtigung auf Spaltenebene verfügt, werden beim Widerrufen derselben Berechtigung auf Tabellenebene sowohl Spalten- als auch Tabellenberechtigungen für alle Spalten in der Tabelle entzogen.

  • Sie können für späte Bindungsansichten keine Berechtigungen auf Spaltenebene erteilen.

  • Sie müssen über SELECT-Berechtigungen auf Tabellenebene für die Basistabellen verfügen, um eine materialisierte Ansicht zu erstellen. Selbst, wenn Sie über Berechtigungen auf Spaltenebene für bestimmte Spalten verfügen, können Sie keine materialisierte Ansicht für nur diese Spalten erstellen. Sie können jedoch Spalten einer materialisierten Ansicht, ähnlich wie regulären Ansichten, SELECT-Berechtigungen erteilen.

  • Verwenden Sie die Ansicht PG_ATTRIBUTE_INFO, um Berechtigungen auf Spaltenebene zu suchen.

Hinweise zur Erteilung der Berechtigung ASSUMEROLE

Die folgenden Nutzungshinweise gelten für die Erteilung der Berechtigung ASSUMEROLE in Amazon Redshift.

Mit der Berechtigung ASSUMEROLE steuern Sie IAM-Rollenzugriffsberechtigungen für Datenbankbenutzer, -rollen oder -gruppen auf Befehle wie COPY, UNLOAD, EXTERNAL FUNCTION oder CREATE MODEL. Nachdem Sie einem Benutzer, einer Rolle oder einer Gruppe die Berechtigung ASSUMEROLE für eine IAM-Rolle erteilt haben, kann der Benutzer, die Rolle oder die Gruppe diese Rolle übernehmen, wenn der Befehl ausgeführt wird. Mit der Berechtigung ASSUMEROLE können Sie bei Bedarf Zugriff auf die entsprechenden Befehle gewähren.

Nur ein Datenbank-Superuser kann die Berechtigung ASSUMEROLE für Benutzer, Rollen und Gruppen erteilen oder entziehen. Ein Superuser behält immer die Berechtigung ASSUMEROLE.

Um die Verwendung der Berechtigung ASSUMEROLE für Benutzer, Rollen und Gruppen zu aktivieren, führt ein Superuser die beiden folgenden Aktionen aus:

  • Führen Sie die folgende Anweisung einmalig auf dem Cluster aus:

    revoke assumerole on all from public for all;
  • Erteilen der Berechtigung ASSUMEROLE an Benutzer, Rollen und Gruppen für die entsprechenden Befehle.

Sie können eine Rollenverkettung in der ON-Klausel angeben, wenn Sie die Berechtigung ASSUMEROLE erteilen. Verwenden Sie Kommas, um Rollen in einer Rollenkette zu trennen, z. B. ., Role1,Role2,Role3. Wenn beim Erteilen der Berechtigung ASSUMEROLE eine Rollenverkettung angegeben wurde, müssen Sie die Rollenkette angeben, wenn Vorgänge ausgeführt werden, die durch die Berechtigung ASSUMEROLE gewährt werden. Sie können keine einzelnen Rollen innerhalb der Rollenkette angeben, wenn Vorgänge ausgeführt werden, die durch die Berechtigung ASSUMEROLE gewährt werden. Wenn einem Benutzer, einer Rolle oder einer Gruppe beispielsweise die Rollenkette Role1,Role2,Role3 zugewiesen wurde, können Sie nicht nur Role1 für die Ausführung von Vorgängen angeben.

Wenn ein Benutzer versucht, eine Operation COPY, UNLOAD, EXTERNAL FUNCTION oder CREATE MODEL auszuführen, und die Berechtigung ASSUMEROLE nicht erteilt wurde, wird eine Meldung ähnlich der folgenden angezeigt.

ERROR: User awsuser does not have ASSUMEROLE permission on IAM role "arn:aws:iam::123456789012:role/RoleA" for COPY

Informationen zum Auflisten von Benutzern, denen über die Berechtigung ASSUMEROLE Zugriff auf IAM-Rollen und -Befehle gewährt wurde, finden Sie unter HAS_ASSUMEROLE_PRIVILEGE. Informationen zum Auflisten von Berechtigungen für IAM-Rollen und -Befehle, die einem von Ihnen spezifizierten Benutzer erteilt wurden, finden Sie unter PG_GET_IAM_ROLE_BY_USER. Informationen zum Auflisten von Benutzern, Rollen und Gruppen, denen Zugriff auf eine von Ihnen spezifizierte IAM-Rolle erteilt wurde, finden Sie unter PG_GET_GRANTEE_BY_IAM_ROLE.

Hinweise zum Erteilen von Machine-Learning-Berechtigungen

Sie können Berechtigungen für eine ML-Funktion nicht direkt erteilen oder widerrufen. Eine ML-Funktion gehört zu einem ML-Modell, und die Berechtigungen werden über das Modell gesteuert. Stattdessen erteilen Sie Berechtigungen für das ML-Modell. Das folgende Beispiel zeigt, wie allen Benutzern Berechtigungen zum Ausführen der dem Modell customer_churn zugeordneten ML-Funktion erteilt werden.

GRANT EXECUTE ON MODEL customer_churn TO PUBLIC;

Sie können einem Benutzer auch alle Berechtigungen für das ML-Modell customer_churn erteilen.

GRANT ALL on MODEL customer_churn TO ml_user;

Das Erteilen der Berechtigung EXECUTE für eine ML-Funktion schlägt fehl, wenn das Schema eine ML-Funktion enthält, auch wenn diese ML-Funktion bereits über GRANT EXECUTE ON MODEL über die Berechtigung EXECUTE verfügt. Wir empfehlen, bei Verwendung des Befehls CREATE MODEL ein separates Schema zu verwenden, um die ML-Funktionen in einem separaten Schema zu behalten. Das folgende Beispiel veranschaulicht die Vorgehensweise hierfür.

CREATE MODEL ml_schema.customer_churn FROM customer_data TARGET churn FUNCTION ml_schema.customer_churn_prediction IAM_ROLE default SETTINGS ( S3_BUCKET 'your-s3-bucket' );