Encriptar recursos de estaciones de trabajo con CMEK

De forma predeterminada, Cloud Workstations encripta el contenido de los clientes en reposo. Cloud Workstations se encarga del cifrado sin que tengas que hacer nada más. Esta opción se llama Cifrado predeterminado de Google.

Si quieres controlar tus claves de cifrado, puedes usar claves de cifrado gestionadas por el cliente (CMEKs) en Cloud KMS con servicios integrados con CMEKs, como Cloud Workstations. Si usas claves de Cloud KMS, tendrás control sobre su nivel de protección, ubicación, calendario de rotación, permisos de uso y acceso, y límites criptográficos. Con Cloud KMS también puedes monitorizar el uso de las claves, ver los registros de auditoría y controlar los ciclos de vida de las claves. En lugar de que Google sea el propietario y el gestor de las claves de cifrado de claves (KEKs) simétricas que protegen tus datos, tú controlas y gestionas estas claves en Cloud KMS.

Una vez que hayas configurado tus recursos con CMEKs, la experiencia de acceder a tus recursos de Cloud Workstations será similar a la de usar el cifrado predeterminado de Google. Para obtener más información sobre las opciones de encriptado, consulta Claves de encriptado gestionadas por el cliente (CMEK).

De forma predeterminada, Cloud Workstations usa Google-owned and Google-managed encryption key para encriptar los recursos de las estaciones de trabajo, como las máquinas virtuales y los discos persistentes, cuando los datos están en reposo. Si tienes requisitos de cumplimiento normativo específicos relacionados con las claves que protegen tus datos, puedes usar claves de cifrado gestionadas por el cliente (CMEK) con Cloud Key Management Service (Cloud KMS).

Para obtener más información sobre la clave CMEK en general, incluido cuándo y por qué habilitarla, consulta la documentación de Cloud KMS.

Antes de empezar

Crear proyectos

  1. En la Google Cloud consola, en la página del selector de proyectos, selecciona o crea los siguientes Google Cloud proyectos:

    • Un proyecto de claves contiene tus recursos de Cloud KMS, incluidos un llavero de claves y una clave de cifrado simétrica.

    • Un proyecto de estaciones de trabajo contiene estaciones de trabajo cifradas con una clave CMEK.

    Puedes usar el mismo proyecto para tu proyecto de clave y tu proyecto de estaciones de trabajo, pero, como práctica recomendada, te aconsejamos que uses dos proyectos para separar las tareas.

  2. Asegúrate de que la facturación esté habilitada en tu proyecto de Cloud. Para obtener más información, consulta Verificar el estado de facturación de tus proyectos.

  3. Habilita las APIs necesarias en cada proyecto.

  4. Instala e inicializa la CLI de gcloud:

    1. Para instalar la CLI de gcloud, consulta Instalar la CLI de gcloud y sigue las instrucciones correspondientes a tu sistema operativo.

    2. Para inicializar la CLI de gcloud, consulta Inicializar la CLI de gcloud o ejecuta el siguiente comando:

      gcloud init
      

Roles obligatorios

Aunque puedes asignar los roles Administrador de Cloud KMS y Administrador de Cloud Workstations a la misma persona, te recomendamos que sigas el principio de mínimos accesos al asignar roles. Como práctica recomendada, asigna estos roles a dos personas distintas y haz que se coordinen, en lugar de pedirle a tu administrador de Cloud KMS que también sea administrador de Cloud Workstations. Para obtener más información, consulta las prácticas recomendadas de seguridad y cómo usar la gestión de identidades y accesos de forma segura.

Para obtener los permisos que necesitas para configurar CMEK, pide a tu administrador que te conceda los siguientes roles de gestión de identidades y accesos:

  • Si tienes el rol Administrador de Cloud KMS, pide a tu administrador que te asigne el siguiente rol para que puedas crear y gestionar recursos de Cloud KMS: Administrador de Cloud KMS (roles/cloudkms.admin) en tu proyecto de claves.
  • Si tienes el rol Administrador de Cloud Workstations, pide a tu administrador que te asigne el siguiente rol para que puedas crear y actualizar estaciones de trabajo: Administrador de Cloud Workstations (roles/workstations.admin) en tu proyecto de estaciones de trabajo.

Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar el acceso a proyectos, carpetas y organizaciones.

