READ UNREDACTED AI OBSERVABILITY EVENTS TABLE権限による会話履歴・フィードバックの取得制御を確認する

READ UNREDACTED AI OBSERVABILITY EVENTS TABLE権限による会話履歴・フィードバックの取得制御を確認する

AI Observability 向けの生データから、ツールの入力と出力全体・会話テキスト全体・ユーザーフィードバックテキストの取得を制御する READ UNREDACTED AI OBSERVABILITY EVENTS TABLE 権限が追加されたためご紹介します。
2026.05.06

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

2026年4月24日から新しいアカウント権限としてREAD UNREDACTED AI OBSERVABILITY EVENTS TABLEが追加されました。
https://docs.snowflake.com/en/release-notes/bcr-bundles/un-bundled/bcr-read-unredacted-ai-observability-events

この変更により、権限が付与されていないロールによるSNOWFLAKE.LOCAL.AI_OBSERVABILITY_EVENTSからの、ツールの入力と出力全体・会話テキスト全体・ユーザーフィードバックテキストが取得できなくなりました。

ちょうど私もCortex Agentsの会話履歴やフィードバックを確認する検証をしていたのですが、「あれっ、会話履歴やフィードバック内容が取れなくなったなー」と思っていました。
この権限を追加すれば見られるようになったので、付与の例をご紹介します。

Cortex Agentsの会話履歴・フィードバックを取得する

AI Observabilityの生データはSNOWFLAKE.LOCAL.AI_OBSERVABILITY_EVENTSに保存されます。今回READ UNREDACTED AI OBSERVABILITY EVENTS TABLEが追加されたことで、今までの権限付与にプラスした、ツールの入力と出力全体・会話テキスト全体・ユーザーフィードバックテキストの取得に関するセキュリティ設定が可能になりました。

https://docs.snowflake.com/en/user-guide/snowflake-cortex/cortex-agents-monitor

会話履歴・フィードバックはSQLではGET_AI_OBSERVABILITY_EVENTSで取得できます。

例えば、ユーザーフィードバックは以下のように取得できることが案内されています。

-- https://docs.snowflake.com/en/user-guide/snowflake-cortex/cortex-agents-monitor
SELECT *
  FROM TABLE(SNOWFLAKE.LOCAL.GET_AI_OBSERVABILITY_EVENTS(
    '<database_name>',
    '<schema_name>',
    '<agent_name>',
    'CORTEX AGENT'
  ))
  WHERE RECORD:name = 'CORTEX_AGENT_FEEDBACK';

今回は、READ UNREDACTED AI OBSERVABILITY EVENTS TABLEの権限有無で、クエリ結果がどのように変わるか確認します。

事前準備

ログを確認するためのエージェントをAI_OBSERVABILITY_TEST_AGENT1AI_OBSERVABILITY_TEST_AGENT2の2つ作成しました。

作成したエージェント

それぞれ、会話とフィードバックを作成しておきました。

▼エージェント1

エージェント1との会話

エージェント1へのフィードバック

▼エージェント2

エージェント2への会話とフィードバック

クエリのためのAI_OBSERVABILITY_ROLEロールを作成しました。
まずは一通りの権限を付与しました。

-- ロールを作成
USE ROLE SECURITYADMIN;
CREATE ROLE IF NOT EXISTS AI_OBSERVABILITY_ROLE;

-- Snowflake Cortexの機能へのアクセス権(デフォルトでPUBLICロールに付与)
GRANT DATABASE ROLE SNOWFLAKE.CORTEX_USER
  TO ROLE AI_OBSERVABILITY_ROLE;

-- エージェント1のMONITOR権
GRANT USAGE ON DATABASE エージェントのあるデータベース名 TO ROLE AI_OBSERVABILITY_ROLE;
GRANT USAGE ON SCHEMA エージェントのあるデータベース名.エージェントのあるスキーマ名 TO ROLE AI_OBSERVABILITY_ROLE;
GRANT MONITOR ON AGENT エージェントのあるデータベース名.エージェントのあるスキーマ名.AI_OBSERVABILITY_TEST_AGENT1
  TO ROLE AI_OBSERVABILITY_ROLE;

-- READ UNREDACTED AI OBSERVABILITY EVENTS TABLE付与
USE ROLE ACCOUNTADMIN;
GRANT READ UNREDACTED AI OBSERVABILITY EVENTS TABLE
  ON ACCOUNT
  TO ROLE AI_OBSERVABILITY_ROLE;

以下のように付与されました。

付与した権限

GET_AI_OBSERVABILITY_EVENTSの実行結果

READ UNREDACTED AI OBSERVABILITY EVENTS TABLEの有無で、会話履歴・フィードバックの見え方が変わるか確認しました。

READ UNREDACTED AI OBSERVABILITY EVENTS TABLE権限を付与したとき

以下のように会話履歴・フィードバックが確認できました。

SELECT
  *
FROM TABLE(
  SNOWFLAKE.LOCAL.GET_AI_OBSERVABILITY_EVENTS(
    'エージェントのあるデータベース名',
    'エージェントのあるスキーマ名',
    'エージェント名',
    'CORTEX AGENT'
  )
);

権限を付与したときのクエリ結果

READ UNREDACTED AI OBSERVABILITY EVENTS TABLE権限を付与していないとき

