プロバイダーの知的財産を保護する

このトピックでは、 Snowflake Native App Framework が Snowflake Native App で共有するオブジェクトに関する情報を再編集または削除して、プロバイダーのデータを保護する方法について説明します。

Snowflake Native App Framework での知的財産権の保護について

コンシューマーが Snowflake Native App をインストールすると、プロバイダーがアプリケーションロールを使用してオブジェクトに対する権限を付与しない限り、コンシューマーはアプリケーションオブジェクト内のオブジェクトを表示することはできません。

一般的に、コンシューマーがスキーマ、ビューを使用してオブジェクトのメタデータをクエリする場合、または Snowsight を使用して、これらのクエリのために Query Profile または Query History を表示する場合、 Snowflake Native App Framework はアプリケーションオブジェクト内のオブジェクトに関する情報をマスキングします。

クエリプロフィールからマスキングされた情報

Snowflake Native App Framework では、以下のコンテキストで クエリプロファイル からの情報をマスキングされます。

  • アプリのインストールやアップグレード時に実行されるクエリ。

  • アプリが所有するストアドプロシージャに由来するクエリ。

  • アプリが所有する非セキュアビューまたは関数を含むクエリ。

これらの型の各クエリに対して、 Snowsight はクエリプロファイルツリーを完全に表示する代わりに、クエリプロファイルデータを単一の空のノードに折りたたみます。

クエリ履歴からマスクキングされた情報

Snowflake Native App に関連するクエリでは、以下のコンテキストで クエリ履歴 から query_texterror_message フィールドがマスクキングされます。

  • クエリは、アプリがインストールまたはアップグレードされたときに実行される。

  • アプリが所有するストアドプロシージャの子ジョブから発生するクエリ。

これらの状況では、 Snowsight のクエリ履歴のセルは空白になります。

SQL コマンドとビューからマスキングされた情報

コンシューマーが SHOW または DESCRIBE コマンドを使用してアプリケーションオブジェクトまたはアプリが所有するオブジェクトに関する情報を表示する場合、実装の詳細に関する情報はマスキングされます。たとえば、関数定義と関数本文は、これらのコマンドの出力でマスキングされます。

実装の詳細に関する情報は、以下のコンテキストで ACCESS_HISTORY ビューからマスキングされます。

  • アプリのインストール時やアップグレード時に生成されるクエリ。

  • アプリが所有するストアドプロシージャとユーザー定義関数によって生成されるクエリ。

さらに、アプリが所有するビューについては、ベーステーブルに関する情報はマスクキングされます。

ブロックされたコンテキスト関数

アプリケーションオブジェクト内のオブジェクトに関連する情報を保護するために、 Snowflake Native App Framework は以下のコンテキスト関数をブロックします。

コンテキスト関数

共有コンテンツでブロック(nullを返す)

セットアップスクリプトとストアドプロシージャでブロックされ、 Snowflake Native App が所有する UDFs (例外をスロー)。

CURRENT_ROLE

CURRENT_ROLE_TYPE

CURRENT_USER

IS_ROLE_IN_SESSION

CURRENT_IP_ADDRESS

CURRENT_AVAILABLE_ROLES

CURRENT_SECONDARY_ROLES

ALL_USER_NAMES

GET_USERS_FOR_COLLABORATION

CURRENT_WAREHOUSE

SYSTEM$ALLOWLIST

共有コンテンツを保護する

プロバイダーのデータコンテンツのプライバシーと整合性を保護するため、 Snowflake Native App Framework は以下の制限を実装します。

  • 共有オブジェクトは、アプリケーションオブジェクトとインストール Snowflake Native App 向けの読み取り専用です。

  • 共有オブジェクトはコンシューマーに直接公開されません。オブジェクトは、 Snowflake Native App のインストール中またはアップグレード中にセットアップスクリプトの実行によりインストールされるビューを介してのみ公開されます。

  • 共有コンテンツを更新できるのはプロバイダーのみです。

  • アプリケーションオブジェクトまたはインストールされた Snowflake Native App と共有できるオブジェクトは、以下のオブジェクトのみです。これらのオブジェクトには、一定の権限が必要です。

    • スキーマ: アプリケーションパッケージの共有コンテンツに付与できる権限は USAGE のみです。

    • テーブル: アプリケーションパッケージの共有コンテンツに付与できる権限は SELECT のみです。定義されたポリシー(行アクセス、マスキング、タグベースなど)を持つテーブルは共有できません。ポリシーは、オブジェクトがコンシューマーに公開されるときに、オブジェクトに対して定義することができます。

    • ビュー: アプリケーションパッケージの共有コンテンツに付与できる権限は SELECT のみです。行アクセス、マスキング、タグベースなど、定義されたポリシーを持つビューは共有できません。

注釈

ビューや、ビューから構成されるビューには、 JavaScript、Java、Python、Scalaの関数を含めることはできません。

詳細については、 共有オブジェクトにアクセスすることをコンシューマーに許可する をご参照ください