Configura registros de auditoría de acceso a los datos

En esta guía, se explica cómo habilitar y configurar aspectos de registros de auditoría de acceso a los datos en tu organización o proyecto. Para conocer información general sobre los registros de auditoría, consulta Registros de auditoría de Cloud.

Los registros de auditoría de actividad del administrador están habilitados para todos los servicios de Google Cloud y no se pueden configurar.

Descripción general de la configuración

Los registros de auditoría de acceso a los datos se encuentran inhabilitados de forma predeterminada, excepto para BigQuery. Puedes habilitar y configurar ciertos aspectos de los registros de auditoría de acceso a los datos datos:

  • Organizaciones. Puedes habilitar y configurar registros de auditoría de acceso a los datos en cualquier organización, lo que se aplica a proyectos y carpetas nuevas y existentes en la organización.

  • Carpetas. Puedes habilitar y configurar registros de auditoría de acceso a los datos en una carpeta, lo que se aplica a todos los proyectos nuevos y existentes en la carpeta. Sin embargo, no puedes inhabilitar los registros de auditoría de acceso a los datos que se habilitaron en la organización del proyecto.

  • Proyectos. Puedes configurar los registros de auditoría de acceso a los datos para un proyecto individual, pero no puedes inhabilitar los registros de auditoría de acceso a los datos que se habilitaron en la organización o carpeta del proyecto.

  • Cuentas de facturación. Si quieres configurar los registros de auditoría de acceso a los datos para cuentas de facturación, usa la herramienta de línea de comandos de gcloud. Para obtener más información sobre el uso de la herramienta de gcloud con los registros de auditoría de acceso a los datos y las cuentas de facturación, consulta la documentación de referencia del comando gcloud beta billing accounts set-iam-policy.

  • Configuración predeterminada. Puedes especificar una configuración predeterminada de registro de auditoría de acceso a los datos en una organización, carpeta o proyecto que se aplique a futuros servicios de Google Cloud que comiencen a producir registros de auditoría de acceso a los datos.

  • Servicios Puedes especificar los servicios cuyos registros de auditoría deseas recibir. Por ejemplo, es posible que desees obtener registros de auditoría de Compute Engine, pero no de Cloud SQL. Para obtener una lista de los servicios de Google Cloud que pueden generar registros de auditoría, consulta la sección Servicios de GCP que producen registros de auditoría.

  • Tipos de información. Puedes controlar el tipo de información presente en los registros de auditoría. Existen tres tipos de información de registros de auditoría de acceso a los datos:

    • Lectura de administración: registra operaciones que leen metadatos o información de configuración.

      Los registros de auditoría de la actividad del administrador registran la escritura de información de configuración y metadatos. No se pueden inhabilitar.

    • Lectura de datos: registra operaciones que leen datos proporcionados por el usuario.

    • Escritura de datos: registra operaciones que escriben datos proporcionados por el usuario.

    Por ejemplo, puedes registrar solo las operaciones de escritura de datos, pero registrar los tres tipos de información desde Cloud DNS.

  • Usuarios exentos. Puedes eximir a usuarios específicos o grupos para que sus accesos a datos no se registren. Por ejemplo, puedes eximir a tus cuentas de pruebas internas para que sus operaciones del Depurador de Cloud no se registren.

Puedes configurar los registros de auditoría de acceso a los datos mediante la consola de registros de auditoría de IAM o la API. Estos métodos se explican en las siguientes secciones.

Configuración específica del servicio

Si hay una configuración de todo el servicio de Google Cloud (allServices) y una configuración de un servicio específico de Google Cloud, la configuración resultante del servicio es la unión de las dos opciones de configuración. En otras palabras:

  • Puedes habilitar los registros de auditoría de acceso a los datos para servicios específicos de Google Cloud, pero no puedes inhabilitarlos en los servicios de Google Cloud habilitados en la configuración más amplia.

  • Puedes agregar tipos de información adicionales al registro de auditoría de acceso a los datos de un servicio de Google Cloud, pero no puedes quitar los tipos que se especifican en la configuración más amplia.

  • Puedes agregar usuarios a las listas de exención, pero no puedes quitarlos de las listas de exención de la configuración más amplia.

