Habilitar CMEK para Looker (Google Cloud Core)

De forma predeterminada, Google Cloud encripta los datos cuando están en reposo automáticamente mediante claves de encriptación administradas por Google. Si tienes requisitos normativos o de cumplimiento específicos relacionados con las claves que protegen tus datos, puedes usar claves de encriptación administradas por el cliente (CMEK) para la encriptación a nivel de la aplicación de Looker (Google Cloud Core).

Para obtener más información sobre las CMEK en general, incluso cuándo y por qué habilitarlas, consulta la documentación de Cloud Key Management Service.

En esta página, se explica cómo configurar una instancia de Looker (Google Cloud Core) para usar CMEK.

¿Cómo interactúa Looker (Google Cloud Core) con CMEK?

Looker (Google Cloud Core) usa una sola clave CMEK (a través de una jerarquía de claves secundarias) para ayudar a proteger los datos sensibles que administra la instancia de Looker (Google Cloud Core). Durante el inicio, cada proceso dentro de la instancia de Looker realiza una llamada inicial al Cloud Key Management Service (KMS) para desencriptar la clave. Durante el funcionamiento normal (después del inicio), toda la instancia de Looker realiza una sola llamada al KMS aproximadamente cada cinco minutos para verificar que la clave siga siendo válida.

¿Qué tipos de instancias de Looker (Google Cloud Core) admiten CMEK?

Las instancias de Looker (Google Cloud Core) admiten CMEK cuando se cumplen dos criterios:

  • Los pasos de configuración de CMEK que se describen en esta página se completan antes de crear la instancia de Looker (Google Cloud Core). No puedes habilitar las claves de encriptación administradas por el cliente en instancias existentes.
  • Las ediciones de instancias deben ser Enterprise o Embed.

Flujo de trabajo para crear una instancia de Looker (Google Cloud Core) con CMEK

En esta página, se te guiará a través de los siguientes pasos para configurar CMEK en una instancia de Looker (Google Cloud Core).

  1. Configura tu entorno.
  2. Solo usuarios de Google Cloud CLI, Terraform y la API: Crea una cuenta de servicio para cada proyecto que requiera claves de encriptación administradas por el cliente si aún no se configuró una cuenta de servicio de Looker para el proyecto.
  3. Crea un llavero de claves y una clave, y configura su ubicación. La ubicación es la región de Google Cloud en la que quieres crear la instancia de Looker (Google Cloud Core).
  4. Solo usuarios de Google Cloud CLI, Terraform y la API: Copia o escribe el ID de la clave (KMS_KEY_ID) y la ubicación de la clave, junto con el ID (KMS_KEYRING_ID) del llavero de claves. Necesitarás esta información cuando le otorgues a la cuenta de servicio acceso a la clave.
  5. Solo usuarios de Google Cloud CLI, Terraform y la API: Otorga a la cuenta de servicio acceso a la clave.
  6. Ve a tu proyecto y crea una instancia de Looker (Google Cloud Core) con las siguientes opciones:
    1. Selecciona la misma ubicación que usa la clave de encriptación administrada por el cliente.
    2. Configura la edición como Enterprise o Embed.
    3. Habilita la configuración de la clave administrada por el cliente.
    4. Agrega la clave de encriptación administrada por el cliente por nombre o ID.

Una vez que completes todos estos pasos, tu instancia de Looker (Google Cloud Core) se habilitará con CMEK.

Antes de comenzar

Si aún no lo hiciste, asegúrate de que tu entorno esté configurado para que puedas seguir las instrucciones de esta página. Sigue los pasos que se indican en esta sección para asegurarte de que la configuración sea correcta.

  1. En la página del selector de proyectos de la consola de Google Cloud, selecciona o crea un proyecto de Google Cloud. Nota: Si no planeas conservar los recursos que crearás en este procedimiento, crea un proyecto en lugar de seleccionar uno existente. Cuando termines estos pasos, puedes borrar el proyecto, lo que quitará los recursos asociados con el proyecto.

    Ir al selector de proyectos

  2. Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud. Obtén información sobre cómo verificar si la facturación está habilitada en un proyecto.
  3. Instala Google Cloud CLI.
  4. Para initialize la CLI de gcloud, ejecuta el siguiente comando:

    gcloud init
    

  5. Habilitar la API de Cloud Key Management Service

    Habilitar la API

  6. Habilita la API de Looker (Google Cloud Core).

    Habilitar la API

