En esta página se describe cómo cifrar los datos almacenados en instancias de AML AI con claves de cifrado gestionadas por el cliente (CMEK).
Información general
Todos los datos de clientes de una instancia de AML AI se cifran en reposo con una clave CMEK. Gestionas la clave en Cloud Key Management Service (Cloud KMS) y controlas el acceso a ella mediante Gestión de Identidades y Accesos. Si inhabilitas temporalmente o destruyes de forma permanente la clave de CMEK, no se podrá acceder a los datos cifrados con esa clave.
AML AI solo admite CMEK mediante Cloud KMS. No es compatible con el cifrado predeterminado de Google.
Las CMEK te permiten controlar más aspectos del ciclo de vida y la gestión de tus claves, pero también conllevan costes adicionales por el servicio Cloud KMS.
Cloud KMS puede ejecutarse en el mismo Google Cloud proyecto que AML AI o en un proyecto independiente en el que gestiones las claves de forma centralizada para varios proyectos.
La configuración del cifrado se define al crear una instancia. Una vez que se ha creado una instancia, no puedes asignarle otra clave de Cloud KMS. Puedes girar la llave.
Para obtener más información sobre CMEK en general, consulta la documentación de Cloud KMS.
Niveles de protección
Cloud KMS te permite elegir entre varios niveles de protección, entre los que se incluyen los siguientes:
- Claves de software
- Módulos de seguridad de hardware (HSMs) con Cloud HSM
Consulta cómo configurar CMEK en AML AI. No todos los niveles de protección están disponibles en todas las regiones. Ten en cuenta que la IA de AML no admite claves de encriptado proporcionadas por el cliente (CSEK) ni Cloud External Key Manager.
Datos de clientes
Todos los Datos de Clientes que gestiona la IA de AML se cifran en reposo con la clave CMEK especificada en el recurso Instance principal correspondiente. Esto incluye todos los Datos de Cliente asociados a los recursos de AML AI, como conjuntos de datos, configuraciones de motor, modelos y más. Todo el almacenamiento temporal y persistente de Datos del Cliente, incluidas las copias de las entradas y salidas, las funciones de aprendizaje automático generadas, los hiperparámetros del modelo, los pesos del modelo y los resultados de las predicciones, se encriptan con la clave CMEK de la instancia correspondiente.
Consulta los términos específicos del servicio para ver la definición de datos del cliente, que puede no incluir identificadores de recursos, atributos u otras etiquetas de datos.
Encriptar datos de entrada y salida
La configuración del cifrado de AML AI en una instancia solo se usa para los recursos de AML AI y sus datos. AML AI no gestiona el cifrado de los datos de entrada ni de salida de tu proyecto de Google Cloud. Si quieres que estos datos se cifren con CMEK, debes configurar una clave de Cloud KMS que coincida con el nivel de protección de claves que hayas configurado en el conjunto de datos de BigQuery. También puedes reutilizar la misma clave que usa la IA de AML.
Más información sobre el cifrado en BigQuery
Rotación de claves
La rotación periódica y automática de claves es una práctica de seguridad recomendada. Con CMEK, tú controlas la rotación de claves. Cuando rotas una clave, los datos encriptados con versiones anteriores de la clave no se vuelven a encriptar automáticamente con la nueva versión.
Un solo recurso de IA de AML se puede almacenar internamente como varias unidades. Si, durante el tiempo de vida de un recurso de IA de AML, se rota la versión de la clave, es posible que no todas las unidades se cifren con la misma versión de la clave.
Si rotas una clave, no hay forma de forzar un recifrado en la IA de AML ni de determinar si las versiones anteriores de la clave se pueden eliminar de forma segura.
Consulta más información sobre la rotación de claves con Cloud KMS.
Crear una clave y conceder permisos
En las siguientes instrucciones se explica cómo crear una clave para una instancia y cómo conceder permisos para cifrar y descifrar datos de la instancia con la clave. Puedes usar una clave creada directamente en Cloud KMS o una clave gestionada de forma externa que pongas a disposición con Cloud External Key Manager.
En el Google Cloud proyecto en el que quieras gestionar tus claves, sigue estos pasos:
Crea un conjunto de claves con el método
projects.locations.keyRings.create
. La ubicación del conjunto de claves de Cloud KMS debe coincidir con la ubicación de la instancia que cifres.REST
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
KMS_PROJECT_ID
: el ID del proyecto que contiene el conjunto de claves. Google CloudLOCATION
: la ubicación del conjunto de claves. Usa una de las regiones admitidasMostrar ubicacionesus-central1
us-east1
asia-south1
europe-west1
europe-west2
europe-west4
northamerica-northeast1
southamerica-east1
australia-southeast1
KEY_RING_ID
: identificador definido por el usuario del conjunto de claves
Para enviar tu solicitud, elige una de estas opciones:
curl
Ejecuta el comando siguiente:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d "" \
"https://cloudkms.googleapis.com/v1/projects/KMS_PROJECT_ID/locations/LOCATION/keyRings?key_ring_id=KEY_RING_ID"PowerShell
Ejecuta el comando siguiente:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-Uri "https://cloudkms.googleapis.com/v1/projects/KMS_PROJECT_ID/locations/LOCATION/keyRings?key_ring_id=KEY_RING_ID" | Select-Object -Expand ContentDeberías recibir una respuesta JSON similar a la siguiente:
{ "name": "projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING_ID", "createTime": "2023-03-14T15:52:55.358979323Z" }
gcloud
Antes de usar los datos de los comandos que se indican a continuación, haz los siguientes cambios:
KMS_PROJECT_ID
: el ID del proyecto que contiene el conjunto de claves. Google CloudLOCATION
: la ubicación del conjunto de claves. Usa una de las regiones admitidasMostrar ubicacionesus-central1
us-east1
asia-south1
europe-west1
europe-west2
europe-west4
northamerica-northeast1
southamerica-east1
australia-southeast1
KEY_RING_ID
: identificador definido por el usuario del conjunto de claves
Ejecuta el siguiente comando:
Linux, macOS o Cloud Shell
gcloud kms keyrings create KEY_RING_ID \ --project KMS_PROJECT_ID --location LOCATION
Windows (PowerShell)
gcloud kms keyrings create KEY_RING_ID ` --project KMS_PROJECT_ID --location LOCATION
Windows (cmd.exe)
gcloud kms keyrings create KEY_RING_ID ^ --project KMS_PROJECT_ID --location LOCATION
$
Crea una clave con el método
projects.locations.keyRings.cryptoKeys
.REST
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
KMS_PROJECT_ID
: el ID del proyecto que contiene el conjunto de claves. Google CloudLOCATION
: la ubicación del conjunto de claves. Usa una de las regiones admitidas.Mostrar ubicacionesus-central1
us-east1
asia-south1
europe-west1
europe-west2
europe-west4
northamerica-northeast1
southamerica-east1
australia-southeast1
KEY_RING_ID
: identificador definido por el usuario del conjunto de clavesKEY_ID
: identificador definido por el usuario de la clave
Cuerpo JSON de la solicitud:
{ "purpose": "ENCRYPT_DECRYPT" }
Para enviar tu solicitud, elige una de estas opciones:
curl
Guarda el cuerpo de la solicitud en un archivo llamado
request.json
. Ejecuta el siguiente comando en el terminal para crear o sobrescribir este archivo en el directorio actual:cat > request.json << 'EOF' { "purpose": "ENCRYPT_DECRYPT" } EOF
A continuación, ejecuta el siguiente comando para enviar tu solicitud REST:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://cloudkms.googleapis.com/v1/projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING_ID/cryptoKeys?crypto_key_id=KEY_ID"PowerShell
Guarda el cuerpo de la solicitud en un archivo llamado
request.json
. Ejecuta el siguiente comando en el terminal para crear o sobrescribir este archivo en el directorio actual:@' { "purpose": "ENCRYPT_DECRYPT" } '@ | Out-File -FilePath request.json -Encoding utf8
A continuación, ejecuta el siguiente comando para enviar tu solicitud REST:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://cloudkms.googleapis.com/v1/projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING_ID/cryptoKeys?crypto_key_id=KEY_ID" | Select-Object -Expand ContentDeberías recibir una respuesta JSON similar a la siguiente:
{ "name": "projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING_ID/cryptoKeys/KEY_ID", "primary": { "name": "projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING_ID/cryptoKeys/KEY_ID/cryptoKeyVersions/1", "state": "ENABLED", "createTime": "2023-03-14T15:52:55.358979323Z", "protectionLevel": "SOFTWARE", "algorithm": "GOOGLE_SYMMETRIC_ENCRYPTION", "generateTime": "2023-03-14T15:52:55.358979323Z" }, "purpose": "ENCRYPT_DECRYPT", "createTime": "2023-03-14T15:52:55.358979323Z", "versionTemplate": { "protectionLevel": "SOFTWARE", "algorithm": "GOOGLE_SYMMETRIC_ENCRYPTION" }, "destroyScheduledDuration": "86400s" }
gcloud
Antes de usar los datos de los comandos que se indican a continuación, haz los siguientes cambios:
KMS_PROJECT_ID
: el ID del proyecto que contiene el conjunto de claves. Google CloudLOCATION
: la ubicación del conjunto de claves. Usa una de las regiones admitidas.Mostrar ubicacionesus-central1
us-east1
asia-south1
europe-west1
europe-west2
europe-west4
northamerica-northeast1
southamerica-east1
australia-southeast1
KEY_RING_ID
: identificador definido por el usuario del conjunto de clavesKEY_ID
: identificador definido por el usuario de la clave
Ejecuta el siguiente comando:
Linux, macOS o Cloud Shell
gcloud kms keys create KEY_ID \ --keyring KEY_RING_ID \ --project KMS_PROJECT_ID \ --location LOCATION \ --purpose "encryption"
Windows (PowerShell)
gcloud kms keys create KEY_ID ` --keyring KEY_RING_ID ` --project KMS_PROJECT_ID ` --location LOCATION ` --purpose "encryption"
Windows (cmd.exe)
gcloud kms keys create KEY_ID ^ --keyring KEY_RING_ID ^ --project KMS_PROJECT_ID ^ --location LOCATION ^ --purpose "encryption"
$
Si no has creado una instancia de AML AI en el proyecto de AML AI, la cuenta de servicio de AML AI aún no existe. Crea la cuenta de servicio.
Antes de usar los datos de los comandos que se indican a continuación, haz los siguientes cambios:
PROJECT_ID
: el ID del proyecto Google Cloud en el que se ejecuta AML AI
Ejecuta el siguiente comando:
Linux, macOS o Cloud Shell
gcloud beta services identity create --service=financialservices.googleapis.com --project=PROJECT_ID
Windows (PowerShell)
gcloud beta services identity create --service=financialservices.googleapis.com --project=PROJECT_ID
Windows (cmd.exe)
gcloud beta services identity create --service=financialservices.googleapis.com --project=PROJECT_ID
Deberías recibir una respuesta similar a la siguiente:
Service identity created: service-PROJECT_NUMBER@gcp-sa-financialservices.iam.gserviceaccount.com
Asigna el rol de gestión de identidades y accesos Encargado del encriptado y desencriptado de la clave criptográfica (
roles/cloudkms.cryptoKeyEncrypterDecrypter
) a la cuenta de servicio de la IA de AML. Concede este permiso en la clave que has creado.Antes de usar los datos de los comandos que se indican a continuación, haz los siguientes cambios:
PROJECT_ID
: el ID del proyecto Google Cloud en el que se ejecuta AML AIKEY_ID
: identificador definido por el usuario de la claveLOCATION
: la ubicación del conjunto de claves. Usa una de las regiones admitidasMostrar ubicacionesus-central1
us-east1
asia-south1
europe-west1
europe-west2
europe-west4
northamerica-northeast1
southamerica-east1
australia-southeast1
KEY_RING_ID
: identificador definido por el usuario del conjunto de clavesPROJECT_NUMBER
: el Google Cloud número de proyecto del proyecto en el que se ejecuta AML AI
Ejecuta el siguiente comando:
Linux, macOS o Cloud Shell
gcloud kms keys add-iam-policy-binding KEY_ID --project=PROJECT_ID \ --location LOCATION --keyring=KEY_RING_ID \ --member serviceAccount:service-PROJECT_NUMBER@gcp-sa-financialservices.iam.gserviceaccount.com \ --role roles/cloudkms.cryptoKeyEncrypterDecrypter
Windows (PowerShell)
gcloud kms keys add-iam-policy-binding KEY_ID --project=PROJECT_ID ` --location LOCATION --keyring=KEY_RING_ID ` --member serviceAccount:service-PROJECT_NUMBER@gcp-sa-financialservices.iam.gserviceaccount.com ` --role roles/cloudkms.cryptoKeyEncrypterDecrypter
Windows (cmd.exe)
gcloud kms keys add-iam-policy-binding KEY_ID --project=PROJECT_ID ^ --location LOCATION --keyring=KEY_RING_ID ^ --member serviceAccount:service-PROJECT_NUMBER@gcp-sa-financialservices.iam.gserviceaccount.com ^ --role roles/cloudkms.cryptoKeyEncrypterDecrypter
Deberías recibir una respuesta similar a la siguiente:
Updated IAM policy for key KEY_ID. bindings: - members: - serviceAccount:service-PROJECT_NUMBER@gcp-sa-financialservices.iam.gserviceaccount.com role: roles/cloudkms.cryptoKeyEncrypterDecrypter etag: BwYCq0Sq4Ho= version: 1
Para obtener más información sobre este comando, consulta la documentación de gcloud kms keys add-iam-policy-binding.
Ahora puedes crear una instancia y especificar la clave que se usará para el cifrado.
Quitar el acceso
Hay varias formas de quitar el acceso a la clave de la instancia cifrada con CMEK:
- Revoca el rol Encargado del encriptado y desencriptado de la clave criptográfica Cloud KMS de la cuenta de servicio de AML AI mediante la Google Cloud consola o la CLI de gcloud.
- Inhabilitar temporalmente la clave CMEK
- Destruir permanentemente la clave CMEK
Te recomendamos que revoques los permisos de la cuenta de servicio de la IA de AML antes de inhabilitar o eliminar una clave. Los cambios en los permisos se propagan 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 usar ni recuperar los datos de clientes asociados a ella. No se podrá acceder a todos los datos de clientes almacenados en la instancia, incluidos los modelos, las configuraciones de los motores, los resultados de las pruebas retrospectivas y los resultados de las predicciones. Los usuarios con cualquier rol de lector de IA de AML pueden seguir viendo campos como el nombre de la instancia u otros campos de recursos devueltos al recuperar recursos de IA de AML.
Las operaciones que usen o exporten datos de clientes (por ejemplo, la exportación de metadatos) fallarán.backtestResults
Los usuarios con el rol de administrador de IA de lucha contra el blanqueo de capitales o de propietario pueden eliminar la instancia.
Políticas de organización de CMEK
La IA de AML no admite políticas de organización de CMEK. Sin embargo, la IA de AML siempre requiere el uso de CMEK, independientemente de la política de la organización.constraints/gcp.restrictNonCmekServices
Interacción con VPC-SC
Si has configurado la IA de AML dentro de un perímetro de controles de servicio de VPC, la clave de CMEK debe seguir siendo accesible para la cuenta de servicio. Si la clave no está dentro del mismo perímetro de VPC-SC, hay varias formas de conseguirlo, entre las que se incluyen las siguientes:
- Usar una regla de salida para incluir el recurso en la lista de permitidos
- Usar el emparejamiento de perímetros de VPC