Snowflake AI 機能のオプトアウト

ほとんどの Snowflake AI 機能は、最初はSnowflakeアカウントのすべてのユーザーが利用できます。ほとんどの機能へのアクセスは、 PUBLIC ロールに最初に付与される SNOWFLAKE.CORTEX_USER データベースロールによって制御されます。すべてのユーザーに PUBLIC ロールが付与され、デフォルトでCortex機能にアクセスできるようになります。(Snowflake Copilotへのアクセスは、 SNOWFLAKE.COPILOT_USER データベースロールによって制御され、デフォルトで PUBLIC にも付与されます。)2つの機能、Cortex Analystとドキュメント AI は、デフォルトではユーザーがアクセスできないオプトイン機能です。

デフォルト機能のオプトアウト

ユーザーがデフォルトで利用できるすべてのSnowflake AI 機能へのアクセスを取り消すには、 PUBLIC ロールから SNOWFLAKE.CORTEX_USER および SNOWFLAKE.COPILOT_USER データベースロールを取り消します。これらのロールを、機能へのアクセスを許可する特定のロールに付与し、必要に応じて特定のユーザーにそれらのロールを付与することができます。(データベースロールをユーザーに直接付与することはできませんが、ユーザーが引き受けることができるロールに付与する必要があります。)

次のような SQL を使用して、 PUBLIC ロールから SNOWFLAKE.CORTEX_USER および SNOWFLAKE.COPILOT_USER ロールへのアクセスを取り消してから、それらを特定のロールおよびユーザーに付与します。

-- Revoke access to most Snowflake AI features from all users in the account
REVOKE DATABASE ROLE SNOWFLAKE.CORTEX_USER FROM ROLE PUBLIC;
REVOKE DATABASE ROLE SNOWFLAKE.COPILOT_USER FROM ROLE PUBLIC;

-- Optionally, grant access to specific roles
GRANT DATABASE ROLE SNOWFLAKE.CORTEX_USER TO ROLE my_cortex_role;
GRANT DATABASE ROLE SNOWFLAKE.COPILOT_USER TO ROLE my_copilot_role;

-- Then grant those roles to specific users
GRANT ROLE my_cortex_role TO USER alice;
GRANT ROLE my_copilot_role TO USER bob;
Copy

注釈

SNOWFLAKE.CORTEX_USER および SNOWFLAKE.COPILOT_USER を他のロールに付与した場合、ユーザーがSnowflake AI 機能を使できないように、それらのロールから取り消して完全にブロックします。

オプトイン機能へのアクセスを取り消す

一部のSnowflake AI 機能はオプトインです。これらの機能へのアクセスはデフォルトで無効になっているため、アクセスを許可しない限り、ユーザーはそれらを使用できません。これらの機能のいずれかへのアクセスを許可している場合は、個々の機能へのアクセスを取り消すことができます。

  • Cortex Analyst: ENABLE_CORTEX_ANALYST アカウントパラメーターを FALSE に設定します。

    ALTER ACCOUNT SET ENABLE_CORTEX_ANALYST = FALSE;
    
    Copy
  • **Cortex埋め込み関数**(AI_EMBED 、 EMBED_TEXT _768、 EMBED_TEXT _1024):これらの関数を呼び出すには、ユーザーが SNOWFLAKE.CORTEX_USER データベースロールを持っていない場合、 SNOWFLAKE.CORTEX_EMBED_USER データベースロールが必要です。SNOWFLAKE.CORTEX_EMBED_USER ロールを、付与したすべてのロールから取り消します。

    REVOKE DATABASE ROLE SNOWFLAKE.CORTEX_EMBED_USER FROM ROLE my_role;
    
    Copy
  • Cortex Fine-tuning: スキーマに対する CREATE MODEL 権限を、付与したすべてのロールから取り消します。

    REVOKE CREATE MODEL ON SCHEMA my_schema FROM ROLE my_role;
    
    Copy
  • ドキュメント AI: SNOWFLAKE.DOCUMENT_INTELLIGENCE_CREATOR データベースロールを、付与したすべてのロールから取り消します。

    REVOKE DATABASE ROLE SNOWFLAKE.DOCUMENT_INTELLIGENCE_CREATOR FROM ROLE my_role;
    
    Copy

    注釈

    ドキュメント AI へのアクセスが取り消された後も、既存のパイプラインは操作を継続します。パイプラインを停止するには、パイプラインに関連付けられたタスクを一時停止または削除します。

  • プロビジョニングされたスループット: スキーマに対する CREATEPROVISIONEDTHROUGHPUT 権限を、付与したすべてのロールから取り消します。

    REVOKE CREATE PROVISIONED THROUGHPUT ON SCHEMA my_schema FROM ROLE my_role;
    
    Copy

