Detaillierte Zugriffssteuerungsberechtigungen

Mit Sammlungen den Überblick behalten Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.

Auf dieser Seite werden die Berechtigungen beschrieben, die Sie einer Datenbankrolle für eine detaillierte Zugriffssteuerung gewähren können.

Weitere Informationen zu Datenbankrollen und zur detaillierten Zugriffssteuerung finden Sie unter Über detaillierte Zugriffssteuerung.

In der folgenden Tabelle sind die detaillierten Berechtigungen und die Datenbankobjekte aufgeführt, für die sie gewährt werden können.

AUSWÄHLEN INSERT UPDATE LÖSCHEN EXECUTE
Tabelle
Säulendiagramm
Ansehen
Stream ändern
TVF des Streams ändern

In den folgenden Abschnitten finden Sie Details zu den einzelnen Berechtigungen.

SELECT

Ermöglicht der Rolle, Daten aus einer Tabelle zu lesen, abzufragen oder den Stream zu ändern.

  • Wenn für eine Tabelle eine Spaltenliste angegeben ist, gilt die Berechtigung nur für diese Spalten. Wenn keine Spaltenliste angegeben ist, gilt die Berechtigung für alle Spalten in der Tabelle, einschließlich der Spalten, die danach hinzugefügt werden. Für eine Ansicht ist keine Spaltenliste zulässig.

  • Da Cloud Spanner derzeit nur Ansichten von Aufrufern unterstützt, benötigt eine Datenbankrolle die Berechtigung SELECT für die Ansicht sowie die Berechtigung SELECT für die zugrunde liegenden Objekte, auf die in der Ansicht verwiesen wird. Angenommen, die Ansicht SingerNames wird in der Tabelle Singers erstellt.

    CREATE VIEW SingerNames SQL SECURITY INVOKER AS
      SELECT Singers.SingerId, Singers.FirstName, Singers.LastName FROM Singers;
    

    Angenommen, die Datenbankrolle myRole führt die Abfrage SELECT * FROM SingerNames aus. Die Rolle muss SELECT in der Ansicht und SELECT in den drei referenzierten Spalten oder in der gesamten Tabelle Singers haben.

  • Nachdem Sie SELECT für eine Teilmenge von Spalten für eine Tabelle gewährt haben, kann der FGAC-Nutzer für diese Tabelle nicht mehr SELECT * verwenden. Abfragen für diese Tabelle müssen alle Spalten enthalten, die enthalten sein sollen.

  • Mit SELECT für eine generierte Spalte wird nicht SELECT für die zugrunde liegenden Basisspalten gewährt.

  • Bei verschränkten Tabellen wird SELECT, die für die übergeordnete Tabelle gewährt wurde, nicht an die untergeordnete Tabelle weitergegeben.

  • Wenn Sie SELECT für einen Änderungsstream erteilen, müssen Sie auch EXECUTE für die Tabellenwertfunktion für den Änderungsstream erteilen. Weitere Informationen finden Sie unter AUSFÜHREN.

  • Wenn SELECT mit einer Aggregatfunktion für bestimmte Spalten verwendet wird, z. B. SUM(col_a), muss die Rolle die Berechtigung SELECT für diese Spalten haben. Wenn die Aggregatfunktion keine Spalten angibt, z. B. COUNT(*), muss die Rolle die Berechtigung SELECT für mindestens eine Spalte in der Tabelle haben.

Beispiele

GRANT SELECT ON TABLE employees TO ROLE hr_director;

GRANT SELECT ON TABLE customers, orders, items TO ROLE account_mgr;

GRANT SELECT(name, level, cost_center, location, manager) ON TABLE employees TO ROLE hr_manager;

GRANT SELECT(name, address, phone) ON TABLE employees, contractors TO ROLE hr_rep;

GRANT SELECT ON VIEW ordersSummary TO ROLE hr_manager;

GRANT SELECT ON CHANGE STREAM ordersChangeStream TO ROLE hr_analyst;

INSERT

Ermöglicht der Rolle, Zeilen in die angegebenen Tabellen einzufügen. Wenn eine Spaltenliste angegeben ist, ist die Berechtigung nur für diese Spalten gültig. Wenn keine Spaltenliste angegeben ist, ist die Berechtigung für alle Spalten in der Tabelle gültig.

  • Wenn Spaltennamen angegeben sind, erhält jede Spalte, die nicht enthalten ist, beim Einfügen ihren Standardwert.

  • INSERT kann für generierte Spalten nicht gewährt werden.

Beispiele

GRANT INSERT ON TABLE employees, contractors TO ROLE hr_manager;

GRANT INSERT(name, address, phone) ON TABLE employees TO ROLE hr_rep;

UPDATE

Ermöglicht der Rolle, Zeilen in den angegebenen Tabellen zu aktualisieren. Aktualisierungen können auf eine Teilmenge von Tabellenspalten beschränkt werden.

  • Zusätzlich zur Berechtigung UPDATE benötigt die Rolle die Berechtigung SELECT für alle Schlüsselspalten und alle abgefragten Spalten. Zu den abgefragten Spalten gehören Spalten in der WHERE-Klausel sowie Spalten, die zur Berechnung der neuen Werte der aktualisierten Spalten und der generierten Spalten verwendet werden.

  • UPDATE kann für generierte Spalten nicht gewährt werden.

Beispiele

GRANT UPDATE ON TABLE employees, contractors TO ROLE hr_manager;

GRANT UPDATE(name, address, phone) ON TABLE employees TO ROLE hr_rep;

DELETE

Ermöglicht der Rolle, Zeilen aus den angegebenen Tabellen zu löschen.

  • DELETE kann nicht auf Spaltenebene gewährt werden.

  • Die Rolle benötigt außerdem SELECT für alle Schlüsselspalten und alle Spalten, die möglicherweise in WHERE-Klauseln der Abfrage enthalten sind.

  • Bei verschränkten Tabellen ist die Berechtigung DELETE nur für die übergeordnete Tabelle erforderlich. Wenn für eine untergeordnete Tabelle ON DELETE CASCADE angegeben ist, werden Zeilen aus der untergeordneten Tabelle auch ohne die Berechtigung DELETE für die untergeordnete Tabelle gelöscht.

Beispiel

GRANT DELETE ON TABLE employees, contractors TO ROLE hr_admin;

EXECUTE

Wenn Sie SELECT für einen Änderungsstream erteilen, müssen Sie auch EXECUTE für die Tabellenwertfunktion (TVF) für den Änderungsstream erteilen. Informationen zu TVFs finden Sie unter Syntax von Streamabfragen ändern.

Beispiel

GRANT EXECUTE ON TABLE FUNCTION READ_my_change_stream TO ROLE hr_analyst;

Weitere Informationen

Weitere Informationen finden Sie unter: