Situaciones para exportar Cloud Logging: Requisitos de cumplimiento

En esta situación, se muestra cómo exportar registros de Cloud Logging a Cloud Storage para cumplir con los requisitos de cumplimiento de la organización. Las organizaciones se enfrentan a muchos requisitos para crear y conservar archivos de registro. Por ejemplo, cuando el cumplimiento de Sarbanes Oxley (SOX) es importante, deberás mantener los registros para usuarios, bases de datos y actividad de la consola. Para obtener más información sobre los períodos de retención predeterminados y configurables de los registros, consulta las cuotas y límites de Cloud Logging.

En este caso, los registros exportados se entregan a un bucket de Cloud Storage que configuras. Otorgas permisos para limitar el acceso a los registros según corresponda. A fin de reducir los costos de almacenamiento a largo plazo, puedes usar la función administración del ciclo de vida de los objetos en Cloud Storage para mover registros a las clases de almacenamiento de Nearline o Coldline Storage y borrarlos después de que pase el período de retención obligatorio.

En esta situación, se supone una arquitectura web común de nivel n que se ejecuta en Google Cloud con máquinas virtuales (VM), bases de datos y un sistema de almacenamiento compatible. Para este entorno, se exportan los siguientes tipos de registros: todos los registros de auditoría, los registros relacionados con las máquinas virtuales, los registros de almacenamiento y los registros de las bases de datos. Puedes cambiar los tipos de registros que se exportan si ajustas los filtros de registro en el ejemplo.

Esta situación forma parte de la serie Patrones de diseño para exportar datos de Cloud Logging.

Configura la exportación de registros

En el siguiente diagrama, se muestran los pasos para habilitar la exportación de registros a Cloud Storage.

Habilita la asistencia de registros.

Configura el bucket de exportación de registros en Cloud Storage

Sigue las instrucciones para configurar un depósito de Cloud Storage que alojará a los registros exportados. En Clase de almacenamiento predeterminada, selecciona Regional, a menos que necesites las clases Multirregional, Nearline o Coldline Storage.

Configura administración del ciclo de vida de los objetos para el bucket de Cloud Storage

En este caso, se supone un requisito de retención de 7 años para todos los registros. A fin de minimizar los costos de almacenamiento, puedes agregar reglas de ciclo de vida del objeto en Cloud Storage para mover los registros a Nearline o Coldline Storage después de una cantidad determinada de días y, luego, borrarlos cuando ya no sea necesario que los mantengas.

Recomendación: Si mueves los registros a Nearline o Coldline y luego los borras, te ayudará a administrar el costo operativo en curso del mantenimiento de los registros.

Puedes seguir las instrucciones para crear las reglas de ciclo de vida. En la siguiente captura de pantalla, se muestra un conjunto de reglas en cascada que cambia la clase de almacenamiento a Nearline después de 60 días, a Coldline después de 120 días y, luego, borra los registros después de 2,555 días, que son casi 7 años.

Reglas en cascada.

Activa registros de auditoría para todos los servicios

Los registros de auditoría de acceso a datos, excepto para BigQuery, están inhabilitados de forma predeterminada. A fin de habilitar todos los registros de auditoría, sigue las instrucciones para actualizar la política de administración de identidades y accesos (IAM) con la configuración que aparece en la documentación de la política de auditoría. Los pasos son los siguientes:

  • Descarga la política de IAM actual como un archivo.
  • Agrega el objeto JSON o YAML de la política de registro de auditoría al archivo de política actual.
  • Actualiza el proyecto de Google Cloud con el archivo de política modificado.

A continuación, se muestra un ejemplo de un objeto JSON que habilita todos los registros de auditoría para todos los servicios.

"auditConfigs": [
    {
        "service": "allServices",
        "auditLogConfigs": [
            { "logType": "ADMIN_READ" },
            { "logType": "DATA_READ"  },
            { "logType": "DATA_WRITE" },
        ]
    },
]

Configura la exportación de registros

Una vez que configures las exportaciones agregadas o la exportación de registros, debes definir mejor los filtros de registro para exportar registros de auditoría, registros relacionados con máquinas virtuales, registros de almacenamiento y registros de base de datos. El siguiente filtro de registros incluye los registros de auditoría de actividad del administrador y acceso a los datos, y los registros para tipos de recursos específicos.

logName:"/logs/cloudaudit.googleapis.com" OR
resource.type:gce OR
resource.type=gcs_bucket OR
resource.type=cloudsql_database OR
resource.type=bigquery_resource

