O Knowledge Storage e o Memory Storage do AgentStorage oferecem suporte a controle de acesso refinado por meio de políticas RAM em duas dimensões: Ação (API) e Recurso. Restrinja a autorização a um subespaço da base de conhecimento ou a um escopo de memória para isolar o acesso entre várias linhas de negócios, equipes e tenants.
Escopo
As regras de autorização descritas neste tópico aplicam-se às duas categorias de APIs a seguir.
APIs do Knowledge Storage: gerencie o Knowledge Storage, documentos, chunks e a recuperação de conhecimento (Retrieve).
APIs do Memory Storage: gerencie o Memory Storage, memórias, mensagens e solicitações de memória, Memory Tasks e Dream Tasks.
Sintaxe e elementos de autorização
A RAM policy consiste em quatro elementos: Effect, Action, Resource e Condition. Para a sintaxe geral, consulte RAM policy syntax. Este tópico aborda apenas as partes específicas do Knowledge Storage e do Memory Storage, ou seja, os valores permitidos para Action e o formato do ARN do recurso para Resource.
Action
O elemento Action usa o formato ots:<API name> e aceita o curinga *. Por exemplo, ots:*KnowledgeBase corresponde a todas as operações de gerenciamento do Knowledge Storage, e ots:*Memory* corresponde a todas as operações relacionadas à memória. As tabelas a seguir listam todas as APIs autorizáveis, agrupadas por função.
Knowledge Storage
|
Grupo de funções |
Action |
|
Gerenciamento do Knowledge Storage |
|
|
Gerenciamento de documentos |
|
|
Gerenciamento de chunks |
|
|
Recuperação |
|
Memory Storage
|
Grupo de funções |
Action |
|
Gerenciamento do Memory Storage |
|
|
Gerenciamento de memórias |
|
|
Mensagens e solicitações |
|
|
Memory tasks |
|
|
Dream tasks |
|
Resource
Todos os ARNs de recurso têm a instância como prefixo. A estrutura geral é a seguinte:
acs:ots:$region:$accountId:instance/$instanceName/<resource path>
|
Placeholder |
Descrição |
|
|
O ID da região da instância, por exemplo |
|
|
O UID da conta da Alibaba Cloud que possui o recurso. Use |
|
|
O nome da instância. Use |
|
|
O caminho do recurso para o Knowledge Storage ou Memory Storage, construído de acordo com as regras abaixo. |
Knowledge Storage
Os recursos do Knowledge Storage aceitam três níveis de autorização, do mais abrangente ao mais restrito, conforme a seguir:
|
Nível de autorização |
Formato do recurso |
Escopo correspondente |
|
Nível da instância |
|
Todo o Knowledge Storage da instância. Operações que não têm como alvo uma base de conhecimento específica, como |
|
Nível da base de conhecimento |
|
Uma única base de conhecimento especificada, incluindo todos os seus documentos e chunks. |
|
Nível do subespaço |
|
Um único subespaço dentro da base de conhecimento especificada. |
As palavras-chave do recurso knowledgebase e subspace são valores fixos. $knowledgeBaseName e $subspace são extraídos dos campos de mesmo nome na solicitação. O nível de autorização é determinado pelas seguintes regras:
Quando a solicitação não inclui
knowledgeBaseName(geralmente uma operação de listagem), a autorização é aplicada no nível da instância.../instance/$instanceName/*.Quando a solicitação inclui um único
subspace, a autorização é aplicada no nível do subespaço. Se uma única solicitação envolver vários subespaços, a autorização reverte para o nível da base de conhecimento pai.../knowledgebase/$knowledgeBaseName.Para permitir o acesso a todos os subespaços de uma base de conhecimento, use o curinga
.../knowledgebase/$knowledgeBaseName/subspace/*ou autorize no nível da base de conhecimento (que abrange todos os subespaços).
Memory Storage
Os recursos do Memory Storage aceitam três níveis de autorização, do mais abrangente ao mais restrito, conforme a seguir:
|
Nível de autorização |
Formato do recurso |
Escopo correspondente |
|
Nível da instância |
|
Todo o Memory Storage da instância. Operações que não têm como alvo um memory store específico, como |
|
Nível do memory store |
|
Todas as memórias no memory store especificado. Quando a solicitação não inclui |
|
Nível do escopo |
|
Memórias dentro do escopo especificado do memory store especificado. Quando a solicitação inclui |
As palavras-chave do recurso memorystore, appid, tenantid, agentid e runid são valores fixos. $memoryStoreName é extraído do campo de mesmo nome na solicitação, enquanto $appId, $tenantId, $agentId e $runId são extraídos dos campos correspondentes do scope da solicitação. Quando a solicitação não inclui memoryStoreName, a autorização é aplicada no nível da instância .../instance/$instanceName/*.
Valores padrão do escopo
Quando a solicitação inclui scope, mas omite um determinado campo, esse campo assume o valor padrão __default__ no recurso de autorização. Por exemplo, se o scope da solicitação especificar apenas appId=app_a, o recurso de autorização é construído da seguinte forma:
acs:ots:$region:$accountId:instance/$instanceName/memorystore/$memoryStoreName/appid/app_a/tenantid/__default__/agentid/__default__/runid/__default__
Ao deixar certas dimensões de escopo sem restrições em uma política RAM, você deve usar o curinga * (por exemplo, .../agentid/*/runid/*) como placeholder explícito. Não omita o nível correspondente, caso contrário, ele corresponderá a __default__ em vez de todos os valores.
Cenários comuns de autorização
Todos os exemplos a seguir usam o nome da instância myinstance. Substitua $accountId pelo ID real da sua conta e ajuste os placeholders de região, nome da base de conhecimento e nome do memory store para corresponder ao seu ambiente.
Acesso somente leitura a uma base de conhecimento específica
A política a seguir permite a recuperação e a consulta na base de conhecimento product_docs_kb e nega todas as operações de gravação.
{
"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/*"
]
}
]
}
Isolamento de acesso de gravação por subespaço
A política a seguir permite operações de leitura e gravação em documentos e chunks dentro do subespaço team_a da base de conhecimento product_docs_kb. Os demais subespaços não são afetados.
{
"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"
}
]
}
Isolamento de acesso à memória por aplicativo
A política a seguir permite o acesso de leitura e gravação a todas as memórias com appId=app_a no memory store agent_mem (independentemente do tenant, agent e execute). As memórias de outros appIds não podem ser acessadas.
{
"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/*"
}
]
}
As dimensões irrestritas tenantid, agentid e runid devem ser definidas explicitamente com * e não podem ser omitidas. Para entender o motivo, consulte a nota sobre valores padrão do escopo acima.
Administração total em uma instância
A política a seguir permite todas as operações em todos os recursos relacionados da instância 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/*"
}
]
}
Observações
O prefixo do recurso é sempre a instância: Os ARNs de recurso devem começar com
acs:ots:$region:$accountId:instance/$instanceName/. Nem o Knowledge Storage nem o Memory Storage admitem recursos entre instâncias.O recurso pai abrange os recursos filhos: Um recurso de nível superior abrange inerentemente seus sub-recursos. A autorização no nível da base de conhecimento abrange todos os seus subespaços; a autorização no nível do memory store
memorystore/$store/*abrange todos os seus escopos. Para um controle mais refinado, use o nível do subespaço ou do escopo.A conta primária não está sujeita às políticas: As políticas acima aplicam-se apenas a usuários e funções RAM. A conta primária (Root) mantém permissões totais em seus próprios recursos por padrão.