Note:
- Este tutorial requiere acceso a Oracle Cloud. Para registrarse en una cuenta gratuita, consulte Introducción a la cuenta gratuita de Oracle Cloud Infrastructure.
- Utiliza valores de ejemplo para credenciales, arrendamiento y compartimentos de Oracle Cloud Infrastructure. Al finalizar el laboratorio, sustituya estos valores por otros específicos del entorno en la nube.
Reenvío de logs de Oracle Cloud Infrastructure a Rapid7 InsightOps
Introducción
Oracle Cloud Infrastructure (OCI) es un juego de servicios en la nube complementarios que permiten crear y ejecutar una serie de aplicaciones y servicios en un entorno alojado de alta disponibilidad. OCI proporciona funciones informáticas de alto rendimiento (como instancias de hardware físico) y capacidad de almacenamiento en una red virtual de superposición flexible accesible de forma segura desde su red local.
La plataforma Oracle Cloud Observability and Manageability tiene como objetivo satisfacer a nuestros clientes donde se encuentran. Entendemos que han estandarizado sus posturas operativas con las populares herramientas de observabilidad de 3a parte, y queremos ser interoperables con esas herramientas para que nuestros clientes puedan seguir utilizando las herramientas en las que han invertido con OCI.
En este tutorial, le mostraremos cómo puede reenviar logs de OCI a Rapid7 InsightOps. Rapid7 InsightOps es un servicio de análisis y gestión de logs fácil de utilizar. Proporciona capacidades de búsqueda de primera clase, herramientas de análisis de logs mejoradas y la capacidad de supervisar y consultar el estado de la infraestructura en tiempo real.
Ahora, veamos la representación de alto nivel de la arquitectura de la solución como se muestra a continuación.
Objetivos
- Reenviar logs de OCI a Rapid7 InsightOps.
Requisitos
- Los usuarios de OCI deben tener las políticas necesarias para que los servicios Functions, Service Connector Hub y Logging gestionen los recursos. Para obtener una referencia de política de todos los servicios, consulte Referencia de política.
Tarea 1: Crear un log-Webhook para enviar sus datos a Rapid7 InsightOps
HTTP POST es una forma sencilla de reenviar los mensajes de log a Rapid7 InsightOps.
-
Conéctese a Rapid7 InsightOps y haga clic en Agregar datos en la navegación superior.
-
Haga clic en Webhook.
-
Introduzca el nombre del log y seleccione un juego de logs existente o cree uno nuevo.
Nota: Se mostrará una URL que utilizará para enviar los datos de log. La última parte de la URL es el token de log, que identifica el log al que se deben enviar los datos.
Tarea 2: Configurar los logs que desea capturar
-
En la consola de OCI, vaya a Observability & Management, Logging y Log Groups.
-
Seleccione el compartimento y haga clic en Crear grupo de logs y se abrirá el panel lateral.
-
Introduzca *Rapid7_log_group* para el nombre y, de manera opcional, proporcione una descripción y etiquetas.
-
Haga clic en Crear para configurar el nuevo grupo de logs.
-
En Resources, haga clic en Logs.
-
Haga clic en Crear log personalizado o Activar log de servicio como desee.
Por ejemplo, vamos a activar los logs de escritura para un cubo de almacenamiento de objetos siguiendo estos pasos:
-
Haga clic en Activar log de servicio. Se abrirá un panel lateral.
-
Seleccione el compartimento de recursos y escriba Object Storage en el campo de servicios de búsqueda.
-
Haga clic en Activar logs y seleccione el nombre del cubo de almacenamiento de objetos en el campo de recurso.
-
Seleccione el grupo de logs creado anteriormente Rapid7_log_group y seleccione Escribir eventos de acceso en el campo Categoría de log. De manera opcional, proporcione un nombre de log, como Rapid7_bucket_write.
-
Haga clic en Activar para crear el nuevo log de OCI.
-
Tarea 3: Creación de una función de Oracle para ingerir logs en Rapid7 InsightOps
-
En la consola de OCI, vaya a Servicios para desarrolladores y Funciones.
-
Haga clic en Crear aplicación. Asigne a la aplicación un nombre como Rapid7_App, seleccione VCN, subredes, unidad (GENERIC_X86) en las listas desplegables respectivas y haga clic en Crear.
-
Realice los siguientes pasos para configurar el entorno de Cloud Shell:
-
Inicie Cloud Shell y configure la CLI de fn en Cloud Shell.
-
Utilice el contexto de su región.
fn list context fn use context <region-context>
-
Actualice el contexto con el ID de compartimento de la función
fn update context oracle.compartment-id <compartment-id>
-
Proporcione un prefijo de nombre de repositorio único para distinguir las imágenes de función.
fn update context registry <region-key>.ocir.io/<tenancy_name>/[repo-name-prefix]
-
Genere un token de autenticación para conectarse a Oracle Cloud Infrastructure Registry.
-
Conéctese al registro usando el token de autenticación como contraseña.
docker login -u '<tenancyname>/<username>' <region-key>.ocir.io
-
Para verificar la configuración, muestre las aplicaciones del compartimento.
fn list apps
-
Tarea 4: Creación, despliegue y llamada a la función
-
Se recomienda crear primero una función de Python fijo y sustituir los archivos generados automáticamente por el código como se indica a continuación.
fn init --runtime python rapid7_func
Nota: El comando
fn init
generará una carpeta denominadarapid7_func
con 3 archivos dentro;func.py
,func.yaml
yrequirements.txt
. -
Cambie al directorio generado.
cd rapid7_func
-
Sustituya el contenido de
func.py
por el siguiente código de ejemplo. Puede ajustar el código según sus requisitos.import io import os import json import requests import logging from fdk import response def process(body): try: data = body.get("data", {}) source = body.get("source") time = body.get("time") oracle = body.get("oracle",{}) type = body.get("type") regionID = body.get("regionID") origin = "OCI-CLOUD" #Get json data, time, type and source information payload = {} payload.update({"origin":origin}) payload.update({"time": time}) payload.update({"type":type}) payload.update({"regionID":regionID}) payload.update({"source":source}) payload.update({"data":data}) payload.update({"oracle":oracle}) #Rapid7 endpoint URL with token to call the REST interface.Refer for more info https://docs.rapid7.com/insightops/insightops-webhook #This is defined in the func.yaml file. rapid7host = os.environ['RAPID7_HOST'] #Invoke Rapid7 API with the payload. If the payload contains more than one log this will be ingested as once. headers = {'Content-type': 'application/json'} x = requests.post(rapid7host, data = json.dumps(payload), headers=headers) logging.getLogger().info(x.text) except (Exception, ValueError) as ex: logging.getLogger().error(str(ex))
Esta función acepta el JSON de registro y dispara el punto final Rapid7 InsightOps para ingerir los logs. Para obtener más información sobre el formato de registro de nivel superior, consulte Visión general del formato de registro.
Cuando se llama con varios logs, la función itera en cada log y dispara el punto final Rapid7 InsightOps para ingerirlos individualmente.
def handler(ctx, data: io.BytesIO=None): try: body = json.loads(data.getvalue()) if isinstance(body, list): # Batch of CloudEvents format for log in body: process(log) else: # Single log process(body) except (Exception, ValueError) as ex: logging.getLogger().error(str(ex))
-
Sustituya el contenido de
func.yaml
de la siguiente forma.RAPID7_HOST
se debe sustituir por la URL que hemos obtenido en el paso anterior.schema_version: 20180708 name: rapid7_func version: 0.0.1 runtime: python entrypoint: /python/bin/fdk /function/func.py handler memory: 1024 timeout: 120 config: RAPID7_HOST: https://us2.webhook.logs.insight.rapid7.com/v1/noformat/1a2345b1-1234-1ab2-1a2b-abcd1ef2345g
-
Sustituya el contenido de
requirements.txt
de la siguiente forma.fdk datetime requests oci
-
-
Desplegar su función.
fn -v deploy --app Rapid7_App
-
Puede probar la función llamándola. Si no se observan errores, la función funciona como se esperaba.
fn invoke Rapid7_App rapid7_func
Tarea 5: Configuración de un conector de servicio de OCI
-
En la consola de OCI, vaya a Observability & Management, Logging y Service Connectors.
-
Haga clic en Crear conector de servicio para ir a la página Crear conector de servicio.
-
Introduzca *Rapid7_SC* para el nombre, si lo desea, proporcione una descripción y seleccione el compartimento.
-
Seleccione el origen como Registro y el destino como Funciones.
-
En Configurar conexión de origen, seleccione un nombre de compartimento, grupo de logs y log (Grupo de logs y log creados en el primer paso).
-
Si también desea enviar Logs de auditoría, haga clic en +Another Log y seleccione el mismo compartimento al sustituir _Audit como grupo de logs.
-
En Configurar destino, seleccione un compartimento, una aplicación de función y una función (la aplicación de función y la función creadas en el paso anterior).
-
Si se le solicita que cree una política, haga clic en Crear en la petición de datos.
-
Haga clic en Crear en la parte inferior para terminar de crear el conector de servicio.
Tarea 6: Visualización de logs de Oracle Cloud Infrastructure en los productos de la plataforma Rapid7 InsightOps
Para acceder a los logs, conéctese a Rapid7 InsightOps y vaya a la sección Búsqueda de logs.
Nota: Los logs ingeridos en Rapid7 InsightOps mediante la opción de publicación HTTP también están visibles en Rapid7 InsightIDR.
Pasos Siguientes
En este tutorial se ha demostrado el proceso de reenvío de logs de Oracle Cloud Infrastructure (OCI) a la plataforma Rapid7 InsightOps mediante Service Connector Hub y Functions. En el lado de la información de seguridad y la gestión de eventos (SIEM), es esencial definir paneles de control para capturar métricas críticas y configurar alertas para que se disparen cuando se superen los umbrales predefinidos. Además, la definición de consultas específicas es crucial para detectar actividades maliciosas e identificar patrones dentro de tu arrendamiento de OCI. Estas acciones mejorarán aún más su estrategia de seguridad y permitirán un control proactivo de su entorno en la nube.
Enlaces relacionados
Confirmaciones
Autor: Chaitanya Chintala (Asesor de seguridad en la nube)
Más recursos de aprendizaje
Explore otros laboratorios en docs.oracle.com/learn o acceda a más contenido de aprendizaje gratuito en el canal YouTube de Oracle Learning. Además, visite education.oracle.com/learning-explorer para convertirse en Oracle Learning Explorer.
Para obtener documentación sobre el producto, visite Oracle Help Center.
Forward Logs from Oracle Cloud Infrastructure to Rapid7 InsightOps
F87599-01
October 2023
Copyright © 2023, Oracle and/or its affiliates.