Encripta recursos fácilmente con Autokey de Cloud KMS

1. Introducción

Cloud KMS Autokey simplifica la creación y el uso de claves de encriptación administradas por el cliente (CMEK) automatizando el aprovisionamiento y la asignación. Con Autokey, no es necesario planificar ni aprovisionar tus llaveros de claves, claves y cuentas de servicio antes de que se necesiten. En cambio, Autokey genera tus claves a pedido a medida que se crean tus recursos, y se basa en permisos delegados en lugar de administradores de Cloud KMS.

El uso de claves generadas por Autokey puede ayudarte a alinearte de manera coherente con los estándares de la industria y las prácticas recomendadas para la seguridad de los datos, incluido el nivel de protección de HSM, la separación de obligaciones, la rotación de claves, la ubicación y la especificidad de las claves. Autokey crea claves que siguen los lineamientos generales y los lineamientos específicos del tipo de recurso para los servicios de Google Cloud que se integran con Autokey de Cloud KMS. Después de crearse, las claves solicitadas con Autokey funcionan de forma idéntica a otras claves de Cloud HSM con la misma configuración.

Qué compilarás

En este codelab, lanzarás recursos protegidos con la clave automática de Cloud KMS creando lo siguiente:

  • Un recurso de carpeta
  • Un proyecto que contendrá tus claves
  • Un agente de servicio que actúe como tu asistente de administración de claves
  • Un proyecto que alojará tus recursos protegidos
  • Conjuntos de datos de BigQuery, discos persistentes y buckets de Cloud Storage encriptados con la clave automática de Cloud KMS

Requisitos

2. Cómo crear una carpeta

Las carpetas son nodos en la jerarquía de recursos de Cloud Platform. Una carpeta puede contener proyectos, otras carpetas o una combinación de ambos. Los recursos de organización pueden usar carpetas para agrupar proyectos en el nodo del recurso de organización en una jerarquía. Para crear una carpeta, haz lo siguiente:

  1. Ve a la página Administrar recursos en la consola de Google Cloud.
  2. Asegúrate de que el nombre de tu recurso de organización esté seleccionado en la lista desplegable de organizaciones que se encuentra en la parte superior de la página.
  3. Haz clic en Crear carpeta.

9328ef3bd4840817.png

  1. Selecciona Carpeta estándar

20a094fe0c7a0924.png

  1. En el cuadro Nombre de la carpeta, ingresa el nombre de la carpeta nueva. Para este lab, considera "Autokey-Folder".
  2. En Destino, haz clic en Explorar y, luego, selecciona el recurso o la carpeta de la organización en la que deseas crear tu nueva carpeta.
  3. Haz clic en Crear.

3. Crea un proyecto de recursos

Es importante crear un proyecto de recursos para que contenga los recursos (como conjuntos de datos de BigQuery, discos persistentes y buckets de Cloud Storage) que deseas encriptar con Autokey de Cloud KMS. Si intentas crear recursos protegidos por Autokey en el proyecto de claves, Autokey rechazará la solicitud de una clave nueva. Sigue estos pasos para crear el proyecto de recursos:

  1. Ve a la página Administrar recursos en la consola de Google Cloud.
  2. Haz clic en Crear proyecto.

93e4e224322c68a7.png

  1. En la lista desplegable Seleccionar organización, que se encuentra en la parte superior de la página, selecciona la carpeta "Autokey-Folder".
  2. En la ventana Proyecto nuevo que aparece, ingresa un nombre de proyecto y selecciona una cuenta de facturación según corresponda. Para este lab, considera "Recursos encriptados con Autokey".
  3. En el cuadro Ubicación, selecciona la carpeta "Autokey-Folder". Ese recurso será el superior de la jerarquía del proyecto nuevo. Tu configuración debería verse similar a la siguiente:

187ece37daf50835.png

  1. Copia el ID del proyecto (en el ejemplo anterior, el ID del proyecto es "causal-hour-43319-m4", pero tu ID será diferente) en el editor de texto que prefieras.
  2. Haz clic en Crear
  3. Selecciona el ícono de Cloud Shell en la esquina superior derecha de la pantalla.

