コンシューマーアカウントへのアクセスをリクエストする¶
このトピックでは、コンシューマーが Snowflake Native App にアカウントでのオブジェクトの作成とアクセスを許可する方法について説明します。これには、アプリがリクエストする権限を付与したり、参照を使用して既存のオブジェクトへのアクセスを可能にしたりすることが含まれます。また、アプリがプロバイダーがアプリ内で共有する外部テーブルや Apache Iceberg™ テーブルを使用できるようにする方法についても説明します。
アプリにリクエストされる権限と参照について¶
単純な Snowflake Native App では、インストール中にセットアップスクリプトが実行されると、アプリが必要とするオブジェクトはすべてアプリケーションオブジェクト内で作成されます。アプリに必要なオブジェクトはすべて、インストールされたアプリ内で作成され、アクセスされます。コンシューマーは自分のアカウントで何もする必要はありません。
ただし、アプリによっては、コンシューマーが自分のアカウントで以下のようなアクションの実行を求める場合があります。
データベースまたはウェアハウスを作成する。
タスクを実行する。
既存のオブジェクト(テーブルなど)にアクセスする。
Snowflake Native App がリクエストできるアクセス権には2種類あります。
アプリがいくつかのアカウントレベルの操作を実行できるようにする権限。アプリは、以下のグローバル権限をリクエストできます。
EXECUTE TASK
EXECUTE MANAGED TASK
CREATE WAREHOUSE
MANAGE WAREHOUSES
CREATE DATABASE
CREATE COMPUTE POOL
BIND SERVICE ENDPOINT
READ SESSION
アプリによっては、IMPORTED PRIVILEGES 権限を SNOWFLAKE データベースに対してリクエストすることもあります。詳細については、 SNOWFLAKE データベースで IMPORTED PRIVILEGES 権限を付与する をご参照ください。
コンシューマーアカウントにすでに存在し、アプリケーションオブジェクトの外部にあるオブジェクトへのアクセスをアプリに許可する参照。プロバイダーは、
manifest.yml
ファイルでアプリに必要な参照を定義します。アプリをインストールした後、コンシューマーはオブジェクトをアプリに関連付ける 参照 を作成することで、オブジェクトへのアクセスを許可できます。
アプリは、以下の型のオブジェクトとそれに対応する権限へのアクセスをリクエストできます。
オブジェクト型
許可される権限
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を使用してアクセスリクエストを管理する¶
プロバイダーが Snowflake Native App でユーザーインターフェイスを実装している場合、コンシューマーは Snowsight を使用して以下を実行できます。
グローバル権限を表示して付与します。
コンシューマーアカウントで既存のオブジェクトへのアクセスを許可します。
グローバル権限を付与する¶
アプリケーションのインストール後に権限を付与したり参照を作成したりするには、次を実行します。
Snowsight にサインインします。
ナビゲーションメニューで Data Products » Apps を選択します。
アプリを選択します。
ツールバーの Security アイコンを選択します。
Privileges タブを選択します。
アプリによってリクエストされたアカウントレベルの権限は、 Account level privileges に表示されます。
Account-level privileges セクションで Review を選択し、付与する権限ごとにスライダーを切り替えます。
Save を選択します。
オブジェクトへの権限およびアクセスを取り消す¶
オブジェクトへの権限やアクセスを取り消すには、次を実行します。
Snowsight にサインインします。
ナビゲーションメニューで Data Products » Apps を選択します。
アプリを選択します。
ツールバーの Security アイコンを選択します。
Privileges タブを選択します。
グローバル権限を取り消すには、 Edit ボタンを選択し、取り消す権限のスライダーを切り替えます。
特定のオブジェクトからのアクセスを取り消すには、 Delete ボタンを選択し、 Revoke Privilege を選択します。
注釈
権限を取り消したり、オブジェクトからのアクセスを削除したりすると、アプリケーションが不安定になったり、動作しなくなったりすることがあります。
SQL コマンドを使用してアプリの権限を管理する¶
アプリ開発者が権限付与のためのインターフェイスを実装していない場合は、 SQL コマンドを使用して、アプリのアクセスリクエストを管理する必要があります。
アプリによりリクエストされた権限を表示する¶
プロバイダーがアプリに必要な権限を指定すると、インストールされたアプリの一部として権限リクエストが含まれます。これらの権限は、アプリのインストール後に表示できます。
アプリに必要な権限を表示するには、次の例に示すように SHOWPRIVILEGES コマンドを実行します。
SHOW PRIVILEGES IN APPLICATION hello_snowflake_app;
Snowflake Native App に権限を付与する¶
コンシューマーは、アプリがリクエストする権限を決定した後、その権限をアプリに付与することができる。
たとえば、アプリに EXECUTE TASK 権限を付与するには、次の例に示すように GRANTPRIVILEGE コマンドを実行します。
GRANT EXECUTE TASK ON ACCOUNT TO APPLICATION hello_snowflake_app;
Snowflake Native App に MANAGEWAREHOUSES 権限を付与する¶
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;
注釈
IMPORTEDPRIVILEGES 権限により、アプリはコンシューマーアカウントに関連する使用状況とコストに関する情報にアクセスできます。コンシューマーは、この権限を付与する前に、アプリとこの情報を共有することを確認する必要があります。
外部テーブルと Apache Iceberg™ テーブルを有効にする¶
Snowflake Native App Framework により、プロバイダーはプロバイダー共有内の外部テーブルおよび Apache Iceberg™ テーブルをアプリ内のコンシューマーと共有できるようになります。ただし、コンシューマーはこれらのテーブルにアクセスする権限をアプリに与える必要があります。
セキュリティとコストの考慮事項¶
アプリが外部テーブルまたはIcebergテーブルにアクセスできるようにする場合、ユーザーは次の点に注意する必要があります。
外部テーブルとIcebergテーブルは、コンシューマーにデータ流出のリスクをもたらす可能性があります。たとえば、アプリが外部テーブルを含むビューを公開する場合、プロバイダーはクラウドプロバイダーのアクセスログを使用して、コンシューマーが実行するクエリの種類を判別できる可能性があります。
外部テーブルとIcebergテーブルでは、テーブルを含むオブジェクトストアがアプリが公開されているリージョンと同じリージョンにない場合、出力と入力の使用に関連する追加コストが発生する可能性があります。
Snowsight を使用して外部テーブルとIcebergテーブルを有効にする¶
プロバイダーは、アプリが外部テーブルまたはIcebergテーブルにアクセスできるように、すべてのコンシューマーにダイアログを表示するようにアプリを構成できます。
アプリが外部またはIcebergテーブルにアクセスできるようにするには、次を実行します。
Snowsight にサインインします。
ナビゲーションメニューで Data Products » Apps を選択します。
アプリを選択します。
ツールバーの Security アイコンを選択します。
Privileges タブを選択します。
External data access の下で、 Review を選択します。
Enable を選択します。
SQL を使用して外部テーブルとIcebergテーブルを有効にする¶
SQL を使用して外部テーブルとIcebergテーブルへのアクセスを有効にするには、次の例に示すように SET_APPLICATION_RESTRICTED_FEATURE_ACCESS システム関数を使用します。
SELECT SYSTEM$SET_APPLICATION_RESTRICTED_FEATURE_ACCESS(hello_snowflake_app, 'external_data', ‘{"allowed_cloud_providers" : "all"}’);
このコマンドにより、 hello_snowflake_app
アプリは、アプリが使用する外部テーブルまたはIcebergテーブルにアクセスできるようになります。
アプリで外部テーブルとIcebergテーブルが有効になっているかどうかを確認するには、次の例に示すように LIST_APPLICATION_RESTRICTED_FEATURES システム関数を使用します。
SYSTEM$LIST_APPLICATION_RESTRICTED_FEATURES('hello_snowflake_app')
このシステム関数は、外部テーブルとIcebergテーブルが hello_snowflake_app
に対して許可されているかどうかを示す JSON オブジェクトを返します。