View a markdown version of this page

Configure a autorização de entrada para seu gateway - Amazon Bedrock AgentCore

Configure a autorização de entrada para seu gateway

Antes de criar seu gateway, você deve configurar a autorização de entrada. A autorização de entrada valida os usuários que tentam acessar alvos por meio do seu AgentCore gateway. AgentCore suporta os seguintes tipos de autorização de entrada:

  • Token Web JSON (JWT) — Um token seguro e compacto usado para autorização. Depois de criar o JWT, você o especifica como a configuração de autorização ao criar o gateway. Você pode criar um JWT com qualquer um dos provedores de identidade em Configuração e configuração do provedor.

  • Identidade do IAM — autoriza, por meio das credenciais da identidade AWS do IAM, tentar acessar o gateway.

  • Tipos de autorização descarregados — O gateway não toma nenhuma decisão de autorização própria e, em vez disso, transfere a autorização para outro componente, como o destino downstream, um mecanismo de política conectado ao gateway ou uma função Lambda do interceptor. Essa categoria inclui somente Autenticação e Sem Autorização. Para obter detalhes e orientações, consulte Autorização de entrada descarregada.

nota

Se você usar o AWS Management Console ou a AgentCore CLI para criar seu gateway, poderá criar uma configuração padrão de autorização de entrada usando o Amazon Cognito durante a criação do gateway. Se você planeja usar a configuração de autorização padrão, pode ignorar esse pré-requisito.

Se você não planeja usar a configuração de autorização padrão usando o Amazon Cognito, selecione o tópico que corresponde ao tipo de autorização que você planeja usar para aprender como configurá-la:

IAM-based autorização de entrada

IAM-based a autorização de entrada permite que você use as credenciais do IAM do chamador do gateway para autorização. Você pode usar essa opção se quiser criar uma identidade do IAM por meio da qual os usuários que ligam para seu gateway possam ser autenticados.

Para configurar a autorização IAM-based de entrada

  1. Crie ou use uma identidade IAM existente para seus chamadores de gateway.

  2. Crie uma política de IAM baseada em identidade que contenha as seguintes permissões:

    • bedrock-agentcore:InvokeGateway— Depois de criar o gateway, você deve modificar essa política para que o Resource campo tenha como escopo o gateway que você criou como uma prática recomendada de segurança.

  3. Anexe a política à identidade do chamador do gateway.

Política de exemplo

O exemplo a seguir mostra uma política que você pode anexar a uma identidade para permitir que ela invoque um gateway com a ID. my-gateway-12345

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowGatewayInvocation", "Effect": "Allow", "Action": [ "bedrock-agentcore:InvokeGateway" ], "Resource": [ "arn:aws:bedrock-agentcore:us-east-1:123456789012:gateway/my-gateway-12345" ] } ] }

Recursos

Autorização de entrada baseada em JSON Web Token (JWT)

Um JSON Web Token (JWT) é um token seguro e compacto usado para autorização. Você pode criar um JWT com um provedor de identidade compatível. Depois de criar um JWT, você pode recuperá-lo e especificá-lo como a configuração de autorização ao criar o gateway.

Importante

O uso da autorização de entrada com base em tokens JWT resultará no registro de algumas reivindicações do token JWT. CloudTrail A entrada inclui o assunto do token de identidade da web fornecido. Recomendamos que você evite usar qualquer informação de identificação pessoal (PII) nesse campo. Por exemplo, em vez disso, você pode usar um GUID ou um identificador em pares, conforme sugerido na especificação do OIDC.

Você pode usar a AgentCore CLI para configurar um JWT padrão ou criar um manualmente com um provedor de identidade compatível. Para saber mais sobre os diferentes métodos de configuração de um JWT, selecione um dos tópicos a seguir:

Configurar um JWT padrão

A AgentCore CLI permite criar facilmente uma configuração de autorização padrão usando o Amazon Cognito, que você pode usar ao criar um gateway. Quando você executaagentcore create, a CLI solicita que você configure a autorização de entrada e pode configurar automaticamente um grupo de usuários do Amazon Cognito para você.

agentcore create

Após a conclusão do comando, a AgentCore CLI fornece informações de autenticação e autorização:

  • Você usará a configuração do autorizador ao criar o gateway.

  • Para autorização de entrada ao invocar seu gateway, você precisará obter um token de acesso usando seu ID do cliente, o segredo do cliente e o endpoint do token. Para obter mais informações sobre como obter seu token de acesso, consulte o exemplo em Usar um AgentCore gateway ou O endpoint do emissor do token no Guia do Desenvolvedor do Amazon Cognito.

