GRANT <権限> ... TO APPLICATION ROLE

セキュリティ保護可能なスキーマレベルオブジェクトの1つ以上のアクセス権限をアプリケーションロールに付与します。付与できる権限はオブジェクト固有です。

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

バリエーション:

GRANT OWNERSHIPREVOKE <権限> FROM APPLICATION ROLE

構文

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

条件:

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

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

必須パラメーター

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

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

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> [ , ... ] ] )
    
    Copy

    Snowflakeでは、スキーマ内で同じ名前を持つ UDFs とストアドプロシージャを解決するために引数データ型を使用します。詳細については、 プロシージャおよび関数のオーバーロード をご参照ください。

アクセス制御の要件

  • このコマンドは、アプリケーション内からのみ実行できます。

  • 権限の付与や取り消しは、アプリケーションが所有するオブジェクトに対してのみ可能です。これらのオブジェクトを決定するには、 SHOW OBJECTS コマンドを使用します。

    SHOW OBJECTS OWNED BY APPLICATION myapp;
    
    Copy
  • 管理アクセススキーマの場合、

    • 管理アクセススキーマ(つまり、 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;
Copy