概况
Cato AI 安全性记录了用户在 GenAI 应用程序中的活动,以及家用代理上传到其调用的模型的请求。 事件在 Cato 管理应用程序 (CMA) 的主页 > 事件页面上可见,并可转发到 SIEM、数据湖或其他外部平台进行保留、关联和警报。
事件仅携带元数据。 与模型交换的提示和响应不会存储在事件中。 该内容由持有所需权限的API密钥的调用者按需从Cato的GraphQL API中单独检索。
因此,调查AI安全发现是一个两步工作流程:
将事件转发到您的SIEM。 配置一个事件集成,过滤到AI安全事件类型,以便AI安全事件与您其他的Cato遥测数据一起到达。
使用API提取符合条件的事件的敏感内容。 当某个事件需要调查时,使用事件携带的标识符查询API以检索提示和模型响应。
注意:可以在CMA中直接查看AI安全交互,包括敏感提示和响应,而无需使用API。 AI安全适用于应用程序>交互探查器列出您自制代理的调用,AI安全适用于用户>会话探查器列出带有GenAI应用程序的用户会话。 两者都允许您深入查看单个记录。 该API适用于从您的SIEM中开始的调查以及编程的检索。
Cato事件
所有AI安全事件都携带事件类型AI安全。 事件子类型标识了AI安全生成事件的哪个部分,并确定事件携带哪些字段以及API查询返回的内容。 Cato事件模式。提供交互式事件模式浏览器。
CMA模块 | 事件子类型 | 说明 |
|---|---|---|
用户的AI安全 | AI用户交互 | 由用户与GenAI应用程序的活动生成。 |
应用程序的AI安全 | 应用程序运行时保护 | 当保护您自制代理的Guard策略对交互执行操作时生成。 |
AI用户交互字段
字段 | 类型 | 说明 |
|---|---|---|
账户ID / 账户名称 | 长/关键词 | Cato账户标识符和显示名称。 |
ad_name / user_id / user_name | 关键词 / long / 关键词 | Cato用户及其Active Directory显示名称。 |
vpn_user_email | 关键词 | 用户的电子邮件地址。 这是当调查从电子邮件地址开始时要过滤的字段。 |
应用程序_id / 应用程序_名称 | 关键词 | 例如,GenAI应用程序,microsoft_copilot / Microsoft Copilot。 |
应用程序类型 / 类别 | 关键词 | 应用程序分类,例如类型System和类别生成式AI工具。 |
ai_app_risk_level / 应用程序风险 | 关键词 / 整数 | Cato对应用程序的风险评级,作为标签和数值得分。 |
is_cloud_app / is_sanctioned_app | 布尔值 | 无论该应用程序是否是云托管的,以及是否得到该账户的批准。 |
app_activity_type | 关键词 | 事件所代表的活动。 可能的值:Web请求、提示、检测、LLM响应、文件事务、合作响应。 |
rule_id / rule_name | 关键词 | 匹配的策略规则,其位置一个触发。 独立于app_activity_type且不专属于任何一个值。 |
事件ID | 关键词 | 唯一事件标识符。 |
时间 / time_str | 日期 (epoch 毫秒) / 日期 (ISO-8601) | 交互发生的时间,以两种形式。 |
session_id / message_id | 关键词 | 传递给sessionConversation查询的应用程序_id。 message_id将提示事件与其对应的检测和LLM响应事件配对。 |
调用_id | 关键词 | 在单独的标识符命名空间中,将与message_id相同的事件集配对,而不被任何内容查询使用。 |
交互意图 | 关键词 | 提示背后的分类目的,例如获取信息。 |
交互主题 / 交互子主题 | 关键词 | 分类主题,例如,合法/数据隐私。 |
网址 / 引用_url | 关键词 | 页面网址和引用页面网址(如适用) |
file_name | 关键词 | 传输文件的名称。 仅在 app_activity_type 为 File Transaction 时存在。 |
engagement_outcome_action | 关键词 | 用户响应互动策略提示后采取的行动。 |
user_justification | 关键词 | 用户对互动策略提示的响应, |
event_count | 整数 | 记录代表发生的次数。 |
cato_app | 关键词 | Cato 应用程序的标识符,例如 chatgpt。 |
注意: 并非每个事件都具有可检索内容。 session_id 和 message_id 仅在 app_activity_type 是 Prompt、Detection 或 LLM Response 的事件中出现。 Web 请求和文件交易事件不携带它们。
应用程序运行时保护字段
字段 | 说明 |
|---|---|
event_type / event_sub_type | 始终应用 AI 安全性 / 应用程序运行时保护来保护这些事件。 使用这些值在集成或事件页面中进行筛选。 |
event_id / 事件计数 | 唯一事件标识符和记录代表的发生次数。 |
time / time_str | 互动被拦截的时间,作为毫秒的纪元时间戳和 ISO-8601 UTC 字符串。 |
account_id / account_name | Cato 账户标识符和显示名称。 account_id 是传递为 accountId 给定 API 查询的值。 |
guard_id / guard_name | 保护应用程序并做出决定的守护。 |
rule_id / rule_name | 匹配的特定守护策略规则。 |
操作 | 执行结果,例如匿名化、阻止或监控。 |
detectors | 为此次交互启动的探测器,作为一个数组——例如,一个 PII 探测器。 |
application_id | Guard 保护的自制代理。 |
invocation_id | 调查的关键。 识别特定互动的标识符,并作为传递给调用查询的值,以检索提示和响应。 |
session_id | 分组为同一会话的调用。 |
cato_app / is_cloud_app / is_sanctioned_app | 出现在事件中,但与应用安全性调查无关。 |
术语。 CMA 所称为自制代理的内容在事件中被视为应用程序。 application_id 字段标识 Guard 正在保护的自制代理。
将事件发送到 SIEM
事件集成会自动将 Cato 事件数据转发到外部平台和存储目的地,无需手动导出或连续轮询。 在 CMA 中,在 资源> 集成> 已配置的集成中配置集成。 有关概述,请访问事件集成入门。
如果本地集成不可用,可以使用自定义 HTTP 推送集成以 JSON 格式将事件推送到您选择的目的地。 可以配置自定义标头,使其与多种供应商兼容。 有关更多信息,请参阅使用自定义 HTTP 推送集成发送数据。
AI 安全事件筛选
无论您选择哪种集成,都将其范围限定为 AI 安全事件,而不是转发账户的完整事件量。 这在 事件过滤器中完成,使用一个或多个过滤器组构建:组内条件与 AND 结合,组与 OR 结合,因此事件如果匹配任何一个组就会被转发。 任何事件字段都可作为条件使用。
向事件过滤器添加一个过滤器组。 在集成配置中,打开事件过滤器并添加一个过滤器组。
设置事件类型条件。 字段事件类型,值为AI 安全性。 这将组限定为所有子类型的 AI 安全事件。

