GRANT <権限> ... TO USER¶
ユーザーに、セキュリティ保護可能なオブジェクトに対する1つ以上のアクセス権限を付与します。付与できる権限はオブジェクト固有です。
ロールとセキュリティ保護可能なオブジェクトの詳細情報については、 アクセス制御の概要 をご参照ください。
オブジェクト権限の詳細については、 アクセス制御権限 をご参照ください。
- こちらもご参照ください。
構文¶
GRANT { { globalPrivileges | ALL [ PRIVILEGES ] } ON ACCOUNT
| { accountObjectPrivileges | ALL [ PRIVILEGES ] } ON { USER | RESOURCE MONITOR | WAREHOUSE | COMPUTE POOL | DATABASE | INTEGRATION | CONNECTION | FAILOVER GROUP | REPLICATION GROUP | EXTERNAL VOLUME } <object_name>
| { schemaPrivileges | ALL [ PRIVILEGES ] } ON { SCHEMA <schema_name> | ALL SCHEMAS IN DATABASE <db_name> }
| { schemaObjectPrivileges | ALL [ PRIVILEGES ] } ON { <object_type> <object_name> | ALL <object_type_plural> IN { DATABASE <db_name> | SCHEMA <schema_name> } }
}
TO [ USER ] <user_name> [ WITH GRANT OPTION ]
条件:
globalPrivileges ::=
{
| ATTACH POLICY | AUDIT | BIND SERVICE ENDPOINT
| APPLY {
{ AGGREGATION | AUTHENTICATION | JOIN | MASKING | PACKAGES | PASSWORD
| PROJECTION | ROW ACCESS | SESSION } POLICY
| TAG }
| EXECUTE { ALERT | DATA METRIC FUNCTION | MANAGED ALERT | MANAGED TASK | TASK }
| IMPORT SHARE
| MANAGE { ACCOUNT SUPPORT CASES | EVENT SHARING | GRANTS | LISTING AUTO FULFILLMENT | ORGANIZATION SUPPORT CASES | USER SUPPORT CASES | WAREHOUSES }
| MODIFY { LOG LEVEL | TRACE LEVEL | SESSION LOG LEVEL | SESSION TRACE LEVEL }
| MONITOR { EXECUTION | SECURITY | USAGE }
| OVERRIDE SHARE RESTRICTIONS | PURCHASE DATA EXCHANGE LISTING | RESOLVE ALL
| READ SESSION
}
[ , ... ]
accountObjectPrivileges ::=
-- For COMPUTE POOL
{ MODIFY | MONITOR | OPERATE | USAGE } [ , ... ]
-- For CONNECTION
{ FAILOVER } [ , ... ]
-- For DATABASE
{ APPLYBUDGET
| IMPORTED PRIVILEGES | MODIFY | MONITOR | USAGE } [ , ... ]
-- For EXTERNAL VOLUME
{ USAGE } [ , ... ]
-- For FAILOVER GROUP
{ FAILOVER | MODIFY | MONITOR | REPLICATE } [ , ... ]
-- For INTEGRATION
{ USAGE | USE_ANY_ROLE } [ , ... ]
-- For REPLICATION GROUP
{ MODIFY | MONITOR | REPLICATE } [ , ... ]
-- For RESOURCE MONITOR
{ MODIFY | MONITOR } [ , ... ]
-- For USER
{ MONITOR } [ , ... ]
-- For WAREHOUSE
{ APPLYBUDGET | MODIFY | MONITOR | USAGE | OPERATE } [ , ... ]
schemaPrivileges ::=
ADD SEARCH OPTIMIZATION | APPLYBUDGET
| MODIFY | MONITOR | USAGE
[ , ... ]
schemaObjectPrivileges ::=
-- For ALERT
{ MONITOR | OPERATE } [ , ... ]
-- For DATA METRIC FUNCTION
USAGE [ , ... ]
-- For DYNAMIC TABLE
MONITOR, OPERATE, SELECT [ , ...]
-- For EVENT TABLE
{ APPLYBUDGET | DELETE | REFERENCES | SELECT | TRUNCATE } [ , ... ]
-- For FILE FORMAT, FUNCTION (UDF or external function), MODEL, PROCEDURE, SECRET, SEQUENCE, or SNAPSHOT
USAGE [ , ... ]
-- For GIT REPOSITORY
{ READ, WRITE } [ , ... ]
-- For HYBRID TABLE
{ APPLYBUDGET | DELETE | INSERT | REFERENCES | SELECT | TRUNCATE | UPDATE } [ , ... ]
-- For IMAGE REPOSITORY
{ READ, WRITE } [ , ... ]
-- For ICEBERG TABLE
{ APPLYBUDGET | DELETE | INSERT | REFERENCES | SELECT | TRUNCATE | UPDATE } [ , ... ]
-- For MATERIALIZED VIEW
{ APPLYBUDGET | REFERENCES | SELECT } [ , ... ]
-- For PIPE
{ APPLYBUDGET | MONITOR | OPERATE } [ , ... ]
-- For { AGGREGATION | AUTHENTICATION | MASKING | JOIN | PACKAGES | PASSWORD | PRIVACY | PROJECTION | ROW ACCESS | SESSION } POLICY or TAG
APPLY [ , ... ]
-- For SECRET
{ READ | USAGE } [ , ... ]
-- For SEMANTIC VIEW
REFERENCES [ , ... ]
-- For SERVICE
{ MONITOR | OPERATE } [ , ... ]
-- For external STAGE
USAGE [ , ... ]
-- For internal STAGE
READ [ , WRITE ] [ , ... ]
-- For STREAM
SELECT [ , ... ]
-- For STREAMLIT
USAGE [ , ... ]
-- For TABLE
{ APPLYBUDGET | DELETE | EVOLVE SCHEMA | INSERT | REFERENCES | SELECT | TRUNCATE | UPDATE } [ , ... ]
-- For TAG
READ
-- For TASK
{ APPLYBUDGET | MONITOR | OPERATE } [ , ... ]
-- For VIEW
{ REFERENCES | SELECT } [ , ... ]
各オブジェクトタイプでサポートされている権限の詳細については、 アクセス制御権限 をご参照ください。
必須パラメーター¶
object_name
権限が付与されるオブジェクトの識別子を指定します。
object_type
スキーマレベルオブジェクトの型を指定します。
AGGREGATION POLICY
ALERT
AUTHENTICATION POLICY
CORTEX SEARCH SERVICE
DATA METRIC FUNCTION
DATASET
DYNAMIC TABLE
EVENT TABLE
EXTERNAL TABLE
FILE FORMAT
FUNCTION
GIT REPOSITORY
IMAGE REPOSITORY
ICEBERG TABLE
JOIN POLICY
MASKING POLICY
MATERIALIZED VIEW
MODEL
MODEL MONITOR
NETWORK RULE
NOTEBOOK
PACKAGES POLICY
PASSWORD POLICY
PIPE
PRIVACY POLICY
PROCEDURE
PROJECTION POLICY
ROW ACCESS POLICY
SECRET
SEMANTIC VIEW
SERVICE
SESSION POLICY
SEQUENCE
SNAPSHOT
STAGE
STREAM
STREAMLIT
TABLE
TAG
TASK
VIEW
object_type_plural
object_type
の複数形(例:TABLES
、VIEWS
)。パイプへの一括付与は許可されていないことに注意してください。
user_name
受信ユーザー(権限を付与されるユーザー)の識別子を指定します。
オプションのパラメーター¶
WITH GRANT OPTION
指定された場合、受信ユーザーは他のロールまたはユーザーに権限を付与することができます。
デフォルト: 値なし。これは受信ロールが他のロールやユーザーに権限を付与できないことを意味します。
注釈
WITH GRANT OPTION パラメーターは、 IMPORTED PRIVILEGES 権限をサポートしていません。詳細については、 インポートされたデータベースへの権限の付与 をご参照ください。
使用上の注意¶
ユーザーに直接割り当てられた権限は、そのユーザーがすべてのセカンダリロールを有効にしている場合にのみ有効です。
ユーザーに直接権限を付与すると、アカウント内で付与が急増する可能性があります。個人間の共有シナリオ以外では、Snowflakeでユーザーが必要とするアクセスを管理するために、ロールに権限を付与することをお勧めします。
将来の助成金 は利用可能ではありません。
CREATE および OWNERSHIP 権限をユーザーに付与することはできません。
どのクラスに対しても、権限を直接付与したり、取り消したりすることはできません。
単一の GRANT ステートメントで、同じオブジェクトタイプに対して複数の権限を指定できます(各権限はコンマで区切られます)。あるいは、特別な
ALL [ PRIVILEGES ]
キーワードを使用して、指定されたオブジェクトタイプに該当するすべての権限を付与することもできます。注釈
GRANT コマンドを実行するユーザーによって保持され、付与可能な権限のみが、実際にターゲットロールに付与されます。権限が付与されていない場合は警告メッセージが返されます。
タグに
ALL [ PRIVILEGES ]
を指定することはできません。スキーマ に
ALL [ PRIVILEGES ]
を付与しようとしても、ALL [ PRIVILEGES ]
は クラス に権限を付与しません。
スキーマおよびスキーマ内のオブジェクトについては、コンテナー(データベースまたはスキーマ)内の同じタイプのすべてのオブジェクトに権限を付与するために、
ALL object_type_plural IN container
オプションが提供されます。このオプションは利便性を提供します。内部的には、このコマンドは各オブジェクトの一連の個別の GRANT コマンドに展開されます。このオプションは、コンテナー内に現在存在するオブジェクトにのみ影響します。注釈
権限の一括付与は、Snowflakeモデルでは推奨されません。代わりに、Snowflakeでは共有ロールを作成し、そのロールを使用して、ロールを付与されたすべてのユーザーが自動的にアクセスできるオブジェクトを作成することを推奨しています。
ALL TAGS または ALL MASKING POLICIES は指定できません。
ステージの場合:
USAGE 外部ステージにのみ適用されます。
READ | WRITE は内部ステージにのみ適用されます。さらに、内部ステージで WRITE 権限を付与するには、まずステージで READ 権限を付与する必要があります。
外部ステージと内部ステージの詳細情報については、 CREATE STAGE をご参照ください。
個々の UDF やストアドプロシージャに権限を付与する場合、引数のデータ型があれば、
udf_or_stored_procedure_name ( [ arg_data_type [ , ... ] ] )
のような構文で指定する必要があります。Snowflakeでは、スキーマ内で同じ名前を持つ UDFs またはストアドプロシージャを解決するために引数データ型を使用します。詳細については、 プロシージャおよび関数のオーバーロード をご参照ください。動的テーブルの場合、受信ユーザーは、動的テーブルを含むデータベースとスキーマ、およびテーブルの更新に使用されるウェアハウスに対して USAGE 権限を付与されている必要があります。詳細については、 動的テーブルのアクセス制御 をご参照ください。
個々の UDF に権限を付与する場合、 UDF に引数があれば、
udf_name ( [ arg_data_type , ... ] )
のような構文を使用して、引数のデータ型を指定する必要があります。これは、Snowflakeは引数データ型を使用して、スキーマ内で同じ名前を持つ UDFs を解決するため必要です。詳細については、 ユーザー定義関数の概要 をご参照ください。個々のストアドプロシージャに権限を付与する場合、プロシージャに引数があれば、
procedure_name ( [ arg_data_type , ... ] )
のような構文を使用して、引数のデータ型を指定する必要があります。Snowflakeでは、引数データ型を使用してスキーマ内で同じ名前を持つストアドプロシージャを解決するためにこれが必要です。詳細については、 管理アクセススキーマ をご参照ください。
アクセス制御の要件¶
- 個々のオブジェクトに対する権限の付与:
一般に、以下の権限のいずれかを持つロールやユーザーは、オブジェクトに対する権限を他のユーザーに付与することができます。
グローバル
MANAGE GRANTS
権限。MANAGE GRANTS 権限があるのは SECURITYADMIN および ACCOUNTADMIN システムロールのみですが、この権限をカスタムロールまたはユーザーに付与することもできます。
OWNERSHIP 権限。
オブジェクトの OWNERSHIP 権限を持つロール。
USAGE 権限。スキーマオブジェクト(テーブルやビューなど)に権限を付与する場合、ロールまたはユーザーは親データベースとスキーマに対して USAGE の権限も持っている必要があります。
GRANT privileges ... TO USER WITH GRANT OPTION
コマンドを使用してユーザーに権限が付与された場合、そのユーザーは同じ権限を他のユーザーまたはロールに再付与することができます。管理アクセススキーマ (
CREATE SCHEMA ... WITH MANAGED ACCESS
)構文を使用して作成されたスキーマでは、オブジェクト所有者は付与を決定する能力を失います。スキーマ所有者(スキーマの OWNERSHIP 権限を持つロール)またはグローバル MANAGE GRANTS 権限を持つロールのみが、そのスキーマ内のオブジェクトに権限を付与することができます。注釈
グローバル権限(MANAGE GRANTS)を持つロールは、現在の(権限付与元の)ロールまたはユーザーに追加権限を付与することができます。
例¶
Streamlitアプリケーションの USAGE 権限を特定のユーザーに付与するには、 joe
:
GRANT USAGE ON STREAMLIT streamlit_db.streamlit_schema.streamlit_app TO USER joe;
プロシージャの USAGE 権限を特定のユーザーに付与するには、 user1
:
GRANT USAGE ON PROCEDURE mydb.myschema.myprocedure(number) TO USER user1;