Configurar um JWT manualmente

O Amazon Bedrock AgentCore oferece suporte a JWTs de todos os provedores de identidade. Você pode ver alguns exemplos em Configuração e configuração do provedor.

No processo de criação do JWT, anote os seguintes valores, que você preencherá CustomJWTAuthorizerConfigurationao criar um gateway, se forem aplicáveis ao seu caso de uso:

  • URL de descoberta — A URL a partir da qual as credenciais de login e o endpoint do token podem ser recuperados.

  • ID do cliente — O identificador público de um aplicativo cliente que solicita um token, validado em relação à client_id reivindicação.

  • Segredo do cliente — A chave privada que autentica o acesso do aplicativo cliente para recuperar um token.

  • Público permitido — O identificador que valida os destinatários ou consumidores pretendidos de um token por meio da aud declaração.

  • Escopos permitidos — Os escopos que definem as limitações do acesso de um aplicativo à conta de um usuário. Para obter mais informações, consulte Escopos do OAuth.

  • Outros valores de declaração obrigatórios — Dependendo do autorizador que você usa, talvez seja necessário especificar campos e regras de declaração personalizados obrigatórios para combinar o valor do campo de declaração com o da autenticação.

Você precisará desses valores para fazer o seguinte:

  • Crie o gateway especificando valores na configuração do autorizador.

  • Obtenha credenciais de autorização para invocar o gateway. Para saber como obter suas credenciais, consulte a documentação do seu provedor de identidade. Por exemplo, se você usou o Amazon Cognito, consulte O endpoint do emissor do token no Guia do desenvolvedor do Amazon Cognito.

Publicidade de escopo em desafios de autenticação

Quando um cliente envia uma solicitação para um JWT-authorized gateway sem um token de acesso válido, o gateway retorna uma resposta de erro com um WWW-Authenticate cabeçalho que anuncia os escopos de OAuth necessários. Isso segue o formato de desafio do token RFC 6750 Bearer e permite que MCP-compliant os clientes descubram automaticamente os escopos necessários para a aquisição do token.

O gateway retorna as seguintes respostas, dependendo do erro:

  • 401 Não autorizado — A solicitação não tem token ou é um token inválido. O WWW-Authenticate cabeçalho inclui resource_metadata scope parâmetros.

  • 403 Proibido — O token é válido, mas não contém os escopos necessários. O WWW-Authenticate cabeçalho inclui error="insufficient_scope"scope, e resource_metadata parâmetros.

O scope valor contém os escopos delimitados por espaço configurados como escopos permitidos no gateway. CustomJWTAuthorizerConfiguration O resource_metadata valor aponta para o documento OAuth Protected Resource Metadata do gateway em/.well-known/oauth-protected-resource, que os clientes podem buscar para descobrir o servidor de autorização e os escopos compatíveis.

Use um provedor de identidade privado (VPC-hosted)

AgentCore O Gateway oferece suporte JWT-based à autorização de entrada com provedores de identidade hospedados em sua VPC. Você pode configurar um privateEndpoint no customJWTAuthorizer para permitir o acesso AgentCore à descoberta, ao token e aos endpoints JWKS privados do OIDC sem expô-los à Internet pública.

Seu diretor do IAM deve ter a iam:CreateServiceLinkedRole permissão para identity-network.bedrock-agentcore.amazonaws.com que a AgentCore Identity possa criar a função AWSServiceRoleForBedrockAgentCoreIdentity vinculada ao serviço em seu nome, caso ela ainda não exista.

privateEndpointIsso se aplica ao domínio nodiscoveryUrl. Se seu provedor de identidade usa domínios diferentes para outros endpoints (por exemplo, o token ou o endpoint JWKS é resolvido para um domínio diferente do URL de descoberta), use para especificar uma configuração de endpoint privado separada privateEndpointOverrides para cada domínio adicional.

O exemplo a seguir cria um gateway com um provedor de identidade privado usando o Lattice gerenciado:

