Vuelve a encriptar los objetos que incumplen las políticas de CMEK predeterminadas del bucket

En esta página, se describe cómo usar el asesor de Storage Intelligence para identificar y volver a encriptar objetos que incumplen la política de claves de encriptación administradas por el cliente (CMEK) predeterminada de un bucket.

Cuando configuras una clave de Cloud KMS predeterminada en un bucket, Cloud Storage encripta los objetos nuevos con esa clave, a menos que tu solicitud de carga especifique una clave diferente. Sin embargo, Cloud Storage no vuelve a encriptar de forma automática los objetos existentes que subiste antes de configurar la clave predeterminada. Esos objetos permanecen encriptados con su método de encriptación original. Para obtener más información sobre los métodos de encriptación disponibles, consulta Opciones de encriptación de datos.

El asesor de Storage Intelligence muestra el hallazgo Los objetos incumplen las políticas de CMEK predeterminadas del bucket cuando un bucket con una clave predeterminada de Cloud Key Management Service (Cloud KMS) contiene objetos que no están encriptados con CMEK. Un hallazgo es una anomalía o una brecha en la configuración de seguridad que se detecta a partir de tus métricas y metadatos de objetos que requieren tu atención. Para obtener una descripción general del asesor de Storage Intelligence, consulta Acerca del asesor de Storage Intelligence. Para obtener una lista completa de los hallazgos, consulta el catálogo de referencia de hallazgos.

Umbrales que activan un hallazgo

Cuando habilitas Storage Intelligence, Cloud Storage evalúa automáticamente los metadatos de encriptación a nivel de bucket y de objeto en tu proyecto, carpeta u organización. El asesor de Storage Intelligence genera un hallazgo cuando un bucket cumple con los siguientes dos criterios:

Los hallazgos de referencia iniciales aparecen en un plazo de 48 horas después de habilitar Storage Intelligence y se actualizan cada 24 horas. Para reducir el volumen de alertas, el asesor de Storage Intelligence agrega los incumplimientos a nivel de objeto por bucket en tu panel. Puedes consultar los metadatos de encriptación a nivel de objeto en los conjuntos de datos de Storage Insights.

Responde a un hallazgo

Para responder al hallazgo, identifica los objetos afectados en cada bucket y vuelve a encriptarlos con la clave de Cloud KMS predeterminada del bucket:

  1. Consulta los detalles del hallazgo para identificar los buckets afectados y copia el nombre del recurso de la clave de KMS predeterminada de cada bucket.

  2. Opcional: Para ver la lista de objetos del bucket que no están encriptados con CMEK, consulta tu conjunto de datos de Storage Insights en BigQuery. Si no configuraste un conjunto de datos vinculado, consulta Configura conjuntos de datos de Storage Insights.

    SELECT
      bucket,
      name,
      encryptionType
    FROM
      `DATASET_NAME.object_attributes_latest_snapshot_view`
    WHERE
      bucket = 'BUCKET_NAME'
      AND encryptionType != 'CMEK'
      AND timeDeleted IS NULL
      AND softDeleteTime IS NULL;

    Reemplaza lo siguiente:

    • DATASET_NAME: Es el nombre de tu conjunto de datos vinculado de Storage Insights en BigQuery.
    • BUCKET_NAME: Es el nombre del bucket afectado.
  3. Usa la siguiente tabla para seleccionar el método de reencriptación de tus objetos activos:

    Situación Acción recomendada Detalles
    Los objetos publicados afectados usan la encriptación estándar (GMEK) Vuelve a encriptar objetos encriptados con GMEK a gran escala con las operaciones por lotes de Storage Exporta archivos de manifiesto CSV de los objetos GMEK activos afectados desde BigQuery y ejecuta un trabajo de operaciones por lotes de Storage para volver a escribir los objetos con la clave de Cloud KMS predeterminada del bucket.
    Los objetos activos afectados usan claves de encriptación proporcionadas por el cliente (CSEK) Vuelve a encriptar objetos encriptados con CSEK con Google Cloud CLI Debido a que Google Cloud no almacena claves de encriptación proporcionadas por el cliente (CSEK), las operaciones por lotes de Storage no pueden desencriptar objetos encriptados con CSEK. Usa el comando gcloud storage objects update para volver a escribir objetos encriptados con CSEK con la clave de Cloud KMS predeterminada del bucket.

    Después de volver a encriptar todos los objetos que no cumplen con los requisitos en un bucket, el hallazgo se borra para ese bucket durante el siguiente ciclo de actualización de 24 horas. Sin embargo, el hallazgo permanece activo en los siguientes casos hasta que tú o Cloud Storage borren de forma permanente las versiones de los objetos retenidos:

