Recopila registros de auditoría de Oracle Cloud Infrastructure

Se admite en los siguientes sistemas operativos:

En este documento, se explica cómo transferir registros de auditoría de Oracle Cloud Infrastructure a Google Security Operations con Google Cloud Storage.

El servicio de auditoría de Oracle Cloud Infrastructure registra automáticamente las llamadas a todos los extremos de la interfaz de programación de aplicaciones (API) pública de Oracle Cloud Infrastructure compatibles como eventos de registro. Actualmente, todos los servicios admiten el registro de Oracle Cloud Infrastructure Audit. Los eventos de registro que registra Oracle Cloud Infrastructure Audit incluyen las llamadas a la API que realizan la consola de Oracle Cloud Infrastructure, la interfaz de línea de comandos (CLI), los kits de desarrollo de software (SDK), tus propios clientes personalizados o cualquier otro servicio de Oracle Cloud Infrastructure.

Antes de comenzar

Asegúrate de cumplir con los siguientes requisitos previos:

  • Una instancia de Google SecOps
  • Un proyecto de GCP con la API de Cloud Storage habilitada
  • Permisos para crear y administrar buckets de GCS
  • Permisos para administrar políticas de IAM en buckets de GCS
  • Permisos para crear servicios de Cloud Run, temas de Pub/Sub y trabajos de Cloud Scheduler
  • Cuenta de Oracle Cloud Infrastructure con permisos para crear y administrar lo siguiente:
    • Centro de Service Connector
    • Funciones
    • Buckets de Object Storage
    • Políticas de IAM
  • Acceso privilegiado a la consola de Oracle Cloud Infrastructure

Crea un bucket de Google Cloud Storage

  1. Ve a Google Cloud Console.
  2. Selecciona tu proyecto o crea uno nuevo.
  3. En el menú de navegación, ve a Cloud Storage > Buckets.
  4. Haz clic en Crear bucket.
  5. Proporciona los siguientes detalles de configuración:

    Configuración Valor
    Asigna un nombre a tu bucket Ingresa un nombre global único (por ejemplo, oci-audit-logs-gcs).
    Tipo de ubicación Elige según tus necesidades (región, birregional, multirregional)
    Ubicación Selecciona la ubicación (por ejemplo, us-central1).
    Clase de almacenamiento Estándar (recomendado para los registros a los que se accede con frecuencia)
    Control de acceso Uniforme (recomendado)
    Herramientas de protección Opcional: Habilita el control de versiones de objetos o la política de retención
  6. Haz clic en Crear.

Configura la infraestructura de nube de Oracle para exportar registros de auditoría a GCS

Oracle Cloud Infrastructure no admite la exportación nativa a Google Cloud Storage. Usarás Oracle Cloud Infrastructure Service Connector Hub con una función para reenviar registros de auditoría a GCS.

