View a markdown version of this page

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

Resource-based políticas de Amazon Bedrock AgentCore

Resource-based las políticas de Amazon Bedrock AgentCore le permiten controlar qué directores (AWS cuentas, usuarios de IAM o roles de IAM) pueden invocar y administrar sus AgentCore recursos de Amazon Bedrock (actualmente compatibles con Runtime, Gateway y Memory). Puede adjuntar IAM-style políticas directamente a sus recursos para definir reglas sobre quién puede iniciar sesiones en tiempo de ejecución, invocar una puerta de enlace, acceder a la memoria o realizar otras acciones de administración e invocación.

Resource-based las políticas funcionan en conjunto con las políticas de IAM basadas en la identidad para proporcionar control de acceso a los recursos de Amazon Bedrock. AgentCore Si bien las políticas basadas en la identidad se adjuntan a las identidades de IAM y especifican las acciones que pueden realizar, las políticas basadas en los recursos se adjuntan directamente a los recursos y especifican quién puede acceder a ellos.

Recursos admitidos

Amazon Bedrock AgentCore admite políticas basadas en recursos para los siguientes recursos:

  • Agent Runtime y Agent Endpoints: controle el acceso a las operaciones de invocación y administración de los agentes

  • Puerta de enlace: controle el acceso a las operaciones de invocación de la puerta de enlace

  • Memoria: controle el acceso a las operaciones de memoria

Cómo funcionan las políticas basadas en recursos

Identity-based frente a las políticas basadas en los recursos

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

Archivo adjunto

Adjunta a los usuarios, roles o grupos de IAM

Se adjunta directamente a los recursos de Amazon Bedrock AgentCore

Administración

Administrado a través de IAM AWS

Administrado mediante las API de Amazon Bedrock AgentCore

Especifica

Acciones y recursos (el principal está implícito)

Principios, acciones y condiciones (el recurso está implícito)

Caso de uso

Defina lo que puede hacer una identidad

Defina quién puede acceder a un recurso

Evaluación de políticas

Cuando se realiza una solicitud a un AgentCore recurso de Amazon Bedrock, AWS evalúa tanto las políticas basadas en la identidad como las basadas en los recursos. En la siguiente tabla se muestra cómo afectan al acceso las diferentes combinaciones de políticas:

Política de IAM Política de recursos Resultado

Otorga el acceso

Silencio

Permitido

Otorga el acceso

Otorga el acceso

Permitido

Otorga el acceso

Acceso denegado

Denegado

Silencio

Silencio

Denegado

Silencio

Otorga el acceso

Permitido

Silencio

Acceso denegado

Denegado

Acceso denegado

Silencio

Denegado

Acceso denegado

Permite el acceso

Denegado

Acceso denegado

Acceso denegado

Denegado

Principios clave:

  • La denegación explícita siempre gana: si alguna política deniega la acción de forma explícita, se deniega el acceso independientemente de las demás políticas

  • Cualquiera de las políticas puede permitir: si una política basada en la identidad o en los recursos permite la acción (y ninguna política la niega), se concede el acceso

  • Denegar por defecto: si ninguna política permite explícitamente una acción, se deniega el acceso

Autorización jerárquica para el tiempo de ejecución y el punto final del agente

Los puntos finales del agente son puntos de acceso direccionables a versiones específicas del tiempo de ejecución de un agente. Cada punto final apunta a una versión concreta de la configuración del tiempo de ejecución, con un punto final PREDETERMINADO que se dirige automáticamente a la última versión. Al autorizar operaciones de la API en tiempo de ejecución, como InvokeAgentRuntime yInvokeAgentRuntimeCommand, AWS evalúa las políticas basadas en la identidad y en los recursos, tanto para el tiempo de ejecución del agente como para el punto final del agente que se invoca.

Para que se autorice una solicitud, se deben cumplir las siguientes condiciones:

  • Las políticas basadas en la identidad asociadas a la entidad que realiza la llamada deben permitir la acción tanto en los recursos del agente en tiempo de ejecución como en los del punto final del agente

  • La política basada en recursos sobre el tiempo de ejecución del agente debe permitir la acción (si existe una política)

  • La política basada en recursos del punto final del agente debe permitir la acción (si existe una política)

importante

Para proporcionar acceso multicuenta a un principal, debe crear políticas basadas en recursos que permitan el acceso tanto al entorno de ejecución del agente como al punto final del agente. Si alguno de los recursos deniega el acceso o carece de una declaración de autorización explícita, se denegará la solicitud.

