Kategorien:

DDL für Benutzer und Sicherheit (Zugriffssteuerung)

GRANT <Berechtigung> … TO SHARE

Erteilt einer Freigabe Zugriffsrechte auf Datenbanken und andere unterstützte Datenbankobjekte (Schemas, Tabellen und Ansichten). Durch Erteilen von Objektberechtigungen werden diese Objekte effektiv der Freigabe hinzugefügt, die dann für Verbraucherkonten freigegeben werden kann.

Weitere Details dazu finden Sie unter Einführung in Secure Data Sharing und Verwenden von Freigaben.

Siehe auch:

REVOKE <Berechtigung> … FROM SHARE

GRANT <Berechtigungen> … TO ROLE

Syntax

GRANT objectPrivilege ON
     {  DATABASE <name>
      | SCHEMA <name>
      | { TABLE <name> | ALL TABLES IN SCHEMA <schema_name> }
      | { VIEW <name> | ALL VIEWS IN SCHEMA <schema_name> }  }
  TO SHARE <share_name>

Wobei:

objectPrivilege ::=
-- For DATABASE or SCHEMA
    USAGE
-- For TABLE or VIEW
    SELECT
-- For DATABASE
    REFERENCE_USAGE

Parameter

Name

Gibt den Bezeichner des Objekts (Datenbank, Schema, Tabelle oder sichere Ansicht) an, dem die angegebene Berechtigung erteilt wird.

Schemaname

Gibt den Bezeichner des Schemas an, dem die angegebene Berechtigung für alle Tabellen oder Ansichten erteilt wird.

Freigabename

Gibt den Bezeichner der Freigabe an, von der aus die angegebene Berechtigung erteilt wird.

Nutzungshinweise

  • Mit Ausnahme von Tabellen müssen Berechtigungen für Objekte einer Rolle einzeln zugewiesen werden. Mit einer ALL-Klausel können Sie einer Rolle die SELECT-Berechtigung für alle Tabellen in einem bestimmten Schema erteilen.

    Derzeit kann die ALL-Klausel nicht zwischen sicheren und nicht sicheren Ansichten unterscheiden. Infolgedessen führt die Massenerteilung der SELECT-Berechtigung für Ansichten in einem Schema an eine Freigabe zu einem Benutzerfehler.

  • Einer Freigabe kann USAGE-Berechtigung nur für eine einzelne Datenbank erteilt werden. Innerhalb der Datenbank können jedoch mehrere Schemas, Tabellen und Ansichten zugewiesen werden.

  • Derzeit wird die Freigabe einer UDF, die auf ein Objekt in einer anderen Datenbank verweist, nicht unterstützt. Wenn Sie beispielsweise versuchen, einer UDF, die auf eine sichere Ansicht einer anderen Datenbank verweist, die USAGE-Berechtigung zu erteilen, wird ein Fehler zurückgegeben.

  • Derzeit kann einer Freigabe die SELECT-Berechtigung nur für sichere Ansichten zugewiesen werden. Wenn Sie versuchen, einer Freigabe Zugriff auf eine nicht sichere Ansicht zu erteilen, wird ein Fehler zurückgegeben.

    Verwenden Sie wegen dieser Einschränkung ALL VIEWS IN SCHEMA Schemaname nur, wenn alle Ansichten im angegebenen Schema sicher sind.

  • Verwenden Sie die Berechtigung REFERENCE_USAGE, wenn Sie eine sichere Ansicht freigeben, die auf Objekte verweist, die zu mehreren Datenbanken gehören.

  • Die Berechtigung REFERENCE_USAGE muss jeder Datenbank einzeln erteilt werden.

  • Die Berechtigung REFERENCE_USAGE muss einer Datenbank erteilt werden, bevor SELECT für eine sichere Ansicht einer Freigabe erteilt wird.

Beispiele

Dies ist ein Beispiel für das Freigeben von Objekten aus einer einzelnen Datenbank:

GRANT USAGE ON DATABASE mydb TO SHARE share1;

GRANT USAGE ON SCHEMA mydb.public TO SHARE share1;

GRANT SELECT ON ALL TABLES IN SCHEMA mydb.public TO SHARE share1;

GRANT USAGE ON SCHEMA mydb.shared_schema TO SHARE share1;

GRANT SELECT ON VIEW mydb.shared_schema.view1 TO SHARE share1;

GRANT SELECT ON VIEW mydb.shared_schema.view3 TO SHARE share1;

Dies ist ein Beispiel für die Freigabe einer sicheren Ansicht, die auf Objekte aus einer anderen Datenbank verweist:

CREATE SECURE VIEW view2 AS SELECT * FROM database2.public.sampletable;

GRANT USAGE ON DATABASE database1 TO SHARE share1;

GRANT USAGE ON SCHEMA database1.schema1 TO SHARE share1;

GRANT REFERENCE_USAGE ON DATABASE database2 TO SHARE share1;

GRANT SELECT ON VIEW view2 TO SHARE share1;