También puedes conseguir los permisos necesarios a través de roles personalizados u otros roles predefinidos.

Crear un conjunto de claves y una clave de encriptado

En tu proyecto de clave, crea una clave y guarda el ID de recurso de la clave:

  1. Crea o selecciona un conjunto de claves.

    El conjunto de claves debe estar ubicado en la misma región que el clúster de estaciones de trabajo. Cloud Workstations no admite ubicaciones de Cloud KMS multirregionales ni globales.

    Puedes compartir llaveros entre servicios, pero, como práctica recomendada, te aconsejamos que uses una clave diferente para cada recurso protegido. Consulta la sección sobre la separación de funciones.

  2. Crea una clave de cifrado simétrica.

  3. Obtén el ID de recurso de la clave y guárdalo para un paso posterior.

Conceder acceso a tu clave de cifrado

Cloud Workstations usa las siguientes cuentas de servicio para gestionar el cifrado de tus recursos:

  1. El agente de servicio de Cloud Workstations: Cloud Workstations usa esta cuenta para detectar cuándo se rota tu clave.

  2. La cuenta de servicio de claves de Cloud KMS: proporcionarás una cuenta de servicio que Cloud Workstations pueda usar para acceder a tu clave y encriptar y desencriptar recursos.

Concede el rol Lector de Cloud KMS al agente de servicio de Cloud Workstations

El agente de servicio de Cloud Workstations permite que Cloud Workstations realice tareas de servicio en tu proyecto. Cuando activaste el servicio Cloud Workstations en tu proyecto de estaciones de trabajo, este agente de servicio se creó automáticamente. Para que las CMEK funcionen correctamente, debes conceder el rol de lector de Cloud KMS (roles/cloudkms.viewer) al agente de servicio de Cloud Workstations de tu proyecto de estaciones de trabajo en la clave de Cloud KMS para que Cloud Workstations pueda detectar la rotación de claves.

  1. Para obtener el agente de servicio de Cloud Workstations de tu proyecto de estación de trabajo, usa el siguiente comando:

    gcloud beta services identity create \
        --service=workstations.googleapis.com \
        --project=WORKSTATIONS_PROJECT_ID
    

    Sustituye WORKSTATIONS_PROJECT_ID por el ID de tu proyecto de estación de trabajo.

    El agente de servicio de Cloud Workstations usa el siguiente formato:
    service-$WORKSTATIONS_PROJECT_NUMBER@gcp-sa-workstations.iam.gserviceaccount.com.

  2. Asigna el rol Lector de Cloud KMS (roles/cloudkms.viewer) a la cuenta de agente de servicio de Cloud Workstations en la clave CMEK. De esta forma, Cloud Workstations puede detectar la rotación de claves y volver a cifrar los recursos según sea necesario en tu proyecto.

    gcloud kms keys add-iam-policy-binding \
        KEY_NAME \
        --keyring=KEY_RING \
        --location=LOCATION \
        --project=KMS_PROJECT_ID \
        --role=roles/cloudkms.viewer \
        --member=CLOUD_WORKSTATIONS_SERVICE_AGENT
    

    Haz los cambios siguientes:

    • KEY_NAME: el nombre de tu clave.
    • KEY_RING: el nombre del conjunto de claves.
    • LOCATION: la ubicación que contiene tu conjunto de claves.
    • KMS_PROJECT_ID: el ID del proyecto que contiene tu clave.
    • CLOUD_WORKSTATIONS_SERVICE_AGENT: el agente del servicio Cloud Workstations obtenido en el paso anterior.

    Para obtener información sobre todas las marcas y los valores posibles, ejecuta el comando con la marca --help.

Configurar una cuenta de servicio de claves de Cloud KMS