Ejemplo: para conceder el acceso entre cuentas se requieren políticas en ambos 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" } ] }

Consideraciones sobre el tipo de autenticación

La forma de escribir las políticas basadas en recursos depende del tipo de autenticación configurado para su Agent Runtime o Gateway:

Autenticación SigV4

Utilice AWS principios específicos (usuarios, funciones o cuentas de IAM) en el elemento. Principal Por ejemplo: "Principal": {"AWS": "arn:aws:iam::123456789012:role/MyRole"}. La política se evalúa junto con los permisos de IAM de la persona que llama. Para ver un ejemplo que restringe un tiempo de ejecución para que solo lo invoque una AgentCore puerta de enlace, consulte Restringir la invocación entrante de IAM (SiGv4) a su puerta de enlace.

Autenticación OAuth

Debe utilizar un carácter comodín («Principal»: «*») en las declaraciones de política. AWS Identity Service valida los tokens de OAuth antes de la evaluación de la política. Solo los usuarios de OAuth autenticados con tokens JWT válidos del proveedor de identidad (IdP) registrado pueden invocar el recurso. Las solicitudes anónimas o no autenticadas se rechazan antes de la evaluación de la política. Utilice claves de condición para restringir el acceso (por ejemploaws:SourceVpc,aws:SourceVpce).

importante

Un Agent Runtime o una puerta de enlace solo se pueden configurar con la autenticación SigV4 U OAuth en el momento de la creación, no con ambas de forma simultánea. Esto significa que una única política basada en recursos se aplica a un solo tipo de autenticación.

Estructura de la política

Una política basada en recursos es un documento JSON con la siguiente estructura:

