Snowflake AI 機能のオプトアウト¶
ほとんどの Snowflake AI 機能は、最初はSnowflakeアカウントのすべてのユーザーが利用できます。ほとんどの機能へのアクセスは、 PUBLIC ロールに最初に付与される SNOWFLAKE.CORTEX_USER データベースロールによって制御されます。すべてのユーザーに PUBLIC ロールが付与され、デフォルトでCortex機能にアクセスできるようになります。(Snowflake Copilotへのアクセスは、 SNOWFLAKE.COPILOT_USER データベースロールによって制御され、デフォルトで PUBLIC にも付与されます。)2つの機能、Cortex Analystとドキュメント AI は、デフォルトではユーザーがアクセスできないオプトイン機能です。
デフォルト機能のオプトアウト¶
ユーザーがデフォルトで利用できるすべてのSnowflake AI 機能へのアクセスを取り消すには、 PUBLIC ロールから CORTEX_USER および COPILOT_USER データベースロールを取り消します。機能にアクセスする特定のロールにこれらのロールを付与し、必要に応じてそれらのロールを特定のユーザーに付与することができます。(データベースロールをユーザーに直接付与することはできません。ユーザーが引き受けることができるロールに付与する必要があります。)
次のような SQL を使用して、 PUBLIC ロールから CORTEX_USER および COPILOT_USER ロールへのアクセスを取り消してから、それらを特定のロールおよびユーザーに付与します。
-- Revoke access to most Snowflake AI features from all users in the account
REVOKE ROLE CORTEX_USER FROM ROLE PUBLIC;
REVOKE ROLE COPILOT_USER FROM ROLE PUBLIC;
-- Optionally, grant access to specific roles
GRANT ROLE CORTEX_USER TO ROLE my_cortex_role;
GRANT ROLE 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;
注釈
CORTEX_USER および COPILOT_USER を他のロールに付与した場合、ユーザーがSnowflake AI 機能を使できないように、それらのロールから取り消して完全にブロックします。
オプトイン機能へのアクセスを取り消す¶
一部のSnowflake AI 機能はオプトインです。これらの機能へのアクセスはデフォルトで無効になっているため、アクセスを許可しない限り、ユーザーはそれらを使用できません。これらの機能のいずれかへのアクセスを許可している場合は、個々の機能へのアクセスを取り消すことができます。
Cortex Analyst: ENABLE_CORTEX_ANALYST アカウントパラメーターを FALSE に設定します。
ALTER ACCOUNT SET ENABLE_CORTEX_ANALYST = FALSE;
Cortex Fine-tuning: スキーマに対する CREATE MODEL 権限を、付与したすべてのロールから取り消します。
REVOKE CREATE MODEL ON SCHEMA my_schema FROM ROLE my_role;
ドキュメント AI: SNOWFLAKE.DOCUMENT_INTELLIGENCE_CREATOR データベースロールを、付与したすべてのロールから取り消します。
REVOKE DATABASE ROLE SNOWFLAKE.DOCUMENT_INTELLIGENCE_CREATOR FROM ROLE my_role;
注釈
ドキュメント AI へのアクセスが取り消された後も、既存のパイプラインは操作を継続します。パイプラインを停止するには、パイプラインに関連付けられたタスクを一時停止または削除します。
プロビジョニングされたスループット: スキーマに対する CREATEPROVISIONEDTHROUGHPUT 権限を、付与したすべてのロールから取り消します。
REVOKE CREATE PROVISIONED THROUGHPUT ON SCHEMA my_schema FROM ROLE my_role;
機能によるアクセス制御¶
次のテーブルには、個々のSnowflake AI 機能のアクセス制御に関する詳細情報が記載されています。
機能 |
オプト イン |
主なアクセス制御方法 |
追加のアクセス制御方法 |
|---|---|---|---|
CORTEX_USER データベースロール |
エージェントがクエリする検索サービス上の USAGE と、検索サービスで使用されるデータベース、スキーマ、およびテーブルに対する USAGE |
||
:ref:` Cortex AISQL <label-cortex_llm__privileges>` |
CORTEX_USER データベースロール |
||
✔ |
ENABLE_CORTEX_ANALYST アカウントパラメーター |
||
✔ |
微調整されたモデルを作成するスキーマで CREATE MODELを実行する |
||
CORTEX_USER データベースロール |
基礎となるCortex Search Serviceのアクセス制御に依存します |
||
✔ |
プロビジョニングされたスループットオブジェクトを作成するスキーマに対するCREATE PROVISIONED THROUGHPUT 権限 |
||
CORTEX_USER データベースロール |
検索サービス、データベース、スキーマ、検索サービスが使用するテーブル上の USAGE |
||
✔ |
SNOWFLAKE.DOCUMENT_INTELLIGENCE_CREATOR データベースロール |
モデルとパイプラインを作成するための多数のオブジェクトレベル権限 |
|
COPILOT_USER データベースロール |
|||
CORTEX_USER データベースロール |
基盤となるCortex Agentまたは検索サービスのアクセス制御に依存します |
特定のモデルおよび AISQL 関数のオプトアウト¶
さまざま大規模言語モデルを使用するとコストがそれぞれ異なるため、アカウントレベルの許可リスト、ロールベースのアクセス制御、またはその両方の組み合わせることで、特定の LLMs へのアクセスを制限することができます。詳細については、 モデルアクセスの制御 をご参照ください。
ACCOUNTADMIN および AI の機能¶
ACCOUNTADMIN ロールには、Snowflake AI 機能を含む、Snowflakeアカウントのすべての機能への完全なアクセス権があります。PUBLIC から CORTEX_USER および COPILOT_USER のロールを取り消しても、 ACCOUNTADMIN がこれらの機能を使用するのを防ぐことができるわけではありません。ACCOUNTADMIN の AI 機能へアクセス権が取り消されたとしても、 ACCOUNTADMIN へのアクセス権を持つユーザーは、いつでもそのロール(または他のロール)にアクセス権を再度付与することができます。
この理由やその他の理由から、信頼できるユーザーのみに 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;
これらのアラートは、新しいデータがCortexの使用履歴ビューに追加されたときにわずかなコンピューティングコストが発生しますが、AI 機能が使用されていない場合はデータが追加されず、アラートがトリガーされることがないため、コストがかかりません。
ML 関数へのアクセスを制御する¶
Snowflake ML 関数は AI 機能ではないため、それらへのアクセスは CORTEX_USER ロールによって制御されません。
ML 関数¶
ML 関数 は、予測、異常検出、分類、その他のデータ分析タスクのために従来の機械学習技術を採用しています。ML 関数によるモデルの作成はオプトインであり、スキーマに対する CREATESNOWFLAKE.ML.FORECAST などの関数固有の権限によって制御されます。トレーニング済みモデルへのアクセスは、モデルプロジェクトに対する USAGE 権限によって制御されます。これらの権限をすでに付与している場合は、ユーザーが ML 関数モデルを作成したり使用したりできないように、権限を取り消してください。既に作成されているモデルについては、 DROP することをお勧めします。
スキーマの所有者は、特定のタイプのモデルに対する CREATE 権限を持っているかどうかに関係なく、スキーマ内に ML 関数モデルを作成できるため、スキーマの所有権と作成を信頼できるユーザーに制限しています。各スキーマ内でモデルを作成するための特定の権限を、必要とするユーザーにのみ付与します。
Snowflake ML¶
Snowflake ML では、 Pythonで開発されたカスタム機械学習モデルをSnowflake規模で構築、展開、管理できます。モデルレジストリ、フィーチャーストア、モデルとそのバージョンを含むSnowflake ML オブジェクトの作成と使用は、 CORTEX_USER ロールによって制御されません。
Snowflake ML オブジェクトはスキーマレベルのオブジェクトであるため、ユーザーはユーザーは、 OWNERSHIP または適切なCREATE 権限(例:CREATE MODEL REGISTRY)を持つ任意のスキーマでSnowflake ML オブジェクトを作成できます。したがって、Snowflake ML へのアクセスは、所有権とスキーマの作成を信頼できるユーザーに制限することで最適に制御されます。各スキーマ内でSnowflake ML オブジェクトを作成するための特定の権限を、必要とするユーザーのみに付与します。
注釈
スキーマ内で CREATEMODEL 権限を持つユーザーは、Cortex Fine-tuningを使用してモデルを作成することもできます。ただし、Cortexで微調整されたモデルを実際に使用するには、 CORTEX_USER データベースロールが必要です。