Configuración de la organización, la carpeta y el proyecto

Puedes configurar registros de auditoría de acceso a los datos para organizaciones, carpetas y proyectos. Si hay una configuración para un servicio de Google Cloud de la jerarquía, la configuración resultante es la unión de las configuraciones. En otras palabras, a nivel de proyecto puedes hacer lo siguiente:

  • Puedes habilitar los registros para un servicio de Google Cloud, pero no puedes inhabilitarlos en un servicio de Google Cloud habilitado en la organización o carpeta.

  • Puedes habilitar tipos de información, pero no puedes inhabilitar los que están habilitados en la organización o carpeta.

  • Puedes agregar usuarios a las listas de exención, pero no puedes quitar los que estén en las listas de exención de la organización o carpeta.

  • A nivel de organización o carpeta, puedes habilitar los registros de auditoría de acceso a los datos para un proyecto dentro de esa organización o carpeta, incluso si no se configuraron en el proyecto.

Control de acceso

Necesitas las siguientes funciones de administración de identidades y accesos para configurar los registros de auditoría de acceso a datos para tus recursos de Google Cloud:

Configura registros de auditoría de acceso a los datos con Cloud Console

En esta sección, se explica cómo usar Cloud Console para configurar los registros de auditoría de acceso a los datos.

También puedes usar la API o la herramienta de línea de comandos de gcloud para realizar estas tareas de manera programática. Consulta Configura registros de auditoría de acceso a los datos con la API para obtener más detalles.

Si quieres acceder a las opciones de configuración del registro de auditoría en Cloud Console, sigue estos pasos:

  1. En Cloud Console, selecciona IAM & Admin > Registros de auditoría:

    Ir a la página Registros de auditoría

  2. Selecciona un proyecto, una carpeta o una organización existente de Google Cloud en la parte superior de la página.

Habilita registros de auditoría

En los siguientes pasos, se muestra cómo habilitar los registros de auditoría de acceso a los datos:

  1. En la tabla principal de la página Registros de auditoría (Audit logs), selecciona uno o más servicios de Google Cloud de la columna Título (Title).

  2. En la pestaña Tipo de registro (Log Type), selecciona las casillas junto a los tipos de registros de auditoría de acceso a los datos que deseas habilitar y, luego, haz clic en Guardar (Save).

  3. Si habilitaste de forma correcta los registros de auditoría, se incluirá en la tabla una marca de verificación. En el siguiente ejemplo, verás que para el servicio API de Cloud Composer (Cloud Composer API), los registros de auditoría Lectura de administración (Admin Read) y Lectura de datos (Data Read) están habilitados

    Configuración de registros de auditoría

También puedes habilitar los registros de auditoría para todos los servicios de Google Cloud que producen registros de auditoría de acceso a los datos. En la tabla principal de la página Registros de auditoría, selecciona todos los servicios de Google Cloud.

Ten en cuenta que este método de configuración masiva se aplica solo a los servicios de Google Cloud que están disponibles en ese momento. Si se agrega un nuevo servicio de Google Cloud, hereda la configuración de auditoría predeterminada.

Inhabilita registros de auditoría de acceso a los datos

En los siguientes pasos, se muestra cómo inhabilitar los registros de auditoría de acceso a los datos:

  1. En la tabla principal de la página Registros de auditoría, selecciona uno o más servicios de Google Cloud.

  2. En la pestaña Tipo de registro, selecciona los tipos de registros de auditoría de acceso a los datos que deseas inhabilitar y, luego, haz clic en Guardar.

  3. Si inhabilitaste de forma correcta los registros de auditoría de acceso a los datos, se indicará en la tabla con un guion gris. Todos los registros de auditoría de acceso a los datos habilitados se indican con una marca de verificación verde.