機能によるアクセス制御

次のテーブルには、個々のSnowflake AI 機能のアクセス制御に関する詳細情報が記載されています。

機能

オプト イン

主なアクセス制御方法

追加のアクセス制御方法

Cortexエージェント

SNOWFLAKE.CORTEX_USER データベースロール

エージェントがクエリする検索サービス上の USAGE と、検索サービスで使用されるデータベース、スキーマ、およびテーブルに対する USAGE

Cortex AI Functions

SNOWFLAKE.CORTEX_USER データベースロール

Cortex Analyst

ENABLE_CORTEX_ANALYST アカウントパラメーター

Cortex 微調整

微調整されたモデルを作成するスキーマで CREATE MODELを実行する

Cortex Knowledge Extensions

SNOWFLAKE.CORTEX_USER データベースロール

基礎となるCortex Search Serviceのアクセス制御に依存します

Cortex Provisioned Throughput

プロビジョニングされたスループットオブジェクトを作成するスキーマに対するCREATE PROVISIONED THROUGHPUT 権限

Cortex Search

SNOWFLAKE.CORTEX_USER データベースロール

検索サービス、データベース、スキーマ、検索サービスが使用するテーブル上の USAGE

Document AI

SNOWFLAKE.DOCUMENT_INTELLIGENCE_CREATOR データベースロール

モデルとパイプラインを作成するための多数のオブジェクトレベル権限

Snowflake Copilot

SNOWFLAKE.COPILOT_USER データベースロール

Snowflakeインテリジェンス

SNOWFLAKE.CORTEX_USER データベースロール

基盤となるCortex Agentまたは検索サービスのアクセス制御に依存します

Opt out of specific models and AI Functions

さまざま大規模言語モデルを使用するとコストがそれぞれ異なるため、アカウントレベルの許可リスト、ロールベースのアクセス制御、またはその両方の組み合わせることで、特定の LLMs へのアクセスを制限することができます。詳細については、 モデルアクセスの制御 をご参照ください。

ACCOUNTADMIN および AI の機能

ACCOUNTADMIN ロールには、Snowflake AI 機能を含む、Snowflakeアカウントのすべての機能への完全なアクセス権があります。PUBLIC から SNOWFLAKE.CORTEX_USER および SNOWFLAKE.COPILOT_USER のロールを取り消しても、 ACCOUNTADMIN がこれらの機能を使用するのを防ぐことができるわけではありません。ACCOUNTADMIN の AI 機能へアクセス権が取り消されたとしても、 ACCOUNTADMIN へのアクセス権を持つユーザーは、いつでもそのロール(または他のロール)にアクセス権を再度付与することができます。

For this and other reasons, it is a best practice to grant the ACCOUNTADMIN role to trusted users only, or even more strictly, to a single user in the account which is not used for any purpose other than Snowflake account administration and whose login credentials are tightly controlled. Use ACCOUNTADMIN only for account setup and maintenance, and use other administrative roles with more limited scope (that is, SECURITYADMIN, SYSADMIN, or USERADMIN) for day-to-day administration.

ロールベースのアクセス制御以外の方法によって制限されているSnowflake AI 機能を ACCOUNTADMIN が使用するのを防ぐことができます。例えば、 ENABLE_CORTEX_ANALYST アカウントパラメーターが FALSE に設定されている場合、 ACCOUNTADMIN を持つユーザーであっても、Cortex Analystを使用することはできません。もちろん、そのユーザーはいつでもこのパラメーターを TRUE に設定できます。