Vuelve a encriptar los objetos encriptados con GMEK a gran escala con las operaciones por lotes de Storage

Para volver a encriptar objetos de GMEK activos a gran escala, exporta archivos de manifiesto CSV desde BigQuery y ejecuta un trabajo de operaciones por lotes de Storage:

  1. Ejecuta la siguiente consulta de EXPORT DATA en BigQuery para crear un manifiesto CSV con conjuntos de datos de Storage Insights:

    EXPORT DATA OPTIONS(
      uri='gs://DESTINATION_BUCKET/manifests/objects_violating_default_policies_*.csv',
      format='CSV',
      overwrite=true,
      header=true
    ) AS
    SELECT
      bucket,
      name
    FROM
      `DATASET_NAME.object_attributes_latest_snapshot_view`
    WHERE
      bucket = 'BUCKET_NAME'
      AND encryptionType = 'GMEK'
      AND timeDeleted IS NULL
      AND softDeleteTime IS NULL;

    Reemplaza lo siguiente:

    • DESTINATION_BUCKET: Es el nombre del bucket de Cloud Storage en el que quieres almacenar los archivos de manifiesto CSV exportados.
    • DATASET_NAME: Es el nombre de tu conjunto de datos vinculado de Storage Insights en BigQuery.
    • BUCKET_NAME: Es el nombre del bucket afectado.
  2. Completa los requisitos previos de las operaciones por lotes de Storage y pídele a tu administrador que otorgue el rol de encriptador/desencriptador de CryptoKey de Cloud KMS (roles/cloudkms.cryptoKeyEncrypterDecrypter) en la clave de Cloud KMS predeterminada del bucket a los siguientes agentes de servicio:

    • El agente de servicio de operaciones por lotes de Storage (service-PROJECT_NUMBER@gcp-sa-storagebatchoperations.iam.gserviceaccount.com)
    • El agente de servicio de Cloud Storage (service-PROJECT_NUMBER@gs-project-accounts.iam.gserviceaccount.com)

    Reemplaza PROJECT_NUMBER por el número del proyecto que contiene el bucket.

  3. Ejecuta el comando gcloud storage batch-operations jobs create para crear un trabajo de operaciones por lotes de Storage con el archivo de manifiesto y volver a encriptar los objetos con la clave de Cloud KMS predeterminada del bucket. Para verificar la configuración del trabajo antes de modificar los objetos, incluye la marca --dry-run:

    gcloud storage batch-operations jobs create JOB_NAME \
      --bucket="BUCKET_NAME" \
      --manifest-location="gs://DESTINATION_BUCKET/manifests/objects_violating_default_policies_*.csv" \
      --rewrite-object="kms-key=DEFAULT_KMS_KEY"

    Reemplaza lo siguiente:

    • JOB_NAME: Es un ID único para el trabajo por lotes, como update-encryption-to-cmek-job.
    • BUCKET_NAME: Es el nombre del bucket afectado.
    • DESTINATION_BUCKET: Es el nombre del bucket que contiene tus archivos de manifiesto exportados.
    • DEFAULT_KMS_KEY: Es el nombre del recurso de la clave de Cloud KMS predeterminada del bucket, con el formato projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/CRYPTO_KEY.

Vuelve a encriptar los objetos encriptados con CSEK con Google Cloud CLI

Debido a que Google Cloud no almacena claves de encriptación proporcionadas por el cliente (CSEK), las operaciones por lotes de Storage no pueden desencriptar objetos encriptados con CSEK. Para volver a encriptar objetos encriptados con CSEK con la clave de Cloud KMS predeterminada del bucket, ejecuta el comando gcloud storage objects update con las marcas --decryption-keys y --encryption-key:

gcloud storage objects update gs://BUCKET_NAME/OBJECT_NAME \
  --decryption-keys=DECRYPTION_KEY \
  --encryption-key=DEFAULT_KMS_KEY

Reemplaza lo siguiente:

  • BUCKET_NAME: Es el nombre del bucket afectado.
  • OBJECT_NAME: Es el nombre del objeto encriptado con CSEK que deseas volver a encriptar. Para actualizar varios objetos en un solo comando, usa comodines de URI o la marca --read-paths-from-stdin (-I).
  • DECRYPTION_KEY: Es la clave AES-256 codificada en Base64 RFC 4648 que encripta el objeto.
  • DEFAULT_KMS_KEY: Es el nombre del recurso de la clave de Cloud KMS predeterminada del bucket, con el formato projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/CRYPTO_KEY.

¿Qué sigue?