Configura las exenciones de usuarios

Puedes configurar exenciones para controlar qué usuarios generan registros de auditoría. Cuando agregas un usuario exento, no se crean registros de auditoría destinados a ese usuario para los tipos de registros seleccionados. Ten en cuenta que los registros de actividad del administrador se generan siempre, sin importar el estado de exención.

En los siguientes pasos, se muestra cómo configurar las exenciones:

  1. En la tabla principal de la página de configuración Registros de auditoría, selecciona uno o más servicios de Google Cloud de la columna Título.

  2. Selecciona la pestaña Usuarios exentos. En Agregar usuario exento, escribe la dirección de correo electrónico del usuario que deseas agregar a la lista de exención para los servicios seleccionados. Puedes agregar varios usuarios si seleccionas el botón Agregar usuario exento tantas veces como sea necesario.

  3. Selecciona las casillas junto a los tipos de registros de auditoría de acceso a los datos que deseas inhabilitar para el usuario y, luego, haz clic en Guardar.

  4. Cuando hayas agregado de forma correcta los usuarios exentos a un servicio, se indicará en la tabla con un número en la columna Exenciones.

Para quitar un usuario de la lista de exenciones, sigue estos pasos:

  1. Ve a la pestaña Usuarios exentos en el panel de información.

  2. Desplázate sobre el nombre de un usuario y selecciona el ícono de papelera que aparece.

  3. Una vez que el nombre del usuario aparezca en texto tachado, haz clic en Guardar.

Para editar la información de un usuario exento, sigue estos pasos:

  1. Ve a la pestaña Usuarios exentos en el panel de información.

  2. Haz clic en la flecha desplegable a la derecha del nombre de usuario.

  3. Selecciona o desmarca los tipos de registros de auditoría de acceso a los datos según corresponda para el usuario y, luego, haz clic en Guardar.

Establece la configuración predeterminada

Puedes establecer una configuración que hereden todos los servicios nuevos y existentes de Google Cloud de tu proyecto, organización o carpeta. Si un nuevo servicio de Google Cloud está disponible y los usuarios de tu organización comienzan a usarlo, se aplicará esta configuración predeterminada: el servicio hereda la política de registro de auditoría que estableciste para otros servicios de Google Cloud, y se habilitará la captura de los registros de auditoría de acceso a los datos.

  1. Haz clic en Establecer configuración predeterminada en la parte superior de la página.

  2. En la pestaña Tipo de registro, selecciona las casillas de los tipos de registros de auditoría de acceso a datos que deseas habilitar o inhabilitar y, a continuación, haz clic en Guardar.

  3. En la pestaña Usuarios exentos, escribe la dirección de correo electrónico de los usuarios que deseas agregar a la lista de exención y, a continuación, haz clic en Guardar. Sigue los pasos detallados en la sección anterior Configura exenciones de usuarios.

Configura registros de auditoría de acceso a los datos con la API

En esta sección, se explica cómo usar la API y la herramienta de gcloud para configurar los registros de auditoría de acceso a los datos de manera programática.

Muchas de estas tareas también se pueden realizar mediante Cloud Console. Consulta Configura registros de auditoría de acceso a los datos con Cloud Console para obtener más detalles.

Objetos de la política de IAM

Para configurar los registros de auditoría de acceso a datos mediante la API, debes editar la política de IAM relacionada con tu proyecto, organización o carpeta. La configuración del registro de auditoría se encuentra en la sección auditConfigs de la política:

"auditConfigs": [
  {
    object(AuditConfig)
  }
]

Para obtener más detalles, consulta el tipo de Política de IAM.

En las siguientes secciones, se describe el objeto AuditConfig con más detalle. Para obtener información sobre los comandos de la herramienta de gcloud y la API que se usan a fin de cambiar la configuración, consulta getIamPolicy y setIamPolicy.

