配置访问权限

更新时间: 2026-06-24 16:14:45

知识存储服务和记忆存储服务支持通过 RAM Policy,从接口(Action)和资源(Resource)两个维度对访问进行精细化控制,授权粒度可精细到知识库子空间或记忆范围(scope),满足多业务、多团队、多租户场景下的访问隔离需求。

适用范围

本文描述的鉴权规则适用于以下两类 API。

  • 知识存储相关 API:管理知识存储、文档(Document)、切片(Chunk),以及知识检索(Retrieve)。

  • 记忆存储相关 API:管理记忆存储、记忆(Memory)、记忆消息与请求、记忆任务(Task)以及 Dream 任务(Dream Task)等。

授权语法和元素

RAM PolicyEffectActionResourceCondition 四个元素组成,通用语法详见授权语法与元素,本文仅介绍知识存储与记忆存储相关的差异部分,即 Action 的取值范围与 Resource 的资源 ARN 格式。

接口(Action)

Action 格式为 ots:<API 名称>,支持通配符 *,例如 ots:*KnowledgeBase 匹配全部知识存储管理操作,ots:*Memory* 匹配全部记忆相关操作。下表按功能分组列出全部可授权接口。

知识存储

功能分组

Action

知识存储管理

ots:CreateKnowledgeBaseots:DescribeKnowledgeBaseots:UpdateKnowledgeBaseots:ListKnowledgeBaseots:DeleteKnowledgeBase

文档管理

ots:AddDocumentsots:GetDocumentots:ListDocumentsots:UpdateDocumentots:DeleteDocuments

切片管理

ots:ListChunksots:UpdateChunks

检索

ots:Retrieve

记忆存储

功能分组

Action

记忆存储管理

ots:CreateMemoryStoreots:GetMemoryStoreots:UpdateMemoryStoreots:ListMemoryStoresots:DeleteMemoryStore

记忆管理

ots:AddMemoriesots:SearchMemoriesots:ListMemoriesots:GetMemoryots:UpdateMemoryots:DeleteMemory

消息与请求

ots:ListMemoryStoreMessagesots:ListMemoryStoreRequestsots:ListMemoryStoreScopes

记忆任务

ots:GetMemoryTaskots:ListMemoryTasks

Dream 任务

ots:CreateMemoryDreamTaskots:GetMemoryDreamTaskots:ListMemoryDreamTasksots:CancelMemoryDreamTaskots:ApplyMemoryDreamActionsots:ListMemoryDreamActions

资源(Resource)

所有资源 ARN 均以实例为前缀,整体结构如下。

acs:ots:$region:$accountId:instance/$instanceName/<资源路径>

占位符

说明

$region

实例所在地域 ID,例如 cn-hangzhou。使用 * 表示放开全部地域。

$accountId

资源所属阿里云账号 ID(UID)。使用 * 表示放开全部账号。

$instanceName

实例名称。使用 * 表示放开实例下的全部资源。

<资源路径>

知识存储或记忆存储的资源路径,按下文规则拼接。

知识存储

知识存储资源支持三个授权层级,从粗到细如下。

授权层级

Resource 格式

匹配范围

实例级