Funciones obligatorias

Para comprender los roles necesarios para configurar CMEK, visita la página Control de acceso con IAM de la documentación de Cloud Key Management Service.

Para crear una instancia de Looker (Google Cloud Core), asegúrate de tener el rol de IAM de Administrador de Looker para el proyecto en el que se crea tu instancia de Looker (Google Cloud Core). Si quieres habilitar CMEK en la instancia dentro de la consola de Google Cloud, asegúrate de tener el rol de IAM Encriptador o Desencriptador de CryptoKey de Cloud KMS en la clave que se usa para CMEK.

Si necesitas otorgar a la cuenta de servicio de Looker acceso a una clave de Cloud KMS, necesitas el rol de IAM Administrador de Cloud KMS en la clave que se usa.

Crear una cuenta de servicio

Si usas Google Cloud CLI, Terraform o la API para crear tu instancia de Looker (Google Cloud Core), y aún no se creó una cuenta de servicio de Looker para el proyecto de Google Cloud en el que se alojará, debes crear una cuenta de servicio para ese proyecto. Si vas a crear más de una instancia de Looker (Google Cloud Core) en el proyecto, la misma cuenta de servicio se aplica a todas las instancias de Looker (Google Cloud Core) en ese proyecto, y la creación de la cuenta de servicio debe hacerse solo una vez. Si usas la consola para crear una instancia, Looker (Google Cloud Core) crea automáticamente la cuenta de servicio y le otorga acceso a la clave CMEK mientras configuras la opción Usar una clave de encriptación administrada por el cliente.

Para permitir que un usuario administre cuentas de servicio, otorga una de las siguientes funciones:

  • Usuario de cuenta de servicio (roles/iam.serviceAccountUser): Incluye permisos para enumerar cuentas de servicio, obtener detalles sobre una cuenta de servicio y usar la identidad de una.
  • Administrador de cuenta de servicio (roles/iam.serviceAccountAdmin): Incluye permisos para enumerar cuentas de servicio y obtener detalles sobre ellas. También incluye permisos para crear, actualizar y borrar cuentas de servicio.

Actualmente, solo puedes usar los comandos de Google Cloud CLI para crear el tipo de cuenta de servicio que necesitas para las claves de encriptación administradas por el cliente. Si usas la consola de Google Cloud, Looker (Google Cloud Core) crea automáticamente esta cuenta de servicio por ti.

gcloud

Ejecuta el siguiente comando para crear la cuenta de servicio:

gcloud beta services identity create \
--service=looker.googleapis.com \
--project=PROJECT_ID

Reemplaza PROJECT_ID por el proyecto en el que reside la instancia de Looker (Google Cloud Core).

Con este comando, se crea la cuenta de servicio y se muestra el nombre de la cuenta de servicio. Debes usar este nombre de cuenta de servicio durante el procedimiento en Otorga a la cuenta de servicio acceso a la clave.

Después de crear la cuenta de servicio, espera unos minutos hasta que se propague.

Crea un llavero de claves y una clave

Puedes crear la clave en el mismo proyecto de Google Cloud en el que se encuentra la instancia de Looker (Google Cloud Core) o en otro proyecto de usuario. La ubicación del llavero de claves de Cloud KMS debe coincidir con la región en la que quieres crear la instancia de Looker (Google Cloud Core). Una clave multirregional o de región global no funcionará. La solicitud de creación de instancias de Looker (Google Cloud Core) falla si las regiones no coinciden.

Sigue las instrucciones en las páginas de documentación Crea un llavero de claves y Crea una clave para crear un llavero de claves y una clave que cumpla con los siguientes dos criterios:

  • El campo Ubicación del llavero de claves debe coincidir con la región que establecerás para la instancia de Looker (Google Cloud Core).
  • El campo de Propósito de la clave debe ser Encriptación/desencriptación simétrica.

Consulta la sección Rota tu clave para obtener información sobre cómo rotar la clave y crear versiones nuevas.

Copia o anota la KMS_KEY_ID y la KMS_KEYRING_ID