16c8476c4991f448.png

  1. Una vez que Cloud Shell esté activo, guarda el ID del proyecto de Autokey como una variable ejecutando el siguiente comando:
export RESOURCE_PROJECT=<paste your Resource Project ID>

Como mi ID del proyecto es "key-management-433319", mi comando se ve de la siguiente manera:

export AUTOKEY_PROJECT=causal-hour-43319-m4
  1. Ejecuta el siguiente comando para ejecutar comandos desde tu proyecto de claves:
gcloud config set project $RESOURCE_PROJECT

Cuando se te solicite, haz clic en "Autorizar" para autorizar Cloud Shell.

a6c755d4921bc728.png

  1. Como este proyecto contendrá recursos, debemos habilitar las APIs de los servicios que protegerá Autokey. Ejecuta el siguiente comando:
gcloud services enable storage.googleapis.com bigquery.googleapis.com compute.googleapis.com

4. Crea un proyecto de clave

Te recomendamos que crees un proyecto para que contenga los recursos de Cloud KMS creados por Autokey. En adelante, se hará referencia a este como el "proyecto clave". El proyecto de claves se puede crear dentro de la misma carpeta en la que planeas habilitar Autokey. No debes crear otros recursos dentro del proyecto de clave. Si intentas crear recursos protegidos por Autokey en el proyecto de claves, Autokey rechazará la solicitud de una clave nueva. Sigue estos pasos para crear el proyecto de clave:

  1. Ve a la página Administrar recursos en la consola de Google Cloud.
  2. Haz clic en Crear proyecto.

93e4e224322c68a7.png

  1. En la lista desplegable Seleccionar organización, que se encuentra en la parte superior de la página, selecciona la carpeta "Autokey-Folder".
  2. En la ventana Proyecto nuevo que aparece, ingresa un nombre de proyecto y selecciona una cuenta de facturación según corresponda. Para este lab, considera "Administración de claves".
  3. En el cuadro Ubicación, selecciona la carpeta "Autokey-Folder". Ese recurso será el superior de la jerarquía del proyecto nuevo. Tu configuración debería verse similar a la siguiente:

157894b5c9048c06.png

  1. Copia el ID del proyecto (en el ejemplo anterior, el ID del proyecto es "key-management-433319", pero tu ID será diferente) en el editor de texto que prefieras.
  2. Haz clic en Crear.

5. Prepara el proyecto de claves de Autokey

Ahora que se creó cada proyecto, es momento de configurar el proyecto de claves para usar Autokey de Cloud KMS.

  1. Selecciona el ícono de Cloud Shell en la esquina superior derecha de la pantalla.

16c8476c4991f448.png

  1. Una vez que Cloud Shell esté activo, guarda el ID del proyecto de Autokey como una variable ejecutando el siguiente comando:
export AUTOKEY_PROJECT=<paste your Autokey Project ID>

Como mi ID del proyecto es "key-management-433319", mi comando se ve de la siguiente manera:

export AUTOKEY_PROJECT=key-management-433319
  1. Ejecuta el siguiente comando para ejecutar comandos desde tu proyecto de claves:
gcloud config set project $AUTOKEY_PROJECT

Cuando se te solicite, haz clic en "Autorizar" para autorizar Cloud Shell.

a6c755d4921bc728.png

  1. Habilita la API de Cloud KMS ejecutando el siguiente comando
gcloud services enable cloudkms.googleapis.com  kmsinventory.googleapis.com
  1. Ejecuta el siguiente comando para guardar tu número de proyecto como una variable llamada AUTOKEY_PROJECT_NUMBER.
export AUTOKEY_PROJECT_NUMBER=$(gcloud projects list \
--filter="$(gcloud config get-value project)" \
--format="value(PROJECT_NUMBER)")
  1. Guarda el correo electrónico de tu principal como una variable ejecutando el siguiente comando:
export KEY_ADMIN_EMAIL=<paste your Principal's email>
  1. Otorga permisos de administrador de Cloud KMS en el proyecto de claves a tus usuarios administradores de Cloud KMS