acs:ots:$region:$accountId:instance/$instanceName/*

实例下的全部知识存储。ListKnowledgeBase 等不指定具体知识存储的操作匹配该层级。

知识存储级

acs:ots:$region:$accountId:instance/$instanceName/knowledgebase/$knowledgeBaseName

指定的单个知识存储,包含其下全部文档与切片。

子空间级

acs:ots:$region:$accountId:instance/$instanceName/knowledgebase/$knowledgeBaseName/subspace/$subspace

指定知识存储下的单个子空间(subspace)。

资源关键字 knowledgebasesubspace 为固定值;$knowledgeBaseName$subspace 取自请求中的同名字段。鉴权层级按以下规则确定:

  • 请求未携带 knowledgeBaseName(典型如列举类操作)时,按实例级 .../instance/$instanceName/* 鉴权。

  • 请求携带单个 subspace 时按子空间级鉴权;一次请求涉及多个 subspace 时,回退到所属知识存储级 .../knowledgebase/$knowledgeBaseName 鉴权。

  • 如需放开某个知识存储下的全部子空间,使用通配符 .../knowledgebase/$knowledgeBaseName/subspace/*,或直接授权到知识存储级(其覆盖范围包含全部子空间)。

记忆存储

记忆存储资源支持三个授权层级,从粗到细如下。

授权层级

Resource 格式

匹配范围

实例级

acs:ots:$region:$accountId:instance/$instanceName/*

实例下的全部记忆存储。ListMemoryStores 等不指定具体记忆存储的操作匹配该层级。

记忆存储级

acs:ots:$region:$accountId:instance/$instanceName/memorystore/$memoryStoreName/*

指定记忆存储下的全部记忆。请求未携带 scope 时按该层级鉴权。

范围(scope)级

acs:ots:$region:$accountId:instance/$instanceName/memorystore/$memoryStoreName/appid/$appId/tenantid/$tenantId/agentid/$agentId/runid/$runId

指定记忆存储下、指定范围内的记忆。请求携带 scope 时按该层级鉴权。

资源关键字 memorystoreappidtenantidagentidrunid 为固定值;$memoryStoreName 取自请求中的同名字段,$appId$tenantId$agentId$runId 取自请求 scope 中的对应字段。请求未携带 memoryStoreName 时,按实例级 .../instance/$instanceName/* 鉴权。

范围(scope)默认值

请求携带 scope 但未指定其中某个字段时,该字段在鉴权资源中取默认值 __default__。例如请求 scope 仅指定 appId=app_a,鉴权资源拼接为:

acs:ots:$region:$accountId:instance/$instanceName/memorystore/$memoryStoreName/appid/app_a/tenantid/__default__/agentid/__default__/runid/__default__

在 RAM Policy 中放开某些范围维度时,必须使用通配符 *(如 .../agentid/*/runid/*)显式占位,不可省略对应层级,否则将匹配到 __default__ 而非全部值。

常见授权场景示例

以下示例统一以实例名 myinstance 为例,请将示例中的 $accountId 替换为实际账号 ID,并按业务实际情况调整地域、知识存储名、记忆存储名等占位符。

只读访问指定知识存储

以下策略允许对知识存储 product_docs_kb 进行检索与查询,禁止任何写操作。

{
  "Version": "1",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ots:DescribeKnowledgeBase",
        "ots:GetDocument",
        "ots:ListDocuments",
        "ots:ListChunks",
        "ots:Retrieve"
      ],
      "Resource": [
        "acs:ots:cn-hangzhou:$accountId:instance/myinstance/knowledgebase/product_docs_kb",
        "acs:ots:cn-hangzhou:$accountId:instance/myinstance/knowledgebase/product_docs_kb/subspace/*"
      ]
    }
  ]
}

按子空间隔离知识库写权限

以下策略允许对知识存储 product_docs_kb 的子空间 team_a 进行文档与切片的读写,其他子空间不受影响。

{
  "Version": "1",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ots:AddDocuments",
        "ots:GetDocument",
        "ots:ListDocuments",
        "ots:UpdateDocument",
        "ots:DeleteDocuments",
        "ots:ListChunks",
        "ots:UpdateChunks",
        "ots:Retrieve"
      ],
      "Resource": "acs:ots:cn-hangzhou:$accountId:instance/myinstance/knowledgebase/product_docs_kb/subspace/team_a"
    }
  ]
}

按应用维度隔离记忆访问

以下策略允许对记忆存储 agent_memappId=app_a 的全部记忆(不限 tenant、agent、run)进行读写,其他 appId 的记忆不可访问。

{
  "Version": "1",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ots:AddMemories",
        "ots:SearchMemories",
        "ots:ListMemories",
        "ots:GetMemory",
        "ots:UpdateMemory",
        "ots:DeleteMemory"
      ],
      "Resource": "acs:ots:cn-hangzhou:$accountId:instance/myinstance/memorystore/agent_mem/appid/app_a/tenantid/*/agentid/*/runid/*"
    }
  ]
}

未限定的 tenantidagentidrunid 必须用 * 显式放开,不可省略,原因见上文范围(scope)默认值说明。

实例内全权管理

以下策略允许对实例 myinstance 下所有相关资源执行全部操作。

{
  "Version": "1",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ots:*KnowledgeBase",
        "ots:*Document*",
        "ots:*Chunks",
        "ots:Retrieve",
        "ots:*Memory*"
      ],
      "Resource": "acs:ots:cn-hangzhou:$accountId:instance/myinstance/*"
    }
  ]
}

注意事项

  • 资源前缀始终为实例:资源 ARN 必须以 acs:ots:$region:$accountId:instance/$instanceName/ 开头,知识存储与记忆存储均不存在跨实例的资源形态。

  • 上级覆盖下级:上层资源天然覆盖其下子资源。授权到知识存储级即覆盖其下全部子空间,授权到记忆存储级 memorystore/$store/* 即覆盖其下全部范围。需要精细控制时,下钻到子空间级或范围级。

  • 主账号不受策略约束:以上策略仅作用于 RAM 用户与角色,主账号(Root)默认拥有自有资源的全部权限。

上一篇: API Key 管理 下一篇: 命令行工具
阿里云首页 表格存储 相关技术圈