CORTEX_USER ・CORTEX_AGENT_USERデータベースロールによるCoCo in Snowsightの表示制御を確認してみた

CORTEX_USER ・CORTEX_AGENT_USERデータベースロールによるCoCo in Snowsightの表示制御を確認してみた

Snowflake CoCo in Snowsightの利用制御向けのロールが変更されるため、新しい方法と、一部ユーザーのみに表示させる具体的な実装方法を確認してみました。
2026.10.31

データ事業本部の鈴木です。

2026年10月19日の週から以下のCoCo in Snowsightの利用制御に関する変更がアカウントに適用され始めました。適用されると、CoCo in Snowsightの表示・利用制御がSNOWFLAKE.COPILOT_USERデータベースロールではなく、CORTEX_USER・CORTEX_AGENT_USERデータベースロールや、ユーザーごとの利用クレジット数制限向けのアカウントパラメータによるものになります。

https://docs.snowflake.com/en/release-notes/bcr-bundles/un-bundled/bcr-2445

CoCoは便利ですが、デフォルトでSnowsightにアイコンが表示されるため、一部ユーザーにのみ見せるようにしたい場面があると思います。以前はSNOWFLAKE.COPILOT_USERデータベースロールをユーザーのロール(継承しているロールを含む)から除外するとSnowsightではCoCoが表示されなくなっていましたが、今後それをする場合にはどうするのだろうと思ったので確認し、変更後の仕様と一致する動作を確認しました。

CoCoの利用制限の仕組み

現状、以下の2つの方法で制限が可能です。

データベースロール

冒頭のガイドによると、CoCo利用に関するデータベースロールとして、以下が用意されています。

  • SNOWFLAKE.CORTEX_USER
  • SNOWFLAKE.CORTEX_AGENT_USER

SNOWFLAKE.CORTEX_USERデータベースロールはSnowflake Cortexの機能へのアクセス権を付与するために使用されます。デフォルトでPUBLICロールに付与されています。
SNOWFLAKE.CORTEX_AGENT_USERはSnowflake CortexエージェントAPIへのアクセスを許可するものです。確認した限り、権限的にはSNOWFLAKE.CORTEX_USERデータベースロールのサブセットとなっていました。

データベースロールについては以下に解説があります。ほかにもいくつかのCortex AI関連のデータベースロールがありますが、CoCo in Snowsightの表示制御には先の2つが関連すると考えられます。

https://docs.snowflake.com/en/sql-reference/snowflake-db-roles#snowflakecortex_user-database-role

アカウントパラメータ

以下のパラメータにクレジット数値を設定することで、超過時の挙動を制御できます。

  • CORTEX_CODE_CLI_DAILY_EST_CREDIT_LIMIT_PER_USER: CoCo CLI
  • CORTEX_CODE_DESKTOP_DAILY_EST_CREDIT_LIMIT_PER_USER: CoCo Desktop
  • CORTEX_CODE_SNOWSIGHT_DAILY_EST_CREDIT_LIMIT_PER_USER: CoCo in Snowsight

https://docs.snowflake.com/en/user-guide/cortex-code/credit-usage-limit

こちらのパラメータはSnowsightの画面表示ではなく、制限値超過時にCoCoからエラーを返させる動きになります。

検証してみた

1. 既存環境の確認

まずはPUBLICロールに付与されているCortexに関する権限一覧を確認し、冒頭の変更が適用されていそうか確認しました。

PUBLICロールに付与されているCortexに関する権限一覧

このアカウントに対して特にAI機能に関する権限の設定変更はしていませんが、既にPUBLICロールにSNOWFLAKE.CORTEX_USERデータベースロールしか付与されていないので、冒頭に紹介した変更が適用されているものと判断しました。

なお、USE AI FUNCTIONSはAI関数を利用するためのアカウントロール、SNOWFLAKE."CORTEX-MODEL-ROLE-ALL"はアカウントで利用できるモデルを指定しているものになります。

今回は、検証のため、一旦PUBLICロールからSNOWFLAKE.CORTEX_USERデータベースロールとUSE AI FUNCTIONSを剥奪しておきました。確認用にSYSADMINに直接付与しました。

-- 以下のガイドを参考に剥奪
-- https://docs.snowflake.com/en/user-guide/snowflake-cortex/aisql-privileges-and-access#cortex_user-database-role
REVOKE USE AI FUNCTIONS ON ACCOUNT
  FROM ROLE PUBLIC;

REVOKE DATABASE ROLE SNOWFLAKE.CORTEX_USER
  FROM ROLE PUBLIC;

REVOKE IMPORTED PRIVILEGES ON DATABASE SNOWFLAKE
  FROM ROLE PUBLIC;

-- 確認用にSYSADMINに付与
GRANT USE AI FUNCTIONS ON ACCOUNT TO ROLE SYSADMIN;

