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.
Beispiele
Im folgenden Beispiel wird dem Benutzer die SELECT Berechtigung für die SALES Tabelle erteiltfred
.
grant select on table sales to fred;
Im folgenden Beispiel wird dem Benutzer fred
die SELECT Berechtigung für alle Tabellen im TICKIT QA_-Schema erteilt.
grant select on all tables in schema qa_tickit to fred;
Im folgenden Beispiel werden der Benutzergruppe QA_ alle Schemaprivilegien TICKIT für das Schema QA_ gewährt. USERS Die Schemaprivilegien sind undCREATE. USAGE USAGEgewährt Benutzern Zugriff auf die Objekte im Schema, gewährt jedoch keine Rechte wie INSERT oder SELECT für diese Objekte. Gewähren Sie für jedes Objekt separat Berechtigungen.
create group qa_users; grant all on schema qa_tickit to group qa_users;
Das folgende Beispiel gewährt allen Benutzern in der Gruppe QA_ alle Rechte für die SALES Tabelle im TICKIT USERS QA_-Schema.
grant all on table qa_tickit.sales to group qa_users;
Im folgenden Beispiel werden allen Benutzern in den Gruppen QA_ und RO_ alle Rechte für die SALES Tabelle im TICKIT USERS QA_-Schema gewährt. USERS
grant all on table qa_tickit.sales to group qa_users, group ro_users;
Im folgenden Beispiel wird allen Benutzern in der DROP Gruppe QA_ die Berechtigung für die SALES Tabelle im TICKIT QA_-Schema gewährt. USERS
grant drop on table qa_tickit.sales to group qa_users;>
Die folgende Abfolge von Befehlen zeigt, dass der Zugriff auf ein Schema keine Rechte in Bezug auf eine Tabelle im Schema gewährt.
create user schema_user in group qa_users password 'Abcd1234'; create schema qa_tickit; create table qa_tickit.test (col1 int); grant all on schema qa_tickit to schema_user; set session authorization schema_user; select current_user;
current_user -------------- schema_user (1 row)
select count(*) from qa_tickit.test;
ERROR: permission denied for relation test [SQL State=42501]
set session authorization dw_user; grant select on table qa_tickit.test to schema_user; set session authorization schema_user; select count(*) from qa_tickit.test;
count ------- 0 (1 row)
Die folgende Abfolge von Befehlen zeigt, dass der Zugriff auf eine Ansicht keinen Zugriff auf die zugrunde liegenden Tabellen impliziert. Der Benutzer mit dem Namen VIEW _ USER kann nicht aus der DATE Tabelle auswählen, obwohl diesem Benutzer alle Rechte für _ erteilt wurden. VIEW DATE
create user view_user password 'Abcd1234'; create view view_date as select * from date; grant all on view_date to view_user; set session authorization view_user; select current_user;
current_user -------------- view_user (1 row)
select count(*) from view_date;
count ------- 365 (1 row)
select count(*) from date;
ERROR: permission denied for relation date
Das folgende Beispiel gewährt dem Benutzer SELECT Berechtigungen für die cust_phone
Spalten cust_name
und der cust_profile
Tabelleuser1
.
grant select(cust_name, cust_phone) on cust_profile to user1;
Im folgenden Beispiel werden der sales_group
Gruppe SELECT Berechtigungen für die cust_phone
Spalten cust_name
und und UPDATE Berechtigungen für die cust_contact_preference
Spalte der cust_profile
Tabelle erteilt.
grant select(cust_name, cust_phone), update(cust_contact_preference) on cust_profile to group sales_group;
Das folgende Beispiel zeigt, wie das ALL Schlüsselwort verwendet wird, um der sales_admin
Gruppe SELECT sowohl als auch UPDATE Berechtigungen für drei Spalten der Tabelle cust_profile
zu gewähren.
grant ALL(cust_name, cust_phone,cust_contact_preference) on cust_profile to group sales_admin;
Im folgenden Beispiel wird dem user2
Benutzer die SELECT Berechtigung für die cust_name
Spalte der cust_profile_vw
Ansicht erteilt.
grant select(cust_name) on cust_profile_vw to user2;
Beispiele für die Gewährung von Zugriff auf Datashares
Die folgenden Beispiele zeigen Nutzungsberechtigungen für die GRANT gemeinsame Nutzung von Daten für eine bestimmte Datenbank oder ein bestimmtes Schema, das aus einem Datashare erstellt wurde.
Im folgenden Beispiel erteilt ein Administrator auf Herstellerseite dem angegebenen Namespace die USAGE Berechtigung für das Datashare. salesshare
GRANT USAGE ON DATASHARE salesshare TO NAMESPACE '13b8833d-17c6-4f16-8fe4-1a018f5ed00d';
Im folgenden Beispiel erteilt ein Administrator auf Kundenseite die Erlaubnis für unterwegs. USAGE sales_db
Bob
GRANT USAGE ON DATABASE sales_db TO Bob;
Im folgenden Beispiel erteilt ein verbraucherorientierter Administrator der Rolle die GRANT USAGE Berechtigung für das sales_schema
Schema. Analyst_role
sales_schema
ist ein externes Schema, das auf sales_db verweist.
GRANT USAGE ON SCHEMA sales_schema TO ROLE Analyst_role;
Zu diesem Zeitpunkt können Bob
und Analyst_role
auf alle Datenbankobjekte in sales_schema
und sales_db
zugreifen.
Das folgende Beispiel zeigt, wie zusätzliche Berechtigungen auf Objektebene für Objekte in einer gemeinsam genutzten Datenbank erteilt werden. Diese zusätzlichen Berechtigungen sind nur erforderlich, wenn der CREATE DATABASE Befehl, mit dem die gemeinsam genutzte Datenbank erstellt wurde, die Klausel verwendet hat. WITH PERMISSIONS Wenn der CREATE DATABASE Befehl nicht verwendet wurde WITHPERMISSIONS, gewährt die Gewährung USAGE für die gemeinsam genutzte Datenbank vollen Zugriff auf alle Objekte in dieser Datenbank.
GRANT SELECT ON sales_db.sales_schema.tickit_sales_redshift to Bob;
Beispiele für die Gewährung von bereichsbezogenen Berechtigungen
Im folgenden Beispiel wird der Sales
-Rolle die Verwendung aller derzeitigen und zukünftigen Schemata in der Sales_db
-Datenbank gestattet.
GRANT USAGE FOR SCHEMAS IN DATABASE Sales_db TO ROLE Sales;
Im folgenden Beispiel wird dem Benutzer die SELECT Berechtigung für alle aktuellen und future Tabellen in der Sales_db
Datenbank sowie alice
die Berechtigung erteiltalice
, anderen Benutzern bereichsbezogene Berechtigungen für Tabellen Sales_db
zu gewähren.
GRANT SELECT FOR TABLES IN DATABASE Sales_db TO alice WITH GRANT OPTION;
Im folgenden Beispiel wird dem EXECUTE Benutzer die Berechtigung für Funktionen im Sales_schema
Schema erteilt. bob
GRANT EXECUTE FOR FUNCTIONS IN SCHEMA Sales_schema TO bob;
Im folgenden Beispiel werden der Sales
-Rolle alle Berechtigungen für alle Tabellen im Schema ShareSchema
der Datenbank ShareDb
gewährt. Bei der Angabe des Schemas können Sie die Datenbank des Schemas im zweiteiligen Format database.schema
angeben.
GRANT ALL FOR TABLES IN SCHEMA ShareDb.ShareSchema TO ROLE Sales;
Das folgende Beispiel zeigt dieselbe Abfrage wie im vorherigen Beispiel. Sie können die Datenbank mit dem DATABASE
-Schlüsselwort angeben, anstatt ein zweiteiliges Format zu verwenden.
GRANT ALL FOR TABLES IN SCHEMA ShareSchema DATABASE ShareDb TO ROLE Sales;
Beispiele für die Gewährung des ASSUMEROLE Privilegs
Im Folgenden finden Sie Beispiele für die Gewährung des ASSUMEROLE Privilegs.
Das folgende Beispiel zeigt die REVOKE Aussage, dass ein Superuser einmal auf dem Cluster ausgeführt wird, um Benutzern und Gruppen die Nutzung der ASSUMEROLE Berechtigung zu ermöglichen. Anschließend erteilt der Superuser Benutzern und ASSUMEROLE Gruppen das Recht für die entsprechenden Befehle. Informationen zur Aktivierung der Nutzung des ASSUMEROLE Privilegs für Benutzer und Gruppen finden Sie unterNutzungshinweise für die Erteilung der Erlaubnis ASSUMEROLE.
revoke assumerole on all from public for all;
Im folgenden Beispiel wird dem Benutzer reg_user1
die ASSUMEROLE Berechtigung Redshift-S3-Read
zur Ausführung von COPY Vorgängen mit der IAM Rolle erteilt.
grant assumerole on 'arn:aws:iam::123456789012:role/Redshift-S3-Read' to reg_user1 for copy;
Im folgenden Beispiel wird dem Benutzer die ASSUMEROLE Berechtigung reg_user1
für die IAM Rollenkette erteilt RoleA
RoleB
, UNLOAD Operationen auszuführen.
grant assumerole on 'arn:aws:iam::123456789012:role/RoleA,arn:aws:iam::210987654321:role/RoleB' to reg_user1 for unload;
Das Folgende ist ein Beispiel für den UNLOAD BefehlRoleA
, der die IAM Rollenkette verwendetRoleB
.
unload ('select * from venue limit 10') to 's3://companyb/redshift/venue_pipe_' iam_role 'arn:aws:iam::123456789012:role/RoleA,arn:aws:iam::210987654321:role/RoleB';
Im folgenden Beispiel wird dem Benutzer mit der IAM Rolle reg_user1
die ASSUMEROLE Berechtigung erteilt, externe Funktionen Redshift-Exfunc
zu erstellen.
grant assumerole on 'arn:aws:iam::123456789012:role/Redshift-Exfunc' to reg_user1 for external function;
Im folgenden Beispiel wird dem Benutzer die ASSUMEROLE Berechtigung reg_user1
für die IAM Rolle erteilt, Modelle für maschinelles Lernen Redshift-model
zu erstellen.
grant assumerole on 'arn:aws:iam::123456789012:role/Redshift-ML' to reg_user1 for create model;
Beispiele für die Gewährung der ROLE Rechte
Im folgenden Beispiel wird die Rolle sample_role1 einem Benutzer mit dem Namen user1 erteilt.
CREATE ROLE sample_role1; GRANT ROLE sample_role1 TO user1;
Im folgenden Beispiel wird Benutzer1 sample_role1 mit dem erteilt WITH ADMINOPTION, die aktuelle Sitzung für Benutzer1 festgelegt, und Benutzer1 erteilt Benutzer2 sample_role1.
GRANT ROLE sample_role1 TO user1 WITH ADMIN OPTION; SET SESSION AUTHORIZATION user1; GRANT ROLE sample_role1 TO user2;
Im folgenden Beispiel wird die Rolle sample_role1 der Rolle sample_role2 gewährt.
GRANT ROLE sample_role1 TO ROLE sample_role2;
Im folgenden Beispiel wird die Rolle sample_role2 für sample_role3 und sample_role4 gewährt. Dann wird versucht, sample_role3 für sample_role1 zu gewähren.
GRANT ROLE sample_role2 TO ROLE sample_role3; GRANT ROLE sample_role3 TO ROLE sample_role2; ERROR: cannot grant this role, a circular dependency was detected between these roles
Im folgenden Beispiel werden sample_role1 CREATE USER die Systemberechtigungen erteilt.
GRANT CREATE USER TO ROLE sample_role1;
Im folgenden Beispiel wird die vom System definierte Rolle sys:dba
für user1 gewährt.
GRANT ROLE sys:dba TO user1;
Im folgenden Beispiel wird versucht, sample_role3 in einer kreisförmigen Abhängigkeit von sample_role2 zu gewähren.
CREATE ROLE sample_role3; GRANT ROLE sample_role2 TO ROLE sample_role3; GRANT ROLE sample_role3 TO ROLE sample_role2; -- fail ERROR: cannot grant this role, a circular dependency was detected between these roles