Cloud Workstations usa una cuenta de servicio que elijas para encriptar y desencriptar con tu clave gestionada por el cliente. Nos referimos a esta cuenta como la cuenta de servicio de claves de Cloud KMS. Puedes crear una cuenta de servicio o usar una que ya tengas. Estos son los requisitos para esta cuenta:

  • El administrador de Cloud Workstations debe tener permiso iam.serviceAccounts.actAs en esta cuenta de servicio.
  • La cuenta de servicio que elijas debe tener el rol Encargado del encriptado y desencriptado de CryptoKey (roles/cloudkms.cryptoKeyEncrypterDecrypter) de Cloud KMS en tu clave de Cloud KMS.
  1. Si quieres crear una cuenta de servicio, usa el siguiente comando:

    gcloud iam service-accounts create \
      KMS_KEY_SERVICE_ACCOUNT_NAME \
      --display-name="Service account for Cloud Workstations CMEK" \
      --project=WORKSTATIONS_PROJECT_ID
    

    Haz los cambios siguientes:

    • KMS_KEY_SERVICE_ACCOUNT_NAME: el nombre de la cuenta de servicio.
    • WORKSTATIONS_PROJECT_ID: el ID de tu proyecto de estación de trabajo.

    La cuenta de servicio que has creado tiene un correo con el siguiente formato: KMS_KEY_SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com.

    Guarda el correo de la cuenta de servicio para un paso posterior.

  2. Para conceder el rol Usuario de cuenta de servicio (roles/iam.serviceAccountUser) de Administrador de Cloud Workstations de IAM en la cuenta de servicio de claves de Cloud KMS, ejecuta el siguiente comando:

    gcloud iam service-accounts add-iam-policy-binding \
        KMS_KEY_SERVICE_ACCOUNT_EMAIL \
        --member="user:CLOUD_WORKSTATIONS_ADMIN_EMAIL" \
        --project=WORKSTATIONS_PROJECT_ID \
        --role=roles/iam.serviceAccountUser
    

    Haz los cambios siguientes:

    • KMS_KEY_SERVICE_ACCOUNT_EMAIL: el correo de la cuenta de servicio de claves de Cloud KMS.
    • CLOUD_WORKSTATIONS_ADMIN_EMAIL: el correo del administrador de Cloud Workstations.
    • WORKSTATIONS_PROJECT_ID: el ID de tu proyecto de estación de trabajo.
  3. Para asignar el rol Encargado del encriptado y desencriptado de la clave criptográfica (roles/cloudkms.cryptoKeyEncrypterDecrypter) de Cloud KMS a la cuenta de servicio de la clave de Cloud KMS, ejecuta el siguiente comando:

      gcloud kms keys add-iam-policy-binding \
        KEY_NAME \
        --keyring KEY_RING \
        --location LOCATION \
        --project KMS_PROJECT_ID \
        --role roles/cloudkms.cryptoKeyEncrypterDecrypter \
        --member serviceAccount:KMS_KEY_SERVICE_ACCOUNT_EMAIL\
    

    Haz los cambios siguientes:

    • KEY_NAME: el nombre de tu clave.
    • KEY_RING: el nombre del conjunto de claves.
    • LOCATION: la ubicación que contiene tu conjunto de claves.
    • KMS_PROJECT_ID: el ID del proyecto que contiene tu clave.
    • KMS_KEY_SERVICE_ACCOUNT_EMAIL: el correo de la cuenta de servicio de claves de Cloud KMS.

    Para obtener información sobre todas las marcas y los valores posibles, ejecuta el comando con la marca --help.

Buscar clústeres de estaciones de trabajo

Si no tienes clústeres de estaciones de trabajo disponibles en la consola, pide a tu administrador de Cloud Workstations que cree un clúster de estaciones de trabajo para ti en la misma región que el conjunto de claves de Cloud KMS o asegúrate de tener el rol de administrador de Cloud Workstations en el proyecto para poder crear estos recursos tú mismo.Google Cloud

