Preámbulo
En el panorama en constante evolución de la computación en la nube, mantener una seguridad estable y garantizar el cumplimiento es un desafío crítico para las organizaciones de todos los tamaños. A medida que las compañías adoptan cada vez más la nube, la complejidad de gestionar y proteger los datos en varias plataformas crece exponencialmente.
Amazon Bedrock, con su estable base de servicios de inteligencia artificial y aprendizaje automático, ofrece un entorno escalable y seguro para que las organizaciones desarrollen e implementen aplicaciones inteligentes. Sin embargo, para aprovechar al máximo el potencial de estas innovaciones, es esencial implementar un enfoque optimizado de seguridad y cumplimiento.
La integración de Elastic con Amazon Bedrock puede mejorar significativamente el monitoreo de la seguridad y la administración de la conformidad dentro de tu entorno de nube. Esta integración aprovecha las capacidades de búsqueda, observabilidad y seguridad de Elastic para optimizar la forma en que gestionas y proteges las aplicaciones y los datos alojados en Amazon Bedrock.
Las capacidades de administración de eventos e información de seguridad (SIEM) de Elastic se pueden emplear para analizar logs y monitorear eventos generados por aplicaciones que se ejecutan en Amazon Bedrock. Esto permite la detección de posibles amenazas de seguridad en tiempo real y acciones de respuesta automatizadas para mitigar los riesgos.
Este artículo lo guiará a través del proceso de configuración de la integración de Amazon Bedrock y habilitará nuestras reglas de detección prediseñadas para optimizar sus operaciones de seguridad. Cubriremos los siguientes aspectos clave:
- Requisitos previos para la integración de Elastic Amazon Bedrock: Comprender los requisitos básicos para configurar la integración de Elastic Amazon Bedrock para la seguridad en la nube.
- Configuración de la integración de Amazon Bedrock: instrucciones paso a paso para configurar Amazon Bedrock en su infraestructura de AWS existente.
- Habilitación de reglas de seguridad prediseñadas: cómo aprovechar las reglas prediseñadas para detectar infracciones de directivas de alta confianza y otras amenazas de seguridad.
- Exploración de la detección de bloqueos de mala conducta de alta confianza: Una mirada en profundidad a una regla prediseñada específica diseñada para detectar bloqueos de mala conducta de alta confianza dentro de Amazon Bedrocklogs.
- Demuestre un escenario de caso de exploit para Amazon Bedrock: Uso de un script de Python de muestra para simular interacciones con un modelo de Amazon Bedrock para probar escenarios de exploits que podrían activar reglas de detección precompiladas de Elastic.
Requisitos previos para la integración de Elastic Amazon Bedrock
Integración elástica para Amazon Bedrock
La integración de Amazon Bedrock recopila registros de invocación de modelos de Amazon Bedrock y métricas de tiempo de ejecución con Elastic Agent. Para profundizar en la integración, puede encontrar documentación en nuestra documentación.
A continuación se muestra la lista de requisitos previos para tener una configuración completa y exitosa de Amazon Bedrock Elastic Integration:
- Configuración de la cuenta de AWS
- Requisitos de Elastic Cloud
- Terraform (opcional)
Configuración de la cuenta de AWS
- Cuenta de AWS activa: cerciorar de tener una cuenta de AWS activa con las licencias adecuadas para implementar y gestionar recursos en Amazon Bedrock.
- Configuración de Amazon Bedrock: confirme que Amazon Bedrock está configurado y operativo correctamente dentro de su entorno de AWS. Esto incluye la configuración de modelos de IA, conjuntos de datos y otros recursos necesarios para sus aplicaciones. Consulte Introducción a Amazon Bedrock para obtener información adicional sobre la configuración.
- Roles y licencias de IAM: crea o configura roles de Identity and Access Management (IAM) con las licencias necesarias para permitir que Elastic acceda a los recursos de Amazon Bedrock. Estos roles deben tener privilegios suficientes para leer registros, métricas y rastreos de los servicios de AWS. Puede encontrar detalles adicionales de los requisitos en nuestra documentación de AWS.
Requisitos de Elastic Cloud
| Versión | 0.7.0 (Beta) |
|---|---|
| Versión(es) compatible(s) de Kibana | 8.13.0 o superior para la versión de integración 0.2.0 y superior. Versión mínima de Kibana 8.12.0 |
| Tipos de proyectos sin servidor admitidos | Observabilidad de seguridad |
| Nivel de suscripción | Básico |
| Nivel de soporte | Elastic |
Nota: Dado que la integración se encuentra en la etapa de lanzamiento beta, habilita Mostrar integraciones beta en la sección Examinar integración del panel Administración en tu Elastic stack.
Terraform
Terraform es una herramienta de infraestructura como código (IaC) de código abierto creada por HashiCorp que le permite definir, aprovisionar y gestionar la infraestructura local y en la nube de una manera consistente y repetible.
Este es un paso opcional, pero es bueno tenerlo como las siguientes secciones del artículo usamos esta herramienta para configurar la infraestructura de AWS requerida. Puede encontrar información detallada sobre la instalación y los documentos aquí.
Configuración de la integración de Amazon Bedrock
En esta sección del artículo, repasaremos los pasos para configurar la integración de Amazon Bedrock con Elastic en dos partes:
- Configuración de la infraestructura de AWS con Terraform: En esta sección, repasaremos los pasos para configurar una infraestructura de AWS con Terraform. Crearemos un bucket de S3, una instancia EC2 con los roles y las políticas de IAM necesarios para acceder al bucket de S3 y configuraremos grupos de seguridad para permitir el acceso SSH. Esta configuración es ideal para escenarios en los que necesita una instancia EC2 para interactuar con S3, como para el procesamiento o almacenamiento de datos.
- Configuración de Elastic Agent e integración: En esta sección, repasaremos los pasos para instalar Elastic Agent en la instancia de AWS EC2 y configurar la integración de Amazon Bedrock.
Configuración de la infraestructura de AWS con Terraform
El proceso de configuración de alto nivel implicará los siguientes pasos:
- Configuración
providers.tf - Configuración
variables.tf - Configuración
outputs.tf - Configuración
main.tf
El archivo providers.tf normalmente contiene la configuración de cualquier proveedor de Terraform que esté empleando en su proyecto. En nuestro ejemplo, incluye la configuración del proveedor de AWS. Este es el contenido de ejemplo de nuestro archivo providers.tf . Los profile mencionados en el providers.tf deben configurar en el espacio del usuario del archivo de credenciales de AWS (~/.aws/credentials). Consulta Configuración y configuración del archivo de credenciales: AWS Command Line Interface, que también se destaca en la sección de credenciales de la documentación de AWS de Elastic.
El archivo variables.tf contiene las definiciones de variables empleadas en toda la configuración de Terraform. Para nuestro escenario, incluye la definición de la aws_region y la resource_labels. Este es el contenido de ejemplo de nuestro archivo variables.tf .
El archivo outputs.tf normalmente contiene las definiciones de salida para la configuración de Terraform. Estas salidas se pueden emplear para mostrar información útil luego de aprovisionar la infraestructura. Aquí está el contenido de muestra de nuestro archivo outputs.tf
El archivo main.tf normalmente contiene la recopilación de todos estos recursos, como orígenes de datos, bucket de S3 y política de bucket, configuración de registro de invocación del modelo de Amazon Bedrock, configuración de cola de SQS, rol de IAM y políticas requeridas por la instancia EC2 que instalaría Elastic Agent y los registros de transmisión y la configuración de Amazon Bedrock Guardrail. Este es el contenido de ejemplo de nuestro archivo main.tf .
Una vez que el main.tf está configurado de acuerdo con los requisitos, podemos inicializar, planear y aplicar la configuración de terraform.
terraform init // initializes the directory and sets up state files in backend
terraform plan // command creates an execution plan
terraform apply // command applies the configuration aka execution step
Para derribar la infraestructura que terraform creó anteriormente, se puede usar el comando terraform destroy .
Una vez completada la configuración de la infraestructura, se proporcionan los identificadores de recursos necesarios a través de outputs.tf. Podemos realizar una verificación básica de la infraestructura creada siguiendo los siguientes pasos:
- Verifique el bucket de S3 creado a partir de Terraform, se puede emplear aws cli command reference list-buckets — AWS CLI 1.34.10 command reference o navegar a través de la consola de AWS para verificar el mismo. 2. Verifique la cola de SQS creada a partir de la terraform, se puede usar aws cli command reference list-queues — AWS CLI 1.34.10 Command Reference o navegar a través de la consola de AWS para verificar la misma.
- Verifique la instancia EC2 creada desde la consola de AWS y conectar a la instancia ec2 a través de Connect using EC2 Instance Connect - Amazon Elastic Compute Cloud y ejecute
aws s3 ls example-bucket-namepara comprobar si la instancia tiene acceso al bucket de S3 creado. - Verifique la barandilla de Amazon Bedrock creada a partir de Terraform, una vez que puede usar Amazon Bedrock API ListGuardrails - Amazon Bedrock o navegar a través de la consola de AWS para verificar la misma.
Configuración de Elastic Agent y configuración de integración
Para instalar Elastic Agent en la instancia de AWS EC2 y configurar la integración de Amazon Bedrock, cree una política de agente mediante los pasos guiados de Elastic Agent policies | Guía de agentes de Fleet y Elastic [8.15]. A continuación, inicie sesión en la instancia ec2 creada en los pasos de configuración de la infraestructura a través de Connect using EC2 Instance Connect - Amazon Elastic Compute Cloud e instale el agente elástico mediante los pasos guiados de Instalar Elastic Agents | Guía de agentes de Fleet y Elastic [8.15]. Durante la instalación del agente, recuerde seleccionar la política de agente creada al principio de este proceso de configuración y emplear el método de instalación del agente correspondiente en función de la instancia creada. Finalmente, cerciorar de que el agente esté configurado correctamente y que haya datos entrantes del agente.
Para configurar la integración de Amazon Bedrock en la política recién creada, agregue la integración de Amazon Bedrock mediante los pasos guiados: Agregar una integración de Elastic Agent a una política. Habilite las integraciones beta para emplear la integración de Amazon Bedrock como se muestra en la imagen siguiente.
Configure la integración con claves de acceso de AWS para acceder a la cuenta de AWS donde está configurado Amazon Bedrock. Emplee el bloque Recopilar registros del bucket de S3 y especifique el ARN del bucket creado en el paso de configuración. Tenga en cuenta que debe emplear el bucket de S3 o la URL de la cola de SQS durante la configuración y no ambos. Agregue esta integración a la política existente donde se configura la instancia ec2.
Verificación de las ingestas de registros de invocación del modelo de Amazon Bedrock
Una vez que se completa la configuración de Elastic Agent y la integración, podemos realizar una verificación básica de la integración para determinar si los logs se están ingiriendo según lo esperado mediante la siguiente llamada a la API de ejemplo:
aws bedrock-runtime converse \
--model-id "anthropic.claude-3-5-sonnet-20240620-v1:0" \
--messages '[{"role":"user","content":[{"text":"Hello "}]}]' \
--inference-config '{"maxTokens":2000,"stopSequences":[],"temperature":1,"topP":0.999}' \
--additional-model-request-fields '{"top_k":250}' \
--region us-east-1
La llamada a la API de ejemplo supone una configuración de trabajo con la CLI de AWS y hay acceso para el modelo fundacional API de mensajes de Anthropic Claude: Amazon Bedrock. Si el usuario no tiene acceso al modelo, simplemente puede aplicar acceso a los modelos desde la página de acceso al modelo, como se sugiere en Acceso a los modelos básicos de Amazon Bedrock, u opcionalmente podemos cambiar la llamada a la API a cualquier modelo existente al que el usuario pueda acceder.
Si se ejecuta correctamente la llamada a la API anterior, se completan los registros de invocación del modelo de Amazon Bedrock y, en Kibana, logs-aws_bedrock.invocation-default deben completar con esos registros de invocación. Podemos usar los siguientes simples ES|QL para devolver eventos ingeridos recientemente.
from logs-aws_bedrock.invocation-* | LIMIT 10
Habilitar reglas de detección prediseñadas
Para habilitar las reglas de detección precompiladas, primero inicie sesión en la instancia elástica y, desde el panel de navegación izquierdo, vaya a Reglas de → de seguridad → Reglas de detección (SIEM). Filtre por "Fuente de datos: Amazon Bedrock" en la sección de etiquetas.
Habilite las reglas precompiladas disponibles. Para las reglas prediseñadas, la información de configuración contiene una guía auxiliar para configurar AWS Guardrails for Amazon Bedrock, que se logra en el paso Configuración de la infraestructura de AWS con Terraform si el ejemplo se sigue correctamente y la terraform tiene la configuración de Amazon Bedrock Guardrail. Tenga en cuenta que esta configuración es vital para que algunas de las reglas generen alertas: debemos cerciorarnos de que la barrera esté configurada en consecuencia si se omite en la etapa de configuración de la infraestructura.
Exploración de la detección de bloqueos de mala conducta de alta confianza
Simulemos un escenario del mundo real en el que un usuario consulta un tema denegado al modelo de Amazon Bedrock. Vaya a la sección Amazon Bedrock en la consola de la interfaz de usuario de Amazon y emplee el panel de navegación izquierdo para navegar a la subsección Guardarraíles en Salvaguardas. Use la barrera de seguridad de ejemplo creada durante nuestras instrucciones de configuración para este ejercicio y use la opción de prueba para ejecutar una invocación de modelo con las barreras de protección y consultar el tema denegado configurado.
Repita la consulta al menos 6 veces, ya que la regla precompilada está diseñada para alertar sobre bloques de confianza superiores a 5 altos. Cuando se ejecuta la programación de alertas, podemos ver una alerta que se completa para Unusual High Confidence Misconduct Blocks Detected.
Demostración de un escenario de caso de explotación para Amazon Bedrock
Para simular una omisión de seguridad de Amazon Bedrock, necesitamos un script de simulación de exploits para interactuar con los modelos de Amazon Bedrock. El ejemplo de script de exploit que proporcionamos simula el siguiente patrón de ataque:
- Intenta múltiples solicitudes sucesivas para emplear recursos de modelos denegados dentro de AWS Bedrock
- Genera varios errores sucesivos de excepción de validación dentro de Amazon Bedrock
- El usuario genera constantemente un alto número de tokens de entrada, envía numerosas solicitudes y recibe grandes respuestas que imitan patrones de agotamiento de recursos
- Combina acciones repetidas de alta confianza 'BLOQUEADAS' junto con códigos de violación específicos como 'MALA CONDUCTA', lo que indica un uso indebido persistente o intentos de sondear los límites éticos del modelo
class BedrockModelSimulator:
def __init__(self, profile_name, region_name):
// Create a Boto3 Session Client for Ineration
def generate_args_invoke_model(self, model_id, user_message, tokens): // Generate Model Invocation parameters
guardrail_id = <<GUARDRAIL_ID>>
guardrail_version = <<GUARDRAIL_VERSION>>
guardrail_config = {
"guardrailIdentifier": guardrail_id,
"guardrailVersion": guardrail_version,
"trace": "enabled"
}
conversation = [
{
"role": "user",
"content": [{"text": user_message}],
}
]
inference_config = {"maxTokens": tokens, "temperature": 0.7, "topP": 1}
additional_model_request_fields = {}
kwargs = {
"modelId": model_id,
"messages": conversation,
"inferenceConfig": inference_config,
"additionalModelRequestFields": additional_model_request_fields
"guardrailConfig" : guardrail_config
}
return kwargs
def invoke_model(self, invocation_arguments):
for _ in range(count):
try:
// Invoke Model With right invocation_arguments
except ClientError as e:
// Error meesage
def main():
profile_name = <<AWS Profile>>
region_name = 'us-east-1'
denied_model_id = // Use a denied model
denied_model_user_message = // Sample Message
available_model_id = // Use an available model
validation_exception_user_message = // Sample Message
resource_exploit_user_message = // A very big message for resource exhuastion
denied_topic_user_message = // Sample Message that can query denied topic configured
simulator = BedrockModelSimulator(profile_name, region_name)
denied_model_invocation_arguments = simulator.generate_args_invoke_model(denied_model_id, denied_model_user_message, 200)
simulator.invoke_model(denied_model_invocation_arguments)
validation_exception_invocation_arguments = simulator.generate_args_invoke_model(available_model_id, validation_exception_user_message, 6000)
simulator.invoke_model(validation_exception_invocation_arguments)
resource_exhaustion_invocation_arguments = simulator.generate_args_invoke_available_model(available_model_id, resource_exploit_user_message, 4096)
simulator.invoke_model(resource_exhaustion_invocation_arguments)
denied_topic_invocation_arguments = simulator.generate_args_invoke_available_model_guardrail(available_model_id, denied_topic_user_message, 4096)
simulator.invoke_model(denied_topic_invocation_arguments)
if __name__ == "__main__":
main()
Nota: El GUARDRAIL_ID y GUARDRAIL_VERSION se pueden encontrar en outputs.tf
Cuando se ejecuta en un entorno controlado, el script proporcionado simula un escenario de exploit que generaría alertas de detección en Elastic Security. Al analizar estas alertas mediante la característica Elastic Attack Discovery, el script crea cadenas de ataque que muestran las relaciones entre varias alertas, lo que brinda a los analistas una comprensión clara de cómo varias alertas pueden ser parte de un ataque más grande.
Conclusión
La integración de Elastic con Amazon Bedrock permite a las organizaciones mantener un entorno de nube seguro y compatible al tiempo que maximiza los beneficios de la IA y el aprendizaje automático. Al aprovechar las herramientas avanzadas de seguridad y observabilidad de Elastic, las compañías pueden detectar amenazas de manera proactiva, automatizar los reportes de cumplimiento y obtener información más detallada sobre sus operaciones en la nube. Cada vez más, las compañías confían en fuentes de datos y tecnologías opacas para revelar las amenazas más graves: nuestro compromiso con la seguridad transparente es evidente en nuestros artefactos abiertos, integraciones y código fuente.
