AgentStorage Knowledge Storage et Memory Storage prennent en charge un contrôle d'accès granulaire via des politiques RAM selon deux dimensions : Action (API) et Resource. Vous pouvez restreindre l'autorisation à un sous-espace de base de connaissances ou à une portée de mémoire afin d'isoler l'accès entre plusieurs lignes métier, équipes et locataires.
Portée
Les règles d'autorisation décrites dans cette rubrique s'appliquent aux deux catégories d'API suivantes.
API Knowledge Storage : gérer Knowledge Storage, Documents, Chunks et la récupération de connaissances (Retrieve).
API Memory Storage : gérer Memory Storage, Memories, les messages et requêtes de mémoire, Memory Tasks et Dream Tasks.
Syntaxe et éléments d'autorisation
Politique RAM se compose de quatre éléments : Effect, Action, Resource et Condition. Pour la syntaxe générale, consultez Syntaxe des politiques RAM. Cette rubrique couvre uniquement les parties spécifiques à Knowledge Storage et Memory Storage, à savoir les valeurs autorisées pour Action et le format ARN de ressource pour Resource.
Action
L'élément Action prend le format ots:<nom API> et prend en charge le caractère générique *. Par exemple, ots:*KnowledgeBase correspond à toutes les opérations de gestion de Knowledge Storage, et ots:*Memory* correspond à toutes les opérations liées à la mémoire. Les tableaux suivants répertorient toutes les API pouvant faire l'objet d'une autorisation, regroupées par fonction.
Knowledge Storage
|
Groupe de fonctions |
Action |
|
Gestion de Knowledge Storage |
|
|
Gestion des documents |
|
|
Gestion des chunks |
|
|
Récupération |
|
Memory Storage
|
Groupe de fonctions |
Action |
|
Gestion de Memory Storage |
|
|
Gestion des mémoires |
|
|
Messages et requêtes |
|
|
Tâches de mémoire |
|
|
Tâches Dream |
|
Resource
Tous les ARN de ressources sont préfixés par l'instance. La structure globale est la suivante.
acs:ots:$region:$accountId:instance/$instanceName/<resource path>
|
Espace réservé |
Description |
|
|
L'ID de région de l'instance, par exemple |
|
|
L'UID du compte Alibaba Cloud propriétaire de la ressource. Utilisez |
|
|
Le nom de l'instance. Utilisez |
|
|
Le chemin d'accès à la ressource pour Knowledge Storage ou Memory Storage, construit selon les règles ci-dessous. |
Knowledge Storage
Les ressources Knowledge Storage prennent en charge trois niveaux d'autorisation, du plus grossier au plus fin, comme suit.
|
Niveau d'autorisation |
Format de ressource |
Portée correspondante |
|
Niveau instance |
|
Tout Knowledge Storage sous l'instance. Les opérations qui ne ciblent pas une base de connaissances spécifique, telles que |
|
Niveau base de connaissances |
|
Une seule base de connaissances spécifiée, y compris tous ses documents et chunks. |
|
Niveau sous-espace |
|
Un seul sous-espace au sein de la base de connaissances spécifiée. |
Les mots-clés de ressource knowledgebase et subspace sont des valeurs fixes. $knowledgeBaseName et $subspace sont extraits des champs portant le même nom dans la requête. Le niveau d'autorisation est déterminé par les règles suivantes :
Lorsque la requête ne contient pas
knowledgeBaseName(généralement une opération de liste), l'autorisation est appliquée au niveau de l'instance.../instance/$instanceName/*.Lorsque la requête contient un seul
subspace, l'autorisation est appliquée au niveau du sous-espace. Lorsqu'une seule requête implique plusieurs sous-espaces, l'autorisation revient au niveau de la base de connaissances parente.../knowledgebase/$knowledgeBaseName.Pour autoriser l'accès à tous les sous-espaces sous une base de connaissances, utilisez le caractère générique
.../knowledgebase/$knowledgeBaseName/subspace/*, ou autorisez au niveau de la base de connaissances (ce qui couvre tous les sous-espaces).
Memory Storage
Les ressources Memory Storage prennent en charge trois niveaux d'autorisation, du plus grossier au plus fin, comme suit.
|
Niveau d'autorisation |
Format de ressource |
Portée correspondante |
|
Niveau instance |
|
Tout Memory Storage sous l'instance. Les opérations qui ne ciblent pas un magasin de mémoire spécifique, telles que |
|
Niveau magasin de mémoire |
|
Toutes les mémoires sous le magasin de mémoire spécifié. Lorsque la requête ne contient pas |
|
Niveau portée |
|
Mémoires au sein de la portée spécifiée du magasin de mémoire spécifié. Lorsque la requête contient |
Les mots-clés de ressource memorystore, appid, tenantid, agentid et runid sont des valeurs fixes. $memoryStoreName est extrait du champ portant le même nom dans la requête, tandis que $appId, $tenantId, $agentId et $runId sont extraits des champs correspondants de la requête scope. Lorsque la requête ne contient pas memoryStoreName, l'autorisation est appliquée au niveau de l'instance .../instance/$instanceName/*.
Valeurs par défaut de la portée
Lorsque la requête contient scope mais omet un champ donné, ce champ prend par défaut la valeur __default__ dans la ressource d'autorisation. Par exemple, si le scope de la requête spécifie uniquement appId=app_a, la ressource d'autorisation est construite comme suit :
acs:ots:$region:$accountId:instance/$instanceName/memorystore/$memoryStoreName/appid/app_a/tenantid/__default__/agentid/__default__/runid/__default__
Lorsque vous laissez certaines dimensions de portée non restreintes dans une politique RAM, vous devez utiliser le caractère générique * (par exemple, .../agentid/*/runid/*) comme espace réservé explicite. N'omettez pas le niveau correspondant, sinon il correspondra à __default__ plutôt qu'à toutes les valeurs.
Scénarios d'autorisation courants
Les exemples suivants utilisent tous le nom d'instance myinstance. Remplacez $accountId par votre ID de compte réel, et ajustez les espaces réservés de région, de nom de base de connaissances et de nom de magasin de mémoire pour qu'ils correspondent à votre activité.
Accès en lecture seule à une base de connaissances spécifique
La politique suivante autorise la récupération et les requêtes sur la base de connaissances product_docs_kb et refuse toutes les opérations d'écriture.
{
"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/*"
]
}
]
}
Isolation de l'accès en écriture par sous-espace
La politique suivante autorise les opérations de lecture et d'écriture sur les documents et les chunks au sein du sous-espace team_a de la base de connaissances product_docs_kb. Les autres sous-espaces ne sont pas affectés.
{
"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"
}
]
}
Isolation de l'accès à la mémoire par application
La politique suivante autorise l'accès en lecture et en écriture à toutes les mémoires avec appId=app_a dans le magasin de mémoire agent_mem (quel que soit le locataire, l'agent et l'exécution). Les mémoires des autres appIds ne sont pas accessibles.
{
"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/*"
}
]
}
Les dimensions tenantid, agentid et runid non restreintes doivent être explicitement ouvertes avec * et ne peuvent pas être omises. Pour la raison, voir la note sur les valeurs par défaut de la portée ci-dessus.
Administration complète au sein d'une instance
La politique suivante autorise toutes les opérations sur toutes les ressources associées sous l'instance 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/*"
}
]
}
Notes
Le préfixe de ressource est toujours l'instance : Les ARN de ressources doivent commencer par
acs:ots:$region:$accountId:instance/$instanceName/. Ni Knowledge Storage ni Memory Storage n'ont de forme de ressource inter-instances.Le parent couvre l'enfant : Une ressource de niveau supérieur couvre intrinsèquement ses sous-ressources. L'autorisation au niveau de la base de connaissances couvre tous ses sous-espaces ; l'autorisation au niveau du magasin de mémoire
memorystore/$store/*couvre toutes ses portées. Pour un contrôle plus fin, descendez au niveau du sous-espace ou au niveau de la portée.Le compte principal n'est pas lié par les politiques : Les politiques ci-dessus s'appliquent uniquement aux utilisateurs et rôles RAM. Le compte principal (Root) conserve par défaut toutes les autorisations sur ses propres ressources.