View a markdown version of this page

Conecte-se a provedores de identidade privada - Amazon Bedrock AgentCore

Conecte-se a provedores de identidade privada

O Amazon Bedrock AgentCore Identity oferece suporte à conexão com provedores de identidade OAuth 2.0 (IdPs) hospedados em sua AWS VPC, como o Keycloak auto-hospedado ou outros servidores de OIDC-compliant autorização PingFederate, sem expô-los à Internet pública. Isso permite que você use private IdPs para autorização JWT de entrada com AgentCore Runtime e AgentCore Gateway, bem como para provedores de credenciais OAuth2 de saída.

A conectividade privada com a VPC hospedada IdPs é estabelecida usando gateways de recursos e configurações de recursos do Amazon VPC Lattice, seguindo o mesmo padrão usado pelo Gateway VPC egress. AgentCore AgentCore O Identity usa a função AWSServiceRoleForBedrockAgentCoreIdentity vinculada ao serviço para criar e gerenciar recursos do VPC Lattice em sua conta para conectividade privada com seus endpoints de IdP.

Importante

AgentCore suporta dois modos de conectividade do VPC Lattice: o gerenciado Lattice (mais simples, gerencia o ciclo de vida dos recursos) e o Lattice autogerenciado (avançado, AgentCore com suporte entre contas e visibilidade total da governança). Cada modo tem diferentes vantagens e desvantagens em termos de complexidade, custo e controle. Para uma comparação detalhada dos prós e contras, consulte Modos de saída de VPC compatíveis.

Casos de uso

Provedores de identidade privada são comuns em ambientes corporativos em que as organizações:

  • Execute servidores de autorização auto-hospedados em sua VPC para atender aos requisitos de conformidade ou residência de dados

  • Use endpoints de descoberta OIDC privados que não são acessíveis ao público

  • Exija que todo o tráfego de autenticação permaneça na AWS rede sem atravessar a Internet pública

Autorização JWT de entrada com um IdP privado

Quando você configura a autorização JWT de entrada para AgentCore Runtime ou AgentCore Gateway, o autorizador usa a URL de descoberta para buscar as chaves públicas do IdP (JWKS) e validar os tokens JWT recebidos. Se seu IdP estiver hospedado em uma VPC e a URL de descoberta não estiver acessível ao público, você deverá configurar um endpoint privado para que o Identity AgentCore possa alcançar a descoberta do OIDC e os endpoints JWKS do IdP.

Configurar a autorização de entrada com um IdP privado

Para configurar a autorização de entrada do JWT com um IdP privado, inclua o privateEndpoint bloco na configuração do autorizador ao criar ou atualizar seu Runtime ou Gateway. AgentCore

Exemplo: CreateAgentRuntime com IdP privado para autenticação de entrada

{ "agentRuntimeName": "my-runtime", "authorizerConfiguration": { "customJWTAuthorizer": { "discoveryUrl": "https://idp.internal.example.com/.well-known/openid-configuration", "allowedAudiences": [ "my-agent-audience" ], "allowedClients": [ "my-client-id" ], "privateEndpoint": { "managedVpcResource": { "vpcIdentifier": "vpc-0abc123def456", "subnetIds": [ "subnet-0abc123", "subnet-0def456" ], "endpointIpAddressType": "IPV4", "securityGroupIds": [ "sg-0abc123def" ] } } } } }

Exemplo: CreateGateway com IdP privado para autenticação de entrada

{ "name": "my-gateway", "authorizerConfiguration": { "customJWTAuthorizer": { "discoveryUrl": "https://idp.internal.example.com/.well-known/openid-configuration", "allowedAudiences": [ "my-gateway-audience" ], "allowedClients": [ "my-client-id" ], "privateEndpoint": { "managedVpcResource": { "vpcIdentifier": "vpc-0abc123def456", "subnetIds": [ "subnet-0abc123", "subnet-0def456" ], "endpointIpAddressType": "IPV4", "securityGroupIds": [ "sg-0abc123def" ] } } } } }

Se o seu IdP usa um certificado TLS emitido por uma autoridade de certificação privada, você pode colocar um Application Load Balancer interno com um certificado ACM público à sua frente. Para obter mais informações, consulte Solução alternativa para certificados privados: ALB.

Para o Lattice autogerenciado, substitua pormanagedVpcResource: selfManagedLatticeResource

Exemplo: CreateAgentRuntime com Lattice autogerenciado para autenticação de entrada

{ "agentRuntimeName": "my-runtime", "authorizerConfiguration": { "customJWTAuthorizer": { "discoveryUrl": "https://idp.internal.example.com/.well-known/openid-configuration", "allowedAudiences": [ "my-agent-audience" ], "allowedClients": [ "my-client-id" ], "privateEndpoint": { "selfManagedLatticeResource": { "resourceConfigurationIdentifier": "arn:aws:vpc-lattice:us-east-1:123456789012:resourceconfiguration/rcfg-abc123" } } } } }

Exemplo: CreateGateway com Lattice autogerenciado para autenticação de entrada