Crea una función de Oracle Cloud Infrastructure para reenviar registros a GCS

  1. Accede a la consola de Oracle Cloud.
  2. Ve a Developer Services > Functions > Applications.
  3. Selecciona el compartimento en el que deseas crear la aplicación de funciones.
  4. Haz clic en Crear aplicación.
  5. Proporciona los siguientes detalles de configuración:
    • Nombre: Ingresa audit-logs-to-gcs-app.
    • VCN: Selecciona una Virtual Cloud Network.
    • Subredes: Selecciona una subred con acceso a Internet.
  6. Haz clic en Crear.
  7. Después de crear la aplicación, haz clic en Primeros pasos y sigue las instrucciones para configurar tu entorno de desarrollo local con la CLI de Fn.
  8. Crea un directorio de función nuevo en tu máquina local:

    mkdir oci-audit-to-gcs
    cd oci-audit-to-gcs
    
  9. Inicializa una función de Python:

    fn init --runtime python oci-audit-to-gcs
    cd oci-audit-to-gcs
    
  10. Reemplaza el contenido de func.py con el código que se muestra a continuación:

    import io
    import json
    import logging
    import os
    from fdk import response
    from google.cloud import storage
    from google.oauth2 import service_account
    from datetime import datetime
    
    # Configure logging
    logging.basicConfig(level=logging.INFO)
    logger = logging.getLogger()
    
    # Environment variables
    GCS_BUCKET = os.environ.get('GCS_BUCKET')
    GCS_PREFIX = os.environ.get('GCS_PREFIX', 'oci-audit-logs')
    GCS_CREDENTIALS_JSON = os.environ.get('GCS_CREDENTIALS_JSON')
    
    def handler(ctx, data: io.BytesIO = None):
        """
        Oracle Cloud Infrastructure Function to forward Audit logs to GCS.
    
        Args:
            ctx: Function context
            data: Input data containing Audit log events
        """
    
        if not all([GCS_BUCKET, GCS_CREDENTIALS_JSON]):
            logger.error('Missing required environment variables: GCS_BUCKET or GCS_CREDENTIALS_JSON')
            return response.Response(
                ctx, response_data=json.dumps({"error": "Missing configuration"}),
                headers={"Content-Type": "application/json"}
            )
    
        try:
            # Parse input data
            body = json.loads(data.getvalue())
            logger.info(f"Received event: {json.dumps(body)}")
    
            # Extract log entries
            log_entries = []
            if isinstance(body, list):
                log_entries = body
            elif isinstance(body, dict):
                # Service Connector Hub sends data in specific format
                if 'data' in body:
                    log_entries = [body['data']] if isinstance(body['data'], dict) else body['data']
                else:
                    log_entries = [body]
    
            if not log_entries:
                logger.info("No log entries to process")
                return response.Response(
                    ctx, response_data=json.dumps({"status": "no_logs"}),
                    headers={"Content-Type": "application/json"}
                )
    
            # Initialize GCS client with service account credentials
            credentials_dict = json.loads(GCS_CREDENTIALS_JSON)
            credentials = service_account.Credentials.from_service_account_info(credentials_dict)
            storage_client = storage.Client(credentials=credentials, project=credentials_dict.get('project_id'))
            bucket = storage_client.bucket(GCS_BUCKET)
    
            # Write logs to GCS as NDJSON
            timestamp = datetime.utcnow().strftime('%Y%m%d_%H%M%S_%f')
            object_key = f"{GCS_PREFIX}/logs_{timestamp}.ndjson"
            blob = bucket.blob(object_key)
    
            ndjson = '\n'.join([json.dumps(entry, ensure_ascii=False) for entry in log_entries]) + '\n'
            blob.upload_from_string(ndjson, content_type='application/x-ndjson')
    
            logger.info(f"Wrote {len(log_entries)} records to gs://{GCS_BUCKET}/{object_key}")
    
            return response.Response(
                ctx, response_data=json.dumps({"status": "success", "records": len(log_entries)}),
                headers={"Content-Type": "application/json"}
            )
    
        except Exception as e:
            logger.error(f'Error processing logs: {str(e)}')
            return response.Response(
                ctx, response_data=json.dumps({"error": str(e)}),
                headers={"Content-Type": "application/json"},
                status_code=500
            )
    
  11. Actualiza requirements.txt con las siguientes dependencias:

    fdk>=0.1.0
    google-cloud-storage>=2.0.0
    google-auth>=2.0.0
    
  12. Implementa la función en Oracle Cloud Infrastructure:

    fn -v deploy --app audit-logs-to-gcs-app
    
  13. Una vez que se complete la implementación, anota el OCID de la función. la usarás en el próximo paso.

Configura variables de entorno de funciones

  1. En la consola de Oracle Cloud, ve a Developer Services > Functions > Applications.
  2. Haz clic en la aplicación (audit-logs-to-gcs-app).
  3. Haz clic en el nombre de la función (oci-audit-to-gcs).
  4. Haz clic en Configuración.
  5. Agrega las siguientes variables de configuración:

    Clave Valor
    GCS_BUCKET El nombre de tu bucket de GCS (por ejemplo, oci-audit-logs-gcs)
    GCS_PREFIX Prefijo para los archivos de registro (por ejemplo, oci-audit-logs)
    GCS_CREDENTIALS_JSON Cadena JSON de la clave de la cuenta de servicio de GCP (consulta a continuación)
  6. Haz clic en Guardar cambios.

Crea una cuenta de servicio de GCP para la función de Oracle Cloud Infrastructure

