Seguridad y controles de acceso
El arnés ofrece las mismas primitivas de seguridad que el resto AgentCore, conectadas por configuración.
-
Ejecución aislada. Cada sesión se ejecuta en su propia microVM Firecracker en tiempo de ejecución. AgentCore Sin estado compartido, sin sistema de archivos compartido.
-
Función de ejecución de IAM. El arnés asume una función de IAM de su propiedad, que se puede configurar para incluir Bedrock, ECR y las primitivas CloudWatch a las AgentCore que afecta. Consulte un ejemplo de política de funciones de ejecución a continuación.
-
Modelo de permisos de IAM. Las API de Harness requieren permisos tanto en el recurso de arnés como en el recurso AgentCore de ejecución subyacente. Por ejemplo, las llamadas
InvokeHarnessrequierenbedrock-agentcore:InvokeHarnesstanto comobedrock-agentcore:InvokeAgentRuntimepermisos en el ARN del arnés. El mismo patrón se aplica a las operaciones del plano de control:UpdateHarnessDeleteHarnessrequierebedrock-agentcore:UpdateAgentRuntimebedrock-agentcore:DeleteAgentRuntime, requiere, etc. Consulte la política de funciones de ejecución para ver la lista completa. -
Soporte OAuth entrante. Los recursos de arnés configurados por JWT requieren que las personas que llaman presenten un JWT válido emitido por un proveedor de identidad configurado antes de poder invocar el arnés. AgentCore La identidad transmite la identidad del usuario final a través del agente, de modo que las herramientas intermedias pueden llamar a las API con credenciales de usuario específicas en lugar de a una cuenta de servicio compartida.
-
VPC. Conecte las sesiones de arnés a su VPC para obtener acceso privado a los recursos internos.
-
Políticas sobre Gateway. Cuando las herramientas se suministran a través de AgentCore Gateway, se pueden configurar Cedar-based políticas para bloquear todas las llamadas: quién puede llamar a qué herramienta, en qué condiciones y con qué argumentos.
nota
SigV4 e identidad por usuario. Cuando las personas que llaman se autentican con SigV4 (AWS IAM), el arnés no propaga la identidad de cada usuario a las llamadas posteriores a las herramientas. Esto significa que las funciones de determinación del alcance de las credenciales por usuario de AgentCore Identity Token Vault, como el almacenamiento de los tokens de OAuth en función del usuario y el intercambio de los mismos en nombre del usuario, solo están disponibles cuando las personas que llaman se autentican con un Bearer JWT a través de la ruta de entrada de OAuth. Si su caso de uso requiere la asignación de credenciales por usuario para las herramientas posteriores, configure el OAuth entrante en el arnés. La compatibilidad con SiGv4 para la identidad por usuario está prevista para una futura versión.
Modelo de responsabilidad compartida
El arnés se basa en Runtime. AgentCore El límite de seguridad es el mismo: autenticación IAM o JWT combinada con aislamiento de microVM. El arnés no añade una capa de seguridad entre la persona que llama y la microVM.
AWS responsabilidades:
-
Infraestructura segura y aislamiento de microVM a nivel de hardware
-
Parcheo del kernel del sistema operativo
-
Parches en tiempo de ejecución del lenguaje para despliegues directos de código
-
Seguridad de la infraestructura de red
-
Disponibilidad y resiliencia del servicio
Sus responsabilidades:
-
Gestión de dependencias y seguridad del código de agente
-
Controles de acceso y políticas de recursos de IAM
-
Seguridad de los comandos ejecutados en las sesiones de ejecución
-
Session-to-user aplicación de la cartografía
-
Validación de entradas y prevención de inyecciones rápidas, incluida la validación de todas las
InvokeHarnessentradas (consulteLímite de confianza y validación de entradas) -
Validación de la configuración del modelo: por ejemplo
additionalParamsapiBase, ymodelIdcampos (consulteParámetros de configuración del modelo) -
Fuentes de habilidades e instrucciones: garantizar que los depósitos de S3, los repositorios de Git y las URL utilizadas para las habilidades contengan contenido confiable (consulte) Habilidades e instrucciones
-
Actualizaciones de imágenes de contenedores (para despliegues en contenedores): reconstruya periódicamente con la imagen base segura más reciente
-
Configuración de red (grupos de seguridad, puntos finales de VPC, tablas de enrutamiento)
Para ver el modelo completo AgentCore de responsabilidad compartida en tiempo de ejecución, consulte las prácticas recomendadas de seguridad para AgentCore Runtime.
Límite de confianza y validación de entradas
Todos InvokeHarness y cada uno InvokeAgentRuntimeCommand de los datos son confiables. Cualquier director que pase la puerta de autenticación y autorización de IAM o JWT tiene acceso a toda la sesión de microVM, incluidas las herramientas y capacidades configuradas en el arnés. El arnés no desinfecta las entradas, no filtra los bloques de contenido ni impone restricciones de comportamiento.
Si expone el problema a usuarios finales en los que no confía plenamente (empleados, consumidores externos o integraciones de terceros), valide y desinfecte los mensajes en la capa de aplicación antes de pasárselos. InvokeHarness Esto incluye eliminar los tipos de bloques de contenido o los campos de configuración del modelo que no desee que se envíen. Este es el mismo patrón que cualquier servicio que acepte cargas útiles de usuarios autorizados, como Lambda, Amazon API Gateway y Amazon SQS.
Parámetros de configuración del modelo
El model campo InvokeHarness acepta las configuraciones additionalParams Bedrock, OpenAI y LitellM. Estos parámetros se transmiten al proveedor del modelo subyacente sin cambios. El arnés no valida, filtra ni restringe estos parámetros.
Las personas que llaman y que pueden configurarlo additionalParams pueden:
-
Redirigir las solicitudes a puntos finales arbitrarios: el
aws_bedrock_runtime_endpointparámetro LitellM anula la URL del punto final de Bedrock. La persona que llama puede enrutar la solicitud firmada, incluidas la firma de SigV4 y las credenciales de sesión, a un punto final que se especifique en la configuración del modelo de confianza. -
Anular los encabezados HTTP: el
extra_headersparámetro de OpenAI inserta o anula los encabezados HTTP en la solicitud saliente al proveedor del modelo, incluido el encabezado.Authorization -
Intente asumir una función de IAM: el
aws_role_nameparámetro LitellM indica al motor de ejecución que asuma una función de IAM diferente antes de llamar al proveedor del modelo. El intento se realiza correctamente o fracasa en función de los permisos del rol de ejecución.sts:AssumeRole -
Cambiar el modelo o la región de destino: los
apiBasecamposmodelIdy pueden redirigir la inferencia a un modelo, región o proveedor completamente diferente.
Si su aplicación expone InvokeHarness las capacidades a personas que llaman en las que no confía plenamente, considere la posibilidad de implementar la validación de entradas en su capa de aplicación. Entre los ejemplos se incluyen:
-
Eliminar o permitir incluir el campo en una lista antes de reenviar las solicitudes
model -
Validar o eliminar, y
additionalParamsapiBasemodelId -
Denegar la
sts:AssumeRolefunción de ejecución si no es necesario cambiar de función -
Definir el alcance del acceso a la red mediante grupos de seguridad de VPC
Habilidades e instrucciones
Las habilidades son paquetes de anotaciones y scripts que el arnés obtiene de Amazon S3 o Git en el momento de la invocación y los inyecta en el contexto del agente. El arnés trata todo el contenido de las habilidades como información fiable. No valida, desinfecta ni inspecciona el contenido o la fuente de las habilidades antes de proporcionárselas al agente.
Su responsabilidad incluye:
-
Garantizar que las fuentes de habilidades (depósitos de S3, repositorios de Git, URL) sean confiables y tengan acceso controlado
-
Revise el contenido de las habilidades, incluidas las instrucciones de rebajas y cualquier script incorporado, antes de configurarlas en el arnés
-
Controlar qué principales pueden anular el
skillscampo por invocación, ya que las personas que llaman pueden apuntar el arnés a fuentes arbitrarias de S3 o Git
Las habilidades se pueden anular por llamada. InvokeHarness Si la aplicación reenvía la información proporcionada por la persona que llama aInvokeHarness, la persona que llama puede proporcionar sus propias fuentes de habilidades que contengan instrucciones o scripts arbitrarios. Algunos ejemplos de mitigaciones son:
-
Eliminar o ignorar el
skillscampo de las solicitudes enviadas por las personas que llaman -
Permitir incluir prefijos S3 o repositorios Git permitidos
Observabilidad y correlación de trazas
El arnés propaga automáticamente los identificadores de correlación a las AgentCore primitivas posteriores (puerta de enlace, memoria, intérprete de código, navegador) para permitir la entrada de vistas de rastreo unificadas. CloudWatch Estos identificadores se utilizan únicamente para la observabilidad; nunca se utilizan para decidir sobre la autorización o el acceso a los datos.
Configuración de red
De forma predeterminada, las sesiones de arnés se ejecutan en la red pública. Para acceder a los recursos privados (bases de datos, API internas, subredes privadas), implemente el arnés en su VPC.
ejemplo
importante
El arnés extrae su contenedor de aplicaciones de Amazon ECR Public al inicio de cada sesión. Cuando se ejecuta en modo VPC, la VPC debe permitir el acceso saliente a. public.ecr.aws Amazon ECR Public no admite puntos de enlace de VPC, por lo que su VPC debe tener una puerta de enlace NAT con una ruta a una puerta de enlace de Internet. Si esta conectividad no está disponible, las sesiones no se iniciarán debido a los tiempos de espera para extraer imágenes.
Para obtener instrucciones adicionales sobre la configuración de la red, consulte Configurar el AgentCore tiempo de ejecución y la configuración de la VPC de las herramientas integradas. Para obtener información sobre la conectividad API entrante a través de PrivateLink, consulte los puntos finales de la interfaz de VPC.
OAuth entrante
Exija a las personas que llaman que presenten un JWT válido emitido por un proveedor de identidad configurado antes de poder invocar el arnés. AgentCore La identidad transmite la identidad del usuario final a través del agente, de modo que las herramientas intermedias pueden llamar a las API con credenciales de usuario específicas en lugar de a una cuenta de servicio compartida.
ejemplo
Más información: AgentCore Identidad · autorizador JWT entrante · credenciales salientes
Políticas de pasarela
Cuando las herramientas se suministran a través de AgentCore Gateway, Cedar-based las políticas controlan todas las llamadas: quién puede llamar a qué herramienta, en qué condiciones y con qué argumentos.
Más información: AgentCore Política · patrones comunes
Política de roles de ejecución
El arnés asume una función de ejecución de IAM que usted proporcione. La política de confianza del rol debe permitir que el director del AgentCore servicio lo asuma:
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": {"Service": "bedrock-agentcore.amazonaws.com"}, "Action": "sts:AssumeRole" }] }
Permisos de IAM necesarios para las personas que llaman
Las API de Harness requieren permisos tanto en el recurso de arnés como en los recursos de AgentCore tiempo de ejecución subyacentes y de AgentCore memoria opcionales. En la siguiente tabla se enumeran las acciones necesarias para cada API:
| API | Acciones obligatorias |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
La mayoría de las acciones utilizan el ARN del arnés como alcance del recurso:. arn:aws:bedrock-agentcore:<region>:<accountId>:harness/<id> Las acciones de punto final también utilizan el ARN del punto final de arnés:. arn:aws:bedrock-agentcore:<region>:<accountId>:harness/<id>/harness-endpoint/<endpointName>
Las DeleteHarnessEndpoint acciones GetHarnessEndpointUpdateHarnessEndpoint, y requieren tanto el ARN del arnés como el ARN del punto final. CreateHarnessEndpointsolo requiere el ARN del arnés. El punto final aún no existe, por lo que no se necesita un ARN del punto final. Cuando se invoca un punto final personalizado InvokeHarness y se InvokeAgentRuntimeCommand requieren tanto el ARN del arnés como el ARN del punto final.
Ejemplo de política de funciones de ejecución
{ "Version": "2012-10-17", "Statement": [ { "Sid": "BedrockModelInvocation", "Effect": "Allow", "Action": [ "bedrock:InvokeModel", "bedrock:InvokeModelWithResponseStream" ], "Resource": [ "arn:aws:bedrock:*::foundation-model/*", "arn:aws:bedrock:<region>:<accountId>:*" ] }, { "Sid": "EcrPublicTokenAccess", "Effect": "Allow", "Action": [ "ecr-public:GetAuthorizationToken" ], "Resource": "*" }, { "Sid": "StsForEcrPublicPull", "Effect": "Allow", "Action": [ "sts:GetServiceBearerToken" ], "Resource": "*" }, { "Sid": "XRayTracingAccess", "Effect": "Allow", "Action": [ "xray:PutTraceSegments", "xray:PutTelemetryRecords", "xray:GetSamplingRules", "xray:GetSamplingTargets" ], "Resource": "*" }, { "Sid": "CloudWatchLogsGroup", "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:DescribeLogStreams" ], "Resource": "arn:aws:logs:<region>:<accountId>:log-group:/aws/bedrock-agentcore/runtimes/*" }, { "Sid": "CloudWatchLogsDescribeGroups", "Effect": "Allow", "Action": [ "logs:DescribeLogGroups" ], "Resource": "arn:aws:logs:<region>:<accountId>:log-group:*" }, { "Sid": "CloudWatchLogsStream", "Effect": "Allow", "Action": [ "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "arn:aws:logs:<region>:<accountId>:log-group:/aws/bedrock-agentcore/runtimes/*:log-stream:*" }, { "Sid": "CloudWatchMetricsPublish", "Effect": "Allow", "Resource": "*", "Action": "cloudwatch:PutMetricData", "Condition": { "StringEquals": { "cloudwatch:namespace": "bedrock-agentcore" } } }, { "Sid": "AgentCoreWorkloadIdentity", "Effect": "Allow", "Action": [ "bedrock-agentcore:GetWorkloadAccessToken", "bedrock-agentcore:GetWorkloadAccessTokenForJWT" ], "Resource": [ "arn:aws:bedrock-agentcore:<region>:<accountId>:workload-identity-directory/default", "arn:aws:bedrock-agentcore:<region>:<accountId>:workload-identity-directory/default/workload-identity/harness_<agentName>-*" ] }, { "Sid": "AgentCoreBrowserDefault", "Effect": "Allow", "Action": [ "bedrock-agentcore:StartBrowserSession", "bedrock-agentcore:StopBrowserSession", "bedrock-agentcore:GetBrowserSession", "bedrock-agentcore:ListBrowserSessions", "bedrock-agentcore:UpdateBrowserStream", "bedrock-agentcore:ConnectBrowserAutomationStream", "bedrock-agentcore:ConnectBrowserLiveViewStream" ], "Resource": "arn:aws:bedrock-agentcore:<region>:aws:browser/*" }, { "Sid": "AgentCoreCodeInterpreterDefault", "Effect": "Allow", "Action": [ "bedrock-agentcore:StartCodeInterpreterSession", "bedrock-agentcore:StopCodeInterpreterSession", "bedrock-agentcore:GetCodeInterpreterSession", "bedrock-agentcore:ListCodeInterpreterSessions", "bedrock-agentcore:InvokeCodeInterpreter" ], "Resource": "arn:aws:bedrock-agentcore:<region>:aws:code-interpreter/*" } ] }
La AgentCore CLI crea un rol con estos permisos automáticamente cuando se estructura un proyecto de arnés. La política anterior es para los casos en los que usted mismo crea el rol.
nota
El BedrockModelInvocation ejemplo de declaración anterior permite invocar todos los modelos básicos de todas las regiones y todos los recursos de Bedrock de tu cuenta. Para reducirlo, sustituya los ARN de los recursos por perfiles de inferencia específicos, que le permiten enrutar las solicitudes entre modelos y regiones con un solo ARN. Por ejemplo: arn:aws:bedrock:<destination_regions>:<accountId>:inference-profile/<profileId> combinados con todas las regiones permitidas. arn:aws:bedrock:<region>:<accountId>:foundation-model/<modelId>
En el caso de las cargas de trabajo de producción, Resource limite los valores a los ARN específicos que necesite su arnés, en lugar de utilizar. "*"
Permisos adicionales para funciones opcionales
A continuación, se muestran ejemplos de políticas que puede añadir a su función de ejecución en función de las funciones que utilice su arnés. Siga el principio del mínimo privilegio: conceda a su agente de arneses únicamente las herramientas y credenciales específicas que necesite para realizar inferencias. Consulte las definiciones Referencia de marcador de posición de los marcadores de posición.
Acceso privado al ECR (imágenes de contenedores personalizadas)
Añada esta política cuando su arnés utilice una imagen ECR privada para un contenedor personalizado.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ECRImageAccess", "Effect": "Allow", "Action": [ "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage" ], "Resource": "arn:aws:ecr:<ecrRegion>:<ecrAccountId>:repository/<ecrRepoName>" }, { "Sid": "ECRTokenAccess", "Effect": "Allow", "Action": "ecr:GetAuthorizationToken", "Resource": "*" } ] }
AgentCore Memoria
Añada esta política cuando su arnés utilice una instancia de memoria propiedad del cliente.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AgentCoreMemory", "Effect": "Allow", "Action": [ "bedrock-agentcore:CreateEvent", "bedrock-agentcore:DeleteEvent", "bedrock-agentcore:GetEvent", "bedrock-agentcore:ListEvents", "bedrock-agentcore:RetrieveMemoryRecords" ], "Resource": "arn:aws:bedrock-agentcore:<region>:<accountId>:memory/<memoryId>" } ] }
AgentCore Navegador (personalizado)
Añada esta política cuando su arnés utilice un recurso de navegador personalizado propiedad del cliente.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AgentCoreBrowserCustom", "Effect": "Allow", "Action": [ "bedrock-agentcore:StartBrowserSession", "bedrock-agentcore:StopBrowserSession", "bedrock-agentcore:GetBrowserSession", "bedrock-agentcore:ListBrowserSessions", "bedrock-agentcore:UpdateBrowserStream", "bedrock-agentcore:ConnectBrowserAutomationStream", "bedrock-agentcore:ConnectBrowserLiveViewStream" ], "Resource": "arn:aws:bedrock-agentcore:<region>:<accountId>:browser-custom/<browserCustomId>" } ] }
AgentCore Intérprete de código (personalizado)
Añada esta política cuando su arnés utilice un intérprete de código personalizado propiedad del cliente.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AgentCoreCodeInterpreterCustom", "Effect": "Allow", "Action": [ "bedrock-agentcore:StartCodeInterpreterSession", "bedrock-agentcore:StopCodeInterpreterSession", "bedrock-agentcore:GetCodeInterpreterSession", "bedrock-agentcore:ListCodeInterpreterSessions", "bedrock-agentcore:InvokeCodeInterpreter" ], "Resource": "arn:aws:bedrock-agentcore:<region>:<accountId>:code-interpreter-custom/<codeInterpreterCustomId>" } ] }
AgentCore Gateway
Añada esta política cuando su arnés utilice una puerta de enlace configurada con la autenticación entrante SigV4.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AgentCoreGatewayAccess", "Effect": "Allow", "Action": "bedrock-agentcore:InvokeGateway", "Resource": "arn:aws:bedrock-agentcore:<region>:<accountId>:gateway/<gatewayId>" } ] }
Fuentes de habilidades en Amazon S3 y Git
Añada esta política cuando su arnés obtenga una habilidad de una fuente de Amazon S3. La función de ejecución muestra y descarga los objetos de habilidad bajo el prefijo bucket.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AgentCoreSkillS3Access", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::<skillBucket>", "arn:aws:s3:::<skillBucket>/*" ] } ] }
Para obtener una habilidad de un repositorio Git privado, el arnés lee un token de acceso personal de un proveedor de credenciales de clave API. Aplica la política de proveedores de credenciales de clave de API que se muestra a continuación para el proveedor de credenciales que posea el token.
Proveedor de credenciales de clave de API (referencias ARN de encabezado OpenAI, Gemini, LitellM o MCP)
Añada esta política cuando su arnés utilice un proveedor de credenciales de clave de API para proveedores de modelos como OpenAI, Gemini o LitellM.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AgentCoreApiKeyTokenVaultDefault", "Effect": "Allow", "Action": "bedrock-agentcore:GetResourceApiKey", "Resource": [ "arn:aws:bedrock-agentcore:<region>:<accountId>:token-vault/default", "arn:aws:bedrock-agentcore:<region>:<accountId>:workload-identity-directory/default", "arn:aws:bedrock-agentcore:<region>:<accountId>:workload-identity-directory/default/workload-identity/harness_<agentName>-*" ] }, { "Sid": "AgentCoreApiKeyTokenVaultPerKey", "Effect": "Allow", "Action": "bedrock-agentcore:GetResourceApiKey", "Resource": "arn:aws:bedrock-agentcore:<region>:<accountId>:token-vault/default/apikeycredentialprovider/<apiKeyName>" }, { "Sid": "AgentCoreApiKeySecret", "Effect": "Allow", "Action": "secretsmanager:GetSecretValue", "Resource": "arn:aws:secretsmanager:<region>:<accountId>:secret:bedrock-agentcore-identity!default/apikey/<apiKeyName>-*" } ] }
Proveedor de credenciales OAuth2 (Gateway) OAuth-protected
Agregue esta política cuando su arnés utilice un proveedor de credenciales OAuth2 para las herramientas de puerta de enlace. OAuth-protected
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AgentCoreOAuth2TokenVaultDefault", "Effect": "Allow", "Action": "bedrock-agentcore:GetResourceOauth2Token", "Resource": [ "arn:aws:bedrock-agentcore:<region>:<accountId>:token-vault/default", "arn:aws:bedrock-agentcore:<region>:<accountId>:workload-identity-directory/default", "arn:aws:bedrock-agentcore:<region>:<accountId>:workload-identity-directory/default/workload-identity/harness_<agentName>-*" ] }, { "Sid": "AgentCoreOAuth2TokenVaultPerProvider", "Effect": "Allow", "Action": "bedrock-agentcore:GetResourceOauth2Token", "Resource": "arn:aws:bedrock-agentcore:<region>:<accountId>:token-vault/default/oauth2credentialprovider/<oauthProviderName>" }, { "Sid": "AgentCoreOAuth2Secret", "Effect": "Allow", "Action": "secretsmanager:GetSecretValue", "Resource": "arn:aws:secretsmanager:<region>:<accountId>:secret:bedrock-agentcore-identity!default/oauth2/<oauthProviderName>-*" } ] }
Referencia de marcador de posición
Sustituya los siguientes marcadores de posición de las políticas anteriores por valores específicos de su entorno:
| Placeholder | Description (Descripción) |
|---|---|
|
|
La AWS región en la que está desplegado el recurso. |
|
|
El ID AWS de su cuenta. |
|
|
El nombre de su agente de arneses. |
|
|
El ID del recurso AgentCore de memoria. |
|
|
El ID del recurso de navegador personalizado. |
|
|
El ID de su recurso de intérprete de código personalizado. |
|
|
El ID de su recurso de AgentCore Gateway. |
|
|
El nombre de su proveedor de credenciales de clave de API. |
|
|
El nombre del depósito de S3 que contiene tus archivos de habilidades. |
|
|
El nombre de su proveedor de credenciales de OAuth2. |
|
|
La región en la que está alojado su repositorio de ECR. |
|
|
El ID AWS de cuenta propietario del repositorio de ECR. |
|
|
El nombre de su repositorio de ECR. |
nota
Los últimos recursos -* de Secrets Manager representan el sufijo aleatorio que Secrets Manager añade a los ARN secretos.
Temas relacionados
-
Tools (Herramientas)- tipos de herramientas y patrones de AllowedTools
-
Entorno y sistema de archivos- entornos personalizados y permisos de ECR
-
Controle los costes con límites- límites de ejecución para controlar los costes