Encriptar datos con claves de encriptado gestionadas por el cliente

De forma predeterminada, Secure Source Manager cifra el contenido del cliente en reposo. Gestor de fuentes seguras 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 Secure Source Manager. 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. Cloud KMS también te permite 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 acceso a tus recursos de Secure Source Manager será similar a la de usar el cifrado predeterminado de Google. Para obtener más información sobre las opciones de encriptado, consulta el artículo Claves de encriptado gestionadas por el cliente (CMEK).

Cloud KMS puede ejecutarse en un proyecto independiente en el que gestiones de forma centralizada las claves de varios proyectos o en el mismoGoogle Cloud proyecto que Secure Source Manager. Para admitir la separación de tareas y tener un mayor control sobre el acceso a las claves, te recomendamos que crees y gestiones las claves en un proyecto independiente que no incluya otros recursos de Google Cloud.

Cuando creas una instancia, le asignas una clave de Cloud KMS. No puedes cambiar el mecanismo de cifrado de una instancia que ya tengas. Si tienes una instancia cifrada con CMEK, no puedes cambiar el mecanismo de cifrado al cifrado predeterminado de Google ni asignar otra clave de Cloud Key Management Service para el cifrado.

La instancia debe crearse en la misma ubicación que la clave de Cloud KMS.

CMEK con Autokey de Cloud KMS

Puedes crear CMEKs manualmente para proteger tus recursos de Secure Source Manager o usar Autokey de Cloud KMS. Con Autokey, los conjuntos de claves y las claves se generan a petición como parte de la creación de recursos en Secure Source Manager. Los agentes de servicio que usan las claves para las operaciones de cifrado y descifrado se crean si aún no existen y se les asignan los roles de gestión de identidades y accesos (IAM) necesarios. Para obtener más información, consulta la descripción general de Autokey.

Cuotas de Cloud KMS y Secure Source Manager

Cuando usas CMEK en Secure Source Manager, tus proyectos pueden consumir cuotas de solicitudes criptográficas de Cloud KMS. Las instancias cifradas con CMEK consumen estas cuotas en el momento de la creación. 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.

Crear una clave CMEK y conceder permisos

