Cifre datos con claves de cifrado administradas por el cliente

Este documento muestra cómo usar claves de cifrado administradas por el cliente (CMEK) para cifrar y controlar los datos en reposo en un servicio en la nube mediante el Servicio de Gestión de Claves en la Nube . CMEK está integrada con la personalización de código para Gemini Code Assist.

Gemini Code Assist no admite el uso de claves Cloud EKM .

Si no usa una CMEK, Google administra automáticamente las claves que cifran los datos de forma predeterminada. Este comportamiento se conoce como cifrado predeterminado de Google . Con este comportamiento predeterminado, no tiene control sobre las claves de cifrado.

En este documento, harás lo siguiente:

  • Aprenda cómo crear un CMEK.
  • Otorgar permisos a la cuenta de servicio Gemini Code Assist.
  • Cree un índice de repositorio de código con un CMEK.
  • Eliminar el acceso a un repositorio CMEK.

De forma predeterminada, Gemini para Google Cloud Cifra el contenido del cliente en reposo . Gemini gestiona el cifrado automáticamente sin que usted tenga que hacer nada más. Esta opción se denomina cifrado predeterminado de Google .

Si desea controlar sus claves de cifrado, puede usar claves de cifrado administradas por el cliente (CMEK) en Cloud KMS con servicios integrados de CMEK, como Gemini. Usar las claves de Cloud KMS le permite controlar su nivel de protección, ubicación, programación de rotación, permisos de uso y acceso, y límites criptográficos. Cloud KMS también le permite ver registros de auditoría y controlar el ciclo de vida de las claves. En lugar de que Google posea y administre las claves de cifrado de clave simétrica (KEK) que protegen sus datos, usted controla y administra estas claves en Cloud KMS.

Después de configurar sus recursos con claves CMEK, acceder a ellos es similar a usar el cifrado predeterminado de Google. Para obtener más información sobre las opciones de cifrado, consulte Claves de cifrado administradas por el cliente (CMEK) .

Antes de empezar

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

  2. En su entorno de shell, ejecute el comando gcloud components update para asegurarse de haber actualizado todos los componentes instalados de la CLI de gcloud a la última versión. Para este paso, puede instalar e inicializar la CLI de gcloud o usar Cloud Shell .

    gcloud components update
    

Crear una CMEK y otorgar permisos

Para crear una CMEK y otorgarle permisos a la cuenta de servicio Gemini Code Assist en la clave, realice las siguientes tareas:

  1. En el Google Cloud proyecto donde desea administrar sus claves, haga lo siguiente:

    1. Habilitar la API del servicio de administración de claves en la nube .

    2. Crea un llavero y una llave utilizando una de las siguientes opciones:

  2. Otorgue el rol de IAM de cifrador/descifrador de claves criptográficas ( roles/cloudkms.cryptoKeyEncrypterDecrypter ) a la cuenta de servicio de Gemini Code Assist. Otorgue este permiso a la clave que creó.

    Consola

    1. Vaya a Gestión de claves .

      Ir a Gestión de claves

    2. Seleccione la clave que usted creó.

    3. Otorgar acceso a la cuenta de servicio Gemini Code Assist:

      1. Haga clic en Agregar principal .
      2. Agregue la cuenta de servicio de Gemini Code Assist. La cuenta de servicio es service- PROJECT_NUMBER @gcp-sa-cloudaicompanions.iam.gserviceaccount.com , donde PROJECT_NUMBER es el número de proyecto del Google Cloud Proyecto donde está habilitado Gemini Code Assist.
      3. En Seleccionar un rol , seleccione Cloud KMS > Cifrador/descifrador de claves criptográficas de Cloud KMS .
      4. Haga clic en Guardar .
    4. Repita el paso anterior para otorgar acceso a la cuenta que creará el índice del repositorio de código con un CMEK.

    5. Regrese a la página de administración de claves y seleccione la clave nuevamente.

    6. Seleccione "Mostrar panel de información" . Debería ver los roles en la columna Rol/Miembro .

    nube g

    1. Para otorgar acceso a la cuenta de servicio Gemini Code Assist, en un entorno de shell, utilice el comando kms keys add-iam-policy-binding :

      gcloud kms keys add-iam-policy-binding KEY_NAME \
          --project=PROJECT_ID \
          --location=LOCATION \
          --keyring=KEYRING_NAME \
          --member="serviceAccount:service-PROJECT_NUMBER@gcp-sa-cloudaicompanion.iam.gserviceaccount.com" \
          --role="roles/cloudkms.cryptoKeyEncrypterDecrypter"
      

      Reemplace lo siguiente:

      • KEY_NAME : el nombre de la clave.
      • PROJECT_ID : el ID del proyecto que contiene la clave.
      • LOCATION : la ubicación clave.
      • KEYRING_NAME : el nombre del llavero.
      • PROJECT_NUMBER : el número de proyecto del Google Cloud Proyecto con Gemini Code Assist habilitado.
    2. Repita el paso anterior para otorgar acceso a la cuenta que creará el índice del repositorio de código con un CMEK.

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

