View a markdown version of this page

Resource-based políticas para Amazon Bedrock AgentCore - Amazon Bedrock AgentCore

Resource-based políticas para Amazon Bedrock AgentCore

Resource-based as políticas no Amazon Bedrock AgentCore permitem que você controle quais diretores (AWS contas, usuários do IAM ou funções do IAM) podem invocar e gerenciar seus AgentCore recursos do Amazon Bedrock (atualmente compatíveis com Runtime, Gateway e Memory). Você pode anexar IAM-style políticas diretamente aos seus recursos para definir regras sobre quem pode iniciar sessões de tempo de execução, invocar um gateway, acessar a memória ou realizar outras ações de gerenciamento e invocação.

Resource-based as políticas funcionam em conjunto com as políticas do IAM baseadas em identidade para fornecer controle de acesso aos seus recursos do Amazon Bedrock. AgentCore Enquanto as políticas baseadas em identidade são anexadas às identidades do IAM e especificam quais ações elas podem realizar, as políticas baseadas em recursos são anexadas diretamente aos recursos e especificam quem pode acessá-los.

Recursos compatíveis

O Amazon Bedrock AgentCore oferece suporte a políticas baseadas em recursos para os seguintes recursos:

  • Agent Runtime e Agent Endpoints - Controle o acesso às operações de invocação e gerenciamento do agente

  • Gateway - Controle o acesso às operações de invocação do gateway

  • Memória - Controle o acesso às operações de memória

Como as políticas baseadas em recursos funcionam

Identity-based versus políticas baseadas em recursos

Aspecto Identity-Based Política Resource-Based Política

Attachment

Anexado a usuários, funções ou grupos do IAM

Conectado diretamente aos recursos do Amazon Bedrock AgentCore

Gerenciamento

Gerenciado por meio AWS do IAM

Gerenciado por meio das APIs do Amazon Bedrock AgentCore

Especifica

Ações e recursos (o principal está implícito)

Princípios, ações e condições (o recurso está implícito)

Caso de uso

Defina o que uma identidade pode fazer

Defina quem pode acessar um recurso

Avaliação de políticas

Quando uma solicitação é feita a um AgentCore recurso do Amazon Bedrock, AWS avalia as políticas baseadas em identidade e em recursos. A tabela a seguir mostra como diferentes combinações de políticas afetam o acesso:

Política do IAM Política de recursos Resultado

Concede acesso

Silencioso

Permitido

Concede acesso

Concede acesso

Permitido

Concede acesso

Nega o acesso

Negado

Silencioso

Silencioso

Negado

Silencioso

Concede acesso

Permitido

Silencioso

Nega o acesso

Negado

Nega o acesso

Silencioso

Negado

Nega o acesso

Permite acesso

Negado

Nega o acesso

Nega o acesso

Negado

Princípios fundamentais:

  • A negação explícita sempre vence: se alguma política negar explicitamente a ação, o acesso será negado independentemente de outras políticas

  • Qualquer política pode permitir: se uma política baseada em identidade ou em recursos permitir a ação (e nenhuma política a negar), o acesso será concedido

  • Negação padrão: se nenhuma política permitir explicitamente uma ação, o acesso será negado

Autorização hierárquica para tempo de execução e endpoint do agente

Os endpoints do agente são pontos de acesso endereçáveis para versões específicas do tempo de execução de um agente. Cada endpoint aponta para uma versão específica da configuração de tempo de execução, com um endpoint DEFAULT roteando automaticamente para a versão mais recente. Ao autorizar operações de API de tempo de execução, como InvokeAgentRuntime eInvokeAgentRuntimeCommand, AWS avalia as políticas baseadas em identidade e em recursos para o tempo de execução do agente e o endpoint do agente que está sendo invocado.

Para que uma solicitação seja autorizada, as seguintes condições devem ser atendidas:

  • As políticas baseadas em identidade anexadas ao responsável pela chamada devem permitir a ação tanto no tempo de execução do agente quanto nos recursos do endpoint do agente.

  • A política baseada em recursos no tempo de execução do agente deve permitir a ação (se existir uma política)

  • A política baseada em recursos no endpoint do agente deve permitir a ação (se existir uma política)

Importante