Objetos de AuditConfig

La configuración del registro de auditoría consta de una lista de objetos AuditConfig. Cada objeto configura los registros de un servicio, o establece una configuración más amplia para todos los servicios. Cada objeto se ve de la siguiente manera:

{
  "service": SERVICE,
  "auditLogConfigs": [
    {
      "logType": "ADMIN_READ"
      "exemptedMembers": [ MEMBER,]
    },
    {
      "logType": "DATA_READ"
      "exemptedMembers": [ MEMBER,]
    },
    {
      "logType": "DATA_WRITE"
      "exemptedMembers": [ MEMBER,]
    },
  ]
},

SERVICE es el nombre del servicio, como "appengine.googleapis.com", o el valor especial, "allServices". Si una configuración no menciona un servicio en particular, entonces se usa la configuración más amplia para ese servicio. Si no hay ninguna configuración, los registros de auditoría de acceso a los datos no están habilitados para ese servicio. Para ver una lista de los nombres de los servicios, consulta la sección Servicios de registro.

La sección auditLogConfigs del objeto AuditConfig es una lista de 0 a 3 objetos, cada uno de los cuales configura un tipo de información de registro de auditoría. Si omites uno de los tipos de la lista, ese tipo de información no estará habilitado para el servicio.

MEMBER es un usuario para el cual no se recopilan registros de auditoría de acceso a datos. Puedes especificar usuarios, grupos o cuentas de servicio únicos. El Tipo de vínculo describe diferentes tipos de miembros, pero no todos ellos se pueden utilizar para configurar registros de auditoría de acceso a los datos.

A continuación, se presenta un ejemplo de una configuración de auditoría en formatos JSON y YAML. El formato YAML es el predeterminado cuando se usa la herramienta de línea de comandos de gcloud.

JSON

"auditConfigs": [
  {
    "auditLogConfigs": [
      {
        "logType": "ADMIN_READ"
      },
      {
        "logType": "DATA_WRITE"
      },
      {
        "logType": "DATA_READ"
      }
    ],
    "service": "allServices"
  },
  {
    "auditLogConfigs": [
      {
        "exemptedMembers": [
          "499862534253-compute@developer.gserviceaccount.com"
        ],
        "logType": "ADMIN_READ"
      }
    ],
    "service": "cloudsql.googleapis.com"
  }
],

YAML

auditConfigs:
- auditLogConfigs:
  - logType: ADMIN_READ
  - logType: DATA_WRITE
  - logType: DATA_READ
  service: allServices
- auditLogConfigs:
  - exemptedMembers:
    - 499862534253-compute@developer.gserviceaccount.com
    logType: ADMIN_READ
  service: cloudsql.googleapis.com

Configuraciones comunes

A continuación, se presentan algunas configuraciones de registros de auditoría comunes para proyectos.

Estas opciones de configuración no incluyen ninguna configuración de registro de auditoría en la organización o carpeta del proyecto. Para obtener más información, consulta Organización y configuración del proyecto.

Habilita todos los registros de auditoría de acceso a los datos

En la siguiente sección de auditConfigs, se habilitan los registros de auditoría de acceso a los datos para todos los servicios y usuarios:

JSON

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

YAML

auditConfigs:
- auditLogConfigs:
  - logType: ADMIN_READ
  - logType: DATA_WRITE
  - logType: DATA_READ
  service: allServices

Habilita un tipo de información y servicio

La siguiente configuración habilita los registros de auditoría de acceso a los datos para Cloud SQL. Estos solo registran las escrituras de los datos definidos por el usuario:

JSON

"auditConfigs": [
  {
    "service": "cloudsql.googleapis.com",
    "auditLogConfigs": [
      { "logType": "DATA_WRITE" },
    ]
  },
]

YAML

auditConfigs:
- auditLogConfigs:
  - logType: DATA_WRITE
  service: cloudsql.googleapis.com