以下でREAD UNREDACTED AI OBSERVABILITY EVENTS TABLEをREVOKEしてから試しました。

--READ UNREDACTED AI OBSERVABILITY EVENTS TABLEを取り消し
USE ROLE ACCOUNTADMIN;
REVOKE READ UNREDACTED AI OBSERVABILITY EVENTS TABLE
  ON ACCOUNT
  FROM ROLE AI_OBSERVABILITY_ROLE;

クエリ結果が変わり、会話履歴・フィードバックは表示されませんでした。

権限を付与していないときのクエリ結果

補足

MONITORを付与していないときの挙動

先の例はMONITOR権限があるエージェントに対するREAD UNREDACTED AI OBSERVABILITY EVENTS TABLEの有無でのクエリ結果の違いを確認しましたが、READ UNREDACTED AI OBSERVABILITY EVENTS TABLEがある場合にMONITOR権限などの有無で表示される情報が変わるかも確認しておきます。

エージェント2はMONITORを付与していないため、READ UNREDACTED AI OBSERVABILITY EVENTS TABLEがあっても、ログはクエリできませんでした。

エージェント2はクエリできない

USAGEを付与してもクエリできませんでした。

-- エージェント AI_OBSERVABILITY_TEST_AGENT2 向けのUSAGE権限
GRANT USAGE ON AGENT DA_ML_DB.SAMPLE_SCHEMA.AI_OBSERVABILITY_TEST_AGENT2
  TO ROLE AI_OBSERVABILITY_ROLE;

エージェント2はクエリできない2

このとき、Snowsightだと、エージェントのMonitoringタブではMONITOROWNERSHIPを付与するように表示されました。

エージェント2のMonitoringタブは表示できない

MONITORを付与すれば表示されました。

-- エージェント AI_OBSERVABILITY_TEST_AGENT2 向けのUSAGE権限
GRANT MONITOR ON AGENT データべース名.スキーマ名.AI_OBSERVABILITY_TEST_AGENT2
  TO ROLE AI_OBSERVABILITY_ROLE;

MONITORを付与すれば表示できる

特定エージェントの会話履歴を取得するクエリ

ここまでの例では、SNOWFLAKE.LOCAL.GET_AI_OBSERVABILITY_EVENTSのクエリ結果が取得できるかだけを確認しましたが、もう少し実運用向けの加工をしたクエリもご紹介します。

例えば、以下のようにすると良い感じに会話履歴を取得できました。

WITH src AS (
  SELECT
    TIMESTAMP,
    RECORD:name::STRING AS event_name,
    RECORD_TYPE,
    RECORD_ATTRIBUTES:"snow.ai.observability.agent.thread_id"::NUMBER AS thread_id,
    PARSE_JSON(VALUE:"snow.ai.observability.response") AS response_json,
    VALUE:"snow.ai.observability.request_body" AS request_body
  FROM TABLE(
    SNOWFLAKE.LOCAL.GET_AI_OBSERVABILITY_EVENTS(
      'データベース名',
      'スキーマ名',
      'エージェント名',
      'CORTEX AGENT'
    )
  )
  WHERE RECORD_ATTRIBUTES:"snow.ai.observability.agent.thread_id" IS NOT NULL
    AND event_name = 'CORTEX_AGENT_REQUEST'
)
SELECT
  TIMESTAMP,
  thread_id,
  request_body:messages[0]:content[0]:text::string AS input_text,
  f.value:text::STRING AS output_text
FROM src,
LATERAL FLATTEN(input => response_json:content) f
WHERE f.value:type::STRING = 'text'
ORDER BY TIMESTAMP DESC;

会話履歴の取得例

READ UNREDACTED AI OBSERVABILITY EVENTS TABLEが不足するとレコードが表示されませんでした。

権限不足時-会話履歴

特定エージェントのフィードバックを取得するクエリ

例えば、以下のようにすると良い感じに会話履歴を取得できました。

WITH base AS (
  SELECT
    *
  FROM TABLE(
    SNOWFLAKE.LOCAL.GET_AI_OBSERVABILITY_EVENTS(
      'データベース名',
      'スキーマ名',
      'エージェント名',
      'CORTEX AGENT'
    )
  )
  WHERE RECORD_ATTRIBUTES:"snow.ai.observability.agent.thread_id" IS NOT NULL
)
  SELECT
    TIMESTAMP AS feedback_timestamp,
    RECORD_ATTRIBUTES:"ai.observability.record_id"::STRING AS feedback_record_id,
    RECORD_ATTRIBUTES:"snow.ai.observability.agent.thread_id"::NUMBER AS thread_id,
    RECORD_ATTRIBUTES:"snow.ai.observability.user.name"::STRING AS feedback_user_name,
    VALUE:"positive"::BOOLEAN AS positive,
    VALUE:"feedback_message"::STRING AS feedback_message
  FROM base
  WHERE RECORD:name::STRING = 'CORTEX_AGENT_FEEDBACK';

フィードバックの取得例

READ UNREDACTED AI OBSERVABILITY EVENTS TABLEが不足するとフィードバック内容が表示されませんでした。

権限不足時-フィードバック

最後に

2026年4月24日から新しく追加されたアカウント権限のREAD UNREDACTED AI OBSERVABILITY EVENTS TABLEの紹介でした。
参考になりましたら幸いです。


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

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

Snowflakeの詳細を見る

この記事をシェアする

関連記事