更新时间:2026-10-10 GMT+08:00
分享

记忆库入站身份认证

记忆库作为智能体记忆数据的托管存储服务,为保障数据安全,记忆库需要对每一个到达数据面的请求进行身份验证,确保请求来自可信的调用方,并根据调用方身份进行授权控制。

支持的认证方式

记忆库支持以下两种入站身份认证方式,在创建记忆库时二选一:

认证方式

认证凭据

鉴权能力

适用用户

IAM 认证

IAM临时凭证(AK/SK签名认证)

提供细粒度鉴权能力,支持actor级和session级数据隔离

企业级用户

API Key 认证

API Key 字符串

仅提供身份认证能力(无鉴权)

个人用户、快速验证场景

IAM认证

IAM认证将华为云IAM身份配置为入站身份认证,通过IAM临时凭证(AK/SK)验证调用者身份。IAM认证不仅提供身份验证能力,还支持通过IAM策略进行细粒度鉴权,实现数据级隔离控制。

使用IAM认证方式访问记忆库数据面接口时,调用方需携带IAM签名信息(AK/SK 签名认证):

POST /v1/spaces/{space_id}/memories HTTP/1.1
Host: memory.cn-southwest-2.huaweicloud-agentarts.com
Content-Type: application/json
X-Sdk-Date: 20260909T033655Z
Authorization: V11-HMAC-SHA256 Access={AK}, SignedHeaders=content-type;host;x-sdk-date, Signature=...
X-Security-Token: {SecurityToken}

{"content": "用户偏好信息"}

V11-HMAC-SHA256签名规范

记忆库采用华为云API网关的V11-HMAC-SHA256签名算法,与标准IAM签名有以下关键差异:

表1 签名算法说明

特性

说明

密钥派生机制(HKDF)

结合AK + SK + 请求日期 + 区域(例如:cn-southwest-2)+ 服务(agentarts)动态派生加密密钥,安全性高于普通签名算法。

Body 不参与签名

由于智能体交互的请求Body可能包含较长文本,约定在请求头中设置X-Sdk-Content-Sha256: UNSIGNED-PAYLOAD,通知网关跳过Body哈希计算,提升性能。

时间戳防重放

请求头必须包含X-Sdk-Date(ISO 8601 UTC格式),网关校验与当前时间偏差需小于15分钟,防止请求被重放攻击。

签名器初始化代码示例:

from apig_sdk import signer

sig = signer.Signer(
    algorithm="V11-HMAC-SHA256",   # 必须指定 V11 版本
    region_id="cn-southwest-2"     # 区域id,贵阳一区域则填写为"cn-southwest-2"
)
sig.Key = os.getenv("HUAWEICLOUD_SDK_AK")
sig.Secret = os.getenv("HUAWEICLOUD_SDK_SK")

构造签名请求的代码示例:

import os
import json
import requests
from apig_sdk import signer

API_URL = "https://memory.cn-southwest-2.huaweicloud-agentarts.com/v1/spaces/{space_id}/memories"
REGION_ID = "cn-southwest-2"

def build_signed_request(sig, api_url, payload):
    method = "POST"
    body = json.dumps(payload, ensure_ascii=False)

    headers = {
        "Content-Type": "application/json",
        "X-Sdk-Content-Sha256": "UNSIGNED-PAYLOAD",   # Body 免签名
    }

    req = signer.HttpRequest(method, api_url, headers, body)
    sig.Sign(req)   # 自动填充 X-Sdk-Date 和 Authorization
    return req

# 初始化 V11 签名器
sig = signer.Signer(algorithm="V11-HMAC-SHA256", region_id=REGION_ID)
sig.Key = os.getenv("HUAWEICLOUD_SDK_AK")
sig.Secret = os.getenv("HUAWEICLOUD_SDK_SK")

# 构造并发送签名请求
payload = {"content": "用户偏好信息"}
req = build_signed_request(sig, API_URL, payload)

resp = requests.request(
    method=req.method,
    url=f"{req.scheme}://{req.host}{req.uri}",
    headers=req.headers,
    data=req.body,
    timeout=(5, 60)
)
  • 使用V11签名前,需先从签名指南文档下载Python SDK(apig_sdk包),其中signer.py为核心签名逻辑。
    1. 文档中下载Python SDK,并在本地解压。签名指南文档中的其他内容本案例中可不用关注。
      图1 获取SDK
    2. 解压后的文件目录结构如下:
      ApiGateway-python-sdk/              ← 根目录(解压出来的文件夹)
      │
      ├── apig_sdk/                       ← 【核心签名库,不要动!】
      │   ├── __init__.py                 ← 包的入口标识文件
      │   └── signer.py                   ← 签名核心代码(所有签名逻辑都在这里)
      │
      ├── main.py                         ← 【您要改的文件】调用示例
      │
      └── licenses/                       ← 开源许可证文件夹(不用管)
          └── license-requests            ← requests库的许可证说明
      图2 目录结构
  • AK/SK可通过控制台“我的凭证>访问密钥”获取,并配置环境变量HUAWEICLOUD_SDK_AK和HUAWEICLOUD_SDK_SK。
    1. 在Python SDK所在文件夹的地址栏输入cmd打开命令窗口后,执行以下命令设置临时环境变量。
      set HUAWEICLOUD_SDK_AK=您的Access Key
      set HUAWEICLOUD_SDK_SK=您的Secret Key
    2. 通过以下命令检查环境变量是否生效。
      echo %HUAWEICLOUD_SDK_AK%
      echo %HUAWEICLOUD_SDK_SK%

API Key认证

API Key认证是一种轻量级的认证方式。调用方在请求头中携带API Key字符串即可完成身份认证。关于API KEY的获取请参考如何获取记忆库ID和API Key。

请求格式:

POST /v1/spaces/{space_id}/memories HTTP/1.1
Host: memory.cn-southwest-2.huaweicloud-agentarts.com
Content-Type: application/json
Authorization: Bearer {您的API Key}

{"content": "用户偏好信息"}

认证方式升级

记忆库支持从API Key认证单向升级为IAM认证,升级后原有API Key将在宽限期结束后失效。

升级规则

  • 单向升级:仅支持从API Key认证升级为IAM认证,升级后不可修改。
  • 宽限期结束:若未开启立即失效,7天宽限期结束后API Key自动失效,所有请求需通过IAM认证访问。
  • 升级后不可逆:认证方式升级为 IAM后,不支持切换回API Key认证。

升级后请及时更新相关SDK和接口的认证参数,否则会导致调用失败及数据接口认证失败。

升级操作

  1. 登录AgentArts智能体平台。
  2. 在左侧导航栏选择“托管与运行 > 记忆库”,进入记忆库界面。
  3. 单击记忆库名称,进入基本信息页面。
  4. 在“入站身份认证”区域,当前显示为“API Key”,单击右侧的编辑图标。

    图3 升级为IAM认证

  5. 在弹出的“升级为IAM认证”对话框中,配置“API Key 立即失效”开关。

    • 开启:原API Key在升级完成时立即失效。
    • 关闭(默认):API Key认证将在7天后自动失效,宽限期内API Key仍可正常使用,但如果调用了重置API接口则API Key会立刻失效。

  6. 在确认输入框中输入“CONFIRM”(可单击“一键输入”快速填入),然后单击“确定”。

    • 如果未开启“API Key 立即失效”,请务必在7天宽限期内将所有调用方切换为IAM认证方式,宽限期结束后API Key将自动失效。
    • 升级后认证方式不可修改,请确认后再进行操作。

相关文档