Encripta datos con claves de encriptación administradas por el cliente (CMEK)

En esta página, se describe cómo encriptar datos almacenados en la IA contra lavado de dinero con claves de encriptación administradas por el cliente (CMEK).

Descripción general

Todos los datos del cliente en una instancia de IA de AML se encriptan en reposo con una clave de CMEK. Tú administras la clave en Cloud Key Management Service (Cloud KMS) y controlas el acceso a la clave con Identity and Access Management. Si inhabilitas de forma temporal la clave CMEK o la borras de forma permanente, no se podrá acceder a los datos encriptados con esa clave.

La IA contra el lavado de dinero solo admite CMEK usando Cloud KMS No es compatible con la encriptación predeterminada de Google.

CMEK te permite controlar más aspectos del ciclo de vida y la administración de tus pero también genera costos adicionales por el servicio de Cloud KMS.

Cloud KMS puede ejecutarse en el mismo proyecto de Google Cloud que la IA de AML o en un proyecto distinto en el que administres claves de varios proyectos de forma centralizada.

La configuración de encriptación se establece cuando creas una instancia. Una vez que se crea una instancia, no puedes asignar una clave de Cloud KMS diferente. Aún puedes rotar la clave.

Para obtener más información sobre las CMEK en general, consulta la documentación de Cloud KMS.

Niveles de protección

Cloud KMS te permite elegir entre una variedad de niveles de protección, incluidos los siguientes:

  • Claves de software
  • Módulos de seguridad de hardware (HSM) con Cloud HSM

Lee cómo configurar CMEK en la IA contra lavado de dinero. No todos los niveles de protección están disponibles en todas las regiones. Ten en cuenta que la IA contra lavado de dinero no admite claves de encriptación proporcionadas por el cliente (CSEK) ni Cloud External Key Manager.

Datos de clientes

Todos los datos del cliente que manejan La IA contra el lavado de dinero se encripta en reposo con la clave CMEK especificada en el Instancia superior correspondiente recurso. Esto incluye todos los datos del cliente asociados con los recursos de IA de la AML, como conjuntos de datos, parámetros de configuración del motor, modelos y mucho más. Todo el almacenamiento temporal y persistente de los datos del cliente, incluidas las copias de entradas y salidas, los atributos de AA generados, los hiperparámetros del modelo, los pesos del modelo y los resultados de la predicción, se encripta con la clave de CMEK de la instancia correspondiente.

Consulta las condiciones específicas del servicio para conocer la definición de los datos del cliente, que pueden no incluir identificadores de recursos, atributos ni otras etiquetas de datos.

Encriptación de datos de entrada y salida

La configuración de encriptación de IA de AML en una instancia solo se usa para los recursos de IA de AML y sus datos. IA contra lavado de dinero No administra la encriptación de los datos de entrada o salida en tu cuenta de Google Cloud. en un proyecto final. Si deseas que estos datos se encripten con CMEK, debes configurar una clave de Cloud KMS que coincida con el nivel de protección de claves que elegiste en el conjunto de datos de BigQuery. También puedes volver a usar la misma clave que usa la IA contra lavado de dinero.

Obtén más información sobre la encriptación en BigQuery.

Rotación de claves

Se recomienda rotar las claves de forma periódica y automática. Con CMEK, tú controlas la rotación de claves. Cuando rotas una clave, los datos encriptado con versiones de clave anteriores no se vuelve a encriptar automáticamente con el a la versión nueva de la clave.

Un solo recurso de IA de AML se puede almacenar de forma interna como varias unidades. Si, durante el ciclo de vida de un recurso de IA de AML, se rota la versión de clave, es posible que no todas las unidades se encripten con la misma versión de clave.

Si rotas una clave, no hay forma en la IA contra lavado de dinero para forzar una volver a encriptar o determinar si es seguro borrar las versiones anteriores de la clave.

Obtén más información sobre la rotación de claves con Cloud KMS.

Crea una clave y otorga permisos