Ahora puede crear un índice de repositorio de código con un CMEK usando la API y especificar la clave a utilizar para el cifrado.

Crear un índice de repositorio de código con un CMEK

Para crear un nuevo repositorio que tenga protección CMEK, realice una de las siguientes acciones:

nube g

Utilice el comando gemini code-repository-indexes create :

gcloud gemini code-repository-indexes create CODE_REPOSITORY_INDEX_NAME \
    --location=LOCATION \
    --kms-key="projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/KEYRING_NAME/cryptoKeys/KEY_NAME"

Reemplace lo siguiente:

  • CODE_REPOSITORY_INDEX_NAME : el nombre del nuevo índice del repositorio de código que creará.
  • LOCATION : la ubicación clave.
  • KEY_PROJECT_ID : el ID clave del proyecto.
  • KEYRING_NAME : el nombre del llavero.
  • KEY_NAME : el nombre de la clave.

API

  1. Crea un archivo JSON que contenga la siguiente información:

      {
        "kmsKey": "projects/KEY_PROJECT_ID/locations/KEY_LOCATION/keyRings/KEYRING_NAME/cryptoKeys/KEY_NAME"
      }
    

    Reemplace lo siguiente:

    • KEY_PROJECT_ID : el ID clave del proyecto
    • KEY_LOCATION : la ubicación de la clave
    • KEYRING_NAME : el nombre del llavero
    • KEY_NAME : el nombre de la clave
  2. Utilice un comando cURL para llamar al método projects.locations.codeRepositoryIndexes.create :

    curl -X POST --data-binary @JSON_FILE_NAME \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        -H "Content-Type: application/json" \
        "https://cloudaicompanion.googleapis.com/v1/projects/PROJECT_ID/locations/KEY_LOCATION/codeRepositoryIndexes?codeRepositoryIndexId=CODE_REPOSITORY_INDEX_NAME"

    Reemplace lo siguiente:

    • JSON_FILE_NAME : la ruta del archivo JSON que creó en el paso anterior.
    • PROJECT_ID : el ID del proyecto en el que se creará el repositorio.
    • KEY_LOCATION : la ubicación donde crear el repositorio, que debe coincidir con la ubicación donde existe el CMEK.
    • CODE_REPOSITORY_INDEX_NAME : el nombre del nuevo índice del repositorio de código que creará. Por ejemplo, zg-btf-0001 .

La respuesta devuelve un conjunto de entradas de registro.

Eliminar el acceso a un repositorio CMEK

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

Le recomendamos revocar los permisos de la cuenta de servicio de Gemini Code Assist antes de deshabilitar o destruir una clave. Los cambios en los permisos se realizan en segundos, por lo que puede observar el impacto de deshabilitar o destruir una clave.