Para fornecer acesso entre contas a um principal, você deve criar políticas baseadas em recursos que concedam acesso tanto para o tempo de execução do agente quanto para o endpoint do agente. Se um dos recursos negar o acesso ou não tiver uma declaração de permissão explícita, a solicitação será negada.

Exemplo: a concessão de acesso entre contas exige políticas em ambos os recursos:

// Policy for Agent Runtime (attached to // arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID) { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:role/CrossAccountRole" }, "Action": "bedrock-agentcore:InvokeAgentRuntime", "Resource": "arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID" } ] } // Policy for Agent Endpoint (attached to // arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID/endpoint/ENDPOINTID) { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:role/CrossAccountRole" }, "Action": "bedrock-agentcore:InvokeAgentRuntime", "Resource": "arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID/endpoint/ENDPOINTID" } ] }

Considerações sobre o tipo de autenticação

A maneira como você escreve políticas baseadas em recursos depende do tipo de autenticação configurado para seu Agent Runtime ou Gateway:

Autenticação SigV4

Use AWS diretores específicos (usuários, funções ou contas do IAM) no Principal elemento. Por exemplo: "Principal": {"AWS": "arn:aws:iam::123456789012:role/MyRole"} . A política é avaliada em conjunto com as permissões do IAM do chamador. Para ver um exemplo que restringe um tempo de execução para ser invocado somente por um AgentCore Gateway, consulte Restringir a invocação de entrada do IAM (SigV4) para seu gateway.

Autenticação OAuth

É necessário usar o caractere curinga principal (“Principal”: “*”) nas declarações de política. Os tokens OAuth são validados pelo AWS Identity Service antes da avaliação da política. Somente usuários autenticados do OAuth com tokens JWT válidos do provedor de identidade (IdP) registrado podem invocar o recurso. Solicitações anônimas ou não autenticadas são rejeitadas antes da avaliação da política. Use teclas de condição para restringir o acesso (por exemploaws:SourceVpc,,aws:SourceVpce).

Importante

Um Agent Runtime ou Gateway só pode ser configurado com autenticação SigV4 OU OAuth no momento da criação, não com ambas simultaneamente. Isso significa que uma única política baseada em recursos se aplica somente a um tipo de autenticação.

Estrutura da política

Uma política baseada em recursos é um documento JSON com a seguinte estrutura:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "StatementId", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::account-id:role/role-name" }, "Action": "bedrock-agentcore:ActionName", "Resource": "arn:aws:bedrock-agentcore:region:account-id:resource-type/resource-id", "Condition": { "ConditionOperator": { "ConditionKey": "ConditionValue" } } } ] }
Importante

O Resource campo no documento de política deve conter o ARN exato do recurso ao qual a política está anexada. O uso de “Recurso”: “*” não é suportado e resultará em um erro de validação.

Ações compatíveis

ações do Agent Runtime

  • bedrock-agentcore:InvokeAgentRuntime- Invocar o tempo de execução de um agente

  • bedrock-agentcore:InvokeAgentRuntimeForUser- Invoque um endpoint de tempo de execução do agente com cabeçalho X-Amzn-Bedrock-AgentCore-Runtime-User-Id

  • bedrock-agentcore:InvokeAgentRuntimeCommand- Execute um comando shell em uma sessão de tempo de execução ativa

  • bedrock-agentcore:InvokeAgentRuntimeCommandShell- Abra uma sessão de WebSocket shell interativa em uma sessão de tempo de execução ativa

  • bedrock-agentcore:InvokeAgentRuntimeWithWebSocketStream- Invoque um tempo de execução do agente com stream WebSocket

  • bedrock-agentcore:InvokeAgentRuntimeWithWebSocketStreamForUser- Invoque um tempo de execução do agente com WebSocket fluxo com cabeçalho X-Amzn-Bedrock-AgentCore-Runtime-User-Id

  • bedrock-agentcore:StopRuntimeSession- Interromper uma sessão ativa em tempo de execução

  • bedrock-agentcore:GetAgentCard- Recupere as informações do cartão do agente

Ações do gateway

  • bedrock-agentcore:InvokeGateway- Invocar um gateway

