Auf dieser Seite werden die Berechtigungen beschrieben, die Sie einer Datenbankrolle für eine detaillierte Zugriffssteuerung gewähren können.
Informationen zu Datenbankrollen und detaillierter Zugriffssteuerung finden Sie unter Detaillierte Zugriffssteuerung.
In der folgenden Tabelle sind die Berechtigungen für die differenzierte Zugriffssteuerung und die Datenbankobjekte aufgeführt, für die sie gewährt werden können.
AUSWÄHLEN | INSERT | AKTUALISIEREN | LÖSCHEN | EXECUTE | Nutzung | |
---|---|---|---|---|---|---|
Schema | ✓ | |||||
Tabelle | ✓ | ✓ | ✓ | ✓ | ||
Spalte | ✓ | ✓ | ✓ | ✓ | ||
Ansehen | ✓ | |||||
Stream ändern | ✓ | |||||
Lesefunktion für Änderungsstream ändern | ✓ | |||||
Sequenz | ✓ | ✓ | ||||
Modell | ✓ |
Die folgenden Abschnitte enthalten Details zu den einzelnen Berechtigungen.
SELECT
Ermöglicht der Rolle, Daten aus einer Tabelle, Ansicht, einem Änderungsstream, einer Sequenz oder einem Modell zu lesen oder abzufragen.
Wenn für eine Tabelle eine Spaltenliste angegeben ist, gilt das Berechtigungsobjekt nur für diese Spalten. Wenn keine Spaltenliste angegeben ist, gilt das Berechtigung für alle Spalten in der Tabelle, einschließlich derer, die später hinzugefügt werden. Für eine Ansicht ist keine Spaltenliste zulässig.
Spanner unterstützt sowohl Ansichten der Rechte des Aufrufers als auch Ansichten der Rechte des Definierers. Weitere Informationen finden Sie unter Ansichten.
Wenn Sie eine Ansicht mit den Rechten des Aufrufers erstellen, benötigt die Datenbankrolle oder der Nutzer zum Abfragen der Ansicht die Berechtigung
SELECT
für die Ansicht und die BerechtigungSELECT
für die zugrunde liegenden Objekte, auf die in der Ansicht verwiesen wird. Angenommen, die AnsichtSingerNames
wird in der TabelleSingers
erstellt.CREATE VIEW SingerNames SQL SECURITY INVOKER AS SELECT Singers.SingerId, Singers.FirstName, Singers.LastName FROM Singers;
Angenommen, die Datenbankrolle
myRole
führt die AbfrageSELECT * FROM SingerNames
aus. Die Rolle muss die BerechtigungSELECT
für die Ansicht und die BerechtigungSELECT
für die drei referenzierten Spalten oder für die gesamteSingers
-Tabelle haben.Wenn Sie eine Ansicht mit den Rechten des Erstellers erstellen, benötigt die Datenbankrolle oder der Nutzer nur die Berechtigung
SELECT
für die Ansicht, um sie abzufragen. Angenommen, die AnsichtAlbumsBudget
wird in der TabelleAlbums
erstellt.CREATE VIEW AlbumsBudget SQL SECURITY DEFINER AS SELECT Albums.Id, Albums.AlbumTitle, MarketingBudget FROM Albums;
Angenommen, die Datenbankrolle
Analyst
führt die AbfrageSELECT * FROM AlbumsBudget
aus. Für die Rolle ist nur die BerechtigungSELECT
für die Ansicht erforderlich. Die BerechtigungSELECT
für die drei referenzierten Spalten oder die TabelleAlbums
ist nicht erforderlich.Nachdem
SELECT
für eine Teilmenge von Spalten für eine Tabelle gewährt wurde, kann der FGAC-NutzerSELECT *
für diese Tabelle nicht mehr verwenden. Abfragen für diese Tabelle müssen alle zu berücksichtigenden Spalten benennen.Wenn
SELECT
für eine generierte Spalte gewährt wird, wird dadurch nichtSELECT
für die zugrunde liegenden Basisspalten gewährt.Bei verschachtelten Tabellen wird
SELECT
, das für die übergeordnete Tabelle gewährt wurde, nicht an die untergeordnete Tabelle weitergegeben.Wenn Sie
SELECT
für einen Änderungsstream gewähren, müssen Sie auchEXECUTE
für die Tabellenwertfunktion für den Änderungsstream gewähren. Weitere Informationen finden Sie unter EXECUTE.Wenn
SELECT
mit einer Aggregationsfunktion für bestimmte Spalten verwendet wird, z. B.SUM(col_a)
, muss die Rolle dasSELECT
-Berechtigung für diese Spalten haben. Wenn für die Aggregationsfunktion keine Spalten angegeben sind, z. B.COUNT(*)
, muss die Rolle das BerechtigungsobjektSELECT
für mindestens eine Spalte in der Tabelle haben.Wenn Sie
SELECT
mit einer Sequenz verwenden, können Sie sich nur Sequenzen ansehen, für die Sie Berechtigungen haben.
Beispiele
GoogleSQL
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 orders_view TO ROLE hr_manager; GRANT SELECT ON CHANGE STREAM ordersChangeStream TO ROLE hr_analyst; GRANT SELECT ON SEQUENCE sequence_name TO ROLE role_name;
PostgreSQL
GRANT SELECT ON TABLE employees TO hr_director; GRANT SELECT ON TABLE customers, orders, items TO account_mgr; GRANT SELECT(name, level, cost_center, location, manager) ON TABLE employees TO hr_manager; GRANT SELECT(name, address, phone) ON TABLE employees, contractors TO hr_rep; GRANT SELECT ON TABLE orders_view TO hr_manager; // orders_view is an invoker rights view GRANT SELECT ON CHANGE STREAM orders_change_stream TO hr_analyst; GRANT SELECT ON SEQUENCE sequence_name TO hr_package;
INSERT
Ermöglicht es der Rolle, Zeilen in die angegebenen Tabellen einzufügen. Wenn eine Spaltenliste angegeben ist, gilt die Berechtigung nur für diese Spalten. Wenn keine Spaltenliste angegeben ist, gilt das Berechtigung für alle Spalten in der Tabelle.
Wenn Spaltennamen angegeben werden, erhält jede nicht enthaltene Spalte beim Einfügen ihren Standardwert.
INSERT
kann nicht für generierte Spalten gewährt werden.
Beispiele
GoogleSQL
GRANT INSERT ON TABLE employees, contractors TO ROLE hr_manager; GRANT INSERT(name, address, phone) ON TABLE employees TO ROLE hr_rep;
PostgreSQL
GRANT INSERT ON TABLE employees, contractors TO hr_manager; GRANT INSERT(name, address, phone) ON TABLE employees TO hr_rep;
UPDATE
Ermöglicht der Rolle, Zeilen in den angegebenen Tabellen zu aktualisieren. Aktualisierungen können auf eine Teilmenge der Tabellenspalten beschränkt werden. Wenn Sie diese Funktion mit Sequenzen verwenden, kann die Rolle die Funktion get-next-sequence-value
für die Sequenz aufrufen.
Zusätzlich zur Berechtigung UPDATE
benötigt die Rolle die Berechtigung SELECT
für alle abgefragten Spalten. Abgefragte Spalten umfassen Spalten in der WHERE
-Klausel.
UPDATE
kann nicht für generierte Spalten gewährt werden.
Beispiele
GoogleSQL
GRANT UPDATE ON TABLE employees, contractors TO ROLE hr_manager; GRANT UPDATE(name, address, phone) ON TABLE employees TO ROLE hr_rep;
PostgreSQL
GRANT UPDATE ON TABLE employees, contractors TO hr_manager; GRANT UPDATE(name, address, phone) ON TABLE employees TO hr_rep;
DELETE
Ermöglicht der Rolle, Zeilen aus den angegebenen Tabellen zu löschen.
DELETE
kann nicht auf Spaltenebene gewährt werden.Außerdem benötigt die Rolle
SELECT
für alle Spalten, die in denWHERE
-Klauseln der Abfrage enthalten sein könnten.Für verschränkte Tabellen in Datenbanken mit GoogleSQL-Dialekt ist das
DELETE
-Berechtigung nur für die übergeordnete Tabelle erforderlich. Wenn für eine untergeordnete TabelleON DELETE CASCADE
angegeben ist, werden Zeilen aus der untergeordneten Tabelle auch ohne dasDELETE
-Berechtigung für die untergeordnete Tabelle gelöscht.
Beispiel
GoogleSQL
GRANT DELETE ON TABLE employees, contractors TO ROLE hr_admin;
PostgreSQL
GRANT DELETE ON TABLE employees, contractors TO hr_admin;
EXECUTE
Wenn Sie SELECT
für einen Änderungsstream gewähren, müssen Sie auch EXECUTE
für die Lesefunktion für den Änderungsstream gewähren. Weitere Informationen finden Sie unter Lesefunktionen und Abfragesyntax für Änderungsstreams.
Wenn Sie diese Berechtigung für Modelle verwenden, kann die Rolle das Modell in Funktionen für maschinelles Lernen verwenden.
Beispiel
Im folgenden Beispiel wird gezeigt, wie EXECUTE
für die Lesefunktion des Änderungsstreams my_change_stream
gewährt wird.
GoogleSQL
GRANT EXECUTE ON TABLE FUNCTION READ_my_change_stream TO ROLE hr_analyst;
PostgreSQL
GRANT EXECUTE ON FUNCTION spanner.read_json_my_change_stream TO hr_analyst;
Nutzung
Wenn Sie USAGE
einem benannten Schema gewähren, erhalten Sie Berechtigungen für den Zugriff auf Objekte, die im benannten Schema enthalten sind. Die Berechtigung USAGE
wird standardmäßig dem Standardschema gewährt.
Nächste Schritte
Weitere Informationen finden Sie unter:
- Detaillierte Zugriffssteuerung konfigurieren
- Detaillierte Zugriffssteuerung
- GRANT- und REVOKE-Anweisungen (Datenbanken mit GoogleSQL-Dialekt)
- GRANT- und REVOKE-Anweisungen (PostgreSQL-Dialektdatenbanken)