{ "name": "my-private-idp-gateway", "protocolType": "MCP", "roleArn": "arn:aws:iam::123456789012:role/my-gateway-role", "authorizerType": "CUSTOM_JWT", "authorizerConfiguration": { "customJWTAuthorizer": { "allowedAudience": [ "my-audience" ], "discoveryUrl": "https://my-idp.internal.example.com/.well-known/openid-configuration", "privateEndpoint": { "managedVpcResource": { "vpcIdentifier": "vpc-0abc123def456", "subnetIds": ["subnet-0abc123", "subnet-0def456"], "endpointIpAddressType": "IPV4", "securityGroupIds": ["sg-0abc123def"] } } } } }

Se seu token ou endpoints JWKS usarem um domínio diferente do URL de descoberta, adicione uma privateEndpointOverrides entrada para cada domínio adicional. Atualmente, só privateEndpointOverrides é suportado com recursos autogerenciados do Lattice:

{ ... "authorizerConfiguration": { "customJWTAuthorizer": { "allowedAudience": ["my-audience"], "discoveryUrl": "https://my-idp.internal.example.com/.well-known/openid-configuration", "privateEndpoint": { "selfManagedLatticeResource": { "resourceConfigurationIdentifier": "arn:aws:vpc-lattice:us-east-1:123456789012:resourceconfiguration/rcfg-abc123" } }, "privateEndpointOverrides": [ { "domain": "my-token-server.internal.example.com", "privateEndpoint": { "selfManagedLatticeResource": { "resourceConfigurationIdentifier": "arn:aws:vpc-lattice:us-east-1:123456789012:resourceconfiguration/rcfg-def456" } } } ] } } }

Para Lattice autogerenciado, configurações entre contas e configurações avançadas, consulte Conecte-se a recursos privados em sua VPC usando o VPC Lattice. Para obter um guia abrangente que abrange cenários de IdP privado de entrada e saída, consulte Connect to private identity providers.

Autorização de entrada descarregada

Com a autorização de entrada descarregada, o gateway não toma nenhuma decisão de autorização por conta própria. Em vez disso, ele transfere a autorização para outro componente:

  • O serviço de destino downstream, que autoriza a solicitação recebida.

  • Um mecanismo de política conectado ao gateway, que avalia as políticas de acesso.

  • Uma função Lambda de interceptação, que executa sua lógica personalizada de autenticação ou autorização antes que as solicitações cheguem aos seus alvos.

AgentCore oferece dois tipos de descarga:

  • Autenticar somente (AUTHENTICATE_ONLY) — O gateway verifica a assinatura SigV4 do chamador para autenticar o chamador, mas não toma nenhuma decisão de autorização. As solicitações devem ser assinadas, mas qualquer chamador autenticado é encaminhado para o alvo.

  • Sem autorização (NONE) — O gateway não executa nenhuma autenticação ou autorização de entrada. As solicitações podem não ser autenticadas e qualquer chamador é encaminhado para o alvo.

Com qualquer um dos tipos, você decide onde a autorização é realmente aplicada:

  • Mecanismo de políticas — conecte um mecanismo de políticas ao gateway para avaliar as políticas de acesso centralmente. Esse é um padrão recomendado para gateways de produção e é frequentemente usado junto com o OAuth.

  • Função Lambda do Interceptor — Execute sua própria lógica de autenticação ou autorização antes que as solicitações atinjam seus alvos. Isso é recomendado para gateways de produção quando as opções de autorização de entrada integradas não atendem aos seus requisitos.

  • Destino downstream — Permita que o alvo imponha autorização na solicitação recebida. Isso é útil para experimentação e integração progressiva — por exemplo, colocar um gateway na frente de um tempo de execução existente sem alterar a autenticação e a autorização do tempo de execução — para que você possa adotar recursos de gateway de forma incremental enquanto o tempo de execução continua aplicando a autenticação em que já confia.

Importante

Se você descarregar a autorização de entrada escolhendo uma AUTHENTICATE_ONLY ou outraNONE, o AgentCore Gateway não impõe a autorização por si só. Nesse cenário, você deve transferir a autorização para um componente separado — um mecanismo de política, uma função Lambda do interceptor ou o alvo downstream — caso contrário, qualquer chamador poderá alcançar seu alvo.

Authenticate-only autorização

Com a autorização somente de autenticação (AUTHENTICATE_ONLY), o gateway verifica a assinatura Signature Version 4 (SigV4) do chamador para confirmar sua identidade, mas não toma nenhuma decisão de autorização própria. Qualquer diretor autenticado do IAM pode invocar o gateway, independentemente de suas permissões, e a solicitação é encaminhada para o destino. A autorização é delegada ao serviço de destino downstream ou a um mecanismo de política conectado ao gateway.

