GRANT <権限> ... TO APPLICATION ROLE¶
セキュリティ保護可能なスキーマレベルオブジェクトの1つ以上のアクセス権限をアプリケーションロールに付与します。付与できる権限はオブジェクト固有です。
ロールとセキュリティ保護可能なオブジェクトの詳細については、 アクセス制御の概要 をご参照ください。
構文¶
GRANT {
{ schemaPrivileges | ALL [ PRIVILEGES ] } ON SCHEMA <schema_name>
| { schemaObjectPrivileges | ALL [ PRIVILEGES ] } ON { <object_type> <object_name> | ALL <object_type_plural> IN { DATABASE <db_name> | SCHEMA <schema_name> }
| { schemaObjectPrivileges | ALL [ PRIVILEGES ] } ON FUTURE <object_type_plural> IN SCHEMA <schema_name>
}
TO APPLICATION ROLE <name> [ WITH GRANT OPTION ]
条件:
schemaPrivileges ::=
ADD SEARCH OPTIMIZATION
| CREATE {
ALERT | EXTERNAL TABLE | FILE FORMAT | FUNCTION
| MATERIALIZED VIEW | PIPE | PROCEDURE
| { AGGREGATION | MASKING | PASSWORD | PROJECTION | ROW ACCESS | SESSION } POLICY
| SECRET | SEQUENCE | STAGE | STREAM
| TAG | TABLE | TASK | VIEW
}
| MODIFY | MONITOR | USAGE
[ , ... ]
schemaObjectPrivileges ::=
-- For ALERT
{ MONITOR | OPERATE } [ , ... ]
-- For DYNAMIC TABLE
OPERATE, SELECT [ , ...]
-- For EVENT TABLE
{ INSERT | SELECT } [ , ... ]
-- For FILE FORMAT, FUNCTION (UDF or external function), PROCEDURE, SECRET, or SEQUENCE
USAGE [ , ... ]
-- For PIPE
{ APPLYBUDGET | MONITOR | OPERATE } [ , ... ]
-- For { AGGREGATION | MASKING | PACKAGES | PASSWORD | PROJECTION | ROW ACCESS | SESSION } POLICY or TAG
APPLY [ , ... ]
-- For SECRET
READ, USAGE [ , ... ]
-- For external STAGE
USAGE [ , ... ]
-- For internal STAGE
READ [ , WRITE ] [ , ... ]
-- For STREAM
SELECT [ , ... ]
-- For TABLE
{ APPLYBUDGET | DELETE | EVOLVE SCHEMA | INSERT | REFERENCES | SELECT | TRUNCATE | UPDATE } [ , ... ]
-- For TAG
READ
-- For TASK
{ APPLYBUDGET | MONITOR | OPERATE } [ , ... ]
-- For VIEW
{ REFERENCES | SELECT } [ , ... ]
-- For MATERIALIZED VIEW
{ APPLYBUDGET | REFERENCES | SELECT } [ , ... ]
各オブジェクトタイプでサポートされている権限の詳細については、 アクセス制御権限 をご参照ください。
必須パラメーター¶
object_name
権限が付与されるオブジェクトの識別子を指定します。
object_type
スキーマレベルオブジェクトの型を指定します。
ALERT
DYNAMIC TABLE
EVENT TABLE
EXTERNAL TABLE
FILE FORMAT
FUNCTION
MASKING POLICY
MATERIALIZED VIEW
NETWORK RULE
PACKAGES POLICY
PASSWORD POLICY
PIPE
PROCEDURE
ROW ACCESS POLICY
SECRET
SESSION POLICY
SEQUENCE
STAGE
STREAM
TABLE
TAG
TASK
VIEW
object_type_plural
object_type
の複数形(例:TABLES
、VIEWS
)。パイプへの一括付与は許可されていないことに注意してください。
name
受信者アプリケーションロール(つまり、権限が付与されるロール)の識別子を指定します。
オプションのパラメーター¶
ON FUTURE
既存のオブジェクトではなく、指定された型の新しい(つまり、将来の)スキーマオブジェクトに対する権限を付与することを指定します。ON FUTURE キーワードと REVOKE <権限> FROM APPLICATION ROLE を使用すると、将来の付与を随時取り消すことができます。既存のオブジェクトに付与された権限は保持されます。将来の付与の詳細については、 このトピック内の スキーマオブジェクトに対する将来の付与 をご参照ください。
WITH GRANT OPTION
指定した場合、受信者アプリケーションロールは、他のアプリケーションロールに権限を付与できます。
デフォルト: 値なし。つまり、受信者アプリケーションロールは、他のアプリケーションロールに権限を付与できないことを意味します。
注釈
WITH GRANT OPTION 句は IMPORTED PRIVILEGES 権限をサポートしていません。詳細については、 共有データベースでの権限の付与 をご参照ください。
使用上の注意¶
アプリケーション内のオブジェクトに対する権限の付与と取り消しには、アプリケーションロールを使用する必要があります。
このコマンドは、アプリケーションのプロバイダーかコンシューマーかによって制限が異なります。
アプリケーションコンシューマー は、アプリケーションロールに関して以下を実行できません。
アプリケーションロールに関してオブジェクト権限を付与または取り消します。
データベースまたは共有にアプリケーションロールを付与したり、データベースまたは共有からアプリケーションロールを取り消したりします。
同じアプリケーションまたは別のアプリケーションにアプリケーションロールを付与したり、同じアプリケーションまたは別のアプリケーションからアプリケーションロールを取り消したりします。
これらの項目は、アプリケーションロールに関して アプリケーションプロバイダー に適用されます。
オブジェクトまたはスキーマ内にある指定された型のすべてのオブジェクトに対する OWNERSHIP 権限をロールに付与し、オブジェクト所有権をあるロールから別のロールに譲渡するには、 GRANT OWNERSHIP コマンドを使用します。
単一の GRANT ステートメントで、同じオブジェクト型に対して複数の権限を指定できます。各権限はコンマで区切られます。
ただし、 GRANT コマンドを実行するアプリケーションロールによって保持および付与できる権限のみが、実際にターゲットアプリケーションロールに付与されることに注意してください。付与できなかった権限については、警告メッセージが返されます。
特定のアプリケーションロールに付与された権限は、アプリケーションロールが付与された他のアプリケーションロール、およびロール階層内にあるより高いレベルの他のアプリケーションロールによって自動的に継承されます。
詳細については、 アクセス制御の概要 をご参照ください。
管理アクセススキーマの場合:
オブジェクトの OWNERSHIP 権限は、スキーマ所有者の従属ロールにのみ転送できます。
ステージの場合:
USAGE 外部ステージにのみ適用されます。
READ
WRITE は内部ステージにのみ適用されます。さらに、内部ステージで WRITE 権限を付与するには、まずステージで READ 権限を付与する必要があります。
外部ステージおよび内部ステージの詳細については、 CREATE STAGE および アクセス制御要件 (このトピック内)をご参照ください。
個々の UDF またはストアドプロシージャに権限を付与する場合は、以下に示す構文を使用して、引数のデータ型を指定する必要があります(存在する場合)。
<udf_or_stored_procedure_name> ( [ <arg_data_type> [ , ... ] ] )
Snowflakeでは、スキーマ内で同じ名前を持つ UDFs とストアドプロシージャを解決するために引数データ型を使用します。詳細については、 プロシージャおよび関数のオーバーロード をご参照ください。
アクセス制御の要件¶
このコマンドは、アプリケーション内からのみ実行できます。
権限の付与や取り消しは、アプリケーションが所有するオブジェクトに対してのみ可能です。これらのオブジェクトを決定するには、 SHOW OBJECTS コマンドを使用します。
SHOW OBJECTS OWNED BY APPLICATION myapp;
管理アクセススキーマの場合、
管理アクセススキーマ(つまり、 CREATE SCHEMA ... WITH MANAGED ACCESS 構文を使用して作成されたスキーマ)では、オブジェクトの所有者は付与決定の権限を消失します。
以下のロールは、管理アクセススキーマ内のオブジェクトに対する権限を付与できます。
このロールはスキーマ所有者(つまり、スキーマの OWNERSHIP 権限を持つロール)であるため、アプリケーションロールです。
アプリケーションロールを継承するロール。
MANAGE GRANTS グローバル権限があるロールのみが、スキーマ内のオブジェクトに対する権限を付与できます。
MANAGE GRANTS グローバル権限を保持するロールは、現在の(付与者)ロールに追加の権限を付与できます。
管理アクセススキーマにおける将来の付与のアクセス制御要件については、 スキーマオブジェクトに対する将来の付与 (このトピック内)をご参照ください。
スキーマオブジェクトに対する将来の付与¶
これらのセクションにある注意事項は、スキーマ内のオブジェクトに対する将来の付与を割り当てるとき(つまり、 ON FUTURE キーワードを使用する場合)に該当します。
考慮事項¶
スキーマ用に将来の付与が 同じオブジェクト型で 定義される場合、スキーマレベルの付与はデータベースレベルの付与よりも優先され、データベースレベルの付与は無視されます。この動作は、1つまたは別のアプリケーションロールに付与された将来のオブジェクトに対する権限に適用されます。
制限と制約¶
セキュリティ保護可能なオブジェクトタイプごとに、可能な OWNERSHIP 権限の将来の付与は1件のみです。
次の型のオブジェクトでは、将来の付与を定義できません。
コンピューティングプール
外部関数
イメージリポジトリ
ポリシーオブジェクト:
集計ポリシー
マスキングポリシー
パッケージポリシー
投影ポリシー
行アクセスポリシー
セッションポリシー
タグ
データベース内の指定されたタイプのオブジェクトに対する OWNERSHIP 権限の今後の付与は、管理アクセススキーマ内の新しいオブジェクトには適用 されません。
次の制限は、管理アクセススキーマ内のオブジェクトに対する今後の付与に適用されます。
オブジェクトに対する OWNERSHIP 権限の将来の付与は、スキーマ所有者の従属ロール(つまり、スキーマに対する OWNERSHIP 権限を持つロール)にのみ適用できます。
管理アクセススキーマの所有権を別のロールに譲渡する前に、ON FUTUREキーワードを持つ REVOKE <権限> を使用して、OWNERSHIP権限の将来のすべての付与を取り消す必要があります。
テーブルの名前を変更または交換する場合、将来の付与は適用されません。
将来の付与は、次の制限をともなう名前付きステージでサポートされます。
READ 権限なしでは WRITE 権限を指定できません。
WRITE 権限が存在する場合、READ 権限を取り消すことはできません。
内部ステージでは、READ または WRITE 権限を持つ将来の付与のみが具体化されます。
外部ステージの場合、 USAGE 権限を持つ将来の付与のみが具体化されます。
管理アクセススキーマでは、アプリケーションロールと MANAGE GRANTS グローバル権限を持つロールが、管理アクセススキーマ内の将来のオブジェクトに対する権限を付与できます。
標準スキーマでは、スキーマにある将来のオブジェクトの権限を付与するには、MANAGE GRANTS グローバル権限が必要です。
例¶
アプリケーションロールにビューに対する SELECT 権限を付与します。
GRANT SELECT ON VIEW data.views.credit_usage
TO APPLICATION ROLE app_snowflake_credits;