Snowflake AI 機能のオプトアウト

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

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

To revoke access to all Snowflake AI features that are available to users by default, revoke the SNOWFLAKE.CORTEX_USER and SNOWFLAKE.COPILOT_USER database roles from the PUBLIC role. You can grant these roles to specific roles that you want to have access to the features, then grant those roles to specific users as needed. (You cannot grant database roles directly to users, but must grant them to roles that can be assumed by users.)

Use SQL like the following to revoke access to the SNOWFLAKE.CORTEX_USER and SNOWFLAKE.COPILOT_USER roles from the PUBLIC role, then grant them to specific roles and users.

-- 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

注釈

If you granted SNOWFLAKE.CORTEX_USER and SNOWFLAKE.COPILOT_USER to other roles, revoke them from those roles to completely block users from using Snowflake AI features.

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

一部の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 database role

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

Cortex AI Functions

SNOWFLAKE.CORTEX_USER database role

Cortex Analyst

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

Cortex 微調整

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

Cortex Knowledge Extensions

SNOWFLAKE.CORTEX_USER database role

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

Cortex Provisioned Throughput

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

Cortex Search

SNOWFLAKE.CORTEX_USER database role

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

Document AI

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

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

Snowflake Copilot

SNOWFLAKE.COPILOT_USER database role

Snowflakeインテリジェンス

SNOWFLAKE.CORTEX_USER database role

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

Opt out of specific models and AI Functions

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

ACCOUNTADMIN および AI の機能

The ACCOUNTADMIN role has complete access to all features in a Snowflake account, including Snowflake AI features. Revoking the SNOWFLAKE.CORTEX_USER and SNOWFLAKE.COPILOT_USER roles from PUBLIC does not prevent ACCOUNTADMIN from using these features. Even if an ACCOUNTADMIN's access to AI features is revoked, a user with access to ACCOUNTADMIN can always grant access to that role (or any other role) again.

この理由やその他の理由から、信頼できるユーザーのみに ACCOUNTADMIN ロールを付与するのがベストプラクティスですが、さらに厳密に言えば、Snowflakeアカウントの管理以外の目的には使用されず、ログイン認証情報が厳格に管理されているアカウント内の単一のユーザーのみに付与します。ACCOUNTADMIN アカウントの設定とメンテナンスにのみ使用し、日常的な管理には、より制限された範囲を持つ他の管理ロール(SECURITYADMIN、 SYSADMIN または USERADMIN)を使用します。

ロールベースのアクセス制御以外の方法によって制限されている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 features are not AI features, and access to them is not controlled by the SNOWFLAKE.CORTEX_USER role.

ML 関数

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

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

Snowflake ML

Snowflake ML lets you build, deploy, and manage custom machine learning models developed in Python, at Snowflake scale. Creation and use of Snowflake ML objects, including the model registry, the feature store, and models and their versions, is not controlled by the SNOWFLAKE.CORTEX_USER role.

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

注釈

Users with the CREATE MODEL privilege in a schema can also create models using Cortex Fine-tuning. However, actually using Cortex fine-tuned models requires the SNOWFLAKE.CORTEX_USER database role.