Si usas Google Cloud CLI, Terraform o la API para configurar tu instancia de Looker (Google Cloud Core), sigue las instrucciones de la página de documentación Obtén un ID de recurso de Cloud KMS para encontrar los IDs de recursos del llavero de claves y la clave que acabas de crear. Copia o escribe el ID de la clave (KMS_KEY_ID) y la ubicación de la clave, junto con el ID (KMS_KEYRING_ID) del llavero de claves. Necesitarás esta información cuando le otorgues a la cuenta de servicio acceso a la clave.

Otorga a la cuenta de servicio acceso a la clave.

Solo debes realizar este procedimiento si se cumplen las siguientes dos condiciones:

  • Estás usando Google Cloud CLI, Terraform o la API.
  • Aún no se le otorgó acceso a la clave a la cuenta de servicio. Por ejemplo, si ya hay una instancia de Looker (Google Cloud Core) en el mismo proyecto que usa la misma clave, no necesitas otorgar acceso. Como alternativa, si otra persona ya otorgó acceso a la clave, no es necesario que lo hagas.

Debes tener el rol de IAM Administrador de Cloud KMS en la clave que se usa para otorgar acceso a la cuenta de servicio.

Para otorgar acceso a la cuenta de servicio, haz lo siguiente:

gcloud

gcloud kms keys add-iam-policy-binding KMS_KEY_ID \
--location=REGION \
--keyring=KMS_KEYRING_ID \
--member=serviceAccount:SERVICE_ACCOUNT_NAME \
--role=roles/cloudkms.cryptoKeyEncrypterDecrypter

Reemplaza lo siguiente:

  • KMS_KEY_ID: Es el ID de la clave de KMS.
  • REGION: Es la región en la que se crea Looker (Google Cloud Core) y la ubicación del llavero de claves.
  • KMS_KEYRING_ID: Es el ID del llavero de claves de KMS.
  • SERVICE_ACCOUNT_NAME: Es el nombre de la cuenta de servicio que se mostró cuando creaste la cuenta de servicio.

Después de otorgar el rol de IAM a la cuenta de servicio, espera unos minutos a que se propague el permiso.

Crea una instancia de Looker (Google Cloud Core) con CMEK

Para crear una instancia con claves de encriptación administradas por el cliente en la consola de Google Cloud, primero sigue los pasos de la sección Crea un llavero de claves y una clave (que mostramos anteriormente) para crear un llavero de claves y una clave en la misma región que usarás para tu instancia de Looker (Google Cloud Core). Luego, con la siguiente configuración, sigue las instrucciones para crear una instancia de Looker (Google Cloud Core).

Para crear una instancia de IP privada con la configuración de CMEK, selecciona una de las siguientes opciones:

Console

  1. Asegúrate de tener el rol de IAM Encriptador y Desencriptador de CryptoKey de Cloud KMS en la clave que se usa para CMEK.
  2. En la sección Edición de la página Crear una instancia, debes seleccionar una edición de Enterprise o Incorporar para usar CMEK.
  3. En la sección Encriptación de la página Crear una instancia, elige el botón de selección Clave de encriptación administrada por el cliente (CMEK). Se mostrará un campo desplegable Selecciona una clave administrada por el cliente (Select a customer-managed key).
  4. En el campo Selecciona una clave administrada por el cliente, establece la clave que desees usar. La clave debe estar en un llavero de claves con una ubicación configurada en la misma región que la instancia de Looker (Google Cloud Core) que estás creando; de lo contrario, la creación de la instancia fallará. Puedes seleccionar la clave mediante uno de estos dos métodos:
    1. Selecciona el nombre de la clave en la lista desplegable: Las claves disponibles en tu proyecto de Google Cloud aparecen en una lista desplegable. Una vez que selecciones tu clave, haz clic en Aceptar.
    2. Ingresa el ID de recurso de la clave: Haz clic en el texto ¿No ves tu clave? Ingresa el ID de recurso de la clave, que aparece en la parte inferior del menú desplegable.Esto revela un diálogo Enter key resource ID, en el que puedes ingresar el ID de la clave. Una vez que hayas ingresado el ID, selecciona Guardar.
  5. Una vez que selecciones una clave, aparecerá un mensaje en el que se te pedirá que le otorgues permiso a tu cuenta de servicio para que la use. Haz clic en el botón Otorgar.
  6. Si la cuenta de servicio no tiene permiso para encriptar y desencriptar contenido con la clave seleccionada, aparecerá un mensaje. Si esto sucede, haz clic en Otorgar para otorgar a la cuenta de servicio el rol de IAM de encriptador/desencriptador de CryptoKey de Cloud KMS en la clave de KMS seleccionada.
  7. Una vez que completes toda la configuración de tu instancia de Looker (Google Cloud Core), haz clic en Crear.

