As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Fine-grained controle de acesso para memória
Com o controle de acesso refinado (FGAC) para Amazon Bedrock AgentCore Memory, você pode vincular o acesso à memória à identidade de um chamador. OAuth-authenticated
Quando os chamadores acessam a Memória com credenciais AWS do IAM, você já pode restringir o acesso por ação, por recurso de memória e pelos escopos do ator, da sessão e do namespace da solicitação, usando políticas baseadas em identidade e recursos do IAM com as chaves de condição da Memória. Para esses controles, consulte Organização da memória na AgentCore memória e Resource-based políticas para o Amazon Bedrock AgentCore.
Esses controles do IAM coincidem com o principal do IAM que chama a memória. Eles não podem expressar uma regra digitada em uma OAuth/JWT identidade, porque o OAuth-authenticated chamador não é um diretor do IAM. Isso é importante para aplicativos em que os chamadores se autenticam com OAuth em vez de AWS credenciais — por exemplo, um aplicativo de agente cujos usuários finais fazem login por meio de um provedor OpenID Connect. Nessa arquitetura, o chamador HTTP normalmente é o agente ou back-end, que passa o JWT do usuário final (ou do próprio agente) com cada solicitação; o FGAC avalia as políticas em relação à identidade nesse token. Com o FGAC, você pode criar políticas que comparam um atributo de solicitação às declarações do token, para que você possa aplicar regras como:
-
Um chamador só pode acessar eventos em que a solicitação é
actorIdigual à reivindicação do JWT.sub -
Um chamador só pode recuperar registros de memória sob o namespace contido em sua própria reivindicação de token.
-
O acesso é concedido somente aos chamadores que apresentam um
client_idOAuth específico.
As políticas do FGAC também podem condicionar os mesmos escopos de ação e atributo de solicitação que o IAM oferece, portanto, uma única política pode combinar quem é o chamador com quais operações e dados eles podem acessar. Memory-resource
O FGAC for Memory é implementado com a política no Amazon Bedrock. AgentCore Você conecta um mecanismo de políticas ao gateway que está na frente do seu recurso de memória e escreve políticas em Cedar, uma linguagem de política de código aberto documentada no site da Cedar Policy.
nota
O FGAC for Memory é construído no conector de AgentCore memória. Configure primeiro um gateway com um conector de memória alvo. Para obter mais informações, consulte Acessar AgentCore memória por meio de um gateway.
Como funciona o controle de acesso refinado
Um mecanismo de políticas mantém um conjunto de políticas do Cedar e as avalia para cada solicitação que flui por meio de um gateway associado. Depois que o gateway autentica o chamador e resolve a solicitação para uma operação de memória, o mecanismo de políticas avalia as políticas em relação ao principal (quem está chamando), à ação (qual operação de memória), ao recurso (qual gateway) e ao contexto (os atributos da solicitação, como parâmetros de caminho e campos de corpo). A avaliação é negada por padrão e substituída. forbid permit
Como o conector de memória disponibiliza cada operação de memória como uma ação Cedar com seus campos de solicitação, suas políticas podem permitir ou negar operações específicas de memória e condicionar seus atributos de solicitação. O modelo genérico do Cedar — estrutura política,permit/forbid, os AgentCore::IamEntity principais tipos, tags AgentCore::OAuthUser e context.input — é descrito em Compreendendo as políticas e os principais conceitos do cedro.
Configure um controle de acesso refinado para memória
nota
Você pode configurar um controle de acesso refinado para a memória por meio do console de AWS gerenciamento, do AWS SDK e da interface de linha de AWS comando (CLI).AWS
Depois de ter um gateway com um destino de conector de memória (consulte Acessar AgentCore memória por meio de um gateway):
-
Crie um mecanismo de políticas e adicione suas políticas do Cedar. Para ver as etapas, consulte Criar um mecanismo de política e Criar uma política. Para as políticas a serem escritas, consulte Exemplos de políticas para memória.
-
Associe o mecanismo de políticas ao gateway que está na frente do seu recurso de memória, definindo o gateway.
policyEngineConfigurationVocê pode configurá-lo ao criar o gateway com CreateGateway ou adicioná-lo posteriormente com UpdateGateway.
O mecanismo de políticas mode controla se as políticas são aplicadas (ENFORCE) ou somente avaliadas e registradas sem bloquear o tráfego ()LOG_ONLY. Teste suas políticas LOG_ONLY antes de mudar para elas ENFORCE para evitar negações não intencionais. Para modos de imposição, validação de políticas e testes, consulte Validar e testar políticas e Usar políticas.
Ações de memória e atributos de solicitação
Esta seção é a Memory-specific referência para escrever políticas: o ID da ação Cedar para cada operação de memória e os atributos de solicitação disponíveis emcontext.input.
IDs de ação de memória
Cada operação de memória é uma ação de Cedar chamada<target-name>___<METHOD>:<uri-template>, onde <target-name> está o nome do seu conector alvo. O URI mantém seus espaços reservados para parâmetros de caminho — eles não são substituídos por valores concretos. Na tabela a seguir, <target-name> substitua pelo nome do seu conector alvo.
| Operação de memória | ID de ação do cedro |
|---|---|
|
ListEvents |
|
|
CreateEvent |
|
|
GetEvent |
|
|
DeleteEvent |
|
|
ListSessions |
|
|
ListActors |
|
|
RetrieveMemoryRecords |
|
|
ListMemoryRecords |
|
|
GetMemoryRecord |
|
|
DeleteMemoryRecord |
|
|
ListMemoryExtractionJobs |
|
|
StartMemoryExtractionJob |
|
Action-id Não há suporte para curingas; para conceder várias operações em uma política, liste-as comaction in […].
nota
As operações de lote de memória (BatchCreateMemoryRecords,BatchUpdateMemoryRecords, eBatchDeleteMemoryRecords) não estão disponíveis como ações do Cedar e não podem ser controladas por um controle de acesso refinado. Cada um carrega vários registros em uma única solicitação, que o mecanismo de políticas não pode avaliar individualmente — portanto, as condições por registro ou por namespace não podem ser aplicadas a eles.
Você ainda pode permitir ou negar uma operação em lote como um todo com políticas do IAM baseadas em identidade e recursos (por exemplo, permitindo ou negando a ação). bedrock-agentcore:BatchCreateMemoryRecords O que falta é apenas a granularidade por registro: na camada de controle de acesso refinada, uma operação em lote é tudo ou nada.
Campos de contexto da solicitação
O gateway expõe os atributos de cada solicitação abaixocontext.input, combinando parâmetros de caminho e campos do corpo da solicitação. Proteja cada campo has antes de lê-lo (por exemplo,context has input && context.input has actorId).
Parâmetros do caminho (do URI):
-
context.input.memoryId -
context.input.actorId -
context.input.sessionId -
context.input.eventId -
context.input.memoryRecordId
Request-body campos (dependentes da operação, da carga útil da solicitação):
-
context.input.namespace -
context.input.namespacePath -
context.input.metadata -
context.input.filter -
context.input.payload -
e outros campos corporais definidos pelo esquema de cada operação
Os campos disponíveis variam de acordo com a operação. Um campo que uma operação carrega (por exemplo, actorId ativadoListEvents) pode não estar presente em outra operação que corresponda à mesma política.
Atenção
Uma política que faz referência a um campo de contexto é validada em relação ao esquema para as ações em seu escopo, mas não em relação a todas as operações que a solicitação possa alcançar em tempo de execução. Se uma política fizer referência a um campo que a solicitação recebida não carrega, a política poderá ser criada com êxito e alcançadaACTIVE, mas negar a solicitação com uma 403 resposta quando o mecanismo de política a avaliar, porque o campo referenciado está ausente. Essa condição não é relatada quando você cria a política.
Para evitar negações inesperadas:
-
Defina o escopo de cada política para as ações específicas cujas solicitações contêm os campos que a política faz referência e confirme esses campos em relação a cada operação na tabela IDs de ações de memória.
-
Proteja cada acesso ao campo com
has(por exemplo,context has input && context.input has actorId) para que umapermitcondição seja avaliada de forma previsível quando um campo está ausente. -
Teste as políticas no
LOG_ONLYmodo antes de aplicá-las, para que você possa observar os resultados da avaliação sem negar o tráfego ao vivo. Para obter mais informações, consulte Configurar controle de acesso refinado para memória.
O que você pode aplicar
A aplicação do FGAC por meio do conector de memória está disponível em todos os modos de autenticação de entrada do gateway. Usando as ações e os atributos acima, você pode aplicar:
-
Principal-type bloqueio — políticas com escopo definido ou que IAM-only os chamadores combinam OAuth-only ou negam por classe de chamador.
-
Per-identity isolamento — um atributo de solicitação, como o que
actorIdpode ser exigido, parasubigualar a reivindicação do usuário ou agente autenticado no JWT, permitindo o proprietário e negando outros. -
Isolamento de namespace — comparar a solicitação com um caminho literal ou com um namespace transportado em uma reivindicação de token restringe quais registros um chamador pode recuperar.
namespacenamespacePath -
Escopo da ação — uma única ação, um conjunto de ações ou qualquer ação pode ser permitida; ações não permitidas são negadas.
-
Path-parameter condições — parâmetros do caminho
memoryId, comoactorId,sessionIde. -
Request-body condições — campos corporais como
metadatanamespacePathe. -
Fixação de recursos — um ARN de gateway correspondente é permitido; um ARN diferente é negado.
-
Condições de reivindicação do JWT — reivindicações de token, como
subacesso aoclient_idportão (entrada OAuth). -
Condições de identidade do IAM — o ARN do IAM do chamador pode ser correspondido por padrão (entrada do IAM).
Para políticas que as implementam, consulte Exemplos de políticas para memória.
Adote um controle de acesso refinado em uma memória existente
O padrão de isolamento primário exige que a actorId solicitação seja igual à sub declaração JWT () context.input.actorId == principal.getTag("sub") do chamador. As implantações existentes geralmente usam um ID de usuário interno, pois não corresponde ao sub valor do provedor de identidade. actorId Se seus actorId valores já forem iguais aos do seu provedorsub, nenhuma alteração será necessária. Caso contrário, escolha uma das seguintes abordagens:
- Combine uma reivindicação personalizada da JWT
-
Se seu provedor de identidade puder emitir uma reivindicação que já contenha seu ID de usuário interno (por exemplo, uma declaração personalizada que reflete seu
actorIdesquema), compare com essa afirmação em vez desub— por exemplo,context.input.actorId == principal.getTag("custom:app_user_id"). Proteja-ohasTagprimeiro. Isso evita alterar os dados armazenados. - Isole por namespace em vez de
actorId -
Se seus registros de memória de longo prazo estiverem organizados em namespaces por usuário, imponha o isolamento no namespace em vez de no namespace.
actorIdFaça com que seu provedor de identidade emita uma declaração que contenha o caminho completo do namespace do chamador e compare a solicitação com essa afirmação.namespacePathPara o padrão de isolamento de namespace, consulte Exemplos de políticas para memória. - Alinhe com
actorIdsub -
Se você quiser usar o padrão
actorId == subpadrão, migre novos eventos e registros para usar os do provedorsubcomo o.actorIdComo o AgentCore Memory armazena eventos e registros sob oactorIdque você fornece, isso normalmente se aplica no futuro, em vez de reescrever dados históricos; planeje um período de transição no qual os dois esquemas possam estar presentes.
dica
Você pode validar qualquer uma dessas abordagens sem afetar o tráfego ao vivo anexando primeiro a política no LOG_ONLY modo e revisando os registros de avaliação. Consulte Configurar controle de acesso refinado para memória.
Relação com outras opções de controle de acesso
As políticas do Cedar avaliadas pelo mecanismo de políticas são a camada de autorização por solicitação com reconhecimento de identidade para o tráfego de memória por meio de um gateway. Eles complementam e podem ser combinados com as outras opções de controle de acesso do gateway:
-
Os interceptores de gateway permitem que você implemente uma lógica de autorização personalizada no código. Para obter mais informações, consulte controle de Fine-grained acesso para o Amazon Bedrock AgentCore Gateway.
-
Resource-based políticas sobre recursos de memória controlam quais diretores do IAM — incluindo um gateway específico — podem chamar Memory de qualquer maneira, usando chaves de condição como
aws:SourceArne.aws:PrincipalArnPara obter mais informações, consulte Resource-based as políticas do Amazon Bedrock AgentCore e Como o modo de credencial de saída afeta o controle de acesso à memória.