配置 Kong AI 网关与 Cato AI 安全的集成

Prev Next

本文提供了关于将 Kong AI 网关与 Cato AI 安全集成,以监控和执行自定义代理策略的信息。

概览

Cato AI 安全允许您检查和执行流经现有 Kong AI 网关的 AI 流量的自定义代理策略。 无需分别配置每个应用,您可以将网关连接到 Cato 守卫,并对网关流量应用集中监控和策略执行。

本文介绍了如何配置 Kong AI 网关集成、映射自制代理,以及在交互浏览器中验证策略执行。

Prerequisites

开始前,请确保满足以下要求:

  • 应用程序许可证的 AI 安全
  • 管理员权限用于 AI 安全 > 守卫 和 AI 安全 > 守卫交互策略
  • Kong 消费者使用 Kong 密钥认证插件进行认证
  • 访问以创建并应用一个 decK kong.yaml 配置
  • Kong Konnect 个人访问令牌和控制平面名称。 从 Kong Konnect 的个人访问令牌页面
  • 部署 Kong AI 自定义护栏插件的权限
  • 通过 Kong AI 网关发送流量的测试应用或客户端
  • Kong 到 Cato AI 安全 API 端点的网络访问,用于您的 CMA 区域

配置工作流

集成包括以下阶段:

阶段 任务 结果
1 创建 AI 网关守卫 Cato 创建守卫并为 Kong 提供 API 密钥
2 配置 Kong Kong 将 AI 流量发至 Cato 进行检查
3 验证网关流量 Cato 在交互浏览器中显示来自守卫的流量
4 映射自制代理 Cato 将 Kong 消费者流量归因于自制代理

创建 AI 网关守卫

创建 AI 网关守卫以定义 Kong 流量的 Cato 执行点。

要创建守卫:

  1. 从导航菜单中选择AI安全 > 卫士。
  2. 点击新建。
  3. 在 守卫名称 中输入守卫的名称。 例如 Kong AI 网关。
  4. 在 类型 中选择 AI 网关。
  5. 在 AI 网关集成类型 中选择 Kong。
  6. 在 守卫的主机中,选择 Cato 云或适合您部署的前哨。
  7. 点击 保存。

保存守卫后,即可准备接收来自 Kong 的流量。 守卫不会执行规则,直到您配置策略规则。

配置 Kong AI 网关

使用守卫 API 密钥配置 Kong AI 自定义护栏插件。 该插件将 AI 流量发送至 Cato 进行检查,并在 Cato 返回阻止动作时拦截请求。

获取守卫连接详情

要获取守卫连接详情:

  1. 从导航菜单中选择AI安全 > 卫士。
  2. 选择 Kong AI 网关守卫。
  3. 选择 部署 选项卡。
  4. 复制其中一个 守卫 API 密钥。

每个守卫有两个 API 密钥。 轮换凭据时使用未使用的密钥,以避免中断流量检查。

配置 Kong AI 自定义护栏插件

插件使用以下设置:

字段 描述
guarding_mode 指定 Cato 检查的流量:INPUT、OUTPUT 或 BOTH
stop_on_error 如果为 true,则未能访问 Cato 时 Kong 会阻止流量。 设为 false 以便在 Cato 不可用时允许流量通过
api_key 认证 Kong 与 Cato 守卫对接
api_base 用于您的 CMA 区域的 Cato AI 安全 API 基本 URL

Cato 仅检查文本。 不检查图像内容。