{ "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

El Resource campo del documento de política debe contener el ARN exacto del recurso al que se adjunta la política. El uso de «Recurso»: no se admite «*» y se producirá un error de validación.

Acciones admitidas

Acciones del agente en tiempo de ejecución

  • bedrock-agentcore:InvokeAgentRuntime- Invoca el tiempo de ejecución de un agente

  • bedrock-agentcore:InvokeAgentRuntimeForUser- Invoca un punto final del tiempo de ejecución de un agente con un encabezado X-Amzn-Bedrock-AgentCore-Runtime-User-Id

  • bedrock-agentcore:InvokeAgentRuntimeCommand- Ejecute un comando de shell en una sesión de tiempo de ejecución activa

  • bedrock-agentcore:InvokeAgentRuntimeCommandShell- Abra una sesión de WebSocket shell interactiva en una sesión de tiempo de ejecución activa

  • bedrock-agentcore:InvokeAgentRuntimeWithWebSocketStream- Invoca un agente en tiempo de ejecución con stream WebSocket

  • bedrock-agentcore:InvokeAgentRuntimeWithWebSocketStreamForUser- Invoca el tiempo de ejecución de un agente con una WebSocket transmisión con encabezado X-Amzn-Bedrock-AgentCore-Runtime-User-Id

  • bedrock-agentcore:StopRuntimeSession- Detener una sesión de tiempo de ejecución activa

  • bedrock-agentcore:GetAgentCard- Recupera la información de la tarjeta de agente

Acciones de pasarela

  • bedrock-agentcore:InvokeGateway- Invoca una puerta de enlace

Acciones de memoria

  • bedrock-agentcore:GetMemory- Recupera un recurso de memoria

  • bedrock-agentcore:UpdateMemory- Actualizar un recurso de memoria

  • bedrock-agentcore:DeleteMemory- Eliminar un recurso de memoria

  • bedrock-agentcore:CreateEvent- Crear un evento en un recurso de memoria

  • bedrock-agentcore:GetEvent- Recupera un evento de un recurso de memoria

  • bedrock-agentcore:DeleteEvent- Eliminar un evento de un recurso de memoria

  • bedrock-agentcore:ListEvents- Listar eventos de un recurso de memoria

  • bedrock-agentcore:ListActors- Listar los actores de un recurso de memoria

  • bedrock-agentcore:ListSessions- Listar las sesiones de un recurso de memoria

  • bedrock-agentcore:GetMemoryRecord- Obtenga un registro de memoria a partir de un recurso de memoria

  • bedrock-agentcore:ListMemoryRecords- Listar los registros de memoria de un recurso de memoria

  • bedrock-agentcore:RetrieveMemoryRecords- Busca registros de memoria desde un recurso de memoria

  • bedrock-agentcore:DeleteMemoryRecord- Eliminar un registro de memoria de un recurso de memoria

  • bedrock-agentcore:BatchCreateMemoryRecords- Creación por lotes de registros de memoria en un recurso de memoria

  • bedrock-agentcore:BatchUpdateMemoryRecords- Actualización por lotes de registros de memoria en un recurso de memoria

  • bedrock-agentcore:BatchDeleteMemoryRecords- Eliminar por lotes los registros de memoria en un recurso de memoria

  • bedrock-agentcore:StartMemoryExtractionJob- Inicie un trabajo de extracción dentro de un recurso de memoria

  • bedrock-agentcore:ListMemoryExtractionJobs- Listar los trabajos de extracción dentro de un recurso de memoria

Claves de condición

Puede utilizar las claves de condición para refinar aún más el control de acceso en sus políticas. Para obtener una lista completa de las claves de condición disponibles, consulte Claves de AgentCore condición de Bedrock y Claves de contexto de condición AWS globales.

Casos de uso y ejemplos comunes

En esta sección se proporcionan ejemplos prácticos de políticas basadas en recursos para escenarios comunes. El Resource campo de cada ejemplo debe contener el ARN exacto del recurso al que se adjunta la política. Sustituya los ARN de ejemplo por los ARN de sus recursos reales.

Permita roles en otro AWS inscrita

Concede acceso a la API a funciones específicas en una AWS cuenta 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" } ] }

Denegue el tráfico en función de la dirección IP de origen

Bloquee el tráfico entrante de rangos de direcciones IP específicos:

// 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 el tráfico solo desde una VPC específica

Restrinja el acceso a las solicitudes de una 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" } } } ] }

Autenticación OAuth con restricción de VPC

Cuando su Agent Runtime o Gateway esté configurado con la autenticación OAuth, debe utilizar un principal comodín. En este ejemplo, se restringen OAuth-authenticated las solicitudes a una 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

El comodín principal («Principal»: «*») es necesario para la autenticación de OAuth. AWS Identity Service valida los tokens de OAuth antes de la evaluación de la política. Solo los usuarios con tokens JWT válidos de su proveedor de identidad registrado pueden acceder al recurso. Las solicitudes anónimas o no autenticadas se rechazan antes de pasar a una evaluación de la política. Usa claves de condición (comoaws:SourceVpc,aws:SourceVpce) para restringir aún más el acceso

Administración de políticas de recursos

Seleccione uno de los siguientes métodos:

ejemplo
AWS CLI
  1. ====== Crear o actualizar una política de recursos

    Utilice el 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

    Obtenga una política de recursos

    Utilice el comando get-resource-policy:

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

    Eliminar una política de recursos

    Utilice el 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. Los siguientes ejemplos muestran cómo administrar las políticas de recursos mediante el SDK de 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ácticas recomendadas de seguridad

Aplicar permisos de privilegios mínimos

Conceda solo los permisos mínimos necesarios para su 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 que el diputado se confunda

Utilice siempre claves de condición al conceder acceso a AWS los servicios:

// 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" } } } ] }

Utilice la denegación explícita para los controles críticos

Utilice declaraciones de denegación explícitas para las restricciones críticas para la seguridad:

// 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" } } } ] }

Resolución de problemas

Errores de acceso denegado

Si recibe un error de «Acceso denegado»:

  • Compruebe ambas políticas: compruebe las políticas basadas en la identidad y las basadas en los recursos

  • Busque denegaciones explícitas: una denegación explícita en cualquier política anula todas las autorizaciones

  • Verificar el ARN principal: asegúrese de que el ARN principal de la política coincida con la persona que llama

  • Compruebe las condiciones: compruebe que todas las claves de condición se evalúan como verdaderas

  • Revise los SCP: las políticas de control de los servicios de la organización pueden anular las políticas de recursos

Errores de validación de políticas

Errores comunes de validación de políticas:

  • JSON no válido: asegúrate de que tu política sea un JSON válido

  • Formato de ARN no válido: compruebe que todos los ARN tienen el formato correcto

  • Acciones no compatibles: compruebe que todas las acciones sean compatibles con el tipo de recurso

  • Faltan elementos obligatorios: asegúrese de que estén presentes la versión, la declaración, el efecto, el principio y la acción