Encripta recursos de estaciones de trabajo con CMEK

De forma predeterminada, Cloud Workstations encripta el contenido del cliente almacenado en reposo. Cloud Workstations controla la encriptación por ti sin que debas realizar ninguna acción adicional. Esta opción se denomina Encriptación predeterminada de Google.

Si deseas controlar tus claves de encriptación, puedes usar las claves de encriptación administradas por el cliente (CMEK) en Cloud KMS con servicios integrados en CMEK, como Cloud Workstations. El uso de claves de Cloud KMS te permite controlar su nivel de protección, ubicación, programa de rotación, permisos de uso y acceso, y límites criptográficos. El uso de Cloud KMS también te permite hacer un seguimiento del uso de las claves, ver los registros de auditoría y controlar los ciclos de vida de las claves. En lugar de que Google posea y administre las claves de encriptación de claves (KEK) simétricas que protegen tus datos, tú las controlas y administras en Cloud KMS.

Después de configurar tus recursos con CMEK, la experiencia de acceso a tus recursos de Cloud Workstations es similar a usar la encriptación predeterminada de Google. Para obtener más información sobre tus opciones de encriptación, consulta Claves de encriptación administradas por el cliente (CMEK).

De forma predeterminada, las estaciones de trabajo de Cloud usan un Google-owned and Google-managed encryption key para encriptar recursos de estaciones de trabajo, como VMs y discos persistentes, cuando los datos están en reposo. 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) con Cloud Key Management Service (Cloud KMS).

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

Antes de comenzar

Crea tus proyectos

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

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

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

    Puedes usar el mismo proyecto para tu proyecto de clave y de estaciones de trabajo, pero, como práctica recomendada, te sugerimos que uses dos proyectos para la separación de obligaciones.

  2. Asegúrate de que la facturación esté habilitada para tu proyecto de Cloud. Para obtener más información, consulta Verifica el estado de la 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 Instala la CLI de gcloud y sigue las instrucciones para tu sistema operativo.

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

      gcloud init
      

Roles obligatorios

Si bien puedes otorgar los roles de administrador de Cloud KMS y de administrador de estaciones de trabajo de Cloud a la misma persona, te recomendamos que sigas el principio de privilegio mínimo cuando asignes roles. Como práctica recomendada, otorga estos roles a dos personas diferentes y pídeles que se coordinen, en lugar de pedirle al administrador de Cloud KMS que también sea el administrador de Cloud Workstations. Para obtener más información, consulta las prácticas recomendadas de seguridad y cómo usar IAM de forma segura.

Para obtener los permisos que necesitas para configurar CMEK, pídele a tu administrador que te otorgue los siguientes roles de IAM:

  • Si eres el administrador de Cloud KMS, pídele al administrador que te otorgue el siguiente rol para que puedas crear y administrar recursos de Cloud KMS: Administrador de Cloud KMS (roles/cloudkms.admin) en tu proyecto de claves.
  • Si eres el administrador de Cloud Workstations, pídele a tu administrador que te otorgue 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 otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.

También puedes obtener los permisos necesarios mediante roles personalizados o cualquier otro rol predefinido.

Crea un llavero de claves y una clave de encriptación

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

  1. Crea o selecciona un llavero de claves.

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

    Puedes compartir los anillos de claves entre servicios, pero como práctica recomendada, te recomendamos que uses una clave diferente para cada recurso protegido. Consulta separación de obligaciones.

  2. Crea una clave de encriptación simétrica.

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

Otorga acceso a tu clave de encriptación

Cloud Workstations usa las siguientes cuentas de servicio para administrar la encriptación de tus recursos:

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

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

Otorga el rol de Visualizador 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 de estaciones de trabajo de Cloud en tu proyecto de estaciones de trabajo, este agente de servicio se creó automáticamente. Para que CMEK funcione correctamente, deberás otorgar al agente de servicio de Cloud Workstations de tu proyecto de estaciones de trabajo el rol de visor de Cloud KMS (roles/cloudkms.viewer) en la clave de Cloud KMS, de modo que Cloud Workstations pueda detectar la rotación de claves.

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

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

    Reemplaza 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. Otorga al agente de servicio de Cloud Workstations el rol de visor de Cloud KMS (roles/cloudkms.viewer) en la clave de CMEK. Esto permite que las estaciones de trabajo de Cloud detecten la rotación de claves y vuelvan a encriptar 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
    

    Reemplaza lo siguiente:

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

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

Configura una cuenta de servicio de claves de Cloud KMS

