GRANT <権限> ... TO APPLICATION ROLE¶
セキュリティ保護可能なスキーマレベルオブジェクトの1つ以上のアクセス権限をアプリケーションロールに付与します。付与できる権限はオブジェクト固有です。
ロールとセキュリティ保護可能なオブジェクトの詳細については、 アクセス制御の概要 をご参照ください。
構文¶
条件:
各オブジェクトタイプでサポートされている権限の詳細については、 アクセス制御権限 をご参照ください。
必須パラメーター¶
object_name権限が付与されるオブジェクトの識別子を指定します。
object_typeスキーマレベルオブジェクトの型を指定します。
ALERTDYNAMIC TABLEEVENT TABLEEXTERNAL TABLEFILE FORMATFUNCTIONMASKING POLICYMATERIALIZED VIEWNETWORK RULEPACKAGES POLICYPASSWORD POLICYPIPEPROCEDUREROW ACCESS POLICYSECRETSEMANTIC VIEWSESSION POLICYSEQUENCESTAGESTREAMTABLETAGTASKTYPEVIEW
object_type_pluralobject_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 またはストアドプロシージャに権限を付与する場合は、以下に示す構文を使用して、引数のデータ型を指定する必要があります(存在する場合)。
Snowflakeでは、スキーマ内で同じ名前を持つ UDFs とストアドプロシージャを解決するために引数データ型を使用します。詳細については、 プロシージャおよび関数のオーバーロード をご参照ください。
アクセス制御の要件¶
このコマンドは、アプリケーション内からのみ実行できます。
権限の付与や取り消しは、アプリケーションが所有するオブジェクトに対してのみ可能です。これらのオブジェクトを決定するには、 SHOW OBJECTS コマンドを使用します。
管理アクセススキーマの場合、
管理アクセススキーマ(つまり、 CREATE SCHEMA ... WITH MANAGED ACCESS 構文を使用して作成されたスキーマ)では、オブジェクトの所有者は付与決定の権限を消失します。
以下のロールは、管理アクセススキーマ内のオブジェクトに対する権限を付与できます。
このロールはスキーマ所有者(つまり、スキーマの OWNERSHIP 権限を持つロール)であるため、アプリケーションロールです。
アプリケーションロールを継承するロール。
MANAGE GRANTS グローバル権限があるロールのみが、スキーマ内のオブジェクトに対する権限を付与できます。
MANAGE GRANTS グローバル権限を保持するロールは、現在の(付与者)ロールに追加の権限を付与できます。
管理アクセススキーマにおける将来の付与のアクセス制御要件については、 スキーマオブジェクトに対する将来の付与 (このトピック内)をご参照ください。
スキーマオブジェクトに対する将来の付与¶
これらのセクションにある注意事項は、スキーマ内のオブジェクトに対する将来の付与を割り当てるとき(つまり、 ON FUTURE キーワードを使用する場合)に該当します。
考慮事項¶
スキーマ用に将来の付与が 同じオブジェクト型で 定義される場合、スキーマレベルの付与はデータベースレベルの付与よりも優先され、データベースレベルの付与は無視されます。この動作は、1つまたは別のアプリケーションロールに付与された将来のオブジェクトに対する権限に適用されます。
制限と制約¶
セキュリティ保護可能なオブジェクトタイプごとに、可能な OWNERSHIP 権限の将来の付与は1件のみです。
次の型のオブジェクトでは、将来の付与を定義できません。
コンピューティングプール
外部関数
イメージリポジトリ
組織プロファイル
ポリシーオブジェクト:
集計ポリシー
結合ポリシー
マスキングポリシー
パッケージポリシー
投影ポリシー
行アクセスポリシー
セッションポリシー
ストレージライフサイクルポリシー
スナップショット
タグ
データベース内の指定されたタイプのオブジェクトに対する OWNERSHIP 権限の今後の付与は、管理アクセススキーマ内の新しいオブジェクトには適用 されません。
次の制限は、管理アクセススキーマ内のオブジェクトに対する今後の付与に適用されます。
オブジェクトに対する OWNERSHIP 権限の将来の付与は、スキーマ所有者の従属ロール(つまり、スキーマに対する OWNERSHIP 権限を持つロール)にのみ適用できます。
管理アクセススキーマの所有権を別のロールに譲渡する前に、ON FUTUREキーワードを持つ REVOKE <権限> ... FROM ROLE を使用して、OWNERSHIP権限の将来のすべての付与を取り消す必要があります。
テーブルの名前を変更または交換する場合、将来の付与は適用されません。
将来の付与は、次の制限をともなう名前付きステージでサポートされます。
READ 権限なしでは WRITE 権限を指定できません。
WRITE 権限が存在する場合、READ 権限を取り消すことはできません。
内部ステージでは、READ または WRITE 権限を持つ将来の付与のみが具体化されます。
外部ステージの場合、 USAGE 権限を持つ将来の付与のみが具体化されます。
管理アクセススキーマでは、アプリケーションロールと MANAGE GRANTS グローバル権限を持つロールが、管理アクセススキーマ内の将来のオブジェクトに対する権限を付与できます。
標準スキーマでは、スキーマにある将来のオブジェクトの権限を付与するには、MANAGE GRANTS グローバル権限が必要です。
例¶
アプリケーションロールにビューに対する SELECT 権限を付与します。