gcloud

gcloud looker instances create INSTANCE_NAME \
--project=PROJECT_ID \
--oauth-client-id=OAUTH_CLIENT_ID\
--oauth-client-secret=OAUTH_CLIENT_SECRET \
--kms-key=KMS_KEY_ID
--region=REGION \
--edition=EDITION
[--consumer-network=CONSUMER_NETWORK --private-ip-enabled --reserved-range=RESERVED_RANGE]
[--no-public-ip-enabled]
[--public-ip-enabled]

Reemplaza lo siguiente:

  • INSTANCE_NAME: Es un nombre para la instancia de Looker (Google Cloud Core); no está asociado con la URL de la instancia
  • PROJECT_ID: El nombre del proyecto de Google Cloud en el que crearás la instancia de Looker (Google Cloud Core)
  • OAUTH_CLIENT_ID y OAUTH_CLIENT_SECRET: El ID y el secreto de OAuth que creaste cuando configuraste tu cliente de OAuth. Después de crear la instancia, ingresa su URL en la sección URI de redireccionamiento autorizados del cliente de OAuth.
  • KMS_KEY_ID: Es el ID de la clave de KMS.
  • REGION: Es la región en la que se aloja tu instancia de Looker (Google Cloud Core). Las regiones disponibles se enumeran en la página de documentación de las ubicaciones de Looker (Google Cloud Core).
  • EDITION: Para habilitar CMEK, EDITION debe ser core-embed-annual o core-enterprise-annual.
  • CONSUMER_NETWORK: tu red de VPC o VPC compartida. Se debe configurar si creas una instancia de IP privada.
  • RESERVED_RANGE: Es el rango de direcciones IP dentro de la VPC en el que Google aprovisionará una subred para tu instancia de Looker (Google Cloud Core). Se debe configurar si creas una instancia de IP privada.

Puedes incluir las siguientes marcas:

  • --private-ip-enabled habilita la IP privada.
  • --public-ip-enabled habilita la IP pública.
  • --no-public-ip-enabled inhabilita la IP pública.

Terraform

Usa el siguiente recurso de Terraform para aprovisionar una instancia de Looker (Google Cloud Core) de Enterprise con una conexión de red privada:

# Creates an Enterprise edition Looker (Google Cloud core) instance with full, Private IP functionality.
resource "google_looker_instance" "main" {
  name               = "my-instance"
  platform_edition   = "LOOKER_CORE_ENTERPRISE_ANNUAL"
  region             = "us-central1"
  private_ip_enabled = true
  public_ip_enabled  = false
  reserved_range     = google_compute_global_address.main.name
  consumer_network   = data.google_compute_network.main.id
  admin_settings {
    allowed_email_domains = ["google.com"]
  }
  encryption_config {
    kms_key_name = google_kms_crypto_key.main.id
  }
  maintenance_window {
    day_of_week = "THURSDAY"
    start_time {
      hours   = 22
      minutes = 0
      seconds = 0
      nanos   = 0
    }
  }
  deny_maintenance_period {
    start_date {
      year  = 2050
      month = 1
      day   = 1
    }
    end_date {
      year  = 2050
      month = 2
      day   = 1
    }
    time {
      hours   = 10
      minutes = 0
      seconds = 0
      nanos   = 0
    }
  }
  oauth_config {
    client_id     = "my-client-id"
    client_secret = "my-client-secret"
  }
  depends_on = [
    google_service_networking_connection.main,
    google_kms_crypto_key.main
  ]
}

resource "google_kms_key_ring" "main" {
  name     = "keyring-example"
  location = "us-central1"
}

resource "google_kms_crypto_key" "main" {
  name     = "crypto-key-example"
  key_ring = google_kms_key_ring.main.id
}

