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 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 mussSELECT
in der Ansicht undSELECT
in den drei referenzierten Spalten oder in der gesamten TabelleSingers
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 mehrSELECT *
verwenden. Abfragen für diese Tabelle müssen alle Spalten enthalten, die enthalten sein sollen.Mit
SELECT
für eine generierte Spalte wird nichtSELECT
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 auchEXECUTE
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 BerechtigungSELECT
für diese Spalten haben. Wenn die Aggregatfunktion keine Spalten angibt, z. B.COUNT(*)
, muss die Rolle die BerechtigungSELECT
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 BerechtigungSELECT
für alle Schlüsselspalten und alle abgefragten Spalten. Zu den abgefragten Spalten gehören Spalten in derWHERE
-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 inWHERE
-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 TabelleON DELETE CASCADE
angegeben ist, werden Zeilen aus der untergeordneten Tabelle auch ohne die BerechtigungDELETE
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:
- Detaillierte Zugriffssteuerung konfigurieren
- Detaillierte Zugriffssteuerung
- Anweisungen zur GEWÄHRUNG UND ZURÜCKWEISUNG