gcloud projects add-iam-policy-binding $AUTOKEY_PROJECT_NUMBER \
    --role=roles/cloudkms.admin \
    --member=user:$KEY_ADMIN_EMAIL

6. Configura los agentes de servicio de Cloud KMS

El agente de servicio de Cloud KMS para un proyecto de claves crea claves y aplica vinculaciones de políticas de IAM durante la creación de recursos, en nombre de un administrador humano de Cloud KMS. Para poder crear y asignar claves, el agente de servicio de Cloud KMS requiere permisos de administrador de Cloud KMS.

  1. Busca el ID de la organización con el siguiente comando:
gcloud organizations list | grep -P -i 'ID:' | grep -i '[0-9]'
  1. Copia el ID de la organización, que es el resultado numérico destacado en rojo.
  2. Guarda el ID de la organización como una variable llamada ORG_ID:
export ORG_ID=<paste your Organization ID>
  1. Para crear el agente de servicio de Cloud KMS, ejecuta el siguiente comando:
gcloud beta services identity create --service=cloudkms.googleapis.com \
    --project=$AUTOKEY_PROJECT_NUMBER
  1. Otorga el rol de administrador de Cloud KMS al agente de servicio:
gcloud projects add-iam-policy-binding $AUTOKEY_PROJECT_NUMBER \
    --role=roles/cloudkms.admin \
    --member=serviceAccount:service-$AUTOKEY_PROJECT_NUMBER@gcp-sa-cloudkms.iam.gserviceaccount.com
  1. Agrega una vinculación de política de IAM para que puedas ver el uso de tu clave de Cloud KMS. El uso de la clave proporciona información sobre cada clave, incluido el número de recursos protegidos, proyectos y productos únicos de Google Cloud que usan la clave. Este nivel de detalle está disponible para cualquier persona que tenga el rol de visualizador de Cloud KMS en la clave. Ejecuta el siguiente comando:
gcloud organizations add-iam-policy-binding $ORGANIZATION_ID \
    --member="serviceAccount:service-org-$ORGANIZATION_ID@gcp-sa-cloudkms.iam.gserviceaccount.com" \
    --role='roles/cloudkms.orgServiceAgent'
  1. Otorga a tu cuenta de servicio de Cloud KMS el rol de agente de servicios de organización de Cloud KMS (cloudkms.orgServiceAgent) en el recurso de tu organización.
gcloud organizations add-iam-policy-binding $ORG_ID \
    --member="serviceAccount:service-org-$ORG_ID@gcp-sa-cloudkms.iam.gserviceaccount.com" \
    --role='roles/cloudkms.orgServiceAgent'
  1. Otorga el rol de visualizador de recursos protegidos de Cloud KMS en tu recurso de organización a cualquier persona que necesite ver los detalles del uso de las claves.
gcloud organizations add-iam-policy-binding $ORG_ID \
    --member="user:$KEY_ADMIN_EMAIL" \
    --role='roles/cloudkms.protectedResourcesViewer'

7. Otorga roles de usuario de Autokey

Antes de que tus desarrolladores puedan usar Autokey, debes otorgarles el rol requerido. Puedes otorgar el rol a nivel de la carpeta o del proyecto. Este rol permite que los desarrolladores soliciten claves al agente de servicio de Cloud KMS mientras crean recursos en esa carpeta o proyecto.

El primer paso para otorgar el rol es guardar el ID de la carpeta.

  1. Busca el ID de la carpeta con el siguiente comando:
gcloud projects describe $AUTOKEY_PROJECT | grep 'id' | grep -P -i '[0-9]+'
  1. Copia el ID de la carpeta, que es la parte destacada en rojo.
  2. Guarda el ID de carpeta como una variable llamada FOLDER_ID
export FOLDER_ID=<paste the folder ID>

A los efectos de este lab, definiremos al administrador de claves como el usuario de Autokey. Sin embargo, en los casos de uso de producción y en las organizaciones con más de una persona, el administrador de claves debe ser diferente del desarrollador que usa Autokey.

  1. Otorga el rol roles/cloudkms.autokeyUser a nivel de la carpeta:
