Autenticación Private Key JWT con Amazon Bedrock AgentCore Identity

Amazon Bedrock AgentCore Identity ahora permite autenticación Private Key JWT: los agentes usan una firma en AWS KMS en lugar de un client secret. Este artículo explica el flujo, los escenarios de uso y los pasos básicos para configurar la clave y el proveedor de credenciales.

Por Redaccion TD
Autenticación Private Key JWT con Amazon Bedrock AgentCore Identity

Resumen

Amazon Bedrock AgentCore Identity añade soporte para Private Key JWT como método de autenticación de cliente para agentes. En vez de depender de un secreto compartido (client secret), los agentes construyen y firman una aserción JWT con una clave privada que permanece en AWS Key Management Service (KMS). El proveedor de identidad downstream verifica la firma con la clave pública que usted registra en su tenant. Este enfoque reduce superficie de riesgo por exposición de secretos y facilita gestión centralizada de claves, algo especialmente valioso para organizaciones en Latinoamérica que manejan datos sensibles y requieren controles de cumplimiento.

Cómo funciona el flujo de autenticación

El flujo típico consiste en varios pasos coordinados entre el agente, AgentCore Identity, AWS KMS y el proveedor de identidad:

  • El agente llama a la API GetResourceOauth2Token de AgentCore Identity solicitando un token para un recurso protegido (por ejemplo, una API interna de órdenes).
  • AgentCore Identity obtiene del proveedor de credenciales el client ID, el ARN de la clave KMS y el algoritmo de firma a usar.
  • AgentCore Identity construye una aserción JWT de corta duración con las claims requeridas y cualquier encabezado adicional configurado (por ejemplo, un key identifier o thumbprint de certificado).
  • AgentCore Identity llama a kms:Sign contra la clave asimétrica de KMS usando el algoritmo configurado (RS256, PS256 o ES256). AWS KMS devuelve la firma; la clave privada nunca sale de KMS.
  • AgentCore Identity publica la aserción firmada al endpoint de token del proveedor de identidad con grant_type=client_credentials y client_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer.
  • El proveedor de identidad verifica la firma con la clave pública registrada y, si es válida, devuelve un access token a AgentCore Identity.
  • AgentCore Identity entrega el access token al agente, que puede llamar al API protegido con ese token.

Opciones de firma y claves

AgentCore Identity soporta los algoritmos de firma que KMS puede manejar y que su proveedor de identidad acepte: RS256, PS256 y ES256. Cuando cree la clave en KMS puede optar por generar el par de claves allí y exportar la clave pública para registrarla en su IdP, o importar material de clave si su IdP genera las claves por su cuenta.

Un ejemplo común es crear una clave asimétrica en KMS con el spec ECC_NIST_P256 y usar ES256 como algoritmo de firma. La recomendación es verificar la compatibilidad del algoritmo entre el proveedor de identidad, KMS y AgentCore Identity antes de implementar.

Flujos de concesión soportados

Private Key JWT en AgentCore Identity puede usarse en tres escenarios principales:

  • Machine-to-machine (M2M): el agente actúa por sí mismo sin un usuario humano presente. Se usa el grant client_credentials; el token representa la identidad de la aplicación/agent.

  • On-behalf-of (OBO): el agente actúa en representación de un usuario cuando ya existe un token de usuario entrante. AgentCore Identity intercambia el token del usuario por un token downstream que represente al usuario, autenticándose con la aserción del cliente. Dependiendo del proveedor, puede usar RFC 8693 (token exchange) o RFC 7523 (JWT authorization grant).

  • User-delegated access (acceso delegado por el usuario): el usuario otorga consentimiento mediante un flujo interactivo (authorization code). No hay token previo; después de la autorización, el agente recibe un token que representa al usuario.

Estos modos cubren la mayoría de casos de uso en servicios automatizados, agentes de soporte, integraciones backend y escenarios donde debe preservarse la identidad del usuario.

Requisitos previos y permisos