(可选)设置子类型条件。 字段子类型,其值为 AI 用户互动和应用程序运行时保护,或者仅为此次集成所需的值。 由于这两个条件在同一个组中,它们与 AND 结合,因此只有所选子类型的 AI 安全事件会被转发。

(可选)分别路由这两种子类型。 一个包含这两个值的单组会将这两种子类型发送到同一个目的地。 要将它们发送到不同的目的地,配置两个事件集成,分别设置一个组的范围为每个子类型。
进一步缩小范围,如有需要。 可以在同一组中添加额外的条件以减少体积。 例如,可以添加一个守护名称过滤器,仅转发与特定守护匹配的应用程序运行时保护事件。

使用 API 提取敏感内容
AI 安全事件故意排除互动的内容:它们不包含提示、模型响应或与模型交换的原始消息数据。 这些内容随需而从 Cato 的 GraphQL API 中检索,并且仅能由拥有所需权限的 API 密钥调用者提取。 提供了两个查询,每个事件子类型一个。
API 密钥和权限
通过在 CMA 中生成的 Cato API 密钥对查询进行身份验证。 有关如何创建 API 密钥的详细信息,请参阅生成 Cato API 的 API 密钥。
访问互动内容是通过密钥上的 RBAC 权限控制的:
访问 | 权限 |
|---|---|
AI 用户互动上的敏感内容 | AI 安全性 > 用户 AI 安全性 > 读取敏感内容 |
应用程序运行时保护上的敏感内容 | AI 安全性 > 应用安全性 > 读取敏感内容 |
API 端点和架构
API 端点和架构的 URL 是根据托管您的 CMA 实例的位置特定的。 您的 CMA 账户以及 API 端点和架构的 URL 可能会追加一个 <prefix> 值。
资源 | URL 格式 |
|---|---|
API 端点 | https://api.<prefix>.catonetworks.com/api/v1/graphql2 |
API 架构 | https://api.<prefix>.catonetworks.com/api/schema |
不同 CMA 区域的前缀
CMA 区域 | CMA URL | 前缀 | API 端点 |
爱尔兰 | cc.catonetworks.com | 无 | https://api.catonetworks.com/api/v1/graphql2 |
美国 - 弗吉尼亚 | cc.us1.catonetworks.com | us1 | https://api.us1.catonetworks.com/api/v1/graphql2 |
印度 | cc.in1.catonetworks.com | in1 | https://api.in1.catonetworks.com/api/v1/graphql2 |
日本 | cc.jp1.catonetworks.com | jp1 | https://api.jp1.catonetworks.com/api/v1/graphql2 |
从您的 CMA 账户的 URL 中识别前缀,并在每个请求中使用相应的端点。 有关更多信息,请参阅什么是Cato API。
在 GraphQL Playground 中运行查询
GraphQL Playground 通过浏览器直接对 Cato API 运行查询,这对于临时调查和在编写查询脚本前确认连接性很有用。 有关说明,请参阅从 GraphQL Playground 连接到 Cato API。
AI 用户互动
检索 AI 用户互动事件背后的用户提示和模型响应。 CMA 中可以在 用户 AI 安全性 > 会话浏览器下看到相同的对话。
与策略中配置的探测器匹配的 AI 用户互动在 app_activity_type 字段中包含Detection。 这些事件对于安全调查最为相关。
请求字段
变量 | 类型 | 来源 |
|---|---|---|
accountId | ID! | 事件的 account_id。 |
会话ID | ID! | 事件的 session_id。 |
消息ID | ID! | 事件的 message_id。 识别会话中的单个提示。 |
appId | ID! | 事件的 application_id。 |
userId | ID | 事件的 user_id。 可选。 |
GraphQL
查询 SessionConversation(
$accountId: ID!
$sessionId: ID!
$messageId: ID!
$appId: ID!
) {
aiSecurity(accountId: $accountId) {
endUsers {
sessionConversation(
input: { sessionId: $sessionId, messageId: $messageId, appId: $appId }
) {
userPrompt
llmResponse
}
}
}
}变量:
{
"accountId": "",
"sessionId": "<从事件中获取的 session_id="">",
"messageId": "<从事件中获取的 message_id="">",
"appId": "<从事件中获取的 application_id="">"
} Curl
curl -s -X POST https://api..catonetworks.com/api/v1/graphql2 \
-H "x-api-key: $CATO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"query": "query SessionConversation($accountId: ID!, $sessionId: ID!, $messageId: ID!, $appId: ID!) { aiSecurity(accountId: $accountId) { endUsers { sessionConversation(input: {sessionId: $sessionId, messageId: $messageId, appId: $appId}) { userPrompt llmResponse } } } }",
"variables": {
"accountId": "<ACCOUNT_ID>",
"sessionId": "<session_id from the event>",
"messageId": "<message_id from the event>",
"appId": "<application_id from the event>"
}
}' | jq . Python
导入json,urllib.request
API_KEY = "<API_KEY>"
QUERY = """
query SessionConversation($accountId: ID!, $sessionId: ID!, $messageId: ID!, $appId: ID!) {
aiSecurity(accountId: $accountId) {
endUsers {
sessionConversation(input: {sessionId: $sessionId, messageId: $messageId, appId: $appId}) {
userPrompt
llmResponse
}
}
}
}
"""
payload = json.dumps({"query": QUERY, "variables": {
"accountId": "<ACCOUNT_ID>",
"sessionId": "<session_id from event>",
"messageId": "<message_id from event>",
"appId": "<application_id from event>",
}}).encode("utf-8")
req = urllib.request.Request(
"https://api.<prefix>.catonetworks.com/api/v1/graphql2",
data=payload,
headers={"x-api-key": API_KEY, "Content-Type": "application/json"},
方法="POST",
)
使用urllib.request.urlopen(req, 超时=30)作为resp:
print(json.dumps(json.load(resp), 缩进=2)) 响应字段
路径 | 威胁类型 | 说明 |
|---|---|---|
userPrompt | 字符串 | 用户发送给GenAI应用程序的文本。 |
llmResponse | 字符串 | 应用程序的响应文本。 |
示例响应
{
"data": {
"aiSecurity": {
"endUsers": {
"sessionConversation": {
"userPrompt": "<user prompt>",
"llmResponse": “<llm response or null>”
}
}
}
}
}应用程序运行时保护
检索应用程序运行时保护事件背后的调用元数据和原始聊天消息。 可以在CMA的 应用程序的AI安全性 > 互动浏览器中找到这些调用。
请求字段
变量 | 类型 | 来源 |
|---|---|---|
accountId | ID! | 事件的account_id。 |
id | ID! | 事件的invocation_id。 标识特定的交互。 |
GraphQL
query GetInvocation($accountId: ID!, $id: ID!) {
aiSecurity(accountId: $accountId) {
apps {
invocation(input: { id: $id }) {
id
sessionId
timestamp
tokenCount
guard {
id
name
}
action
data {
message {
role
content {
text
}
}
}
}
}
}
}变量:
{
"accountId": "<ACCOUNT_ID>",
"id": "<invocation_id from the event>"
}Curl
curl -s -X POST https://api.<prefix>.catonetworks.com/api/v1/graphql2 \
-H "x-api-key: <CATO_API_KEY>” \
-H "Content-Type: application/json" \
-d '{
"query": "query GetInvocation($accountId: ID!, $id: ID!) { aiSecurity(accountId: $accountId) { apps { invocation(input: {id: $id}) { id sessionId timestamp tokenCount guard { id name } action data { message { role content { text } } } } } } }",
"variables": {
"accountId": "<ACCOUNT_ID>",
"id": "<invocation_id from the event>"
}
}' | jq .Python
导入json,urllib.request
API_KEY = "<CATO_API_KEY>"
QUERY = """
query获取调用($accountId: ID!, $id: ID!) {
aiSecurity(accountId: $accountId) {
apps {
调用(input: {id: $id}) {
id
sessionId
timestamp
tokenCount
guard {id name}
操作
数据 { message {role content {text}} }
}
}
}
}
"""
payload = json.dumps({"query": QUERY, "variables": {
"accountId": "<ACCOUNT_ID>",
"id": "<invocation_id from the event>",
}}).encode("utf-8")
req = urllib.request.Request(
"https://api.<prefix>.catonetworks.com/api/v1/graphql2",
data=payload,
headers={"x-api-key": API_KEY, "Content-Type": "application/json"},
方法="POST",
)
使用urllib.request.urlopen(req, 超时=30)作为resp:
print(json.dumps(json.load(resp), 缩进=2)) 响应字段
路径 | 威胁类型 | 说明 |
|---|---|---|
invocation.id | ID! | 全局唯一的调用ID。 |
.会话ID | ID | 来自相同对话会话的调用的分组。 如果未跟踪,则为null。 |
.时间戳 | DateTime! | 调用被拦截时的UTC时间。 |
.tokenCount | Int! | 调用(提示和完成)的令牌总数。 |
.guard.id / .guard.name | ID! / String! | 接收调用的守护。 如果调用未与Guard关联,则Guard对象可能为null。 |
.操作 | Enum! | 执行结果作为大写的API值:BLOCK, ANONYMIZE, MONITOR, 或 NONE。 事件以不同的大小写显示这些值,例如,Anonymize。 |
.data.message[] | [InvocationMessage!]! | 原始聊天消息。 每个都有一个角色(USER, ASSISTANT, TOOL_CALL, TOOL_MESSAGE 或一个自定义角色)和content[](每个都有一个文本字段)。 这些是隐藏在读取敏感内容权限后面的敏感数据。 |
示例响应
{
"data": {
"aiSecurity": {
"apps": {
"invocation": {
"id": "01a00ada-c424-700b-9898-ed1ea05a82fb",
"sessionId": "8cf9384d-9a45-4d01-aeff-c3eb31164599",
"timestamp": "2026-08-16T13:55:04.392Z",
"tokenCount": 30,
"guard": {
"id": "d3918cad-ffab-408d-b079-bfecd4842ed1",
"name": "<guard_name>"
},
"action": "BLOCK",
"data": {
"message": [
{
"role": "user",
"content": [
{
"text": "<user prompt>”
}
]
}
]
}
}
}
}
}
}附录:示例事件和API调用
示例事件及其API调用内容检索,包括所有事件子类别。
用户的AI安全
示例事件
[
{
"account_id": <account_id>,
"account_name": "<account_name>",
"ad_name": "<ad_name>",
"ai_app_risk_level": "Medium",
"app_activity_type": "Prompt",
"application_id": "microsoft_copilot",
"application_name": "Microsoft Copilot",
"application_risk": 5,
"application_type": "System",
"categories": [
"Generative AI Tools"
],
"cato_app": "microsoft_copilot",
"event_count": 1,
"event_id": "7c41ae90b2d5f318",
"event_sub_type": "AI User Interaction",
"event_type": "AI Security",
"interaction_intent": "getting information",
"interaction_sub_topic": "data privacy",
"interaction_topic": "legal",
"invocation_id": "01a01f70-9b12-74ac-8f31-2b6ce0d41aa7",
"is_cloud_app": true,
"is_sanctioned_app": true,
"message_id": "6f2b1c48-55d7-4a9e-9c10-8ab3f7e2d114",
"session_id": "b71f9c02-3ad4-4e8b-90c6-1f5d8e7a4c33",
"time": 1787233820104,
"time_str": "2026-08-20T13:50:20Z",
"url": "https://copilot.microsoft.com/chats",
"user_id": <user_id>,
"user_name": "<user_name>",
"vpn_user_email": "<user_email>"
},
{
"account_id": <account_id>,
"account_name": "<account_name>",
"app_activity_type": "Detection",
"application_id": "microsoft_copilot",
"application_name": "Microsoft Copilot",
"event_count": 1,
"event_id": "b0d3572ea9146fc7",
"event_sub_type": "AI User Interaction",
"event_type": "AI Security",
"invocation_id": "01a01f70-9b12-74ac-8f31-2b6ce0d41aa7",
"message_id": "6f2b1c48-55d7-4a9e-9c10-8ab3f7e2d114",
"rule_id": "1296751412582697861",
"rule_name": "<rule_name>",
"session_id": "b71f9c02-3ad4-4e8b-90c6-1f5d8e7a4c33",
"time": 1787233820331,
"time_str": "2026-08-20T13:50:20Z",
"user_id": <user_id>,
"user_name": "<user_name>",
"vpn_user_email": "<user_email>"
}
]API调用
curl -s -X POST https://api.catonetworks.com/api/v1/graphql2 \
-H "x-api-key: <api_key>" \
-H "Content-Type: application/json" \
-d '{
"query": "query SessionConversation($accountId: ID!, $sessionId: ID!, $messageId: ID!, $appId: ID!) { aiSecurity(accountId: $accountId) { endUsers { sessionConversation(input: {sessionId: $sessionId, messageId: $messageId, appId: $appId}) { userPrompt llmResponse } } } }",
"variables": {
"accountId": "<account_id>",
"sessionId": "b71f9c02-3ad4-4e8b-90c6-1f5d8e7a4c33",
"messageId": "6f2b1c48-55d7-4a9e-9c10-8ab3f7e2d114",
"appId": "microsoft_copilot"
}
}' | jq .API响应
{
"data": {
"aiSecurity": {
"endUsers": {
"sessionConversation": {
"userPrompt": "<user_prompt>",
"llmResponse": "<llm_response>"
}
}
}
}
}AI安全性为了应用程序
示例事件
[
{
"account_id": <account_id>,
"account_name": "<account_name>",
"action": "Block",
"detectors": [
"SIMPLE_DETECTOR_TYPE_SAFETY_CONTROLS_SAFETY"
],
"event_count": 1,
"event_id": "f98820262dfb8aa9",
"event_sub_type": "应用程序运行时保护",
"event_type": "AI Security",
"guard_id": "d3918cad-ffab-408d-b079-bfecd4842ed1",
"guard_name": "<guard_name>",
"interaction_id": "01a01f71-c3e5-75be-a3cc-d77ec3b9277f",
"internalId": "f98820262dfb8aa9",
"internal_id": "f98820262dfb8aa9",
"invocation_id": "01a01f71-c3e5-75be-a3cc-d77ec3b9277f",
"is_sanctioned_app": false,
"rule_id": "1296751412582697861",
"rule_name": "<rule_name>",
"session_id": "d500d5a4-82cd-4f48-8d70-0ebfc590d605",
"time": 1787233944579,
"time_str": "2026-08-20T13:52:24Z"
},
{
"account_id": <account_id>,
"account_name": "<account_name>",
"action": "Block",
"detectors": [
"SIMPLE_DETECTOR_TYPE_SECURITY_CONTROLS_JAILBREAK",
"SIMPLE_DETECTOR_TYPE_SAFETY_CONTROLS_SAFETY"
],
"event_count": 1,
"event_id": "31156257bcf2d54c",
"event_sub_type": "应用程序运行时保护",
"event_type": "AI Security",
"guard_id": "d3918cad-ffab-408d-b079-bfecd4842ed1",
"guard_name": "<guard_name>",
"interaction_id": "01a01f72-38ce-782f-96c5-5ca071ac9792",
"internalId": "31156257bcf2d54c",
"internal_id": "31156257bcf2d54c",
"invocation_id": "01a01f72-38ce-782f-96c5-5ca071ac9792",
"is_sanctioned_app": false,
"rule_id": "1296751412582697861",
"rule_name": "<rule_name>",
"session_id": "d500d5a4-82cd-4f48-8d70-0ebfc590d605",
"time": 1787233974486,
"time_str": "2026-08-20T13:52:54Z"
}
]API调用
curl -s -X POST https://api.catonetworks.com/api/v1/graphql2 \
-H "x-api-key: <api_key>" \
-H "Content-Type: application/json" \
-d '{
"query": "query GetInvocation($accountId: ID!, $id: ID!) { aiSecurity(accountId: $accountId) { apps { invocation(input: {id: $id}) { id sessionId timestamp tokenCount guard { id name } action data { message { role content { text } } } } } } }",
"variables": {
"accountId": "<account_id>",
"id": "01a01f72-38ce-782f-96c5-5ca071ac9792"
}
}' | jq .API响应
{
"data": {
"aiSecurity": {
"apps": {
"invocation": {
"id": "01a01f72-38ce-782f-96c5-5ca071ac9792",
"sessionId": "d500d5a4-82cd-4f48-8d70-0ebfc590d605",
"timestamp": "2026-08-20T13:52:54.486Z",
"tokenCount": 38,
"guard": {
"id": "d3918cad-ffab-408d-b079-bfecd4842ed1",
"name": "\u003Cguard_name\u003E"
},
"action": "BLOCK",
"data": {
"message": [
{
"role": "user",
"content": [
{
"text": "\u003Cuser_prompt\u003E"
}
]
}
]
}
}
}
}
}
}