gcloud resource-manager folders add-iam-policy-binding \
    $FOLDER_ID --role=roles/cloudkms.autokeyUser \
    --member=user:$KEY_ADMIN_EMAIL

8. Habilita Autokey de Cloud KMS en una carpeta de recursos

En este paso, habilitarás Autokey de Cloud KMS en una carpeta de recursos y, luego, identificarás el proyecto de Cloud KMS que contendrá los recursos de Autokey para esa carpeta. Si habilitas Autokey en esta carpeta, se habilitará para todos los proyectos de recursos dentro de la carpeta.

  1. En la consola de Google Cloud, ve a la página de Controles de KMS.
  2. Haz clic en Seleccionar carpeta.

785f338e1860029c.png

  1. En el selector de contexto, selecciona la carpeta en la que quieres habilitar Autokey. Será la misma carpeta que creaste antes y que contiene tu proyecto de recursos y el proyecto de administración de claves. Se verá de la siguiente manera:

f0ee5141dc6fa40e.png

  1. Haga clic en Habilitar.
  2. Haz clic en Explorar para seleccionar el proyecto clave.
  3. Selecciona tu proyecto de administración de claves y, luego, haz clic en Enviar.

5acd9e68eb972e15.png

Un mensaje confirma que Autokey de Cloud KMS está habilitado en la carpeta. La página Controles de KMS debería verse de la siguiente manera:

8bddb3d688ba842d.png

9. Crea recursos protegidos con Autokey de Cloud KMS

Discos persistentes de Compute Engine

Autokey crea una clave nueva para cada disco, imagen y máquina imagen en la misma ubicación que el recurso que se está creando.

Para crear un disco, completa los siguientes pasos:

  1. En la consola de Google Cloud, ve a la página Discos.
  2. Haz clic en Crear disco y, luego, ingresa las propiedades del disco nuevo.
  3. En Encriptación, selecciona Clave de Cloud KMS.

dcc63e9ae03c5fbe.png

  1. En Tipo de clave, selecciona Cloud KMS con Autokey y, luego, haz clic en Solicitar una clave nueva. Aparecerá un mensaje que indica que se creó correctamente la llave y que está lista para usarse.

4b2283a0d52cc98d.png

  1. Para terminar de crear el disco, haz clic en Crear.

Puedes seguir un proceso similar para crear recursos protegidos de instancias de VM, imágenes y máquinas.

Buckets de Google Cloud Storage

Autokey crea una clave nueva en la misma ubicación que el bucket. La clave creada por Autokey se asigna como la clave predeterminada del bucket.

Autokey no crea claves para objetos. De forma predeterminada, los objetos creados en un bucket usan la clave predeterminada del bucket. Si deseas encriptar un objeto con una clave que no sea la predeterminada del bucket, puedes crear una CMEK de forma manual y usarla cuando crees el objeto.

  1. En la consola de Google Cloud, ve a la página Crear un bucket.
  2. Selecciona un nombre permanente y único a nivel global.
  3. Elige una ubicación de datos.
  4. Continúa a la sección "Elige cómo proteger los datos de objeto".

e31bbeff5c7aabdf.png

  1. Haz clic en "Elige cómo proteger los datos de objeto" para expandir la sección.

9c68ce19dac932de.png

  1. Expande la sección Encriptación de datos y selecciona Clave de Cloud KMS. d8caca08891be9dc.png
  2. En Tipo de clave, selecciona Cloud KMS con Autokey y, luego, haz clic en Solicitar una clave nueva. Aparecerá un mensaje que indica que se creó correctamente la llave y que está lista para usarse.

a10d1ae243c44811.png

  1. Para terminar de crear el bucket, haz clic en Crear. Si aparece un cuadro de diálogo que explica que "Se impedirá el acceso público", haz clic en Confirmar.

Conjunto de datos de BigQuery