GRANT DATABASE ROLE SNOWFLAKE.CORTEX_USER
  TO ROLE SYSADMIN;

この状態で、SYSADMINでCoCo in Snowsightが表示・利用できました。

SYSADMINでCoCo in Snowsightが利用できることを確認

2. SNOWFLAKE.CORTEX_USERデータベースロールでの確認

続いて、検証用のロールを作成し、SNOWFLAKE.CORTEX_USERを付与すればCoCo in Snowsightが表示・利用できることを確認しました。

まず、検証用のユーザー・ロールを作成しました。

USE ROLE USERADMIN;

CREATE ROLE COCO_SNOWSIGHT_TEST_ROLE;

CREATE USER COCO_SNOWSIGHT_TEST_USER
  PASSWORD = '<パスワード>'
  MUST_CHANGE_PASSWORD = TRUE
  DEFAULT_ROLE = COCO_SNOWSIGHT_TEST_ROLE;

GRANT ROLE COCO_SNOWSIGHT_TEST_ROLE TO USER COCO_SNOWSIGHT_TEST_USER;

この時点で、COCO_SNOWSIGHT_TEST_USERはCoCo in Snowsightを表示する権限は持っていません。
このユーザーでSnowsightにログインすると確かにCoCoが表示されませんでした。

CoCoが表示されない

では、COCO_SNOWSIGHT_TEST_ROLEにSNOWFLAKE.CORTEX_USERデータベースロールを付与してみました。

GRANT DATABASE ROLE SNOWFLAKE.CORTEX_USER
  TO ROLE COCO_SNOWSIGHT_TEST_ROLE;

付与後、ユーザーでSnowsightにログインすると確かにCoCoが表示されました。

データベースロールを付与

3. SNOWFLAKE.CORTEX_AGENT_USERデータベースロールでの確認

次に、SNOWFLAKE.CORTEX_AGENT_USERデータベースロールでも確認しました。

COCO_SNOWSIGHT_TEST_ROLEからSNOWFLAKE.CORTEX_USERデータベースロールを剥奪し、代わりにSNOWFLAKE.CORTEX_AGENT_USERデータベースロールを付与しました。

REVOKE DATABASE ROLE SNOWFLAKE.CORTEX_USER
  FROM ROLE COCO_SNOWSIGHT_TEST_ROLE;

REVOKE IMPORTED PRIVILEGES ON DATABASE SNOWFLAKE
  FROM ROLE COCO_SNOWSIGHT_TEST_ROLE;

GRANT DATABASE ROLE SNOWFLAKE.CORTEX_AGENT_USER
  TO ROLE COCO_SNOWSIGHT_TEST_ROLE;

再びユーザーでSnowsightにログインするとCoCoが表示されました。

データベースロールを付与

4. アカウントパラメータを0に設定

CoCoが表示できている状態で、CORTEX_CODE_SNOWSIGHT_DAILY_EST_CREDIT_LIMIT_PER_USERを0にもしてみました。
SNOWFLAKE.CORTEX_AGENT_USERの代わりにSNOWFLAKE.CORTEX_USERを付与して、CORTEX_CODE_SNOWSIGHT_DAILY_EST_CREDIT_LIMIT_PER_USERを0にします。
デフォルトの状態で、アカウントパラメータのみ0にしたのと同等の状態ですね。

REVOKE DATABASE ROLE SNOWFLAKE.CORTEX_AGENT_USER
  FROM ROLE COCO_SNOWSIGHT_TEST_ROLE;

REVOKE IMPORTED PRIVILEGES ON DATABASE SNOWFLAKE
  FROM ROLE COCO_SNOWSIGHT_TEST_ROLE;

GRANT DATABASE ROLE SNOWFLAKE.CORTEX_USER
  TO ROLE COCO_SNOWSIGHT_TEST_ROLE;

ALTER USER COCO_SNOWSIGHT_TEST_USER SET CORTEX_CODE_SNOWSIGHT_DAILY_EST_CREDIT_LIMIT_PER_USER = 0;

この状態だと、CoCoはSnowsightに表示されますが、回答時にエラーが返るようになりました。

CoCoはSnowsightに表示されますが、回答時にエラーが返るよう

そもそもユーザーに表示したくない場合は、ロールから権限を剥奪しておく必要があると分かります。

最後に

Snowflake CoCo in Snowsightの利用制御向けのロールが変更されるため、新しい方法と、一部ユーザーのみに表示させる具体的な実装方法を確認してみました。
参考になりましたら幸いです。


Snowflakeの導入支援はクラスメソッドに!

クラスメソッドでは Snowflake の導入を支援しております。
製品の詳細や支援の内容についてお気軽にお問い合わせください。

Snowflakeの詳細を見る

この記事をシェアする

関連記事