コンシューマーアカウントでオブジェクトを作成し、アクセスする¶
このトピックでは、プロバイダーがコンシューマーアカウントでオブジェクトを作成するか、既存のオブジェクトにアクセスする Snowflake Native App を開発する方法について説明します。
Tip
For new apps, use automated granting of privileges and app specifications to manage privileges and external connections. Use references to access existing objects in the consumer account. This topic also covers the manual granting of privileges for legacy apps.
コンシューマーアカウントでのオブジェクトの作成とアクセスの概要¶
Snowflake Native Apps 多くの場合、コンシューマーアカウントでオブジェクトを作成したりアクセスしたりする必要があります。例えば、コンシューマーが共有データをクエリできる基本的なアプリでも、アプリはコンシューマーアカウントでウェアハウスを作成して使用する必要があります。アプリは、Snowflakeの外部にある外部サービスに接続する必要がある場合もあります。
Snowflake Native App Framework は、コンシューマーアカウントでオブジェクトを作成するために権限をリクエストする2つの方法を提供します。
アプリへの権限の自動付与¶
Snowflake Native App Framework は、プロバイダーが特定の安全な権限をリクエストし、それらを自動的に付与することを可能にします。プロバイダーはアプリのマニフェストファイルにこれらの権限を追加します。アプリのインストール中やアップグレード中、Snowflakeは自動的にこれらの権限をアプリに付与します。
権限が自動的に付与されるようにアプリを構成する方法の詳細については、 アプリに必要な権限を構成する をご参照ください。
プロバイダーの観点からは、コンシューマーがリクエストした権限を付与しているか、アカウントに必要なオブジェクトを作成しているかをアプリが判断する必要がないため、権限の自動付与によりアプリの開発が合理化されます。
コンシューマーの観点からは、権限の自動付与によりアプリのインストールと構成が簡素化されます。ただし、デフォルトでコンシューマーのアカウントでアプリが実行できることを制御できません。コンシューマーがアプリができることをより細かく制御できるようにするため、 Snowflake Native App Framework は次の機能を提供します。
- アプリ仕様:
アプリが接続できる外部エンドポイントをコンシューマーが制御できるようにします。Snowflakeの外部のサービスにアクセスするには、サービスの種類に応じて、アプリに外部アクセス統合またはサービス統合を作成する必要がある場合があります。権限の自動付与を使用して、アプリはコンシューマーアカウントにこれらのオブジェクトを作成できます。ただし、コンシューマーアカウントのアカウント管理者は、アプリが外部接続を実行できるようにするアプリ仕様を承認する必要があります。
アプリ仕様を使用するためのアプリの開発については、Use app specifications to request controlled access をご参照ください。コンシューマーがアプリ仕様を承認する方法については、Approve app specifications をご参照ください。
- 機能ポリシー:
機能ポリシーにより、コンシューマーは権限の自動付与を上書きできます。アプリをインストールまたはアップグレードする前に、コンシューマーは機能ポリシーを作成して、アプリが特定のタイプのオブジェクトを作成することを禁止できます。たとえば、コンシューマーは、アプリがウェアハウスを作成することを禁止するために、機能ポリシーを構成する必要がある場合があります。アプリがインストールまたはアップグレード中にウェアハウスを作成しようとすると、インストールは失敗します。
コンシューマーが機能ポリシーを作成する方法については、機能ポリシーを使用して、アプリが作成できるオブジェクトを制限する をご参照ください。
アプリへの手動権限付与¶
権限の自動付与 <requesting-auto-privs>`のリリース前に作成されたアプリの場合 、たとえば、コンシューマーアカウントでオブジェクトを作成するために必要な権限を持たずにインストールされたアプリの場合、コンシューマーはアプリの構成方法に応じて、SQL または |sf-web-interface| を使用して手動でアプリに権限を付与する必要があります。詳細については、 :doc:`requesting-privs をご参照ください。
コンシューマーアカウントの既存のオブジェクトへのアクセス¶
場合によっては、アプリがオブジェクトの外部に存在するコンシューマーカウントの既存のオブジェクトにアクセスする必要があります。たとえば、アプリがコンシューマーデータベースの既存のテーブルにアクセスする必要が生じる場合があります。アプリがオブジェクトを作成できるようにするには、 Snowflake Native App Framework は、顧客がオブジェクトの名前とスキーマを指定し、オブジェクトへのアクセスを可能にする参照を使用します。
詳細については、 コンシューマーから参照およびオブジェクトレベル権限をリクエストする をご参照ください。
自動権限と手動権限の比較¶
アプリ要件 |
権限の自動付与 |
権限の手動付与 |
|---|---|---|
オブジェクトを作成する権限 |
アプリにはオブジェクトを作成する権限がありますが、一部例外があります。 |
コンシューマーは、Snowsight または SQL を使用して、アプリに権限を明示的に付与する必要があります。 |
外部サービスにアクセス |
アプリは、ネットワークルールと外部アクセス統合を作成できます。 コンシューマーは、アプリの仕様を使用して外部アクセスを承認する必要があります。 |
コンシューマーは、必要なネットワークルールと外部アクセス統合を手動で作成し、参照を使用して統合をバインドする必要があります。 |
外部IDプロバイダーにアクセスする |
アプリで外部 API 認証のセキュリティ統合を作成できます。 コンシューマーは、アプリ仕様を使用して外部接続を承認する必要があります。 |
コンシューマーは、必要なセキュリティ統合を手動で作成し、統合を 参照でバインドする必要があります |
既存のオブジェクトへのアクセス |
プロバイダーは、既存のオブジェクトにアクセスするために 参照を使用する必要があります。 コンシューマーは参照へのアクセスを承認します。 |
プロバイダーは、既存のオブジェクトにアクセスするために 参照を使用する必要があります。 コンシューマーは参照へのアクセスを承認します。 |
アプリ開発 |
プロバイダーは、コンシューマーが 特定の権限を付与しているかどうかを判断するコードを記述する必要がありません。 |
プロバイダーは、コンシューマーが 特定の権限を付与しているかどうかをチェックするコードを記述する必要があります。 |
アプリのインストール |
コンシューマーは、手動でオブジェクトを作成したり、権限を付与したりする必要はありません。 |
コンシューマーは自分のアカウントでオブジェクトを手動で作成するか、Snowsight または SQL を使用してアプリに明示的に権限を付与する必要があります。 |
アプリ仕様で自動権限を使用する場合のセキュリティに関する考慮事項¶
アプリ仕様は、Snowflakeの外部にあるエンドポイントへの通信のみを制御します。コンシューマーは、アプリがこれらのエンドポイントに接続することを許可または禁止するアプリの仕様を承認または拒否することができます。
アプリの仕様は、ネットワークルール、外部アクセス統合、セキュリティ統合などの外部接続を制御するSnowflakeオブジェクトの作成をアプリが妨げることはありません。これらのオブジェクトを作成する権限は、権限の自動付与を使用して付与されます。
アプリの仕様はデータ検証を提供しません。 さらに、外部アクセス統合またはセキュリティ統合によって参照されるシークレットやトークンには制限が設けられていません。
たとえば、プロバイダーがアプリの外部アクセス統合を構成して、ALLOWED_AUTHENTICATION_SECRETS を使用する場合、コンシューマーはその統合のアプリ仕様を承認します。その後、アプリは使用するシークレットとトークンを変更するできます。
ただし、プロバイダーが別のエンドポイントを使用するようにアプリを変更すると、アプリ仕様のシーケンス番号が変更されるため、コンシューマーは新しいバージョンを再承認または拒否する必要があります。