モニター AI 機能の使用状況

Snowflake AI が使用されていないことを確認するには、 SNOWFLAKE.ACCOUNT_USAGE スキーマのCortex関連のビューを使用して、Snowflake AI 機能の使用状況をモニターします。これらのビューには次のものがあります。

注釈

CORTEX_FUNCTIONS_QUERY_USAGE_HISTORY および CORTEX_FUNCTIONS_USAGE_HISTORY ログは、基本的に同じイベントをログ記録します。両方をモニターする必要はありません。

これらのビューで 新しいデータのアラートを作成 し、アカウントで新しい AI 機能が使用されたときに通知します。たとえば、次の SQL ステートメントは、該当する AI 機能が使用されたときにSlackメッセージを送信するアラートを作成します。

CREATE ALERT my_alert
  IF (EXISTS (
    SELECT * FROM SNOWFLAKE.ACCOUNT_USAGE.CORTEX_FUNCTIONS_QUERY_USAGE_HISTORY))
  THEN
    BEGIN
      CALL SYSTEM$SEND_SNOWFLAKE_NOTIFICATION(
        SNOWFLAKE.NOTIFICATION.TEXT_PLAIN('AI function used in account'),
        '{"my_slack_integration": {}}'
      );
    END;
Copy

これらのアラートは、新しいデータがCortexの使用履歴ビューに追加されたときにわずかなコンピューティングコストが発生しますが、AI 機能が使用されていない場合はデータが追加されず、アラートがトリガーされることがないため、コストがかかりません。

ML 関数へのアクセスを制御する

Snowflake ML 関数は AI 機能ではないため、それらへのアクセスは SNOWFLAKE.CORTEX_USER ロールによって制御されません。

ML 関数

ML 関数 は、予測、異常検出、分類、その他のデータ分析タスクのために従来の機械学習技術を採用しています。ML 関数によるモデルの作成はオプトインであり、スキーマに対する CREATESNOWFLAKE.ML.FORECAST などの関数固有の権限によって制御されます。トレーニング済みモデルへのアクセスは、モデルプロジェクトに対する USAGE 権限によって制御されます。これらの権限をすでに付与している場合は、ユーザーが ML 関数モデルを作成したり使用したりできないように、権限を取り消してください。既に作成されているモデルについては、 DROP することをお勧めします。

スキーマの所有者は、特定のタイプのモデルに対する CREATE 権限を持っているかどうかに関係なく、スキーマ内に ML 関数モデルを作成できるため、スキーマの所有権と作成を信頼できるユーザーに制限しています。各スキーマ内でモデルを作成するための特定の権限を、必要とするユーザーにのみ付与します。

Snowflake ML

Snowflake ML では、 Pythonで開発されたカスタム機械学習モデルをSnowflake規模で構築、展開、管理できます。モデルレジストリ、フィーチャーストア、モデルとそのバージョンを含むSnowflake ML オブジェクトの作成と使用は、 SNOWFLAKE.CORTEX_USER ロールによって制御されません。

Snowflake ML オブジェクトはスキーマレベルのオブジェクトであるため、ユーザーはユーザーは、 OWNERSHIP または適切なCREATE 権限(例:CREATE MODEL REGISTRY)を持つ任意のスキーマでSnowflake ML オブジェクトを作成できます。したがって、Snowflake ML へのアクセスは、所有権とスキーマの作成を信頼できるユーザーに制限することで最適に制御されます。各スキーマ内でSnowflake ML オブジェクトを作成するための特定の権限を、必要とするユーザーのみに付与します。

注釈

スキーマ内で CREATEMODEL 権限を持つユーザーは、Cortex Fine-tuningを使用してモデルを作成することもできます。ただし、Cortexで微調整されたモデルを実際に使用するには、 SNOWFLAKE.CORTEX_USER データベースロールが必要です。