Para cada conjunto de datos nuevo, Autokey crea una clave nueva en la misma ubicación que el recurso, que se convierte en la clave predeterminada del conjunto de datos. Autokey no crea claves para tablas, consultas, tablas temporales ni modelos. De forma predeterminada, estos recursos están protegidos por la clave predeterminada del conjunto de datos. Si deseas proteger un recurso en un conjunto de datos con una clave que no sea la predeterminada del conjunto de datos, puedes crear una CMEK de forma manual y usarla cuando crees el recurso.

Para crear un conjunto de datos de BigQuery, primero debes tener el rol de usuario de BigQuery.

  1. Regresa a Cloud Shell
  2. Configura Cloud Shell para ejecutar comandos desde el proyecto de recursos
gcloud config set project $RESOURCE_PROJECT
  1. Ejecuta el siguiente comando para guardar tu número de proyecto como una variable llamada RESOURCE_PROJECT_NUMBER
export RESOURCE_PROJECT_NUMBER=$(gcloud projects list --filter="$(gcloud config get-value project)" --format="value(PROJECT_NUMBER)")
  1. Otorgarte el rol de usuario de BigQuery
gcloud projects add-iam-policy-binding $RESOURCE_PROJECT_NUMBER \
    --role=roles/bigquery.user \
    --member=user:$KEY_ADMIN_EMAIL

Ahora que tienes el rol de usuario de BigQuery, puedes crear un conjunto de datos y protegerlo con Autokey.

  1. En la consola de Google Cloud, ve a la página de BigQuery.
  2. Sigue las instrucciones para crear un conjunto de datos hasta que llegues a Opciones avanzadas > Encriptación.
  3. En Encriptación, selecciona Clave de Cloud KMS.
  4. En Tipo de clave, selecciona Cloud KMS con Autokey y, luego, haz clic en Solicitar una clave nueva. Aparecerá un mensaje que indica que se creó correctamente la llave y que está lista para usarse.
  5. Para terminar de crear el conjunto de datos, haz clic en Crear conjunto de datos.

10. Explora tus llaves

En este paso, explorarás las claves que Autokey de Cloud KMS creó en tu nombre. Para ello, visitarás la página Key Inventory. En la página Inventario de claves, se proporciona información completa sobre las claves criptográficas de tu proyecto. Ten en cuenta que los datos pueden demorarse. Por ejemplo, si creas un recurso protegido nuevo, el recurso protegido y la versión de clave asociada no se agregan de inmediato a la pestaña Seguimiento del uso. Consulta más limitaciones aquí.

  1. En la consola de Google Cloud, ve a la página Key Inventory.
  2. Opcional: Para filtrar la lista de claves, ingresa los términos de búsqueda en el cuadro de filtro filter_list y, luego, presiona Intro. Por ejemplo, puedes filtrar por ubicación, llavero de claves, estado o cualquier otra propiedad de las claves.
  3. Haz clic en el nombre de la clave para la que deseas ver la información de uso.
  4. Haz clic en "Resumen". Observa que tienes una clave por cada recurso creado. Cada nombre de clave incluye el nombre del recurso que protege la clave (p.ej., "compute-disk" o "storage-bucket"). Cloud KMS Autokey garantiza que cada clave esté programada para rotar 365 días después de su creación y que se le asigne el nivel de protección "HSM".

9acbce68acb653d4.png

  1. Haz clic en la pestaña Seguimiento del uso. Observa el nivel de información que se presenta: aquí se muestra cada recurso que encripta la clave, junto con el proyecto, la ubicación y la fecha de creación.
  2. Opcional: Para filtrar la lista de recursos protegidos, ingresa los términos de búsqueda en el cuadro de filtro filter_list y, luego, presiona Intro.

7def6fe9a023d063.png

11. Felicitaciones

¡Felicitaciones! Creaste correctamente recursos de Google Cloud y los encriptaste automáticamente a pedido con Autokey de Cloud KMS.

Ahora conoces los pasos clave necesarios para configurar Autokey y usarlo para encriptar automáticamente tus recursos con claves de Cloud KMS.

12. Próximos pasos

Cómo subir datos a tus recursos encriptados con Autokey

Documentos de referencia