Importante

ComAUTHENTICATE_ONLY, o gateway não impõe nenhuma política de autorização. Qualquer SigV4-signed solicitação válida será encaminhada para o alvo. Garanta que seus alvos downstream implementem sua própria lógica de autorização ou conecte um mecanismo de política ao gateway para controlar o acesso. Sem a devida autorização no nível da política de destino ou gateway, qualquer chamador autenticado pode acessar seus serviços de back-end.

Sem autorização

Você pode criar um gateway configurado sem autorização usandoauthorizerType=NONE. O gateway não executará nenhuma autorização na solicitação de entrada do gateway e a solicitação pode não ser autenticada.

Importante

Não use gateways Sem Autorização para cargas de trabalho de produção, a menos que você tenha implementado todas as melhores práticas de segurança listadas abaixo. Se você precisar de uma lógica de autenticação personalizada, considere usar uma função Lambda do interceptor para lidar com a autenticação antes que as solicitações cheguem aos seus alvos.

Melhores práticas de segurança

  1. Use a chave de bedrock-agentcore:GatewayAuthorizerType condição para allow/deny acessar seletivamente dentro de sua organização para criar gateways com authorizerType=NONE

  2. Não use gateways Sem Autorização por conveniência para testes. Eles devem ser usados para gateways que você pretende tornar públicos, mas implementou suas próprias regras e verificações de limitação personalizadas para garantir que seu gateway público possa lidar com usuários não autenticados.

  3. Não use gateways Sem Autorização com alvos que possam responder com informações confidenciais. Embora os destinos sejam configurados com suas próprias configurações de autorização, é melhor adicionar outra camada de segurança no gateway.

Integre um tempo de execução existente sem alterar sua autenticação

Quando você combina um tipo de entrada descarregado com um tipo de autorização de saída correspondente que encaminha a identidade do chamador para o tempo de execução, a integração em um gateway pode ser tão simples quanto definir uma substituição de endpoint em seu cliente existente, sem necessidade de alterações de autenticação:

  • Tempos de execução do IAM — Combine a autorização de AUTHENTICATE_ONLY entrada com a autorização de saída do Caller IAM credentials ()CALLER_IAM_CREDENTIALS. O gateway autentica o chamador SigV4 e, em seguida, assina a solicitação no tempo de execução com a mesma identidade de chamador, para que a autorização do IAM existente do tempo de execução continue sendo aplicada inalterada. Para obter mais informações, consulte Credenciais do Caller IAM.

  • Tempos de execução do OAuth — Combine a autorização de entrada sem autorização com a autorização de saída Token passthrough (). JWT_PASSTHROUGH O gateway encaminha o JWT de entrada para o tempo de execução sem modificação, para que o tempo de execução valide o token exatamente como faz hoje. (A passagem do token encaminha um token portador, portanto, requer um tipo de entrada — autorização de JWT-bearing entrada JWT ou. NONE Não está disponível comAUTHENTICATE_ONLY, que é SigV4-based e não carrega nenhum símbolo do portador.) Para obter mais informações, consulte Passagem de token.

    nota

    Token passthrough (JWT_PASSTHROUGH) não é a abordagem recomendada para produção. Quando você encaminha o token de entrada inalterado, o mesmo token é aceito tanto pelo gateway quanto pelo destino downstream, portanto, ele deve ter um escopo rigoroso — por exemplo, o público de cada token (aud) deve ser restrito ao recurso pretendido. O padrão recomendado é a troca de tokens em nome de (OBO), em que o gateway troca o token do chamador por um novo token com escopo de público para o alvo, em vez de reproduzir o token do chamador. Use o token passthrough para facilitar a experimentação, o teste e a integração, e mude para o OBO para cargas de trabalho de produção de longo prazo.

Atenção

As configurações de encaminhamento de identidade nesta seção dependem exclusivamente do tempo de execução downstream para autorizar solicitações; o gateway não adiciona nenhuma autorização própria. Eles são destinados a testes, experimentação e integração de baixa interrupção. Para um gateway de produção, imponha a autorização no gateway — configure a autorização de entrada do JWT ou do IAM, anexe um mecanismo de política ou use uma função Lambda do interceptor. Para garantir que os chamadores não possam ignorar o gateway depois de adotá-lo, consulte Imposição de tráfego por meio do gateway.