En la herramienta de línea de comandos de gcloud, usa el comando gcloud logging sinks create o la llamada a la API organizations.sinks.create para crear un receptor con los filtros adecuados. El siguiente comando de gcloud de ejemplo crea un receptor llamado gcp_logging_sink_gcs para la organización. El receptor incluye todos los proyectos secundarios y especifica los filtros para seleccionar los registros de auditoría individuales.

gcloud logging sinks create gcp_logging_sink_gcs \
    storage.googleapis.com/gcp-logging-export-000100011000 \
    --log-filter='logName: "/logs/cloudaudit.googleapis.com" OR \
    resource.type:\"gce\" OR \
    resource.type=\"gcs_bucket\" OR   \
    resource.type=\"cloudsql_database\" OR  \
    resource.type=\"bigquery_resource\"' \
    --include-children   \
    --organization=324989855333

El resultado del comando es similar al siguiente:

Created [https://logging.googleapis.com/v2/organizations/324989855333/sinks/gcp_logging_sink_gcs].
Please remember to grant `serviceAccount:gcp-logging-sink-gcs@logging-o324989855333.iam.gserviceaccount.com` full-control access to the bucket.
More information about sinks can be found at /logging/docs/export/configure_export

La entrada serviceAccount que se muestra desde la llamada a la API incluye la identidad gcp-logging-sink-gcs@logging-o324989855333.iam.gserviceaccount.com. Esta identidad representa una cuenta de servicio de Google Cloud que se creó para la exportación. Hasta que no otorgues el acceso de escritura en el destino a esta identidad, las exportaciones de entradas de registro desde este receptor fallarán. Para obtener más información, consulta la siguiente sección o la documentación Otorga acceso a un recurso.

Configura permisos de política de IAM para el bucket de Cloud Storage

Si agregas la cuenta de servicio gcp-logging-sink-gcs@logging-o324989855333.iam.gserviceaccount.com al depósito gcp-logging-export-000100011000 con los permisos de creador de objetos de almacenamiento, otorgas permiso a la cuenta de servicio para escribir en el depósito. La exportación del receptor fallará hasta que no agregues estos permisos.

Para agregar los permisos al depósito gcp-logging-export, sigue estos pasos:

  1. En Cloud Console, abre el navegador del almacenamiento:

    IR AL NAVEGADOR DEL ALMACENAMIENTO

  2. Selecciona el depósito gcp-logging-export.

  3. Haz clic en Mostrar panel de información y, luego, selecciona los permisos de Storage Object Creator (creador de objetos de almacenamiento).

    Permisos de política de IAM: Creador de objetos de almacenamiento.

Después de crear la exportación de registros mediante el filtro anterior, los archivos de registro comenzarán a propagarse en los depósitos de Cloud Storage en el proyecto configurado.

Recomendación: Implementa una política de permisos mínimos según tus necesidades. Configura los permisos del depósito en función de cuentas de usuario de Google Cloud específicas, Grupos de Google o cuentas de servicio de Google Cloud. Usa los permisos de IAM para otorgar acceso al bucket de Cloud Storage y acceso masivo a los objetos de un bucket.

Para consultar un ejemplo de conjunto de permisos, puedes hacer lo siguiente:

  • Quitar todos los usuarios no esenciales de los permisos del bucket de Cloud Storage
  • Agregar control total para el administrador de Cloud Storage
  • Otorgar los permisos de exportación de usuario para escribir los archivos de exportación de los registros
  • Otorgar a otros usuarios individuales acceso de lectura a las exportaciones de registros de Google Cloud

Puedes actualizar los permisos de IAM correspondientes al depósito directamente en Cloud Console, a través de la herramienta de línea de comandos degsutil o a través de la API de IAM. En el siguiente ejemplo, se muestra un conjunto de permisos y capturas de pantalla de muestra asociados con un bucket de Cloud Storage en Cloud Console.

Función: Administrador de almacenamiento

  • Descripción de IAM: Control total de los recursos de Cloud Storage
  • Uso: Usa esta función a fin de otorgar acceso a los usuarios de administrador a los recursos de Cloud Storage sin otorgar acceso para modificar los contenidos almacenados en Cloud Storage
  • Cuenta de ejemplo:

    storage-admin@example.com

    Función: Administrador de almacenamiento

Función: Administrador de objetos de almacenamiento

  • Descripción de IAM: Control total de los objetos de Cloud Storage
  • Uso: Usa esta función a fin de otorgar acceso total a usuarios de administrador a los objetos de archivo de Cloud Storage sin otorgar acceso para modificar la configuración de recursos de Cloud Storage
  • Cuenta de ejemplo:

    storage-object-admin@example.com: user1@example.com, user2@example.com

    Función: Administrador de objetos de almacenamiento

Función: Lector de objetos de almacenamiento

  • Descripción de IAM: acceso de lectura a los objetos de Cloud Storage
  • Uso: Usa esta función para otorgar acceso de solo lectura a los registros de Google Cloud a los usuarios
  • Cuenta de ejemplo:

    storage-viewer@example.com: user3@example.com

    Función: Visualizador de objetos de almacenamiento

Prácticas recomendadas: Si usas Google Workspace o Grupos de Google para consumidores, puedes agregar un grupo de Google, como gcp-logging-export-viewers@example.com, con los permisos de visualizador de objetos de almacenamiento. Luego, puedes agregar usuarios al grupo gcp-logging-export-viewers@example.com o quitarlos sin necesidad de editar los permisos del depósito de Cloud Storage para cada cambio en los permisos de lectura de los usuarios.

Usa los registros exportados

Después de crear la exportación de registros mediante el filtro anterior, los archivos de registro comenzarán a propagarse en los depósitos de Cloud Storage en el proyecto configurado. Cada registro crea una carpeta distinta en el bucket, que está dividida en una estructura jerárquica según la fecha. Puedes acceder a los registros a través de Cloud Console, la herramienta de línea de comandos de gsutil o la API de IAM. En la siguiente captura de pantalla, se muestra un ejemplo de estructura de carpetas en Cloud Console.

Estructura de carpetas de ejemplo.

Cada archivo de registro consta de datos JSON que siguen los formatos de entrada de registro textPayload, protoPayload y jsonPayload. Con el tiempo, los archivos de registro en el bucket de Cloud Storage están sujetos al proceso de ciclo de vida de Cloud Storage que primero mueve los registros a Nearline Storage, luego a Coldline Storage y, por último, los borra según la configuración.

Otorga acceso externo

Tal vez quieras otorgar a usuarios específicos el acceso a los registros exportados; por ejemplo, analistas de seguridad, tu equipo de DevOps y auditores.

Estrategias de ubicación de registros

Para obtener más información, consulta cómo otorgar acceso a los registros en Cloud Storage.

  • Crea copias de los registros para compartir.

    De manera programática o manual, crea una copia de un archivo de registro individual o un conjunto de archivos de registros y ubica las copias en un bucket de Cloud Storage distinto. Luego, usa los permisos del bucket distintos para compartir los registros con los usuarios específicos que correspondan.

    Ventajas: Puedes limitar la cantidad de datos que se exponen de modo que sean solo los datos copiados.

    Desventajas: Tienes que crear, compartir y administrar los conjuntos de datos y permisos distintos, lo que puede generar costos más altos.

  • Otorga acceso de solo lectura a todos los registros.

    De manera programática o manual, establece permisos de lector en el bucket de exportación de registros de Cloud Storage, lo que otorga acceso a todas las exportaciones de registros.

    Ventajas: Es fácil otorgar el acceso.

    Desventajas: Debes otorgar acceso a todos los registros en vez de solo a archivos de registro específicos.

Estrategias de control de acceso a usuarios

Puedes usar los permisos de bucket de Cloud Storage para compartir el bucket de Cloud Storage de exportaciones de registros con Cuentas de Google o Grupos de Google específicos.

  • Usa un Grupo de Google.

    Crea un Grupo de Google, como auditors@example.com, con acceso de solo lectura al depósito de exportación de registros de Cloud Storage. Luego, administra la lista de Cuentas de Google. Para eso, agrega auditores al Grupo de Google o quítalos.

    Ventajas: Es fácil administrar el acceso a través de un grupo; hay un claro propósito de acceso de usuario.

    Desventajas: No se puede saber quién tiene acceso sin mirar la membresía del grupo.

  • Usa Cuentas de Google individuales.

    Otorga acceso individual a la Cuenta de Google al bucket de exportación de registros de Cloud Storage para cada usuario que lo pida.

    Ventajas: Es fácil agregar cada usuario de manera programática o manual.

    Desventajas: No es posible distinguir a los usuarios de auditoría de otros lectores.

¿Qué sigue?