Habilita las CMEK para Looker (Google Cloud Core)

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

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 las 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 a 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 los siguientes dos criterios:

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

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

En esta página, se explican los siguientes pasos para configurar las CMEK para una instancia de Looker (Google Cloud Core).

  1. Configura tu entorno.
  2. Solo para 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 establece la ubicación de la clave. La ubicación es la región de Google Cloud en la que quieres crear la instancia de Looker (Google Cloud Core).
  4. Solo para 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 para usuarios de Google Cloud CLI, Terraform y la API: Otorga acceso a la clave a la cuenta de servicio.
  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. Establece la edición en Empresarial o Insertar.
    3. Habilita la configuración de clave administrada por el cliente.
    4. Agrega la clave de encriptación administrada por el cliente por nombre o por ID.

Una vez que se completen 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 consola de Google Cloud, en la página del selector de proyectos, selecciona o crea un proyecto de Google Cloud. Nota: Si no planeas conservar los recursos creados durante este procedimiento, crea un proyecto en lugar de seleccionar uno existente. Cuando termines, puedes borrar el proyecto, lo que quitará los recursos asociados a él.

    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 para verificar si la facturación está habilitada en un proyecto.
  3. Instala Google Cloud CLI.
  4. Para inicializar la CLI de gcloud, ejecuta el siguiente comando:

    gcloud init
    

  5. Habilita la API de Cloud Key Management Service.

    Habilita la API

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

    Habilita la API

Roles obligatorios

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). Para habilitar CMEK para la instancia en la consola de Google Cloud, asegúrate de tener el rol de IAM de encriptador/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 en uso.

Crea 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 residirá, deberás 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, se aplicará la misma cuenta de servicio a todas las instancias de Looker (Google Cloud Core) de ese proyecto, y solo se debe crear la cuenta 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 de CMEK cuando 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 cuenta de servicio.
  • Administrador de cuentas de servicio (roles/iam.serviceAccountAdmin): Incluye permisos para enumerar las cuentas de servicio y obtener detalles sobre ellas. También incluye permisos para crear, actualizar y borrar cuentas de servicio.

Actualmente, solo puedes usar 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.

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).

Este comando crea la cuenta de servicio y muestra su nombre. Debes usar este nombre de cuenta de servicio durante el procedimiento que se muestra en la página sobre cómo otorgar acceso a la clave a la cuenta de servicio.

Después de crear la cuenta de servicio, espera unos minutos para 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 deseas crear la instancia de Looker (Google Cloud Core). Una clave multirregional o de región global no funcionará. La solicitud para crear la instancia de Looker (Google Cloud Core) falla si las regiones no coinciden.

Sigue las instrucciones que se indican 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 cumplan con los dos criterios siguientes:

  • 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 Propósito de la clave debe ser Encriptación/desencriptación simétrica.

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

Copia o anota el KMS_KEY_ID y el 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 recurso del llavero de claves y la clave que acabas de crear. Copia o escribe el ID (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 condiciones:

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

Debes tener el rol de IAM de 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 muestra cuando la creaste.

Después de otorgarle el rol de IAM a la cuenta de servicio, espera unos minutos para 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, como se mostró 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 los siguientes parámetros de configuración, sigue las instrucciones para crear una instancia de Looker (Google Cloud Core).

Para crear una instancia de Looker (Google Cloud Core) con configuración de CMEK, selecciona una de las siguientes opciones:

Console

  1. Asegúrate de tener el rol de IAM de encriptador/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 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á el campo desplegable Selecciona una clave administrada por el cliente.
  4. En el campo Selecciona una clave administrada por el cliente, establece la clave que deseas usar. La clave debe estar en un llavero de claves que tenga 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 con uno de los siguientes 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 hayas seleccionado la 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. Aparecerá el cuadro de diálogo Ingresa el ID de recurso de la clave, en el que puedes ingresar el ID de la clave. Después de ingresar el ID, selecciona Guardar.
  5. Una vez que selecciones una clave, aparecerá un mensaje en el que se te pedirá que otorgues permiso a tu cuenta de servicio para usarla. Haz clic en el botón Otorgar.
  6. Si la cuenta de servicio no tiene permiso para encriptar y desencriptar 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 hayas terminado de configurar 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 tu instancia de Looker (Google Cloud Core). No está asociada con la URL de la instancia.
  • PROJECT_ID: Es el nombre del proyecto de Google Cloud en el que estás creando la instancia de Looker (Google Cloud Core).
  • OAUTH_CLIENT_ID y OAUTH_CLIENT_SECRET: Son el ID de cliente de OAuth 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 autorizado 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 establecer si creas una instancia de IP privada.
  • RESERVED_RANGE: Es el rango de direcciones IP dentro de la VPC en la 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) 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 crees correctamente una instancia de Looker (Google Cloud Core), puedes verificar si las CMEK están habilitadas.

Para ver si CMEK está habilitada, 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 su página Detalles. Si una instancia tiene CMEK habilitadas, la fila Encriptación indica la encriptación que se usó para la instancia. En el campo Clave de encriptación administrada por el cliente (CMEK), se 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 tu instancia de Looker (Google Cloud Core). No está asociado con la URL de la instancia.
  • REGION: Es la región en la que se creó la instancia.

Este comando debería mostrar un kmsKeyName, un kmsKeyNameVersion y un kmsKeyState para confirmar que la instancia se configuró con CMEK.

Usa Cloud External Key Manager (Cloud EKM)

Para proteger los datos en instancias de Looker (Google Cloud Core), puedes usar claves que administres con 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 su nombre cuando crees una instancia de Looker (Google Cloud Core).

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

Rotar tu clave

Te recomendamos que rotes la clave para mejorar la seguridad. Cada vez que se rota la 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 Rotación de claves.

Si rotas la clave que se usa para proteger tu instancia de Looker (Google Cloud Core), la versión de clave anterior seguirá siendo necesaria para acceder a las copias de seguridad o exportaciones que se hayan realizado cuando se usaba esa versión de clave. 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 una versión de clave que se usa para ayudar a proteger una instancia de Looker (Google Cloud Core) está inhabilitada, la instancia de Looker (Google Cloud Core) debe dejar de funcionar, borrar los datos sensibles no encriptados 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 ayudar a proteger una instancia de Looker (Google Cloud Core) está inhabilitada.
  2. En aproximadamente 15 minutos, la instancia de Looker (núcleo de Google Cloud) detecta que se revocó la versión de la clave, deja de funcionar y borra todos los datos encriptados de la memoria.
  3. Después de que la instancia deja de funcionar, las llamadas a las APIs de Looker mostrarán 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, debes activar manualmente 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 ayudar a 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 de administrador de Looker (Google Cloud Core), como la creación o la actualización, pueden fallar por errores de Cloud KMS y funciones o permisos faltantes. Los motivos comunes de las fallas 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 Posibles causas Estrategias para la solución de 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 de 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 DE ADMINISTRACIÓN CLAVE

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 (núcleo de Google Cloud), o 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 se encuentra 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 regiones diferentes. La versión de clave de Cloud KMS y la instancia de Looker (núcleo de Google Cloud) 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 donde deseas crear instancias y vuelve a completar los pasos para crear instancias. Consulta la sección Crea un llavero de claves y una clave.

¿Qué sigue?