La función de Oracle Cloud Infrastructure necesita una cuenta de servicio de GCP para escribir en el bucket de GCS.

  1. En GCP Console, ve a IAM y administración > Cuentas de servicio.
  2. Haz clic en Crear cuenta de servicio.
  3. Proporciona los siguientes detalles de configuración:
    • Nombre de la cuenta de servicio: Ingresa oci-function-gcs-writer.
    • Descripción de la cuenta de servicio: Ingresa Service account for OCI Function to write Audit logs to GCS.
  4. Haz clic en Crear y continuar.
  5. En la sección Otorga a esta cuenta de servicio acceso al proyecto, agrega el siguiente rol:
    1. Haz clic en Selecciona un rol.
    2. Busca y selecciona Administrador de objetos de almacenamiento.
  6. Haz clic en Continuar.
  7. Haz clic en Listo.
  8. Haz clic en el correo electrónico de la cuenta de servicio recién creada.
  9. Ve a la pestaña Claves.
  10. Haz clic en Agregar clave > Crear clave nueva.
  11. Seleccione JSON como tipo de clave.
  12. Haz clic en Crear.
  13. El archivo de clave JSON se descargará en tu computadora.
  14. Abre el archivo de claves JSON y copia todo su contenido.
  15. Regresa a la configuración de la función de la consola de Oracle Cloud.
  16. Pega el contenido JSON en la variable de configuración GCS_CREDENTIALS_JSON.

Otorga permisos de IAM en el bucket de GCS

Otorga permisos de escritura a la cuenta de servicio en el bucket de GCS:

  1. Ve a Cloud Storage > Buckets.
  2. Haz clic en el nombre de tu bucket (oci-audit-logs-gcs).
  3. Ve a la pestaña Permisos.
  4. Haz clic en Otorgar acceso.
  5. Proporciona los siguientes detalles de configuración:
    • Agregar principales: Ingresa el correo electrónico de la cuenta de servicio (oci-function-gcs-writer@PROJECT_ID.iam.gserviceaccount.com).
    • Asignar roles: Selecciona Administrador de objetos de Storage.
  6. Haz clic en Guardar.

Crea un Service Connector Hub de Oracle Cloud Infrastructure

  1. Accede a la consola de Oracle Cloud.
  2. Ve a Observabilidad y administración > Logging > Service Connector Hub.
  3. Selecciona el compartimento en el que deseas crear el conector de servicio.
  4. Haz clic en Create Service Connector.
  5. Proporciona los siguientes detalles de configuración:

    • Información del conector de servicio:
    Configuración Valor
    Nombre del conector Ingresa audit-logs-to-gcs-connector.
    Descripción Ingresa Forward OCI Audit logs to Google Cloud Storage.
    Compartment de recursos Selecciona el compartimento
    • Configurar fuente:
    Configuración Valor
    Origen Selecciona Logging.
    Compartment Selecciona el compartimento que contiene los registros de auditoría
    Log Group Selecciona _Audit (grupo de registros predeterminado para los registros de auditoría).
  6. Haz clic en + Otro registro.

  7. Selecciona el registro de auditoría de tu compartimiento (por ejemplo, _Audit_Include_Subcompartment).

    • Configura el objetivo:
    Configuración Valor
    Destino Selecciona Funciones.
    Compartment de la función Selecciona el compartimento que contiene la función.
    Aplicación de la función Seleccionar audit-logs-to-gcs-app
    Función Seleccionar oci-audit-to-gcs
  8. Desplázate hasta Configurar tarea (opcional) y deja la configuración predeterminada.

  9. Haz clic en Crear.

Crea una política de IAM para Service Connector Hub

Service Connector Hub requiere permisos para invocar la función.

  1. En la consola de Oracle Cloud, ve a Identity & Security > Policies.
  2. Selecciona el compartimento en el que creaste el Service Connector Hub.
  3. Haz clic en Crear política.
  4. Proporciona los siguientes detalles de configuración:
    • Nombre: Ingresa service-connector-functions-policy.
    • Descripción: ingresa Allow Service Connector Hub to invoke Functions.
    • Compartment: Selecciona el compartimento.
  5. En la sección Policy Builder, activa Show manual editor.
  6. Ingresa las siguientes declaraciones de política:

    Allow any-user to use fn-function in compartment <compartment-name> where all {request.principal.type='serviceconnector'}
    Allow any-user to use fn-invocation in compartment <compartment-name> where all {request.principal.type='serviceconnector'}
    
    • Reemplaza <compartment-name> por el nombre de tu compartimento.
  7. Haz clic en Crear.