Cloud Workstations usa una cuenta de servicio que elijas para realizar la encriptación y desencriptación con tu clave administrada por el cliente. Nos referimos a esta cuenta como la cuenta de servicio de claves de Cloud KMS. Puedes crear una cuenta de servicio nueva o usar una existente. Los requisitos para esta cuenta son los siguientes:

  • El administrador de estaciones de trabajo de Cloud debe tener el permiso iam.serviceAccounts.actAs en esta cuenta de servicio.
  • La cuenta de servicio que elijas debe tener el rol de encriptador/desencriptador de CryptoKey de Cloud KMS (roles/cloudkms.cryptoKeyEncrypterDecrypter) en tu clave de Cloud KMS.
  1. Si deseas crear una cuenta de servicio nueva, 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
    

    Reemplaza lo siguiente:

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

    La cuenta de servicio que creaste tiene un correo electrónico con el siguiente formato: KMS_KEY_SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com.

    Guarda el correo electrónico de la cuenta de servicio para usarlo más adelante.

  2. Para otorgar el rol de usuario de cuenta de servicio (roles/iam.serviceAccountUser) de IAM de Administrador de estaciones de trabajo de Cloud 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
    

    Reemplaza lo siguiente:

    • KMS_KEY_SERVICE_ACCOUNT_EMAIL: El correo electrónico de la cuenta de servicio de claves de Cloud KMS.
    • CLOUD_WORKSTATIONS_ADMIN_EMAIL: Es el correo electrónico del administrador de Cloud Workstations.
    • WORKSTATIONS_PROJECT_ID: Es el ID de tu proyecto de estación de trabajo.
  3. Para otorgar a la cuenta de servicio de claves de Cloud KMS el rol de encriptador/desencriptador de CryptoKey de Cloud KMS (roles/cloudkms.cryptoKeyEncrypterDecrypter) en tu 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\
    

    Reemplaza lo siguiente:

    • KEY_NAME: Es el nombre de la clave.
    • KEY_RING: Es el nombre del llavero de claves.
    • LOCATION: Es la ubicación que contiene el llavero de claves.
    • KMS_PROJECT_ID: El ID del proyecto que contiene tu clave.
    • KMS_KEY_SERVICE_ACCOUNT_EMAIL: El correo electrónico 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.

Cómo buscar clústeres de estaciones de trabajo

Si no tienes clústeres de estaciones de trabajo disponibles en Google Cloud Console, pídele al administrador de estaciones de trabajo de Cloud que cree uno para ti en la misma región que el llavero de Cloud KMS, o bien asegúrate de tener un rol de IAM de administrador de estaciones de trabajo de Cloud en el proyecto para que puedas crear estos recursos por tu cuenta.

Usar claves de encriptación administradas por el cliente

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

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

    Reemplaza lo siguiente:

    • WORKSTATIONS_CLUSTER_NAME: Es el nombre del clúster de estaciones de trabajo.
    • LOCATION: Es el nombre de la región de tu clúster de estaciones de trabajo.
    • WORKSTATIONS_PROJECT_ID: Es el ID de tu proyecto de estación de trabajo.
  2. Crea una configuración de estación de trabajo con la configuración 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 encriptados 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
    

    Reemplaza lo siguiente:

    • WORKSTATIONS_CONFIG_NAME: Es el nombre de la configuración de la estación de trabajo.
    • WORKSTATIONS_CLUSTER_NAME: Es el nombre del clúster de la estación de trabajo.
    • LOCATION: Es el nombre de la región de tu clúster.
    • KMS_PROJECT_ID: Es el ID del proyecto, una cadena única que se usa para diferenciar tu proyecto de todos los demás en Google Cloud.
    • KEY_RING: Es el nombre del llavero de claves.
    • KEY_NAME: Es el nombre de la clave.
    • KMS_KEY_SERVICE_ACCOUNT_EMAIL: El correo electrónico de la cuenta de servicio de claves de Cloud KMS.
    • WORKSTATIONS_PROJECT_ID: Es 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.

Rota las claves de encriptación administradas por el cliente

Cuando otorgaste el rol de visor de Cloud KMS al agente de servicio de Cloud Workstations (roles/cloudkms.viewer) en la clave de CMEK, el servicio de la estación de trabajo puede detectar la rotación de claves y volver a encriptar tu disco principal con la nueva versión de clave primaria.

La nueva encriptación se produce después de que detengas la estación de trabajo. Cada vez que detienes una estación de trabajo encriptada, el servicio de la estación de trabajo verifica si se rotó la clave. Si se rotó la clave, el servicio de la estación de trabajo crea una instantánea del disco principal de la estación de trabajo y lo borra. La próxima vez que inicies la estación de trabajo, el servicio de la estación de trabajo creará un disco nuevo a partir de la instantánea con la nueva versión de clave primaria.

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 encriptados con CMEK pueden consumir estas cuotas para cada carga o descarga. Las operaciones de encriptación y desencriptación con claves CMEK afectan las cuotas de Cloud KMS solo si usas claves de hardware (Cloud HSM) o externas (Cloud EKM). Para obtener más información, consulta Cuotas de Cloud KMS.

Claves externas

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

Cuando usas una clave de Cloud EKM, Google no tiene control sobre la disponibilidad de tu clave administrada de forma externa. Si la clave no está disponible, no se puede iniciar tu estación de trabajo.

Para obtener más consideraciones sobre el uso de claves externas, consulta Cloud External Key Manager.

¿Qué sigue?