Antes de configurar Private Key JWT necesita lo siguiente:

  • Cuenta AWS con acceso a la consola para KMS, AgentCore y AWS CloudTrail.
  • Un tenant en su proveedor de identidad donde pueda registrar la clave pública de la aplicación.
  • Discovery URL y Client ID del proveedor de identidad.
  • Confirmar el algoritmo de firma que exige su proveedor de identidad y que sea soportado por KMS y AgentCore Identity.

Permisos mínimos necesarios en AWS para cada paso:

  • Crear y configurar la clave KMS: kms:CreateKey y kms:PutKeyPolicy.
  • Exportar la clave pública para registrarla en el IdP: kms:GetPublicKey.
  • Si importa material de clave proporcionado por el IdP: kms:GetParametersForImport y kms:ImportKeyMaterial.
  • Crear el proveedor de credenciales en AgentCore: bedrock-agentcore-control:CreateOauth2CredentialProvider.

Además, AgentCore Identity usa kms:Sign para firmar las aserciones en tiempo de ejecución; asegúrese de que la entidad que corre AgentCore tenga permiso para invocar esa acción contra la clave.

Pasos básicos en la consola (alta nivel)

A continuación, los pasos esenciales para habilitar la autenticación con Private Key JWT usando la consola AWS:

  1. Crear la clave asimétrica en AWS KMS

    • Abra la consola de KMS en la misma región donde estará su proveedor de credenciales.
    • Elija Customer managed keys y Create key.
    • Seleccione Asymmetric como Key type y Sign and verify como Key usage.
    • Elija el Key spec compatible con su algoritmo (por ejemplo ECC_NIST_P256 para ES256).
    • Complete alias, administradores y políticas de uso según sus controles internos.
  2. Exportar la clave pública y registrarla en su proveedor de identidad

    • Después de crear la clave, use kms:GetPublicKey para obtener la clave pública y regístrela en el tenant de su IdP asociado al Client ID de la aplicación.
    • Alternativamente, si su IdP genera el par de claves y le entrega el material privado, puede importarlo a KMS mediante kms:GetParametersForImport y kms:ImportKeyMaterial.
  3. Crear el proveedor de credenciales en AgentCore Identity

    • En la consola de AgentCore cree un OAuth2 Credential Provider indicando el Client ID, el ARN de la clave KMS y el algoritmo de firma.
    • Configure cualquier encabezado o claim adicional que su IdP requiera (por ejemplo kid o x5t).
  4. Verificar registros y auditoría

    • AgentCore Identity registra operaciones relevantes en AWS CloudTrail. Revise los eventos para auditar llamadas a GetResourceOauth2Token y llamadas kms:Sign, y confirme que los accesos están conforme a sus políticas de seguridad.

Ventajas prácticas para organizaciones en Latinoamérica

Adoptar Private Key JWT con KMS aporta beneficios concretos para empresas y gobiernos latinoamericanos:

  • Menor riesgo de fugas: no hay secrets distribuidos en texto plano entre agentes o servicios.
  • Control centralizado de claves: rotación, políticas de acceso y auditoría central en KMS.
  • Cumplimiento y trazabilidad: integración con CloudTrail facilita reportes y cumplimiento regulatorio.
  • Flexibilidad operativa: soporta distintos flujos (M2M, OBO, authorization code) que cubren escenarios comunes en servicios de atención al cliente, banca, salud y sector público.

Consideraciones finales

Antes de implementar, valide compatibilidades de algoritmo y key spec entre su proveedor de identidad, AWS KMS y AgentCore Identity. Planifique políticas de acceso a la clave, rotación y monitoreo de eventos en CloudTrail. Al eliminar el uso de client secrets y delegar la firma a KMS, logra mayor seguridad y gobernanza sobre las identidades de sus agentes y servicios.

Si su organización ya usa Amazon Bedrock y AgentCore para orquestar agentes de IA o integraciones automatizadas, Private Key JWT ofrece una vía segura y gestionable para autenticar esos agentes frente a APIs internas y proveedores de identidad corporativos.

Fuente original: AWS ML Blog