resource "google_service_networking_connection" "main" {
  network                 = data.google_compute_network.main.id
  service                 = "servicenetworking.googleapis.com"
  reserved_peering_ranges = [google_compute_global_address.main.name]
}

resource "google_compute_global_address" "main" {
  name          = "looker-range"
  purpose       = "VPC_PEERING"
  address_type  = "INTERNAL"
  prefix_length = 20
  network       = data.google_compute_network.main.id
}

data "google_project" "main" {}

data "google_compute_network" "main" {
  name = "default"
}

resource "google_kms_crypto_key_iam_member" "main" {
  crypto_key_id = google_kms_crypto_key.main.id
  role          = "roles/cloudkms.cryptoKeyEncrypterDecrypter"
  member        = "serviceAccount:service-${data.google_project.main.number}@gcp-sa-looker.iam.gserviceaccount.com"
}

Si deseas obtener más información para aplicar o quitar una configuración de Terraform, consulta los comandos básicos de Terraform.

Tu instancia de Looker (Google Cloud Core) ahora está habilitada con CMEK.

Visualiza la información de claves de una instancia con CMEK habilitadas

Una vez que hayas creado correctamente una instancia de Looker (Google Cloud Core), puedes verificar si las CMEK están habilitadas.

Para ver si las CMEK están habilitadas, selecciona una de las siguientes opciones:

Console

  1. En la consola de Google Cloud, ve a la página Instancias de Looker.
  2. Haz clic en el nombre de una instancia para abrir la página Detalles. Si una instancia tiene CMEK habilitadas, una fila de Encriptación indica la encriptación que se usó para la instancia. El campo Clave de encriptación administrada por el cliente (CMEK) muestra el identificador de clave.

gcloud

gcloud looker instances describe INSTANCE_NAME --region=REGION --format config

Reemplaza lo siguiente:

  • INSTANCE_NAME: Es un nombre para la instancia de Looker (Google Cloud Core); no está asociado con la URL de la instancia
  • REGION: La región en la que se creó la instancia

Este comando debe mostrar kmsKeyName, kmsKeyNameVersion y kmsKeyState para confirmar que la instancia se configuró con CMEK.

Usa Cloud External Key Manager (Cloud EKM)

Para proteger los datos en las instancias de Looker (Google Cloud Core), puedes usar claves que administres dentro de un socio de administración de claves externo compatible. Para obtener más información, consulta la página de documentación de Cloud External Key Manager, incluida la sección Consideraciones.

Cuando tengas todo listo para crear una clave de Cloud EKM, consulta la sección Cómo funciona de la página de documentación de Cloud External Key Manager. Después de crear una clave, proporciona el nombre cuando crees una instancia de Looker (Google Cloud Core).

Google no controla la disponibilidad de las claves en un sistema asociado de administración de claves externo.

Rota tu clave

Te recomendamos rotar tu clave para promover la seguridad. Cada vez que se rota tu clave, se crea una versión nueva. Para obtener más información sobre la rotación de claves, consulta la página de documentación sobre la Rotación de claves.

Si rotas la clave que se usa para proteger tu instancia de Looker (Google Cloud Core), aún se necesitará la versión anterior de la clave para acceder a las copias de seguridad o las exportaciones realizadas cuando esa versión de clave estaba en uso. Por ese motivo, Google recomienda mantener habilitada la versión de clave anterior durante al menos 45 días después de la rotación para garantizar que se pueda acceder a esos elementos. Las versiones de clave se conservan de forma predeterminada hasta que se inhabilitan o destruyen.

Inhabilita y vuelve a habilitar versiones de claves

Consulta las siguientes páginas de documentación:

Si se inhabilita una versión de clave que se usa para proteger una instancia de Looker (Google Cloud Core), la instancia de Looker (Google Cloud Core) debe dejar de funcionar, borrar todos los datos sensibles sin encriptar que pueda tener en la memoria y esperar hasta que la clave vuelva a estar disponible. El proceso es el siguiente:

  1. La versión de clave que se usa para proteger una instancia de Looker (Google Cloud Core) está inhabilitada.
  2. En aproximadamente 15 minutos, la instancia de Looker (Google Cloud Core) detecta que la versión de clave se revocó, deja de funcionar y borra todos los datos encriptados en la memoria.
  3. Una vez que la instancia deja de funcionar, las llamadas a las APIs de Looker muestran un mensaje de error.
  4. Después de que la instancia deja de funcionar, la IU de Looker (Google Cloud Core) muestra un mensaje de error.
  5. Si vuelves a habilitar la versión de clave, deberás activar de forma manual un reinicio de la instancia.

