Auf dieser Seite werden die Berechtigungen beschrieben, die Sie einer Datenbankrolle für eine differenzierte Zugriffssteuerung.
Informationen zu Datenbankrollen und zur detaillierten Zugriffssteuerung finden Sie unter Detaillierte Zugriffssteuerung
In der folgenden Tabelle sind die detaillierten Berechtigungen für die Zugriffssteuerung und die Datenbankobjekte aufgeführt in dem sie gewährt werden können.
AUSWÄHLEN | INSERT | UPDATE | LÖSCHEN | EXECUTE | Nutzung | |
---|---|---|---|---|---|---|
Schema | ✓ | |||||
Tabelle | ✓ | ✓ | ✓ | ✓ | ||
Spalte | ✓ | ✓ | ✓ | ✓ | ||
Ansehen | ✓ | |||||
Stream ändern | ✓ | |||||
Lesefunktion des Änderungsstreams | ✓ | |||||
Sequenz | ✓ | ✓ | ||||
Modell | ✓ |
Die folgenden Abschnitte enthalten Details zu den einzelnen Berechtigungen.
SELECT
Ermöglicht der Rolle das Lesen oder Abfragen aus einer Tabelle, einer Ansicht, einem Änderungsstream, einer Sequenz oder einem Modell.
Wenn eine Spaltenliste für eine Tabelle angegeben ist, gilt die Berechtigung nur für Spalten. Wenn keine Spaltenliste angegeben ist, gilt die Berechtigung für alle Spalten in der Tabelle, einschließlich später hinzugefügter Spalten. Eine Spaltenliste ist kein für eine Datenansicht zulässig.
Spanner unterstützt sowohl die Rechteansichten des Aufrufers als auch die der Definierende. auf die Rechte anderer. Weitere Informationen finden Sie unter Informationen zu Ansichten.
Wenn Sie eine Ansicht mit Aufruferrechten erstellen, wird die Datenbank zum Abfragen der Ansicht Rolle oder Nutzer benötigt die Berechtigung
SELECT
für die Datenansicht sowie die BerechtigungSELECT
für die zugrunde liegenden Objekte, auf die in der Ansicht verwiesen wird. Beispiel: 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
. Die Rolle muss die BerechtigungSELECT
für die Datenansicht haben Außerdem muss sie die BerechtigungSELECT
für die drei Spalten haben, auf die verwiesen wird, oder für die gesamteSingers
-Tabelle.Wenn Sie eine Ansicht mit Definierungsrechten erstellen, wird die Datenbank Rolle oder ein Nutzer benötigt nur die Berechtigung
SELECT
für die Datenansicht. Beispiel: 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
. Die Rolle benötigt nur die BerechtigungSELECT
für die Ansicht. Die BerechtigungSELECT
für die drei referenzierten Spalten ist nicht erforderlich oder in der TabelleAlbums
.Nachdem der FGAC-Nutzer
SELECT
für eine Teilmenge von Spalten in einer Tabelle gewährt hat, kann der FGAC-NutzerSELECT *
für diese Tabelle nicht mehr verwenden. Abfragen für diese Tabelle müssen alle Spalten enthalten sein sollen.Die für eine generierte Spalte gewährte
SELECT
gewährt keinenSELECT
für die zugrunde liegende Basisspalten.Bei verschränkten Tabellen gilt die für die übergeordnete Tabelle gewährte
SELECT
nicht werden an die untergeordnete Tabelle weitergegeben.Wenn Sie
SELECT
für einen Änderungsstream gewähren, müssen Sie auchEXECUTE
für Tabellenwertfunktion für den Änderungsstream. Weitere Informationen finden Sie unter EXECUTE.Wenn
SELECT
mit einer Aggregatfunktion für bestimmte Spalten verwendet wird, z. B. Beispiel:SUM(col_a)
: Die Rolle muss die BerechtigungSELECT
für diese Spalten haben. Wenn die Aggregatfunktion keine Spalten angibt, z. B.COUNT(*)
, Die Rolle muss die BerechtigungSELECT
für mindestens eine Spalte in der Tabelle haben.Wenn Sie
SELECT
mit einer Sequenz verwenden, sehen Sie nur Sequenzen, Anzeigeberechtigung 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 der Rolle, Zeilen in die angegebenen Tabellen einzufügen. Wenn eine Spaltenliste angegeben ist, gilt die Berechtigung nur für Spalten. Wenn keine Spaltenliste angegeben ist, gilt die Berechtigung für alle Spalten in der Tabelle.
Wenn Spaltennamen angegeben sind, werden alle nicht eingeschlossenen Spalten angezeigt. erhält beim Einfügen seinen Standardwert.
INSERT
kann für generierte Spalten nicht 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 von Tabellenspalten beschränkt. Wenn Sie es mit Sequenzen verwenden,
ermöglicht der Rolle, die get-next-sequence-value
-Funktion für die Sequenz aufzurufen.
Zusätzlich zur Berechtigung UPDATE
benötigt die Rolle
die Berechtigung SELECT
für alle Schlüsselspalten und alle abgefragten Spalten. Abgefragt
Spalten enthalten Spalten in der WHERE
-Klausel und Spalten, die für
die neuen Werte der aktualisierten und
erzeugten Spalten berechnen.
UPDATE
kann für generierte Spalten nicht 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.Die Rolle benötigt außerdem
SELECT
für alle Schlüsselspalten und alle Spalten, die möglicherweise in Abfrage-WHERE
-Klauseln enthalten.Für verschränkte Tabellen in GoogleSQL-Dialektdatenbanken gibt der Parameter Die Berechtigung
DELETE
ist nur für die übergeordnete Tabelle erforderlich. Wenn eine untergeordnete TabelleON DELETE CASCADE
angibt, werden Zeilen aus der untergeordneten Tabelle gelöscht, auch ohne die BerechtigungDELETE
für die untergeordnete Tabelle.
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
read-Funktion für den Änderungsstream. Weitere Informationen finden Sie unter
Lesefunktionen und Abfragesyntax für Änderungsstreams
Wenn Sie dies mit Modellen verwenden, kann die Rolle das Modell in Funktionen für maschinelles Lernen.
Beispiel
Das folgende Beispiel zeigt, wie EXECUTE
der Lesefunktion für die
Änderungsstream namens my_change_stream
.
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 einem benannten Schema USAGE
zuweisen, erhalten Sie damit Zugriffsberechtigungen
-Objekte, die im benannten Schema enthalten sind. Die Berechtigung USAGE
wird gewährt durch
Standardschema auf das Standardschema anwenden.
Nächste Schritte
Weitere Informationen finden Sie unter:
- Detaillierte Zugriffssteuerung konfigurieren
- Detaillierte Zugriffssteuerung
- GRANT- und REVOKE-Anweisungen (GoogleSQL-Dialekt-Datenbanken)
- GRANT- und REVOKE-Anweisungen (PostgreSQL-Dialekt-Datenbanken)