Ações de memória

  • bedrock-agentcore:GetMemory- Recupere um recurso de memória

  • bedrock-agentcore:UpdateMemory- Atualizar um recurso de memória

  • bedrock-agentcore:DeleteMemory- Excluir um recurso de memória

  • bedrock-agentcore:CreateEvent- Crie um evento em um recurso de memória

  • bedrock-agentcore:GetEvent- Recuperar um evento de um recurso de memória

  • bedrock-agentcore:DeleteEvent- Excluir um evento de um recurso de memória

  • bedrock-agentcore:ListEvents- Listar eventos de um recurso de memória

  • bedrock-agentcore:ListActors- Listar atores de um recurso de memória

  • bedrock-agentcore:ListSessions- Listar sessões de um recurso de memória

  • bedrock-agentcore:GetMemoryRecord- Obtenha um registro de memória de um recurso de memória

  • bedrock-agentcore:ListMemoryRecords- Listar registros de memória de um recurso de memória

  • bedrock-agentcore:RetrieveMemoryRecords- Pesquise registros de memória a partir de um recurso de memória

  • bedrock-agentcore:DeleteMemoryRecord- Excluir um registro de memória de um recurso de memória

  • bedrock-agentcore:BatchCreateMemoryRecords- Crie registros de memória em lote em um recurso de memória

  • bedrock-agentcore:BatchUpdateMemoryRecords- Atualize registros de memória em lote em um recurso de memória

  • bedrock-agentcore:BatchDeleteMemoryRecords- Excluir registros de memória em lote em um recurso de memória

  • bedrock-agentcore:StartMemoryExtractionJob- Inicie um trabalho de extração em um recurso de memória

  • bedrock-agentcore:ListMemoryExtractionJobs- Listar trabalhos de extração em um recurso de memória

Chaves de condição

Você pode usar chaves de condição para refinar ainda mais o controle de acesso em suas políticas. Para obter uma lista completa das chaves de condição disponíveis, consulte Chaves de AgentCore condição Bedrock e Chaves de contexto de condição AWS global.

Casos de uso e exemplos comuns

Esta seção fornece exemplos práticos de políticas baseadas em recursos para cenários comuns. O Resource campo em cada exemplo deve conter o ARN exato do recurso ao qual a política está anexada. Substitua os ARNs de exemplo pelos ARNs de seus recursos reais.

Permitir funções em outra AWS account

Conceda acesso à API a funções específicas em uma AWS conta diferente:

// Policy attached to arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::123456789012:role/DeveloperRole", "arn:aws:iam::123456789012:role/AdminRole" ] }, "Action": "bedrock-agentcore:InvokeAgentRuntime", "Resource": "arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID" } ] }

Negar tráfego com base no endereço IP de origem

Bloqueie o tráfego de entrada de intervalos específicos de endereços IP:

// Policy attached to arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:role/ApplicationRole" }, "Action": "bedrock-agentcore:InvokeAgentRuntime", "Resource": "arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID" }, { "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::123456789012:role/ApplicationRole" }, "Action": "bedrock-agentcore:InvokeAgentRuntime", "Resource": "arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID", "Condition": { "IpAddress": { "aws:SourceIp": [ "192.0.2.0/24", "198.51.100.0/24" ] } } } ] }

Permitir tráfego somente de uma VPC específica

Restrinja o acesso às solicitações de uma VPC específica:

// Policy attached to arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:role/ApplicationRole" }, "Action": "bedrock-agentcore:InvokeAgentRuntime", "Resource": "arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID" }, { "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::123456789012:role/ApplicationRole" }, "Action": "bedrock-agentcore:InvokeAgentRuntime", "Resource": "arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID", "Condition": { "StringNotEquals": { "aws:SourceVpc": "vpc-1a2b3c4d" } } } ] }

Autenticação OAuth com restrição de VPC

Quando seu Agent Runtime ou Gateway é configurado com a autenticação OAuth, você deve usar um principal curinga. Este exemplo restringe as OAuth-authenticated solicitações a uma VPC específica:

// Policy attached to arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowOAuthFromVPC", "Effect": "Allow", "Principal": "*", "Action": "bedrock-agentcore:InvokeAgentRuntime", "Resource": "arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID", "Condition": { "StringEquals": { "aws:SourceVpc": "vpc-1a2b3c4d" } } } ] }
Importante