Prueba la integración

  1. Accede a la consola de Oracle Cloud.
  2. Realiza algunas acciones que generen registros de auditoría (por ejemplo, crear o modificar un recurso).
  3. Espera de 2 a 5 minutos para que se procesen los registros.
  4. Ve a Cloud Storage > Buckets en GCP Console.
  5. Haz clic en el nombre de tu bucket (oci-audit-logs-gcs).
  6. Navega a la carpeta del prefijo (oci-audit-logs/).
  7. Verifica que aparezcan archivos .ndjson nuevos en el bucket.

Recupera la cuenta de servicio de Google SecOps

Las Operaciones de seguridad de Google usan una cuenta de servicio única para leer datos de tu bucket de GCS. Debes otorgar acceso a tu bucket a esta cuenta de servicio.

Obtén el correo electrónico de la cuenta de servicio

  1. Ve a Configuración de SIEM > Feeds.
  2. Haz clic en Agregar feed nuevo.
  3. Haz clic en Configura un feed único.
  4. En el campo Nombre del feed, ingresa un nombre para el feed (por ejemplo, Oracle Cloud Audit Logs).
  5. Selecciona Google Cloud Storage V2 como el Tipo de fuente.
  6. Selecciona Oracle Cloud Infrastructure como el Tipo de registro.
  7. Haz clic en Obtener cuenta de servicio. Se muestra un correo electrónico único de la cuenta de servicio, por ejemplo:

    chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.com
    
  8. Copia esta dirección de correo electrónico para usarla en el siguiente paso.

Otorga permisos de IAM a la cuenta de servicio de Google SecOps

La cuenta de servicio de Google SecOps necesita el rol de visualizador de objetos de almacenamiento en tu bucket de GCS.

  1. Ve a Cloud Storage > Buckets.
  2. Haz clic en el nombre de tu bucket (oci-audit-logs-gcs).
  3. Ve a la pestaña Permisos.
  4. Haz clic en Otorgar acceso.
  5. Proporciona los siguientes detalles de configuración:
    • Agregar principales: Pega el correo electrónico de la cuenta de servicio de Google SecOps.
    • Asignar roles: Selecciona Visualizador de objetos de Storage.
  6. Haz clic en Guardar.

Configura un feed en Google SecOps para transferir registros de auditoría de la infraestructura de nube de Oracle

  1. Ve a Configuración de SIEM > Feeds.
  2. Haz clic en Agregar feed nuevo.
  3. Haz clic en Configura un feed único.
  4. En el campo Nombre del feed, ingresa un nombre para el feed (por ejemplo, Oracle Cloud Audit Logs).
  5. Selecciona Google Cloud Storage V2 como el Tipo de fuente.
  6. Selecciona Oracle Cloud Infrastructure como el Tipo de registro.
  7. Haz clic en Siguiente.
  8. Especifica valores para los siguientes parámetros de entrada:

    • URL del bucket de almacenamiento: Ingresa el URI del bucket de GCS con la ruta de acceso del prefijo:

       gs://oci-audit-logs-gcs/oci-audit-logs/
      
      • Reemplaza lo siguiente:

        • oci-audit-logs-gcs: Es el nombre de tu bucket de GCS.
        • oci-audit-logs: Es el prefijo o la ruta de carpeta opcionales en los que se almacenan los registros (déjalo vacío para la raíz).
      • Ejemplos:

        • Bucket raíz: gs://company-logs/
        • Con prefijo: gs://company-logs/oci-audit-logs/
        • Con subcarpeta: gs://company-logs/oracle/audit/
    • Opción de borrado de la fuente: Selecciona la opción de borrado según tu preferencia:

      • Nunca: Nunca borra ningún archivo después de las transferencias (se recomienda para las pruebas).
      • Borrar archivos transferidos: Borra los archivos después de la transferencia exitosa.
      • Borrar los archivos transferidos y los directorios vacíos: Borra los archivos y los directorios vacíos después de la transferencia exitosa.

    • Antigüedad máxima del archivo: Incluye los archivos modificados en la cantidad de días especificada. El valor predeterminado es de 180 días.

    • Espacio de nombres del recurso: Es el espacio de nombres del recurso.

    • Etiquetas de transmisión: Es la etiqueta que se aplicará a los eventos de este feed.

  9. Haz clic en Siguiente.

  10. Revisa la nueva configuración del feed en la pantalla Finalizar y, luego, haz clic en Enviar.

¿Necesitas más ayuda? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.