Inhabilita todos los registros de auditoría de acceso a los datos

Para inhabilitar todos los registros de auditoría de acceso a datos (excepto BigQuery) en un proyecto, incluye una sección auditConfigs: vacía en tu nueva política de IAM:

JSON

"auditConfigs": [],

YAML

auditConfigs:

Si quitas la sección auditConfigs por completo de tu política nueva, setIamPolicy no cambia la configuración existente de los registros de auditoría de acceso a los datos. Para obtener más información, consulta la sección La máscara de actualización setIamPolicy.

No se pueden inhabilitar los registros de auditoría de acceso a los datos de BigQuery.

getIamPolicy y setIamPolicy

Usas los métodos getIamPolicy y setIamPolicy de la API de Resource Manager para leer y escribir tu política de IAM. Puedes elegir entre diferentes opciones para los métodos específicos que usarás:

  • La API de Resource Manager tiene los siguientes métodos:

    projects.getIamPolicy
    projects.setIamPolicy
    organizations.getIamPolicy
    organizations.setIamPolicy
    
  • La herramienta de línea de comandos de gcloud tiene los siguientes comandos de Resource Manager:

    gcloud projects get-iam-policy
    gcloud projects set-iam-policy
    gcloud organizations get-iam-policy
    gcloud organizations set-iam-policy
    gcloud beta billing accounts get-iam-policy
    gcloud beta billing accounts set-iam-policy
    

Independientemente de tu elección, sigue estos tres pasos:

  1. Lee la política actual mediante uno de los métodos getIamPolicy. Guarda la política en un archivo temporal.
  2. Edita la política en el archivo temporal. Cambia (o agrega) solo la sección auditConfigs.
  3. Escribe la política editada en el archivo temporal mediante uno de los métodos setIamPolicy.

setIamPolicy falla si Resource Manager detecta que otra persona cambió la política después de que la leíste en el primer paso. Si esto sucede, repite los tres pasos.

Ejemplos

En los siguientes ejemplos, se muestra cómo configurar los registros de auditoría de acceso a los datos de tu proyecto mediante el comando de gcloud y la API de Resource Manager.

A fin de configurar los registros de auditoría de acceso a los datos de la organización, reemplaza la versión de “proyectos” de los métodos de la API y los comandos por la versión de “organizaciones”.

gcloud

Para configurar los registros de auditoría de acceso a datos con el comando gcloud projects, haz lo siguiente:

  1. Lee la política de IAM de tu proyecto y almacénala en un archivo.

    gcloud projects get-iam-policy PROJECT_ID > /tmp/policy.yaml
    

    La política que se muestra se detalla a continuación. Esta política aún no tiene una sección auditConfigs:

    bindings:
    - members:
      - user:colleague@example.com
      role: roles/editor
    - members:
      - user:myself@example.com
      role: roles/owner
    etag: BwVM-FDzeYM=
    version: 1
    
  2. Edita la política en /tmp/policy.yaml. Para ello, agrega o cambia solo la configuración de los registros de auditoría de acceso a datos.

    A continuación, se muestra un ejemplo de tu política editada, que habilita los registros de auditoría de acceso de datos de escritura de datos de Cloud SQL. Se agregaron cuatro líneas al principio:

    auditConfigs:
    - auditLogConfigs:
      - logType: DATA_WRITE
      service: cloudsql.googleapis.com
    bindings:
    - members:
      - user:colleague@example.com
      role: roles/editor
    - members:
      - user:myself@example.com
      role: roles/owner
    etag: BwVM-FDzeYM=
    version: 1
    
  3. Escribe tu nueva política de IAM:

    gcloud projects set-iam-policy PROJECT_ID /tmp/policy.yaml
    

    Si el comando anterior informa un conflicto con otro cambio, repite estos pasos y comienza con el primero.

JSON