Si inhabilitas una versión de clave y no quieres esperar a que la instancia de Looker (Google Cloud Core) se detenga por sí sola, puedes activar manualmente un reinicio de la instancia para que la instancia de Looker (Google Cloud Core) detecte la versión de clave revocada de inmediato.

Destruye versiones de claves

Consulta la siguiente página de documentación:

Si se destruye una versión de clave que se usa para proteger una instancia de Looker (Google Cloud Core), la instancia de Looker se vuelve inaccesible. Debes borrar la instancia y no podrás acceder a sus datos.

Solucionar problemas

En esta sección, se describen los procedimientos que debes intentar cuando recibes un mensaje de error durante la configuración o el uso de instancias habilitadas con CMEK.

Las operaciones del administrador de Looker (Google Cloud Core), como crear o actualizar, pueden fallar debido a errores de Cloud KMS y a roles o permisos faltantes. Entre los motivos comunes de las fallas se incluyen una versión de clave de Cloud KMS faltante, una versión de clave de Cloud KMS inhabilitada o destruida, permisos de IAM insuficientes para acceder a la versión de clave de Cloud KMS o que la versión de clave de Cloud KMS esté en una región diferente a la de la instancia de Looker (Google Cloud Core). Usa la siguiente tabla de solución de problemas para diagnosticar y resolver problemas comunes.

Tabla de solución de problemas de claves de encriptación administradas por el cliente

Mensaje de error Causas posibles Estrategias para solucionar problemas
No se encontró la cuenta de servicio por proyecto ni por producto. El nombre de la cuenta de servicio es incorrecto. Asegúrate de haber creado una cuenta de servicio para el proyecto de usuario correcto.

IR A LA PÁGINA CUENTAS DE SERVICIO

No se puede otorgar acceso a la cuenta de servicio. La cuenta de usuario no tiene permiso para otorgar acceso a esta versión de clave.

Agrega el rol Administrador de la organización a tu usuario o cuenta de servicio.

IR A LA PÁGINA CUENTAS DE IAM

Se destruye la versión de clave de Cloud KMS La versión de clave está destruida. Si la versión de clave se destruye, no podrás usarla para encriptar o desencriptar datos. Se debe borrar la instancia de Looker (Google Cloud Core).
Se inhabilita la versión de la clave de Cloud KMS La versión de clave está inhabilitada.

Vuelve a habilitar la versión de la clave de Cloud KMS.

IR A LA PÁGINA ADMINISTRACIÓN DE CLAVES

Permiso insuficiente para usar la clave de Cloud KMS Falta el rol cloudkms.cryptoKeyEncrypterDecrypter en el usuario o la cuenta de servicio que usas para ejecutar operaciones en instancias de Looker (Google Cloud Core), o bien la versión de la clave de Cloud KMS no existe.

Agrega la función cloudkms.cryptoKeyEncrypterDecrypter a tu usuario o cuenta de servicio.

IR A LA PÁGINA CUENTAS DE IAM

Si el rol ya está en tu cuenta, consulta la sección Crea un llavero de claves y una clave para aprender a crear una versión de clave nueva. Luego, vuelve a completar los pasos para crear la instancia.

No se encontró la clave de Cloud KMS La versión de clave no existe. Crea una versión de clave nueva y vuelve a completar los pasos de creación de la instancia. Consulta la sección Crea un llavero de claves y una clave.
La instancia de Looker (Google Cloud Core) y la versión de clave de Cloud KMS se encuentran en diferentes regiones La versión de clave de Cloud KMS y la instancia de Looker (Google Cloud Core) deben estar en la misma región. No funciona si la versión de clave de Cloud KMS se encuentra en una región global o multirregional. Crea una versión de clave en la misma región en la que deseas crear instancias y vuelve a completar los pasos de creación de instancias. Consulta la sección Crea un llavero de claves y una clave.

¿Qué sigue?