アプリケーションに必要な権限の付与¶
このトピックでは、コンシューマーがアプリケーションからリクエストされた権限を付与し、アプリケーションによりタスクを実行したり、アプリケーション外のオブジェクトにアクセスしたりできるようにする方法について説明します。
アプリケーションによりリクエストされる権限と参照について¶
単純なアプリケーションでは、アプリケーションのインストール時にセットアップスクリプトが実行されると、アプリケーションに必要なすべてのオブジェクトがアプリケーション内部に作成されます。アプリケーションに必要なオブジェクトはすべて、インストールされたアプリケーション内で作成され、アクセスされるため、アプリケーションに権限を付与する必要はありません。
Native Apps Frameworkを使用して作成されたアプリケーションでは、インストールされたアプリケーションのコンテキスト外でオブジェクトを作成したり、アカウント内の既存のオブジェクトにアクセスしたりすることが必要になる場合があります。
これらのアプリケーションは、アプリケーションコンテキストの外部でのオブジェクト作成やアクセスのためにオブジェクトへのアクセスをリクエストします。アプリケーションにそれを許可する場合は、アプリケーションのリクエストを承認できます。
アプリケーションがリクエストできるアクセスには2種類あります。
アプリケーションにタスクを実行させる権限。アプリケーションは、以下のグローバル権限をリクエストできます。
EXECUTE TASK
EXECUTE MANAGED TASK
CREATE WAREHOUSE
MANAGE WAREHOUSES
CREATE DATABASE
アプリケーションによっては、 SNOWFLAKE データベースに対する IMPORTED PRIVILEGES 権限をリクエストすることもあります。詳細については、 SNOWFLAKE データベースに対する IMPORTED PRIVILEGES 権限の付与 をご参照ください。
コンシューマーカウントにすでに存在し、アプリケーションの外部にあるオブジェクトへのアクセスをアプリケーションに許可する参照。プロバイダーは、アプリケーションに必要な参照を定義します。アプリケーションをインストールした後、オブジェクトを関連付け、対応する権限をアプリケーションに付与します。
アプリケーションは、以下の型のオブジェクトとそれに対応する権限へのアクセスをリクエストできます。
オブジェクト型
許可される権限
TABLE
SELECT, INSERT, UPDATE, DELETE, TRUNCATE, REFERENCES
VIEW
SELECT, REFERENCES
EXTERNAL TABLE
SELECT, REFERENCES
FUNCTION
USAGE
PROCEDURE
USAGE
WAREHOUSE
MODIFY, MONITOR, USAGE, OPERATE
API INTEGRATION
USAGE
これらのリクエストは、 Snowsight を使用するか、次のセクションで説明する SQL コマンドを実行すると承認できます。
注釈
リクエストされた権限を付与しなかったり、アプリケーションへの参照を関連付けなかったりすると、アプリケーションは動作しない可能性があります。
Snowsightを使用したアクセスリクエストの管理¶
一部のアプリケーションでは、 Snowsight を使用して、アカウントレベルの権限の表示と付与、特定のアプリケーションオブジェクトへのアクセス管理を行うことができます。
グローバル権限の付与¶
アプリケーションのインストール後に権限を付与したり参照を作成したりするには、次を実行します。
Snowsight にサインインします。
左側のナビゲーションバーで、 Apps を選択します
アプリケーションを選択します。
ツールバーの Security アイコンを選択します。
アプリケーションによってリクエストされたアカウントレベルの権限は、 Account level privileges に表示されます。
Account-level privileges セクションで Review を選択し、付与する権限ごとにスライダーを切り替えます。
Save を選択します。
特定オブジェクトへのアクセスを管理する¶
アプリケーションプロバイダーがユーザーインターフェイスを実装している場合は、 Snowsight を使用して、アカウント内の特定のオブジェクトと必要な権限をアプリケーションに関連付けることができます。
特定のオブジェクトに権限を付与するには、
Snowsight にサインインします。
左側のナビゲーションバーで、 Apps を選択します
アプリケーションを選択します。
ツールバーの Security アイコンを選択します。
Privileges to objects セクションで、承認するオブジェクトの横にある Add を選択します。
Select Data を選択し、アクセス権を提供するデータ製品を選択します。
Done を選択します。
オブジェクトへの権限およびアクセス権の取り消し¶
アプリケーションのオブジェクトへの権限やアクセス権を取り消すには、次を実行します。
Snowsight にサインインします。
左側のナビゲーションバーで、 Apps を選択します
アプリケーションを選択します。
ツールバーの Security アイコンを選択します。
アカウントレベルの権限を取り消すには、 Edit ボタンを選択し、取り消す権限のスライダーを切り替えます。
特定のオブジェクトへのアクセス権を取り消すには、 Delete ボタンを選択し、 Revoke Privilege を選択します。
注釈
権限を取り消したり、オブジェクトへのアクセス権を削除したりすると、アプリケーションが不安定になったり、動かなくなったりすることがあります。
SQL コマンドを使用したアクセスリクエストの管理¶
アプリケーション開発者が権限付与のためのインターフェイスを実装していない場合は、 SQL コマンドを使用して、アプリケーションのアクセスリクエストを管理する必要があります。
アプリケーションによりリクエストされた権限の表示¶
プロバイダーがアプリケーションに必要な権限を指定すると、インストールされたアプリケーションの一部として権限リクエストが含まれます。これらの権限は、アプリケーションのインストール後に表示できます。
アプリケーションに必要な権限を表示するには、次の例に示すように SHOW PRIVILEGES コマンドを実行します。
SHOW PRIVILEGES IN APPLICATION hello_snowflake_app;
アプリケーションに対する権限の付与¶
アプリケーションに必要な権限を決定したら、アプリケーションを動作させるためにその権限を付与する必要があります。
たとえば、サンプルアプリケーションに EXECUTE TASK 権限を付与するには、次の例に示すように GRANT PRIVILEGE コマンドを実行します。
GRANT EXECUTE TASK ON APPLICATION hello_snowflake_app;
アプリケーションへの MANAGE WAREHOUSES 権限の付与¶
MANAGE WAREHOUSES 権限 により、アプリケーションはコンシューマーカウント内でウェアハウスを作成、変更、使用することができます。アプリケーションに MANAGE WAREHOUSES 権限を付与するには、次の例に示すように GRANT を使用します。
GRANT MANAGE WAREHOUSES ON ACCOUNT TO APPLICATION hello_snowflake_app;
SNOWFLAKE データベースに対する IMPORTED PRIVILEGES 権限の付与¶
アプリケーションによっては、自分のアカウントの SNOWFLAKE データベースに対する IMPORTED PRIVILEGES 権限を付与するようリクエストする場合があります。この権限は、 SQL コマンドを使用してのみ付与することができます。 Snowsight を使用して付与することはできません。アプリケーションがこの権限を必要とする場合、プロバイダーはアプリケーションのReadmeファイルにその旨を記述する必要があります。
SNOWFLAKE データベースに対する IMPORT 権限を付与するには、以下のコマンドを実行します。
GRANT IMPORTED PRIVILEGES ON DATABASE SNOWFLAKE TO APPLICATION hello_snowflake_app;
注釈
IMPORTED PRIVILEGES を付与すると、アプリケーションはアカウントに関連する使用状況とコストに関する情報にアクセスできるようになります。この権限を与える前に、アプリケーションとこの情報を共有するかどうかを確認してください。
アプリケーションで定義された参照の表示¶
プロバイダーがアプリケーションに必要なオブジェクトへの参照を定義すると、その参照はインストールされたアプリケーションの一部として含まれます。アプリケーションをインストールすると、参照を表示できます。
アプリケーション用に定義された参照を表示するには、次の例に示すように SHOW REFERENCES コマンドを実行します。
SHOW REFERENCES IN APPLICATION hello_snowflake_app;
参照識別子の取得¶
アプリケーションからリクエストされた参照を確認した後、 SYSTEM$REFERENCE システム関数を実行して参照の識別子を取得し、戻り値をストアドプロシージャに渡して、プロバイダーがアプリケーションに含める参照を処理できます。
参照識別子を取得するには、次の例に示すように SYSTEM$REFERENCE システム関数を実行します。
SYSTEM$REFERENCE('table', 'db1.schema1.tab1', 'persistent', 'select', 'insert');
このコマンドは、参照をアプリケーションに関連付けるために使用する必要のある、参照の識別子を返します。
アプリケーションへの参照の関連付け¶
アプリケーションへの参照を関連付けるには、 SYSTEM$REFERENCE
を呼び出して返された識別子をコールバックストアドプロシージャに渡す必要があります。コールバックプロシージャは、識別子で指定されたアカウントのオブジェクトをアプリケーションに関連付けるように処理するストアドプロシージャです。アプリケーションには、リクエストされた参照ごとにコールバックストアドプロシージャを含める必要があります。
注釈
プロバイダーは、アプリケーションが必要とする参照の関連付けを処理するための、さまざまな関数やストアドプロシージャを含めることができます。これらはアプリケーションのReadmeファイルで指定する必要があります。
コールバックプロシージャを使用するには、以下のコマンドを実行します。
CALL app.config.register_callback('enrichment_table',
SYSTEM$REFERENCE('table', 'db1.schema1.tab1', 'persistent', ‘select’, ‘insert’),
'SET', null);
この例では、 SYSTEM$REFERENCE
システム関数は参照の識別子を返し、その値を register_callback
関数に渡します。