Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Fine-grained contrôle d'accès pour Memory
Grâce au contrôle d'accès précis (FGAC) pour Amazon Bedrock AgentCore Memory, vous pouvez associer l'accès à la mémoire à l'identité de l'appelant. OAuth-authenticated
Lorsque les appelants atteignent Memory avec des informations d'identification AWS IAM, vous pouvez déjà restreindre l'accès par action, par ressource mémoire et par étendue d'acteur, de session et d'espace de noms de la demande, en utilisant des politiques IAM basées sur l'identité et les ressources avec les clés de condition de Memory. Pour ces contrôles, consultez la section Organisation de la AgentCore mémoire dans Memory et Resource-based les politiques d'Amazon Bedrock AgentCore.
Ces contrôles IAM correspondent au principal IAM qui appelle Memory. Ils ne peuvent pas exprimer une règle basée sur une OAuth/JWT identité, car l' OAuth-authenticated appelant n'est pas un principal IAM. Cela est important pour les applications dans lesquelles les appelants s'authentifient avec OAuth plutôt qu'avec des AWS informations d'identification, par exemple, une application d'agent dont les utilisateurs finaux se connectent via un fournisseur OpenID Connect. Dans cette architecture, l'appelant HTTP est généralement l'agent ou le backend, qui transmet le JWT de l'utilisateur final (ou du propre agent) à chaque demande ; le FGAC évalue les politiques en fonction de l'identité de ce jeton. Avec le FGAC, vous pouvez rédiger des politiques qui comparent un attribut de requête aux revendications du jeton, afin de pouvoir appliquer des règles telles que :
-
Un appelant ne peut accéder qu'aux événements où la valeur de la demande est
actorIdégale à sa réclamation JWTsub. -
Un appelant ne peut récupérer les enregistrements de mémoire que dans l'espace de noms indiqué dans sa propre demande de jeton.
-
L'accès n'est accordé qu'aux appelants présentant un
client_idOAuth spécifique.
Les politiques FGAC peuvent également dépendre des mêmes champs d'action et d'attributs de demande que ceux proposés par IAM, de sorte qu'une politique unique peut combiner l'identité de l'appelant avec les opérations et les données auxquelles il peut accéder. Memory-resource
FGAC for Memory est implémenté avec Policy dans Amazon AgentCore Bedrock. Vous attachez un moteur de politiques à la passerelle qui fait face à votre ressource de mémoire et vous rédigez des politiques dans Cedar, un langage de politique open source documenté sur le site Web de
Note
Le FGAC pour la mémoire est intégré au connecteur de AgentCore mémoire. Configurez d'abord une passerelle avec une cible de connecteur de mémoire. Pour plus d'informations, voir Accès à AgentCore la mémoire via une passerelle.
Comment fonctionne le contrôle d'accès précis
Un moteur de politiques contient un ensemble de politiques Cedar et les évalue pour chaque demande qui passe par une passerelle associée. Une fois que la passerelle a authentifié l'appelant et résolu la demande en une opération de mémoire, le moteur de politiques évalue les politiques par rapport au principal (qui appelle), à l'action (quelle opération mémoire), à la ressource (quelle passerelle) et au contexte (les attributs de la demande, tels que les paramètres de chemin et les champs de corps). L'évaluation est refusée par défaut et remplacée. forbid permit
Étant donné que le connecteur de mémoire rend chaque opération de mémoire disponible sous la forme d'une action Cedar avec ses champs de demande, vos politiques peuvent autoriser ou refuser des opérations de mémoire spécifiques et conditionner leurs attributs de demande. Le modèle générique de Cedar — structure des politiquesforbid,permit/, les AgentCore::OAuthUser AgentCore::IamEntity principaux types, balises et context.input — est décrit dans Understanding Cedar policies and Core concepts.
Configurez un contrôle d'accès précis pour la mémoire
Note
Vous pouvez configurer un contrôle d'accès précis pour la mémoire via la console de AWS gestion, le AWS SDK et l'interface de ligne de AWS commande (AWS CLI).
Une fois que vous disposez d'une passerelle avec une cible de connecteur de mémoire (voir Accès à AgentCore la mémoire via une passerelle) :
-
Créez un moteur de politiques et ajoutez vos politiques Cedar. Pour les étapes à suivre, consultez les sections Création d'un moteur de politiques et Création d'une stratégie. Pour les politiques à écrire, voir Exemples de politiques pour la mémoire.
-
Associez le moteur de politique à la passerelle qui gère votre ressource mémoire, en définissant celle de la passerelle
policyEngineConfiguration. Vous pouvez le définir lorsque vous créez la passerelle avec CreateGateway, ou l'ajouter ultérieurement avec UpdateGateway.
Le moteur de politiques mode contrôle si les politiques sont appliquées (ENFORCE) ou uniquement évaluées et enregistrées sans bloquer le trafic (LOG_ONLY). Testez vos politiques LOG_ONLY avant de passer à la version précédente ENFORCE pour éviter tout refus involontaire. Pour les modes d'application, la validation des politiques et les tests, voir Valider et tester les politiques et Utiliser les politiques.
Actions de mémoire et attributs de requête
Cette section est la Memory-specific référence pour la rédaction de politiques : l'identifiant d'action Cedar pour chaque opération de mémoire et les attributs de requête disponibles souscontext.input.
ID d'action de la mémoire
Chaque opération de mémoire est une action Cedar nommée<target-name>___<METHOD>:<uri-template>, où se <target-name> trouve le nom de la cible de votre connecteur. L'URI conserve ses espaces réservés aux paramètres de chemin ; ils ne sont pas remplacés par des valeurs concrètes. Dans le tableau suivant, remplacez <target-name> par le nom de la cible de votre connecteur.
| Fonctionnement de la mémoire | Clé d'action en cèdre |
|---|---|
|
ListEvents |
|
|
CreateEvent |
|
|
GetEvent |
|
|
DeleteEvent |
|
|
ListSessions |
|
|
ListActors |
|
|
RetrieveMemoryRecords |
|
|
ListMemoryRecords |
|
|
GetMemoryRecord |
|
|
DeleteMemoryRecord |
|
|
ListMemoryExtractionJobs |
|
|
StartMemoryExtractionJob |
|
Action-id les caractères génériques ne sont pas pris en charge ; pour accorder plusieurs opérations dans une seule politique, listez-les avecaction in […].
Note
Les opérations par lots de mémoire (BatchCreateMemoryRecordsBatchUpdateMemoryRecords, etBatchDeleteMemoryRecords) ne sont pas disponibles en tant qu'actions Cedar et ne peuvent pas être régies par un contrôle d'accès précis. Chacun contient plusieurs enregistrements dans une seule demande, que le moteur de politiques ne peut pas évaluer individuellement. Les conditions par enregistrement ou par espace de noms ne peuvent donc pas leur être appliquées.
Vous pouvez toujours autoriser ou refuser une opération par lots dans son ensemble grâce aux politiques IAM basées sur l'identité et les ressources (par exemple, en autorisant ou en refusant l'action). bedrock-agentcore:BatchCreateMemoryRecords Il ne manque que la granularité par enregistrement : au niveau de la couche de contrôle d'accès fine, une opération par lots est tout ou rien.
Champs contextuels de la demande
La passerelle expose les attributs de chaque demande ci-dessouscontext.input, en combinant les paramètres de chemin et les champs du corps de la demande. Surveillez chaque champ has avant de le lire (par exemple,context has input && context.input has actorId).
Paramètres du chemin (depuis l'URI) :
-
context.input.memoryId -
context.input.actorId -
context.input.sessionId -
context.input.eventId -
context.input.memoryRecordId
Request-body champs (en fonction de l'opération, à partir de la charge utile de la demande) :
-
context.input.namespace -
context.input.namespacePath -
context.input.metadata -
context.input.filter -
context.input.payload -
et d'autres champs corporels définis par le schéma de chaque opération
Les champs disponibles varient en fonction de l'opération. Un champ associé à une opération (par exemple, actorId activéListEvents) peut ne pas être présent sur une autre opération correspondant à la même politique.
Avertissement
Une politique qui fait référence à un champ de contexte est validée par rapport au schéma des actions de son périmètre, mais pas par rapport à chaque opération que la demande peut atteindre au moment de l'exécution. Si une politique fait référence à un champ que la demande entrante ne contient pas, la politique peut être créée avec succès et atteindre la demandeACTIVE, tout en refusant une 403 réponse lorsque le moteur de politique l'évalue, car le champ référencé est manquant. Cette condition n'est pas signalée lors de la création de la politique.
Pour éviter tout refus inattendu :
-
Étendez chaque politique aux actions spécifiques dont les demandes contiennent les champs auxquels la politique fait référence, et confirmez ces champs pour chaque opération dans le tableau des identifiants d'actions de mémoire.
-
Protégez l'accès à chaque champ avec
has(par exemplecontext has input && context.input has actorId) afin qu'unepermitcondition soit évaluée de manière prévisible lorsqu'un champ est absent. -
Testez les politiques en
LOG_ONLYmode avant de les appliquer, afin de pouvoir observer les résultats de l'évaluation sans empêcher le trafic réel. Pour plus d'informations, consultez la section Configuration d'un contrôle d'accès précis pour la mémoire.
Ce que vous pouvez faire appliquer
L'application du FGAC via le connecteur de mémoire est disponible dans tous les modes d'authentification entrants de la passerelle. À l'aide des actions et attributs ci-dessus, vous pouvez appliquer :
-
Principal-type blocage : politiques définies ou identiques OAuth-only ou refusées par classe d' IAM-only appelants.
-
Per-identity isolation : un attribut de demande tel que celui qui
actorIdpeut être requis pour égaler lasubréclamation de l'utilisateur ou de l'agent authentifié dans le JWT, en autorisant le propriétaire et en refusant les autres. -
Isolation de l'espace de noms : la comparaison de
namespacela requête avec un littéral, ou avec un chemin d'espace de noms contenu dans une réclamation de jeton, limite les enregistrements qu'un appelant peut récupérer.namespacePath -
Étendue des actions : une action unique, un ensemble d'actions ou n'importe quelle action peut être autorisée ; les actions non autorisées sont refusées.
-
Path-parameter conditions : paramètres de chemin tels que
memoryIdactorId, etsessionId. -
Request-body conditions — champs corporels tels que
metadataetnamespacePath. -
Resource pinning : un ARN de passerelle correspondant est autorisé ; un autre ARN est refusé.
-
Conditions de réclamation JWT : réclamations relatives à des jetons, telles que l'
subaccès à uneclient_idporte d'entrée (OAuth entrant). -
Conditions d'identité IAM : l'ARN IAM de l'appelant peut être mis en correspondance par un modèle (IAM entrant).
Pour les politiques qui les implémentent, voir Exemples de politiques pour la mémoire.
Adoptez un contrôle d'accès précis sur une mémoire existante
Le modèle d'isolation principal exige que la valeur « actorId on » d'une requête soit égale à la sub réclamation JWT de l'appelant ()context.input.actorId == principal.getTag("sub"). Les déploiements existants utilisent souvent un identifiant utilisateur interne actorId qui ne correspond pas à la sub valeur de leur fournisseur d'identité. Si vos actorId valeurs sont déjà égales à celles de votre fournisseursub, aucune modification n'est nécessaire. Sinon, choisissez l'une des approches suivantes :
- Correspondance sur une réclamation JWT personnalisée
-
Si votre fournisseur d'identité peut émettre une réclamation contenant déjà votre identifiant d'utilisateur interne (par exemple, une réclamation personnalisée qui reflète votre
actorIdschéma), comparez avec cette réclamation plutôt que, par exemple,context.input.actorId == principal.getTag("custom:app_user_id").subProtégez-le d'hasTagabord. Cela permet d'éviter de modifier les données stockées. - Isolez par espace de noms au lieu de
actorId -
Si vos enregistrements de mémoire à long terme sont organisés en espaces de noms par utilisateur, appliquez l'isolation à l'espace de noms plutôt qu'à l'inverse.
actorIdDemandez à votre fournisseur d'identité d'émettre une réclamation contenant le chemin complet de l'espace de noms de l'appelant et de comparer la demande à cettenamespacePathréclamation. Pour le modèle d'isolation des espaces de noms, voir Exemples de politiques pour la mémoire. - Aligner
actorIdavecsub -
Si vous souhaitez utiliser le
actorId == submodèle par défaut, migrez les nouveaux événements et enregistrements pour utiliser celui du fournisseursubcommeactorId. Étant donné que AgentCore Memory stocke les événements et les enregistrements dans le cadre queactorIdvous fournissez, cela s'applique généralement à l'avenir plutôt qu'à la réécriture des données historiques ; prévoyez une période de transition au cours de laquelle les deux schémas pourraient être présents.
Astuce
Vous pouvez valider n'importe laquelle de ces approches sans affecter le trafic réel en associant d'abord la politique en LOG_ONLY mode et en consultant les journaux d'évaluation. Consultez la section Configuration d'un contrôle d'accès précis pour la mémoire.
Relation avec les autres options de contrôle d'accès
Les politiques Cedar évaluées par le moteur de politiques constituent la couche d'autorisation sensible à l'identité, par demande, pour le trafic mémoire via une passerelle. Elles complètent et peuvent être combinées avec les autres options de contrôle d'accès de la passerelle :
-
Les intercepteurs Gateway vous permettent d'implémenter une logique d'autorisation personnalisée dans le code. Pour plus d'informations, consultez la section Contrôle Fine-grained d'accès pour Amazon Bedrock AgentCore Gateway.
-
Resource-based politiques relatives au contrôle des ressources mémoire que les principaux administrateurs IAM, y compris une passerelle spécifique, peuvent appeler Memory à l'aide de clés de condition telles que
aws:SourceArnet.aws:PrincipalArnPour plus d'informations, consultez Resource-based les politiques relatives à Amazon Bedrock AgentCore et Comment le mode d'identification sortant affecte le contrôle d'accès à la mémoire.