Usar claves de encriptado gestionadas por el cliente

  1. Si aún no has creado un clúster de estaciones de trabajo, crea uno con el comando de la CLI clusters create gcloud.

    gcloud workstations clusters create \
        WORKSTATIONS_CLUSTER_NAME --region=LOCATION \
        --project=WORKSTATIONS_PROJECT_ID
    

    Haz los cambios siguientes:

    • WORKSTATIONS_CLUSTER_NAME: el nombre del clúster de estaciones de trabajo.
    • LOCATION: el nombre de la región de tu clúster de estaciones de trabajo.
    • WORKSTATIONS_PROJECT_ID: el ID de tu proyecto de estación de trabajo.
  2. Crea una configuración de estación de trabajo con los ajustes de encryption_key.

    Para crear una configuración de estación de trabajo con el tipo de máquina e2-standard-2, un tiempo de espera inactivo de 3600s y recursos de estación de trabajo cifrados con CMEK, ejecuta el siguiente comando de la CLI de gcloud:

    gcloud workstations configs create WORKSTATIONS_CONFIG_NAME \
      --cluster=WORKSTATIONS_CLUSTER_NAME \
      --region=LOCATION \
      --machine-type="e2-standard-2" \
      --idle-timeout=3600 \
      --kms-key="projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME" \
      --kms-key-service-account="KMS_KEY_SERVICE_ACCOUNT_EMAIL" \
      --project=WORKSTATIONS_PROJECT_ID
    

    Haz los cambios siguientes:

    • WORKSTATIONS_CONFIG_NAME: el nombre de la configuración de la estación de trabajo.
    • WORKSTATIONS_CLUSTER_NAME: el nombre de tu clúster de estaciones de trabajo.
    • LOCATION: el nombre de la región de tu clúster.
    • KMS_PROJECT_ID: ID del proyecto, una cadena única que se usa para diferenciar tu proyecto de todos los demás en Google Cloud.
    • KEY_RING: el nombre del conjunto de claves.
    • KEY_NAME: el nombre de tu clave.
    • KMS_KEY_SERVICE_ACCOUNT_EMAIL: el correo de la cuenta de servicio de claves de Cloud KMS.
    • WORKSTATIONS_PROJECT_ID: el ID de tu proyecto de estación de trabajo.

    Después de crear una configuración de estación de trabajo, Cloud KMS encripta los discos persistentes de tu proyecto con la clave de Cloud KMS especificada.

Rotar claves de cifrado gestionadas por el cliente

Cuando asignaste el rol de lector de Cloud KMS al agente de servicio de Cloud Workstations (roles/cloudkms.viewer) a la clave de CMEK, el servicio de la estación de trabajo pudo detectar la rotación de la clave y volver a cifrar tu disco de inicio con la nueva versión de la clave principal.

El recifrado se produce después de detener tu estación de trabajo. Cada vez que detengas una estación de trabajo cifrada, el servicio de la estación de trabajo comprobará si se ha rotado la clave. Si la clave se ha rotado, el servicio de estación de trabajo crea una instantánea del disco de inicio de tu estación de trabajo y elimina el disco. La próxima vez que inicies la estación de trabajo, el servicio de la estación de trabajo creará un nuevo disco a partir de la instantánea con la nueva versión de la clave principal.

Cuotas de Cloud KMS y Cloud Workstations

Cuando usas CMEK en Cloud Workstations, tus proyectos pueden consumir cuotas de solicitudes criptográficas de Cloud KMS. Por ejemplo, los repositorios cifrados con CMEK pueden consumir estas cuotas por cada subida o descarga. Las operaciones de cifrado y descifrado con claves CMEK solo afectan a las cuotas de Cloud KMS si usas claves de hardware (Cloud HSM) o externas (Cloud EKM). Para obtener más información, consulta las cuotas de Cloud KMS.

Claves externas

Puedes usar Cloud External Key Manager (Cloud EKM) para cifrar datos enGoogle Cloud con claves externas que gestionas.

Cuando usas una clave de Cloud EKM, Google no tiene control sobre la disponibilidad de tu clave gestionada externamente. Si la clave deja de estar disponible, no se podrá iniciar tu estación de trabajo.

Para obtener más información sobre lo que debes tener en cuenta al usar claves externas, consulta Cloud External Key Manager.

Siguientes pasos