アプリに必要な権限を構成する

このトピックでは、権限の自動付与を使用して、Snowflake Native App をインストールまたはアップグレードするときにコンシューマーに権限をリクエストする方法について説明します。

権限の自動付与の概要

多くの場合、アプリはコンシューマーアカウントでオブジェクトを作成したりアクセスしたり、その他のアクションを実行したりする必要があります。これにより、コンシューマーは、アプリがこれらのアクションを実行できるようにするために必要な権限を付与する必要があります。たとえば、アプリは以下のようなタスクを実行する権限を持っていなければなりません。

  • ウェアハウスとコンピューティングプールを作成して開始します。

  • コンシューマーアカウントのデータにアクセスします。

  • 外部(Snowflake外部)エンドポイントに接続します。

権限の自動付与を使用すると、プロバイダーはアプリのマニフェストファイルで必要な権限を指定できます。コンシューマーがアプリをインストールまたはアップグレードすると、マニフェストで指定された権限がアプリに自動的に付与されます。

注意

プロバイダーは、アプリを評価したりインストールしたりする際に、コンシューマーに表示されるように、これらの権限とその潜在的な影響を伝える必要があります。インストールまたはアップグレード中に権限が自動的に付与された後は、これらの権限を取り消すことができません。

権限の自動付与を使用してアプリの権限をリクエストする

プロバイダーは、アプリがコンシューマーアカウントでオブジェクトを作成し、使用するために必要な権限を指定するために、自動権限付与を使用できます。権限の自動付与は、コンシューマーがアプリをインストールまたはアップグレードするときに、必要な権限をアプリに付与します。

マニフェストファイルのバージョンを指定します。

アプリに対する権限の自動付与を有効にするには、次の例に示すように、マニフェストファイルの先頭でバージョンを設定します。

manifest_version: 2
Copy

マニフェストファイルで権限を指定する

アプリに必要な権限を指定するには、プロバイダーはアプリのマニフェストファイルでその権限を宣言する必要があります。

注釈

権限の自動付与を使用するには、プロバイダーは manifest_version: 2 を指定する必要があります。

次の例は、マニフェストファイル内の CREATEWAREHOUSE 権限の指定方法を示しています。

manifest_version: 2
...
privileges:
  - CREATE WAREHOUSE
    description: "Allows the app to create warehouses in the consumer account"
Copy

コンシューマーがアプリをインストールすると、 CREATEWAREHOUSE 権限がアプリに自動的に付与されます。

注意

プロバイダーがマニフェストファイルの manifest_version プロパティを 2 から ``1``に変更した場合、アップグレード中にすべての自動権限がアプリから取り消されます。コンシューマーがアプリに明示的に権限を付与している場合、その権限は変更されません。

注釈

プロバイダーはアプリの新バージョンへのメジャーアップグレード時のみ manifest_version プロパティを変更できます。manifest_version はパッチリリースでは変更できません。

セットアップスクリプトで必要なオブジェクトを作成する

権限の自動付与を使用して、プロバイダーは コンシューマーアカウントでオブジェクトを作成し、アクセスするために使用されるセットアップスクリプトへの SQL コマンドを追加できます。

次の例は、コンシューマーアカウントでウェアハウスを作成する方法を示しています:

CREATE OR REPLACE WAREHOUSE application_wh;
Copy

このコマンドは、コンシューマーアカウントの application_wh という名前のウェアハウスを作成します。権限の自動付与機能により、アプリはウェアハウスを直接作成できます。プロバイダーは、コンシューマーが必要な権限を付与しているかどうかを確認するために追加のロジックを追加する必要がありません。

権限の自動付与によって付与される権限

次の権限は、権限の自動付与によってサポートされています。

  • EXECUTE TASK

  • EXECUTE MANAGED TASK

  • CREATE WAREHOUSE

  • CREATE COMPUTE POOL

  • BIND SERVICE ENDPOINT

  • CREATE DATABASE

  • CREATE EXTERNAL ACCESS INTEGRATION

  • CREATE SECURITY INTEGRATION

プロバイダーがこれらの権限をマニフェストファイルに追加すると、インストール中やアップグレード時にアプリに自動的に付与されます。

CREATEEXTERNALACCESSINTEGRATION の制限に対する権限

その CREATEEXTERNALACCESSINTEGRATION 権限では、アプリはコンシューマーアカウントで外部アクセス統合を作成できます。ただし、外部エンドポイントへの接続を許可するには、コンシューマーは、アプリが外部ホストに接続できるようにするアプリ仕様も承認する必要があります。

詳細については、 コンシューマーに外部エンドポイントをリクエストするためにアプリ仕様を使用する をご参照ください。

権限の自動付与では付与されない権限

アプリに自動的に付与されない権限もあります。コンシューマーは、アプリをインストールまたはアップグレードする際に、これらの権限を手動で付与する必要があります。たとえば、次の権限はアプリに自動的に付与されません。

  • MANAGE WAREHOUSES

  • IMPORTED PRIVILEGES ON SNOWFLAKE DB

  • READ SESSION

  • EXECUTE ALERT

アップグレード時の権限の自動付与の使用

アプリの新しいバージョンを公開するとき、アプリに必要な権限を追加または削除する必要があるかもしれません。新しいバージョンまたはパッチのセットアップスクリプトは、マニフェストで指定された新しい自動権限と、以前のバージョンで必要な権限の両方で実行されます。新しいバージョンで削除された余分な権限は、アプリのアップグレードが完了すると取り消されます。

マニフェストファイルのバージョンが に設定されている場合、アップグレード中の安定性を確保するために ``2``の場合、マニフェストファイルでリクエストされた権限のリストはパッチの一部としては変更できません。これにより、プロバイダーがパッチで必要な権限を削除することによって、意図せずにアプリが破損することを防ぎます。