機能ポリシーを使用して、アプリが作成できるオブジェクトを制限する

このトピックでは、機能ポリシーを使用して、 Snowflake Native App が作成できるオブジェクトを制限する方法について説明します。

機能ポリシーについて

アプリが権限の自動付与を使用するように構成されている場合、アプリは以下の権限の使用をリクエストできます。

  • EXECUTE TASK

  • EXECUTE MANAGED TASK

  • CREATE WAREHOUSE

  • CREATE COMPUTE POOL

  • BIND SERVICE ENDPOINT

  • CREATE DATABASE

  • CREATE EXTERNAL ACCESS INTEGRATION

コンシューマーは、アプリのインストール後にこれらの権限を取り消すことはできません。しかし、機能ポリシーによって、コンシューマーはアプリが作成できるオブジェクトを制限することができます。

例えば、アプリにウェアハウスやCompute Poolを作成させたくない場合、コンシューマー アカウント管理者は、特定のアプリまたはすべてのアプリにウェアハウスやCompute Poolの作成を禁止する機能ポリシーを作成することができます。

機能ポリシーにより、コンシューマーはアプリが以下のオブジェクトを作成または使用することを制限できます。

  • COMPUTE POOLS

  • DATABASES

  • TASKS

  • WAREHOUSES

注釈

機能ポリシーを使用して外部アクセス統合をブロックすることはできません。代わりに、コンシューマーはアプリの仕様を使用してアプリのエンドポイントを承認することを選択できます。

制限事項

  • 機能ポリシーは、複製を使用するデータベース、スキーマ、またはその中のオブジェクトではサポートされません。複製グループの一部であるオブジェクトでは、機能ポリシーはスキップされます。

ワークフロー

アプリが作成できるオブジェクトを制限するために機能ポリシーを使用する一般的なワークフローは次のとおりです。

  1. アプリのリストを表示して、アプリがリクエストしている権限を確認します。

  2. 制限したいオブジェクトがある場合は、これらのオブジェクトをブロックする機能ポリシーを作成します。

    詳細については、 新しい機能ポリシーの作成 をご参照ください。

  3. 機能ポリシーをアカウントまたは特定のオブジェクトに適用します。

    詳細については、 アカウントレベルでの機能ポリシーの割り当て および アプリへの機能ポリシーの適用 をご参照ください。

機能ポリシーの優先順位

コンシューマーは、アカウント内のすべてのアプリケーションまたは指定したアプリケーションに機能ポリシーを適用できます。複数の機能ポリシーが適用されている場合、最も具体的な機能ポリシーが、より一般的な機能ポリシーより優先されます。優先順位をまとめると次のようになります。

アカウント:

アカウントに適用される機能ポリシーは、最も一般的な機能ポリシーです。特定のオブジェクト、例えばアプリケーションに適用される機能ポリシーによって上書きされます。

オブジェクト:

特定のオブジェクトに適用される機能ポリシーは、アカウントに適用される機能ポリシーより優先されます。

コンシューマーはこの優先順位を使用して、アプリが自分のアカウントに作成できるオブジェクトを微調整できます。たとえば、コンシューマーはアカウントレベルの機能ポリシーを適用して、アカウント内のすべてのアプリがデータベースを作成することを禁止することができます。インストール中にアプリがデータベースを作成しようとすると、インストールに失敗します。

しかし、コンシューマーは、制限のない機能ポリシーを作成し、その機能ポリシーを特定のアプリに適用することもできます。そのアプリはデータベースを作成することができます。

詳細については、 新しい機能ポリシーの作成 をご参照ください。

機能ポリシーを使用するために必要な権限

次の表は、機能ポリシーを作成および使用するために必要な権限について説明しています。

権限

オブジェクト

注意

CREATE FEATURE POLICY

SCHEMA

機能ポリシーを作成するために必要です。この権限は、機能ポリシーを含むスキーマに付与する必要があります。

APPLY FEATURE POLICY

ACCOUNT

APPLY または OWNERSHIP

FEATURE POLICY

機能ポリシーの操作

コンシューマーは、 Snowsight または SQL を使用して、機能ポリシーのライフサイクルを管理できます。

新しい機能ポリシーの作成

コンシューマーは機能ポリシーを作成し、アプリが特定のタイプのオブジェクトを作成することを禁止することができます。次の例は、アプリがデータベースを作成することを禁止する機能ポリシーを作成する方法を示しています。

CREATE DATABASE feature_policy_db;
CREATE SCHEMA sch;
CREATE FEATURE POLICY block_create_db_policy
  BLOCKED_OBJECT_TYPES_FOR_CREATION = (DATABASE);
Copy

注釈

機能ポリシーはスキーマで作成する必要があります。

コンシューマーは、次の例に示すように、オブジェクトの作成を制限しない機能ポリシーを作成することもできます。

CREATE FEATURE POLICY block_nothing_policy
  BLOCKED_OBJECT_TYPES_FOR_CREATION = ();
Copy

アカウントレベルでの機能ポリシーの割り当て

コンシューマーは、次の例に示すように、 ALTER ACCOUNT コマンドを使用して、アカウントレベルで機能ポリシーを適用できます。

ALTER ACCOUNT
  SET FEATURE POLICY feature_policy_db.sch.block_create_db_policy
  FOR ALL APPLICATIONS;
Copy

このコマンドは、アカウントにインストールされているすべてのアプリに block_create_db_policy ポリシーを適用します。このポリシーを適用すると、アプリはデータベースを作成できなくなります。

アプリへの機能ポリシーの適用

アプリを手動で作成するときに機能ポリシーを適用するには、次の例に示すように、 CREATE APPLICATION コマンドの WITH FEATURE POLICY 句を使用します。

CREATE APPLICATION hello_snowflake_app
  WITH FEATURE POLICY = feature_policy_db.block_create_db_policy;
Copy

アプリに機能ポリシーを適用するには、次の例に示すように、 ALTER APPLICATION コマンドを使用します。

ALTER APPLICATION hello_snowflake_app
  SET FEATURE POLICY feature_policy_db.block_create_db_policy;
Copy

機能ポリシーの適用解除

アカウント レベルで機能ポリシーの適用を解除するには、次の例に示すように、 ALTER ACCOUNT コマンドを使用します。

ALTER ACCOUNT UNSET FEATURE POLICY FOR ALL APPLICATIONS;
Copy

特定のアプリの機能ポリシーの適用を解除するには、次の例に示すように、 ALTER APPLICATION コマンドを使用します。

ALTER APPLICATION FEATURE_POLICY_TEST_APP UNSET FEATURE POLICY;
Copy

機能ポリシーの削除

機能ポリシーを削除するには、次の例に示すように、 DROP FEATURE POLICY コマンドを使用します。

DROP FEATURE POLICY block_create_db_policy;
Copy

機能ポリシーに関する情報の表示

アクセス権限のあるアカウントの機能ポリシーを表示するには、 SHOW FEATURE POLICIES コマンドを使用します。

SHOW FEATURE POLICIES ON ACCOUNT;
Copy

アプリに適用されている機能ポリシーを表示するには、次のコマンドを使用します。

SHOW FEATURE POLICIES ON APPLICATION hello_snowflake_app;
Copy

特定の機能ポリシーに関する情報を表示するには、次の例に示すように、 DESCRIBE FEATURE POLICY を使用します。

DESCRIBE FEATURE POLICY feature_policy_db.block_create_db_policy;
Copy