{ "name": "my-gateway", "authorizerConfiguration": { "customJWTAuthorizer": { "discoveryUrl": "https://idp.internal.example.com/.well-known/openid-configuration", "allowedAudiences": [ "my-gateway-audience" ], "allowedClients": [ "my-client-id" ], "privateEndpoint": { "selfManagedLatticeResource": { "resourceConfigurationIdentifier": "arn:aws:vpc-lattice:us-east-1:123456789012:resourceconfiguration/rcfg-abc123" } } } } }

Provedor de credenciais OAuth de saída com um IdP privado

Quando você configura um provedor de credenciais OAuth2 de saída que usa um IdP privado, o Identity AgentCore precisa alcançar o endpoint do token do IdP para trocar códigos de autorização por tokens de acesso ou realizar concessões de credenciais de clientes. Se o endpoint de token do IdP estiver hospedado em sua VPC, você deverá configurar um endpoint privado no provedor de credenciais.

Configure o provedor de credenciais de saída com um IdP privado

Para configurar um provedor de credenciais OAuth de saída com um IdP privado, inclua o privateEndpoint bloco ao criar o provedor de credenciais usando um provedor personalizado com configuração manual.

Exemplo: criar um provedor de credenciais OAuth com um IdP privado

{ "name": "my-private-idp-provider", "credentialProviderType": "OAUTH", "oauthCredentialProvider": { "providerType": "CUSTOM", "customProviderConfiguration": { "issuer": "https://idp.internal.example.com/realms/my-realm", "authorizationEndpoint": "https://idp.internal.example.com/realms/my-realm/protocol/openid-connect/auth", "tokenEndpoint": "https://idp.internal.example.com/realms/my-realm/protocol/openid-connect/token" }, "clientId": "my-client-id", "clientSecret": "my-client-secret", "privateEndpoint": { "managedVpcResource": { "vpcIdentifier": "vpc-0abc123def456", "subnetIds": [ "subnet-0abc123", "subnet-0def456" ], "endpointIpAddressType": "IPV4", "securityGroupIds": [ "sg-0abc123def" ] } } } }

Para o Lattice autogerenciado, substitua pormanagedVpcResource: selfManagedLatticeResource

{ "name": "my-private-idp-provider", "credentialProviderType": "OAUTH", "oauthCredentialProvider": { "providerType": "CUSTOM", "customProviderConfiguration": { "issuer": "https://idp.internal.example.com/realms/my-realm", "authorizationEndpoint": "https://idp.internal.example.com/realms/my-realm/protocol/openid-connect/auth", "tokenEndpoint": "https://idp.internal.example.com/realms/my-realm/protocol/openid-connect/token" }, "clientId": "my-client-id", "clientSecret": "my-client-secret", "privateEndpoint": { "selfManagedLatticeResource": { "resourceConfigurationIdentifier": "arn:aws:vpc-lattice:us-east-1:123456789012:resourceconfiguration/rcfg-abc123" } } } }

Pré-requisitos

Antes de configurar um provedor de identidade privada, verifique o seguinte:

  • Seu provedor de identidade está em execução e pode ser acessado em sua VPC.

  • O endpoint de descoberta OIDC (/.well-known/openid-configuration), o endpoint JWKS e o endpoint de token do IdP podem ser acessados a partir das sub-redes especificadas.

  • Seus grupos de segurança permitem tráfego de entrada na porta usada pelo seu IdP (normalmente porta 443 para HTTPS).

  • Para o Lattice gerenciado, seu diretor do IAM deve ter a iam:CreateServiceLinkedRole permissão para AgentCore poder criar a função vinculada ao serviço Identity Network em seu nome. Para a política do IAM necessária, consulte Função vinculada ao serviço da Identity Network.

  • Para o Managed Lattice, seu diretor do IAM também precisa da ec2:CreateNetworkInterface seguinte permissão do Amazon EC2.

Service-linked função dos provedores de identidade privada

Quando você configura um endpoint privado para um provedor de AgentCore identidade, o Identity usa a função AWSServiceRoleForBedrockAgentCoreIdentity vinculada ao serviço para gerenciar a conectividade com seu IdP hospedado em VPC. Essa função é criada automaticamente na primeira vez que você configura um endpoint privado gerenciado para um provedor de identidade, desde que seu diretor do IAM tenha a iam:CreateServiceLinkedRole permissão necessária.

Para obter o documento de política completo e as instruções para criar, editar e excluir essa função, consulte Função vinculada ao serviço da Identity Network.

Limitações e considerações

  • O URL de descoberta deve ser HTTPS: o URL de descoberta do OIDC do IdP deve usar HTTPS. Não há suporte para endpoints HTTP.

  • Certificados privados: seu IdP deve usar um certificado TLS publicamente confiável ou você deve colocar um ALB com um certificado ACM público na frente dele. Para obter mais informações, consulte Solução alternativa para certificados privados: ALB.

  • Cross-account: a conectividade de IdP Cross-account privado requer a opção Lattice autogerenciada. O Managed Lattice não oferece suporte a cenários entre contas.

Para ver as limitações adicionais relacionadas à conectividade do VPC Lattice, consulte Limitações e considerações em Conecte-se a recursos privados em sua VPC usando o VPC Lattice.