アプリに必要な権限を構成する¶
このトピックでは、権限の自動付与を使用して、Snowflake Native App をインストールまたはアップグレードするときにコンシューマーに権限をリクエストする方法について説明します。
権限の自動付与の概要¶
多くの場合、アプリはコンシューマーアカウントでオブジェクトを作成したり、その他のアクションを実行したりする必要があります。これにより、コンシューマーは、アプリがこれらのアクションを実行できるようにするために必要な権限を付与する必要があります。たとえば、アプリは以下のようなタスクを実行する権限を持っていなければなりません。
ウェアハウスとコンピューティングプールを作成して開始します。
コンシューマーアカウントのデータにアクセスします。
Connect to external endpoints outside of Snowflake.
権限の自動付与を使用すると、プロバイダーはアプリのマニフェストファイルで必要な権限を指定できます。コンシューマーがアプリをインストールまたはアップグレードすると、マニフェストで指定された権限がアプリに自動的に付与されます。
注意
プロバイダーは、アプリを評価したりインストールしたりする際に、コンシューマーに表示されるように、これらの権限とその潜在的な影響を伝える必要があります。インストールまたはアップグレード中に権限が自動的に付与された後は、これらの権限を取り消すことができません。
権限の自動付与を使用する場合のセキュリティに関する考慮事項¶
プロバイダーがマニフェストファイルで manifest_version: 2 を使用するようにアプリを構成する場合は、権限の自動付与が有効になっています。デフォルトでは、これによりSnowflakeはアプリに特定の権限を自動的に付与できます。アプリに自動的に付与できる権限については、権限の自動付与によって付与される権限 をご参照ください。
インストール中、Snowsight はアプリがリクエストした権限に関する通知を表示します。コンシューマーが権限の自動付与を使用するアプリをインストールする場合、追加の同意を求めることなくアップグレード中にこれらの権限がアプリに付与されることに同意したことになります。
コンシューマーは、アプリが作成できるオブジェクトを制限する機能ポリシーを作成できます。機能ポリシーの作成の詳細については、機能ポリシーを使用して、アプリが作成できるオブジェクトを制限する をご参照ください。
権限の自動付与を使用してアプリの権限をリクエストする¶
Providers can use automated granting of privileges to specify the privileges an app needs to create and use objects in the consumer account. Automated granting of privileges grants the required privileges to the app when the consumer installs or upgrades the app.
マニフェストファイルのバージョンを指定します。¶
アプリに対する権限の自動付与を有効にするには、次の例に示すように、マニフェストファイルの先頭でバージョンを設定します。
manifest_version: 2
マニフェストファイルで権限を指定する¶
アプリに必要な権限を指定するには、プロバイダーはアプリのマニフェストファイルでその権限を宣言する必要があります。
注釈
権限の自動付与を使用するには、プロバイダーは manifest_version: 2 を指定する必要があります。
次の例は、マニフェストファイル内の CREATEWAREHOUSE 権限の指定方法を示しています。
manifest_version: 2
...
privileges:
- CREATE WAREHOUSE:
description: "Allows the app to create warehouses in the consumer account"
コンシューマーがアプリをインストールすると、 CREATEWAREHOUSE 権限がアプリに自動的に付与されます。
注意
プロバイダーがマニフェストファイルの manifest_version プロパティを 2 から ``1``に変更した場合、アップグレード中にすべての自動権限がアプリから取り消されます。コンシューマーがアプリに明示的に権限を付与している場合、その権限は変更されません。
注釈
プロバイダーはアプリの新バージョンへのメジャーアップグレード時のみ manifest_version プロパティを変更できます。manifest_version はパッチリリースでは変更できません。
セットアップスクリプトで必要なオブジェクトを作成する¶
Using automated granting of privileges, providers can add the SQL commands to the setup script to create and access objects in the consumer account.
次の例は、コンシューマーアカウントでウェアハウスを作成する方法を示しています:
CREATE OR REPLACE WAREHOUSE application_wh;
このコマンドは、コンシューマーアカウントの application_wh という名前のウェアハウスを作成します。権限の自動付与機能により、アプリはウェアハウスを直接作成できます。プロバイダーは、コンシューマーが必要な権限を付与しているかどうかを確認するために追加のロジックを追加する必要がありません。
権限の自動付与によって付与される権限¶
次の権限は、権限の自動付与によってサポートされています。
EXECUTE TASK
EXECUTE MANAGED TASK
CREATE WAREHOUSE
CREATE COMPUTE POOL
BIND SERVICE ENDPOINT
CREATE DATABASE
CREATE EXTERNAL ACCESS INTEGRATION
CREATE SECURITY INTEGRATION
CREATE SHARE
CREATE LISTING
プロバイダーがこれらの権限をマニフェストファイルに追加すると、インストール中やアップグレード時にアプリに自動的に付与されます。
Restrictions on privileges gated by app specifications¶
The following privileges allow apps to create objects, but require additional app specification approval:
- CREATE EXTERNAL ACCESS INTEGRATION
Allows an app to create an external access integration in the consumer account. However, to allow connections to an external endpoint, consumers must also approve the app specification that allows the app to connect to external hosts.
- CREATE SECURITY INTEGRATION
Allows an app to create a security integration in the consumer account. However, to enable OAuth authentication, consumers must also approve the app specification that defines the OAuth endpoints and scopes.
- CREATE SHARE and CREATE LISTING
Allow an app to create shares and listings in the consumer account. However, to share data with target accounts, consumers must also approve the app specification that specifies the target accounts and auto-fulfillment settings.
For more information about app specifications, see アプリ仕様の概要.
権限の自動付与では付与されない権限¶
アプリに自動的に付与されない権限もあります。コンシューマーは、アプリをインストールまたはアップグレードする際に、これらの権限を手動で付与する必要があります。たとえば、次の権限はアプリに自動的に付与されません。
MANAGE WAREHOUSES
IMPORTED PRIVILEGES ON SNOWFLAKE DB
READ SESSION
EXECUTE ALERT
アップグレード時の権限の自動付与の使用¶
アプリの新しいバージョンを公開するとき、アプリに必要な権限を追加または削除する必要があるかもしれません。新しいバージョンまたはパッチのセットアップスクリプトは、マニフェストで指定された新しい自動権限と、以前のバージョンで必要な権限の両方で実行されます。新しいバージョンで削除された余分な権限は、アプリのアップグレードが完了すると取り消されます。
マニフェストファイルのバージョンが に設定されている場合、アップグレード中の安定性を確保するために ``2``の場合、マニフェストファイルでリクエストされた権限のリストはパッチの一部としては変更できません。これにより、プロバイダーがパッチで必要な権限を削除することによって、意図せずにアプリが破損することを防ぎます。