GRANT CALLER¶
呼び出し元許可 をロールに付与します。ロールが所有する実行可能対象が制限された呼び出し元権限で実行される場合は、呼び出し元許可で指定された呼び出し元の権限でのみ実行することができます。
GRANT CALLER コマンドのバリエーションは以下のとおりです。
GRANT CALLER --- 特定のオブジェクトに呼び出し元許可を付与します。ステートメントによって作成された各呼び出し元許可は、実行可能対象が指定された権限で実行されることを許可します。
GRANT ALL CALLER PRIVILEGES --- 特定のオブジェクトに呼び出し元許可を付与します。ステートメントによって作成された呼び出し元許可によって、実行可能対象は呼び出し元のすべての権限で実行できるようになります。
GRANT INHERITED CALLER --- スキーマ、データベース、アカウントを共有している場合は、同じ型の現在および将来のオブジェクトすべてに呼び出し元許可を付与します。ステートメントによって作成された各呼び出し元許可は、実行可能対象が指定された権限で実行されることを許可します。
GRANT ALL INHERITED CALLER PRIVILEGES --- スキーマ、データベース、アカウントを共有している場合は、同じ型の現在および将来のオブジェクトすべてに呼び出し元許可を付与します。ステートメントによって作成された呼び出し元許可によって、実行可能対象は呼び出し元のすべての権限で実行できるようになります。
構文¶
GRANT CALLER <object_privilege> [ , <object_privilege> ... ]
ON <object_type> <object_name>
TO { ROLE | DATABASE ROLE } <grantee_name>
GRANT ALL CALLER PRIVILEGES
ON <object_type> <object_name>
TO { ROLE | DATABASE ROLE } <grantee_name>
GRANT INHERITED CALLER <object_privilege> [ , <object_privilege> ... ]
ON ALL <object_type_plural>
IN { ACCOUNT | DATABASE <db_name> | SCHEMA <schema_name> | APPLICATION <app_name> | APPLICATION PACKAGE <app_pkg_name> }
TO { ROLE | DATABASE ROLE } <grantee_name>
GRANT ALL INHERITED CALLER PRIVILEGES
ON ALL <object_type_plural>
IN { ACCOUNT | DATABASE <db_name> | SCHEMA <schema_name> | APPLICATION <app_name> | APPLICATION PACKAGE <app_pkg_name> }
TO { ROLE | DATABASE ROLE } <grantee_name>
パラメーター¶
object_privilege [ , object_privilege ... ]
実行可能対象を実行できるオブジェクト権限。特定のオブジェクト型の権限リストについては、 アクセス制御権限 をご参照ください。
複数のオブジェクト権限を指定するには、コンマ区切りのリストを使用します。
ON object_type object_name
指定されたオブジェクト(
object_name
)へのアクセス時に、指定されたobject_privilege
で実行可能対象を実行できるようにします。TABLE
やWAREHOUSE
のように、object_type
の単数形を使用します。ON ALL object_type_plural IN ACCOUNT
または .ON ALL object_type_pluarl IN DATABASE db_name
または .ON ALL object_type_plural IN SCHEMA schema_name
または .ON ALL object_type_plural IN APPLICATION app_name
または .ON ALL object_type_plural IN APPLICATION PACKAGE app_pkg_name
指定された型のオブジェクトにアクセスする際に、実行可能対象をオブジェクトレベルの権限で実行できるようにします。たとえば、
TABLES
やWAREHOUSES
のように、オブジェクト型の複数形を使います。GRANT ステートメントを使用すると、現在のアカウント内のすべてのオブジェクト、または指定したデータベース、スキーマ、アプリケーション、またはアプリケーションパッケージ内のオブジェクトのみへのアクセスを制御できます。
TO ROLE grantee_name
または .TO DATABASE ROLE grantee_name
呼び出し元許可でセキュリティ保護する実行可能対象の所有者。
データベースロールを指定した場合、権限はデータベースロールと同じデータベース内のオブジェクトに制限されます。
アクセス制御の要件¶
この操作の実行に使用される ロール には、少なくとも次の 権限 が必要です。
権限 |
オブジェクト |
メモ |
---|---|---|
MANAGE CALLER GRANTS |
アカウント |
アカウントレベルの MANAGE CALLER GRANTS 権限は、呼び出し元許可にのみ関係します。ロールに権限を付与することはできません。 |
任意の権限 |
すべての指定オブジェクト |
呼び出し元許可で指定されたオブジェクトに対して、少なくとも1つの権限が必要です。たとえば、あるテーブルに対して呼び出し元許可を付与するには、そのテーブルに対して少なくとも1つの権限を持っている必要があります。 |
指定された権限のセットを使用してカスタムロールを作成する手順については、 カスタムロールの作成 をご参照ください。
セキュリティ保護可能なオブジェクト に対して SQL アクションを実行するためのロールと権限付与に関する一般的な情報については、 アクセス制御の概要 をご参照ください。
例¶
v1
ビューにアクセスする owner_role
が所有する実行可能対象は、ビューの SELECT 権限で実行できます。
GRANT CALLER SELECT ON VIEW v1 TO owner_role;
db.sch
スキーマにある任意のテーブルにアクセスする owner_role
が所有する実行可能対象は、呼び出し元の SELECT および INSERT 権限で実行できます。
GRANT INHERITED CALLER SELECT, INSERT ON ALL TABLES IN SCHEMA db.sch TO ROLE owner_role;
現在のアカウントのスキーマにアクセスする owner_role
が所有する実行可能対象は、呼び出し元のスキーマ上のすべての権限で実行できます。
GRANT ALL INHERITED CALLER PRIVILEGES ON ALL SCHEMAS IN ACCOUNT TO ROLE owner_role;
db.sch1.t1
テーブルにアクセスする、 db.r
データベースロールが所有する実行可能対象は、テーブル上で SELECT 権限を使用して実行できます。
GRANT CALLER SELECT ON TABLE db.sch1.t1 TO DATABASE ROLE db.r;
my_db
データベースにアクセスする、 owner_role
が所有する実行可能対象は、データベース上で呼び出し元のすべての権限を使用して実行できます。
GRANT ALL CALLER PRIVILEGES ON DATABASE my_db TO ROLE owner_role;