En este documento, se muestra cómo usar claves de encriptación administradas por el cliente (CMEK) para encriptar y controlar los datos en reposo en un servicio de nube a través de Cloud Key Management Service. CMEK se integra en la personalización de código para Gemini Code Assist. Gemini Code Assist no admite el uso de claves de Cloud EKM.
En este documento, harás lo siguiente:
- Aprende a crear una CMEK.
- Otorga permisos a la cuenta de servicio de Gemini Code Assist.
- Crea un índice de repositorio de código con una CMEK.
- Quita el acceso a un repositorio con CMEK.
De forma predeterminada, Gemini para Google Cloud encripta el contenido del cliente en reposo. Gemini controla la encriptación por ti sin que debas realizar ninguna acción adicional. Esta opción se denomina Encriptación predeterminada de Google.
Después de configurar tus recursos con CMEK, la experiencia de acceso a tus recursos de Gemini 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).
Antes de comenzar
En uno de los siguientes entornos de desarrollo, configura la CLI de gcloud:
Cloud Shell: Para usar una terminal en línea con la CLI de gcloud ya configurada, inicia el editor de Cloud Shell.
Shell local: Para usar un entorno de desarrollo local, instala e inicializa la CLI de gcloud.
Si usas un proveedor de identidad externo (IdP), primero debes acceder a la CLI de gcloud con tu identidad federada.
En el entorno de desarrollo en el que configuraste la CLI de gcloud, ejecuta el comando
gcloud components update
para asegurarte de haber actualizado todos los componentes instalados de gcloud a la versión más reciente.gcloud components update
Crea una CMEK y otorga permisos
Para crear una clave de CMEK y otorgar permisos a la cuenta de servicio de Gemini Code Assist en la clave, realiza las siguientes tareas:
En el proyecto de Google Cloud en el que deseas administrar tus claves, haz lo siguiente:
Crea el llavero de claves y la clave directamente en Cloud KMS.
Otorga la función de IAM de encriptador/desencriptador de CryptoKey (
roles/cloudkms.cryptoKeyEncrypterDecrypter
) a la cuenta de servicio de Gemini Code Assist. Otorga este permiso en la clave que creaste.Console
Ve a Administración de claves.
Selecciona la clave que creaste.
Otorga acceso a la cuenta de servicio de Gemini Code Assist:
- Haz clic en Agregar principal.
- Agrega la cuenta de servicio de Gemini Code Assist. La cuenta de servicio es
service-PROJECT_NUMBER@gcp-sa-cloudaicompanions.
, en la que PROJECT_NUMBER es el número del proyecto del proyecto de Google Cloud en el que está habilitado Gemini Code Assist. - En Selecciona un rol, selecciona Cloud KMS > Encriptador/desencriptador de CryptoKey de Cloud KMS.
- Haz clic en Guardar.
Repite el paso anterior para otorgar acceso a la cuenta que creará el índice del repositorio de código con una CMEK.
Regresa a la página Administración de claves y vuelve a seleccionar la clave.
Selecciona Mostrar panel de información. Deberías ver las funciones en la columna Función/Miembro.
gcloud
Para otorgar acceso a la cuenta de servicio de Gemini Code Assist, en un entorno de shell, usa 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." \ --role="roles/cloudkms.cryptoKeyEncrypterDecrypter"
Reemplaza lo siguiente:
- KEY_NAME: Es el nombre de la clave.
- PROJECT_ID: Es el ID del proyecto que contiene la clave.
- LOCATION: Es la ubicación de la clave.
- KEYRING_NAME: Es el nombre del llavero de claves.
- PROJECT_NUMBER: Es el número de proyecto del proyecto de Google Cloud con Gemini Code Assist habilitado.
Repite el paso anterior para otorgar acceso a la cuenta que creará el índice del repositorio de código con una CMEK.
Para obtener más información sobre este comando, consulta la documentación de
gcloud kms keys add-iam-policy-binding
.
Ahora puedes crear un índice de repositorio de código con una CMEK a través de la API y especificar la clave que se usará para la encriptación.
Crea un índice de repositorio de código con una CMEK
Para crear un repositorio nuevo que tenga protección con CMEK, haz una de las siguientes acciones:
gcloud
Usa 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"
Reemplaza lo siguiente:
- CODE_REPOSITORY_INDEX_NAME: Es el nombre del nuevo índice del repositorio de código que crearás.
- LOCATION: Es la ubicación de la clave.
- KEY_PROJECT_ID: Es el ID del proyecto de claves.
- KEYRING_NAME: Es el nombre del llavero de claves.
- KEY_NAME: Es el nombre de la clave.
API
Crea un archivo JSON que contenga la siguiente información:
{ "kmsKey": "projects/KEY_PROJECT_ID/locations/KEY_LOCATION/keyRings/KEYRING_NAME/cryptoKeys/KEY_NAME" }
Reemplaza lo siguiente:
KEY_PROJECT_ID
: ID del proyecto de clavesKEY_LOCATION
: Es la ubicación de la llave.KEYRING_NAME
: es el nombre del llavero de clavesKEY_NAME
: el nombre de la clave
Usa un comando
cURL
para llamar al métodoprojects.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"
Reemplaza lo siguiente:
JSON_FILE_NAME
: Es la ruta de acceso del archivo JSON que creaste en el paso anterior.PROJECT_ID
: Es el ID del proyecto en el que se creará el repositorio.KEY_LOCATION
: Es la ubicación en la que se creará el repositorio, que debe coincidir con la ubicación en la que existe la CMEK.CODE_REPOSITORY_INDEX_NAME
: Es el nombre del nuevo índice del repositorio de código que crearás. Por ejemplo,zg-btf-0001
La respuesta devuelve un conjunto de entradas de registro.
Quita el acceso a un repositorio con CMEK
Existen varias formas de quitar el acceso a un repositorio encriptado mediante una CMEK:
- Revoca el rol de encriptador/desencriptador de CryptoKey de Cloud KMS de la cuenta de servicio de Gemini Code Assist con la consola de APIs o gcloud.
- Inhabilita temporalmente la CMEK.
- Destruye de forma permanente la CMEK.
Te recomendamos que revoques los permisos de la cuenta de servicio de Gemini Code Assist antes de inhabilitar o destruir una clave. Los cambios en los permisos son coherentes en cuestión de segundos, por lo que puedes observar el impacto de inhabilitar o destruir una clave.