En las siguientes instrucciones se explica cómo crear una clave y conceder permisos a la cuenta de servicio de Gestor de fuentes seguras en la clave.

  1. Crea una clave de Cloud KMS:

    Manualmente

    1. En el Google Cloud proyecto en el que quieras gestionar tus claves, haz lo siguiente:

      1. Habilita la API Cloud KMS.

      2. Crea un conjunto de claves y una clave con una de las siguientes opciones:

      La ubicación de la clave de Cloud KMS debe coincidir con la ubicación del proyecto en el que quieras crear la instancia de Secure Source Manager.

    Usar Autokey

    1. Si aún no lo has hecho, habilita Autokey de Cloud KMS.

    2. Crea una Autokey de Cloud KMS KeyHandle:

      curl -H "Content-Type: application/json" \
          -H "X-Goog-User-Project: PROJECT" \
          -H "Authorization: Bearer $(gcloud auth print-access-token)" \
          -X POST https://cloudkms.googleapis.com/v1/projects/PROJECT/locations/LOCATION/keyHandles \
          -d '{"resource_type_selector": "securesourcemanager.googleapis.com/Instance"}'
      

      Haz los cambios siguientes:

      • PROJECT: el ID del proyecto en el que está habilitada la función Autokey de Cloud KMS y en el que quieres implementar una instancia de Secure Source Manager.
      • LOCATION: la ubicación KeyHandle. Debe coincidir con la ubicación en la que quieras implementar una instancia de Secure Source Manager.

      El resultado debería ser similar al siguiente:

      {
        "name": "projects/PROJECT/locations/LOCATION/operations/OPERATION",
        "metadata": {
          "@type": "type.googleapis.com/google.cloud.kms.v1.CreateKeyHandleMetadata"
        }
      }
      

      Anota el OPERATION de la salida. Necesitará este valor para obtener el ID de recurso de la clave creada.

    3. Busca la clave de Cloud KMS asociada al identificador de clave:

      curl -H "X-Goog-User-Project: PROJECT" \
          -H "Authorization: Bearer $(gcloud auth print-access-token)" \
          -X GET https://cloudkms.googleapis.com/v1/projects/PROJECT/locations/LOCATION/operations/OPERATION
      

      Haz los cambios siguientes:

      • PROJECT: el ID del proyecto en el que está habilitada la función Autokey de Cloud KMS y en el que quieres implementar una instancia de Secure Source Manager.
      • LOCATION: la ubicación KeyHandle. Debe coincidir con la ubicación en la que quieras implementar una instancia de Secure Source Manager.
      • OPERATION: identificador de la operación de solicitud de controlador de clave de la salida del paso anterior

      El resultado debería ser similar al siguiente:

      {
        "name": "projects/PROJECT/locations/LOCATION/operations/OPERATION",
        "done": true,
        "response": {
          "@type": "type.googleapis.com/google.cloud.kms.v1.KeyHandle",
          "name": "projects/PROJECT/locations/LOCATION/keyHandles/KEY_HANDLE",
          "kmsKey": "projects/PROJECT/locations/LOCATION/keyRings/autokey/cryptoKeys/KEY_NAME",
          "resourceTypeSelector": "securesourcemanager.googleapis.com/Instance"
        }
      }
      

      El valor del elemento kmsKey de la salida es el ID de recurso completo de la clave creada por la función Autokey de Cloud KMS para este recurso. Puedes usar este ID de recurso de la misma forma que usarías el ID de recurso de cualquier otro recurso de Cloud KMS.

  2. Si vas a crear tu primera instancia de Secure Source Manager en tu proyecto, tendrás que crear manualmente el agente de servicio de Secure Source Manager ejecutando el siguiente comando:

    gcloud beta services identity create \
    --service=securesourcemanager.googleapis.com \
    --project=PROJECT
    

    Donde PROJECT es el ID del proyecto en el que crearás tu instancia de Secure Source Manager.

    Una vez que hayas creado la cuenta de servicio por producto y por proyecto (P4SA), debes asignar el rol Agente de servicio de Secure Source Manager (roles/securesourcemanager.serviceAgent) al principal service-PROJECT-NUMBER@gcp-sa-sourcemanager.iam.gserviceaccount.com, ya que, de lo contrario, no se podrá crear la instancia.

  3. Asigna el rol de gestión de identidades y accesos Encargado del encriptado y desencriptado de claves de CryptoKey (roles/cloudkms.cryptoKeyEncrypterDecrypter) a la cuenta de servicio de Secure Source Manager. Concede este permiso en la clave que has creado.

    Consola

    1. Ve a la página Gestión de claves.

      Ir a Administración de claves

    2. Selecciona el conjunto de claves que quieras usar, abre la página Detalles del conjunto de claves y, a continuación, selecciona la clave que has creado.

    3. Concede acceso a la cuenta de servicio de Secure Source Manager:

      1. Haz clic en AÑADIR PRINCIPIO.
      2. Añade la cuenta de servicio de Gestor de fuentes seguras. La cuenta de servicio es service-PROJECT-NUMBER@gcp-sa-sourcemanager.iam.gserviceaccount.com, donde PROJECT-NUMBER es el número de proyecto del proyecto Google Cloud en el que está habilitado Secure Source Manager.
      3. En Selecciona un rol, elige Cloud KMS > Encargado del encriptado y desencriptado de claves de CryptoKey de Cloud KMS.
      4. Haz clic en GUARDAR.
    4. Repite el paso anterior para conceder acceso a la cuenta que creará la instancia de Gestor de fuentes seguras.

    5. Vuelve a la página Gestión de claves, selecciona tu conjunto de claves y abre la página Detalles del conjunto de claves. A continuación, vuelve a seleccionar la clave.

    6. Selecciona MOSTRAR PANEL DE INFORMACIÓN. Deberías ver los roles en la columna Rol o miembro.

    gcloud

    1. Ejecuta el siguiente comando para conceder acceso a la cuenta de servicio de Secure Source Manager:

      gcloud kms keys add-iam-policy-binding [--project=PROJECT] \
             KEY_NAME --location LOCATION --keyring=KEY_RING \
             --member serviceAccount:service-PROJECT_NUMBER@gcp-sa-sourcemanager.iam.gserviceaccount.com \
             --role roles/cloudkms.cryptoKeyEncrypterDecrypter
      

      Haz los cambios siguientes:

      • PROJECT: el ID del proyecto que contiene la clave
      • KEY_NAME: el nombre de la clave
      • LOCATION: la ubicación de la clave. La ubicación de la clave debe coincidir con la ubicación del proyecto en el que quieras implementar una instancia de Secure Source Manager.
      • KEY_RING: el nombre del conjunto de claves
      • PROJECT_NUMBER: el número de proyecto del proyectoGoogle Cloud con Secure Source Manager habilitado.
    2. Repite el paso anterior para conceder acceso a la cuenta que creará la instancia de Gestor de fuentes seguras.

    Para obtener más información sobre este comando, consulta la documentación de gcloud kms keys add-iam-policy-binding.

Quitar acceso

Hay varias formas de quitar el acceso a un repositorio cifrado con CMEK:

Te recomendamos que revoques los permisos de la cuenta de servicio de Secure Source Manager antes de inhabilitar o destruir una clave. Los cambios en los permisos se aplican en cuestión de segundos, por lo que puedes observar los efectos de inhabilitar o destruir una clave.

Si inhabilitas o destruyes la clave de cifrado de una instancia, no podrás ver ni recuperar los datos de la instancia. No se podrá acceder a todos los datos almacenados en la instancia, incluido el historial de código, las solicitudes de extracción y los problemas.

Los usuarios con el rol de gestor de instancias de Secure Source Manager o el rol de propietario de la instancia pueden eliminarla.

Políticas de organización de CMEK

Secure Source Manager admite restricciones de políticas de organización que pueden requerir protección con CMEK.

Las políticas pueden limitar las CryptoKeys de Cloud KMS que se pueden usar para la protección con CMEK.

  • Cuando la API Secure Source Manager se encuentra en la lista de servicios de la política Deny de la restricción constraints/gcp.restrictNonCmekServices, Secure Source Manager rechaza la creación de instancias que no estén protegidas con CMEK.

  • Cuando se configura constraints/gcp.restrictCmekCryptoKeyProjects, Secure Source Manager crea instancias protegidas con CMEK que están protegidas por una CryptoKey de un proyecto, una carpeta o una organización permitidos.

Para obtener más información sobre cómo configurar políticas de organización, consulta Políticas de organización de CMEK.

Siguientes pasos