要配置插件:

  1. 将以下配置保存为 kong.yaml。

    _format_version: "3.0"
    plugins:
    - name: ai-custom-guardrail
     config:
     guarding_mode: BOTH
     text_source: concatenate_all_content
     stop_on_error: true
     params:
     api_key: "${{ env \"DECK_CATO_API_KEY\" }}"
     api_base: "<CATO_AI_SECURITY_API_BASE_URL>"
     request:
     url: $(conf.params.api_base)/fw/v1/analyze
     headers:
     Authorization: Bearer $(conf.params.api_key)
     Content-Type: application/json
     x-cato-gateway-key-alias: "$(get_key_alias)"
     body:
     messages: "$(build_messages)"
     response:
     block: "$(check_response.block)"
     block_message: "$(check_response.block_message)"
     ssl_verify: true
     functions:
     get_key_alias: |
     return function()
     local c = kong.client.get_consumer()
     return (c and (c.username or c.id)) or ""
     end
     check_response: |
     return function(resp)
     local ra = resp and resp.required_action
     local block = type(ra) == "table" and ra.action_type == "block_action"
     local reason
     if block then
     reason = ra.detection_message or "Blocked by Cato Networks guardrail"
     else
     reason = "Allowed by Cato Networks guardrail"
     end
     return {
     block = block,
     block_message = reason,
     }
     end
     build_messages: |
     return function(content, source)
     if source == "OUTPUT" then
     return { { role = "assistant", content = content } }
     end
     local body = kong.request.get_body()
     if body and body.messages then
     return body.messages
     end
     return { { role = "user", content = content } }
     end
    
  2. 将 <CATO_AI_SECURITY_API_BASE_URL> 替换为您 CMA 区域的 Cato AI 安全 API 基本 URL。

  3. 将 Kong Konnect 和 Cato 凭据设置为环境变量:

    export KONNECT_TOKEN=<your-kong-konnect-personal-access-token>
    export DECK_KONNECT_TOKEN=$KONNECT_TOKEN
    export DECK_KONNECT_CONTROL_PLANE_NAME=<your-control-plane-name>
    export DECK_KONNECT_CONTROL_PLANE_REGION=<region>.api.konghq.com
    export DECK_CATO_API_KEY=<guard-api-key>
    
  4. 将配置应用到 Kong 控制平面:

    deck gateway sync kong.yaml
    

安全存储守卫 API 密钥。 使用环境变量或密钥管理器,并且不要将密钥提交到源代码控制。

Kong 集成行为

  • 在响应端,Kong 只向自定义护栏插件暴露助手回复文本。 工具调用不会实时暴露,因此 Cato 无法在执行前检查或拦截它们。 Cato 在后续请求中接收它们以便监控。
  • 默认情况下集成失败关闭。 当 Cato 不可达时,Kong 会阻止流量。 将 stop_on_error 设置为 false,使用失效打开行为,当可用性比严格执行更重要时。
  • Kong 不支持使用自定义护栏插件检查服务器发送事件 (SSE)。 当 LLM 响应流时,Cato 仅能检查用户消息和工具响应。
  • 集成支持 OpenAI Chat Completions API 格式。

在 Cato 中验证网关流量

使用交互浏览器确认 Kong 流量是否到达 Cato。

要验证网关流量:

  1. 通过 Kong AI 网关从应用程序发送测试提示。
  2. 从导航菜单中选择 AI 安全 > 交互浏览器。
  3. 从 守卫 列表中,按您的 Kong AI 网关守卫进行筛选。
  4. 确认测试会话出现在表格中。

在您映射自制代理之前,自制代理 列显示流量的破折号 (-)。 这是预期的。

将自制代理映射至守卫

将每个自制代理映射到 Kong 消费者名称中它认证时使用的。 Cato 通过这些映射将 Kong 流量归因于正确的自制代理。

要映射自制代理:

  1. 在 Kong 中识别自制代理的消费者用户名。
  2. 从导航菜单中选择AI安全 > 卫士。
  3. 选择 Kong AI 网关守卫。
  4. 选择 配置 选项卡。
  5. 在 映射的自制代理 下,从 选择一个自制代理进行映射 列表中选择一个代理。
  6. 在 Kong 消费者名称 中,输入步骤1中的消费者用户名。
  7. 点击 保存。

该映射显示在 映射的自制代理 表中。 要删除它,请点击该行中的删除图标。

验证代理归因

确认 Cato 将流量归因于映射的自制代理。

要验证代理归因:

  1. 使用映射的消费者通过 Kong 发送一个测试请求。
  2. 从导航菜单中选择 AI 安全 > 交互浏览器。
  3. 按映射的 自制代理 筛选视图。
  4. 确认 自制代理 列显示映射的代理。

当映射正确时,交互浏览器显示自制代理名称,而不是破折号。