O caractere curinga principal (“Principal”: “*”) é necessário para a autenticação OAuth. Os tokens OAuth são validados pelo AWS Identity Service antes da avaliação da política. Somente usuários com tokens JWT válidos do seu provedor de identidade registrado podem acessar o recurso. Solicitações anônimas ou não autenticadas são rejeitadas antes de serem avaliadas pela política. Use chaves de condição (comoaws:SourceVpc,aws:SourceVpce) para restringir ainda mais o acesso

Gerenciar políticas de recursos

Selecione um dos seguintes métodos:

exemplo
AWS CLI
  1. ====== Criar ou atualizar uma política de recursos

    Use o comando put-resource-policy:

    aws bedrock-agentcore-control put-resource-policy \ --resource-arn arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID \ --policy file://policy.json

    Obtenha uma política de recursos

    Use o comando get-resource-policy:

    aws bedrock-agentcore-control get-resource-policy \ --resource-arn arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID

    Excluir uma política de recursos

    Use o comando delete-resource-policy:

    aws bedrock-agentcore-control delete-resource-policy \ --resource-arn arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID
Python (Boto3)
  1. Os exemplos a seguir mostram como gerenciar políticas de recursos usando o SDK do AWS Python (Boto3):

    import boto3 import json client = boto3.client('bedrock-agentcore-control', region_name='us-west-2') # Define the resource ARN resource_arn = 'arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID' # Put resource policy # Note: The Resource field must match the resource ARN to which the policy is attached policy = { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::123456789012:role/MyRole"}, "Action": "bedrock-agentcore:InvokeAgentRuntime", "Resource": resource_arn } ] } response = client.put_resource_policy( resourceArn=resource_arn, policy=json.dumps(policy) ) # Get resource policy response = client.get_resource_policy( resourceArn='arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID' ) print(response['policy']) # Delete resource policy response = client.delete_resource_policy( resourceArn='arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID' )

Práticas recomendadas de segurança

Conceder privilégio mínimo

Conceda somente as permissões mínimas necessárias para seu caso de uso:

// Policy attached to arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ApplicationRole" }, "Action": "bedrock-agentcore:InvokeAgentRuntime", "Resource": "arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID" } ] }

Evite confusões, delegado

Sempre use chaves de condição ao conceder acesso aos AWS serviços:

// Policy attached to arn:aws:bedrock-agentcore:us-west-2:111122223333:gateway/GATEWAYID { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "lambda.amazonaws.com" }, "Action": "bedrock-agentcore:InvokeGateway", "Resource": "arn:aws:bedrock-agentcore:us-west-2:111122223333:gateway/GATEWAYID", "Condition": { "StringEquals": { "aws:SourceAccount": "111122223333" }, "ArnEquals": { "aws:SourceArn": "arn:aws:lambda:us-west-2:111122223333:function/SpecificFunction" } } } ] }

Use negação explícita para controles críticos

Use declarações de negação explícitas para restrições críticas de segurança:

// Policy attached to arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID { "Version": "2012-10-17", "Statement": [ { "Sid": "DenyAllExceptVPC", "Effect": "Deny", "Principal": "*", "Action": "bedrock-agentcore:InvokeAgentRuntime", "Resource": "arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/AGENTID", "Condition": { "StringNotEquals": { "aws:SourceVpc": "vpc-12345678" }, "Bool": { "aws:ViaAWSService": "false" } } } ] }

Solução de problemas

Erros de acesso negado

Se você receber um erro de “Acesso negado”:

  • Verifique as duas políticas: verifique as políticas baseadas em identidade e baseadas em recursos

  • Procure negações explícitas: uma negação explícita em qualquer política substitui todas as permissões

  • Verifique o ARN principal: certifique-se de que o ARN principal na política corresponda ao chamador

  • Verifique as condições: verifique se todas as chaves de condição são avaliadas como verdadeiras

  • Analise os SCPs: as políticas de controle de serviços da organização podem substituir as políticas de recursos

Erros de validação de políticas

Erros comuns de validação de políticas:

  • JSON inválido: verifique se sua política é um JSON válido

  • Formato ARN inválido: verifique se todos os ARNs seguem o formato correto

  • Ações não suportadas: verifique se todas as ações são compatíveis com o tipo de recurso

  • Elementos obrigatórios ausentes: verifique se a versão, a declaração, o efeito, o princípio e a ação estão presentes