En las siguientes instrucciones, se explica cómo crear una clave para una instancia y otorgar permisos para encriptar y desencriptar datos de la instancia con la clave. Puedes usar una llave directamente en Cloud KMS o en una clave administrada de forma externa poner a disposición con Cloud External Key Manager.

  1. En el proyecto de Google Cloud en el que deseas administrar tus claves, haz lo siguiente:

    1. Habilita la API de Cloud KMS.

    2. Crea un llavero de claves con el projects.locations.keyRings.create . La ubicación del llavero de claves de Cloud KMS debe coincidir con el ubicación de la instancia que encriptas.

      REST

      Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

      • KMS_PROJECT_ID: Es el proyecto de Google Cloud. ID del proyecto que contiene el llavero de claves
      • LOCATION: Es la ubicación del llavero de claves. Usa una de las regiones compatibles.
        Cómo mostrar ubicaciones
        • us-central1
        • us-east1
        • asia-south1
        • europe-west1
        • europe-west2
        • europe-west4
        • northamerica-northeast1
        • southamerica-east1
        • australia-southeast1
      • KEY_RING_ID: Es un identificador definido por el usuario para el llavero de claves.

      Para enviar tu solicitud, elige una de estas opciones:

      curl

      Ejecuta el siguiente comando:

      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 siguiente comando:

      $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 Content

      Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

      {
        "name": "projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING_ID",
        "createTime": "2023-03-14T15:52:55.358979323Z"
      }
      

      gcloud

      Antes de usar cualquiera de los datos de comando a continuación, realiza los siguientes reemplazos:

      • KMS_PROJECT_ID: Es el proyecto de Google Cloud. ID del proyecto que contiene el llavero de claves
      • LOCATION: Es la ubicación del llavero de claves. usa uno de los regiones admitidas
        Cómo mostrar ubicaciones
        • us-central1
        • us-east1
        • asia-south1
        • europe-west1
        • europe-west2
        • europe-west4
        • northamerica-northeast1
        • southamerica-east1
        • australia-southeast1
      • KEY_RING_ID: Es un identificador definido por el usuario para la llavero 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
      Deberías recibir una respuesta vacía:
      $

    3. Crea una clave con el método projects.locations.keyRings.cryptoKeys.

      REST

      Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

      • KMS_PROJECT_ID: El ID del proyecto de Google Cloud del proyecto que contiene el llavero
      • LOCATION: Es la ubicación del llavero de claves. usa uno de los regiones admitidas
        Mostrar ubicaciones
        • us-central1
        • us-east1
        • asia-south1
        • europe-west1
        • europe-west2
        • europe-west4
        • northamerica-northeast1
        • southamerica-east1
        • australia-southeast1
      • KEY_RING_ID: Es el identificador definido por el usuario para la llavero de claves
      • KEY_ID: Es un identificador definido por el usuario para 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 comando siguiente en la terminal para crear o reemplazar este archivo en el directorio actual:

      cat > request.json << 'EOF'
      {
        "purpose": "ENCRYPT_DECRYPT"
      }
      EOF

      Luego, ejecuta el siguiente comando para enviar tu solicitud de 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 comando siguiente en la terminal para crear o reemplazar este archivo en el directorio actual:

      @'
      {
        "purpose": "ENCRYPT_DECRYPT"
      }
      '@  | Out-File -FilePath request.json -Encoding utf8

      Luego, ejecuta el siguiente comando para enviar tu solicitud de 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 Content

      Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

      {
        "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 cualquiera de los datos de comando a continuación, realiza los siguientes reemplazos:

      • KMS_PROJECT_ID: El ID del proyecto de Google Cloud del proyecto que contiene el llavero
      • LOCATION: Es la ubicación del llavero de claves. usa uno de los regiones admitidas
        Cómo mostrar ubicaciones
        • us-central1
        • us-east1
        • asia-south1
        • europe-west1
        • europe-west2
        • europe-west4
        • northamerica-northeast1
        • southamerica-east1
        • australia-southeast1
      • KEY_RING_ID: Es el identificador definido por el usuario para la llavero de claves
      • KEY_ID: Es un identificador definido por el usuario para 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"
      Deberías recibir una respuesta vacía:
      $

  2. Si no creaste una instancia de IA contra el lavado de dinero en el proyecto de IA contra el lavado de dinero, la cuenta de servicio de IA contra el lavado de dinero aún no existe. Cree la cuenta de servicio.

    Antes de usar cualquiera de los datos de comando a continuación, realiza los siguientes reemplazos:

    • PROJECT_ID: El ID del proyecto de Google Cloud del proyecto en el que se ejecuta la IA de la AML.

    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 que figura a continuación:

    Service identity created: service-PROJECT_NUMBER@gcp-sa-financialservices.iam.gserviceaccount.com

  3. Otorga el Rol de IAM de Encriptador/Desencriptador de CryptoKey (roles/cloudkms.cryptoKeyEncrypterDecrypter) a la IA contra lavado de dinero cuenta de servicio. Otorga este permiso en la clave que creaste.

    Antes de usar cualquiera de los datos de comando a continuación, realiza los siguientes reemplazos:

    • PROJECT_ID: El ID del proyecto de Google Cloud del proyecto en el que se ejecuta la IA de la AML.
    • KEY_ID: Es el identificador definido por el usuario para la clave.
    • LOCATION: Es la ubicación del llavero de claves. usa uno de los regiones admitidas
      Mostrar ubicaciones
      • us-central1
      • us-east1
      • asia-south1
      • europe-west1
      • europe-west2
      • europe-west4
      • northamerica-northeast1
      • southamerica-east1
      • australia-southeast1
    • KEY_RING_ID: Es un identificador definido por el usuario para la llavero de claves
    • PROJECT_NUMBER: Google Cloud número de proyecto del proyecto en el que se ejecuta la IA contra lavado de dinero

    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 que figura a continuación:

    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 claves add-iam-policy-binding de KMS de gcloud.

Ahora puedes crear una instancia y especifica la clave que se usará para la encriptación.

Quita el acceso

Existen varias formas de quitar el acceso a la clave de la instancia encriptada con CMEK:

Te recomendamos que revoques los permisos de la IA contra el lavado de dinero. la cuenta de servicio antes de inhabilitar o destruir una clave. Los cambios en los permisos se propagan en cuestión de segundos, por lo que puedes observar el impacto de inhabilitar o destruir una clave.

Cuando inhabilitas o borras la clave de encriptación de una instancia, pierdes la posibilidad de usar o recuperar los datos del cliente asociados con la instancia. Todas los datos del cliente almacenados en la instancia se vuelven inaccesibles, incluidos los modelos, como parámetros de configuración del motor de búsqueda, los resultados de pruebas retroactivas y los resultados de predicción. Usuarios con cualquier El rol de visualizador de IA contra el lavado de dinero aún puede ver campos como el nombre de la instancia u otros campos de recursos que muestra recuperar recursos de IA contra lavado de dinero.

Cualquier operación que use o exporte datos de clientes, como la exportación Los metadatos backtestResults fallarán.

Usuarios con el rol de administrador de IA contra lavado de dinero o propietario puede borrar la instancia.

Políticas de la organización de CMEK

La IA contra lavado de dinero no es compatible Políticas de la organización de CMEK Sin embargo, La IA contra el lavado de dinero siempre requiere el uso de CMEK, sin importar la Política de la organización constraints/gcp.restrictNonCmekServices.

Interacción con Controles del servicio de VPC

Si configuraste la IA de AML dentro de un perímetro de VPC-SC, la cuenta de servicio aún debe poder acceder a la clave de CMK. Si la clave no está dentro del mismo perímetro de VPC-SC, hay varias formas de lograrlo, como las siguientes:

  • Usa una regla de salida para incluir el recurso en la lista de entidades permitidas
  • Usa el intercambio de tráfico del perímetro de VPC

Próximos pasos