GRANT <権限> ... TO USER

ユーザーに、セキュリティ保護可能なオブジェクトに対する1つ以上のアクセス権限を付与します。付与できる権限はオブジェクト固有です。

ロールとセキュリティ保護可能なオブジェクトの詳細情報については、 アクセス制御の概要 をご参照ください。

オブジェクト権限の詳細については、 アクセス制御権限 をご参照ください。

こちらもご参照ください。

GRANT <権限> ... TO ROLEREVOKE <権限> ... FROM USER

構文

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 ]
Copy

条件:

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
  }
  [ , ... ]
Copy
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 } [ , ... ]
Copy
schemaPrivileges ::=

    ADD SEARCH OPTIMIZATION | APPLYBUDGET
   | MODIFY | MONITOR | USAGE
   [ , ... ]
Copy
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 } [ , ... ]
Copy

各オブジェクトタイプでサポートされている権限の詳細については、 アクセス制御権限 をご参照ください。

必須パラメーター

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 の複数形(例: TABLESVIEWS)。

パイプへの一括付与は許可されていないことに注意してください。

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;
Copy

プロシージャの USAGE 権限を特定のユーザーに付与するには、 user1:

GRANT USAGE ON PROCEDURE mydb.myschema.myprocedure(number) TO USER user1;
Copy