Para trabajar con tu política de IAM en formato JSON en lugar de YAML, reemplaza los siguientes comandos gcloud en el ejemplo:

gcloud projects get-iam-policy PROJECT_ID --format=json >/tmp/policy.json
gcloud projects set-iam-policy PROJECT_ID /tmp/policy.json

API

Para configurar tus registros de auditoría de acceso a los datos mediante la API de Resource Manager, haz lo siguiente:

  1. Lee la política de IAM de tu proyecto en la que se especifican los siguientes parámetros del método de la API getIamPolicy:

    • Recurso: projects/PROJECT_ID
    • Cuerpo de la solicitud: vacío

    El método muestra el objeto de la política actual, que aparece a continuación. La política de este proyecto aún no tiene una sección auditConfigs:

    {
      "bindings": [
      {
        "members": [
          "user:colleague@example.com"
        ],
        "role": "roles/editor"
      },
      {
        "members": [
          "user:myself@example.com"
        ],
        "role": "roles/owner"
      }
    ],
    "etag": "BwUsv2gimRs=",
    "version": 1
    

    }

  2. Edita la política actual:

    • Cambia o agrega la sección auditConfigs.

      Si deseas inhabilitar tus registros de auditoría de acceso a los datos, incluye un valor vacío para la sección: auditConfigs:[].

    • Conserva el valor de etag.

    También puedes quitar toda la demás información del objeto de política nuevo, siempre y cuando tengas la precaución de configurar updateMask en el paso siguiente. La política editada, que habilita los registros de auditoría de escritura de datos de Cloud SQL, se muestra a continuación:

    {
      "auditConfigs": [
        {
          "auditLogConfigs": [
            {
              "logType": "DATA_WRITE"
            }
          ],
          "service": "cloudsql.googleapis.com"
        }
      ],
      "etag": "BwVM-FDzeYM="
    }
    
  3. Escribe la nueva política mediante el método de la API setIamPolicy y especifica los siguientes parámetros:

    • Recurso: projects/PROJECT_ID
    • Cuerpo de la solicitud:
      • updateMask: "auditConfigs,etag"
      • política: el objeto de tu política editada

La máscara de actualización setIamPolicy

En esta sección, se explica la importancia del parámetro updateMask en el método setIamPolicy, y se explica por qué debes tener cuidado con el comando set-iam-policy de la herramienta de gcloud para no causar daño accidental a tu organización o proyecto.

El setIamPolicy API method usa un parámetro updateMask para controlar qué campos de la política se actualizan. Por ejemplo, si la máscara no contiene bindings, no puedes cambiar esa sección de la política por error. Por otro lado, si la máscara contiene bindings, esa sección siempre se actualiza. Si no incluyes un valor actualizado para bindings, esa sección se quita por completo de la política.

El comando gcloud projects set-iam-policy, que llama a setIamPolicy, no te permite especificar el parámetro updateMask. En su lugar, el comando calcula un valor para updateMask de la siguiente manera:

  • La updateMask siempre contiene los campos bindings y etag.
  • Si el objeto de política proporcionado en set-iam-policy contiene algún otro campo de nivel superior, como auditConfigs, esos campos se agregan a updateMask.

Como consecuencia de estas reglas, el comando set-iam-policy tiene los siguientes comportamientos:

  • Si omites la sección auditConfigs en tu política nueva, el valor anterior de la sección auditConfigs (si existe) no se modifica porque esa sección no está en la máscara de actualización. Esto es inofensivo, pero puede ser confuso.

  • Si omites bindings en tu nuevo objeto de política, la sección bindings se quitará de tu política, ya que esta sección aparece en la máscara de actualización. Esto es muy perjudicial, ya que, como consecuencia, todos los usuarios pierden acceso a tu proyecto.

  • Si omites etag en tu nuevo objeto de política, esto inhabilita la verificación de cambios simultáneos en tu política y podría dar como resultado cambios que reemplacen de manera accidental los cambios de otra persona.