Criptografar novamente objetos que violam as políticas de CMEK padrão para buckets

Nesta página, descrevemos como usar o consultor do Storage Intelligence para identificar e criptografar novamente objetos que violam a política padrão de chave de criptografia gerenciada pelo cliente (CMEK) de um bucket.

Quando você define uma chave padrão do Cloud KMS em um bucket, o Cloud Storage criptografa novos objetos com essa chave, a menos que sua solicitação de upload especifique uma chave diferente. No entanto, o Cloud Storage não recriptografa automaticamente os objetos que você enviou antes de definir a chave padrão. Esses objetos permanecem criptografados com o método de criptografia original. Para mais informações sobre os métodos de criptografia disponíveis, consulte Opções de criptografia de dados.

O consultor do Storage Intelligence mostra a descoberta Os objetos violam as políticas de bucket de CMEK padrão quando um bucket com uma chave padrão do Cloud Key Management Service (Cloud KMS) contém objetos que não estão criptografados com CMEK. Uma descoberta é uma anomalia ou lacuna de configuração de segurança detectada nas métricas e nos metadados de objetos que precisa da sua atenção. Para uma visão geral do consultor do Storage Intelligence, consulte Sobre o consultor do Storage Intelligence. Para ver uma lista completa de descobertas, consulte o catálogo de referência de descobertas.

Limites que acionam uma descoberta

Quando você ativa o Storage Intelligence, o Cloud Storage avalia automaticamente os metadados de criptografia no nível do bucket e do objeto no projeto, na pasta ou na organização. O consultor do Storage Intelligence gera uma descoberta quando um bucket atende aos dois critérios a seguir:

As descobertas iniciais de referência aparecem em até 48 horas após a ativação do Storage Intelligence e são atualizadas a cada 24 horas. Para reduzir o volume de alertas, o consultor do Storage Intelligence agrega violações no nível do objeto por bucket no painel. É possível consultar metadados de criptografia no nível do objeto em conjuntos de dados do Storage Insights.

Responder a uma descoberta

Para responder à descoberta, identifique os objetos afetados em cada bucket e criptografe-os novamente com a chave padrão do Cloud KMS do bucket:

  1. Veja os detalhes da descoberta para identificar os buckets afetados e copie o nome do recurso da chave padrão do KMS de cada bucket.

  2. Opcional: para ver a lista de objetos no bucket que não estão criptografados com CMEK, consulte o conjunto de dados do Storage Insights no BigQuery. Se você não tiver configurado um conjunto de dados vinculado, consulte Configurar conjuntos de dados do 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;

    Substitua:

    • DATASET_NAME: o nome do conjunto de dados vinculado do Storage Insights no BigQuery.
    • BUCKET_NAME: o nome do bucket afetado.
  3. Use a tabela a seguir para selecionar o método de criptografia para seus objetos ativos:

    Cenário Ação recomendada Detalhes
    Os objetos ativos afetados usam criptografia padrão (GMEK) Criptografar novamente objetos criptografados com GMEK em grande escala usando operações em lote do Storage Exportar arquivos de manifesto CSV de objetos ativos GMEK afetados do BigQuery e executar um job de operações em lote do Storage para reescrever os objetos com a chave padrão do Cloud KMS do bucket.
    Os objetos ativos afetados usam chaves de criptografia fornecidas pelo cliente (CSEK) Criptografar novamente objetos criptografados com CSEK usando a Google Cloud CLI Como o Google Cloud não armazena chaves de criptografia fornecidas pelo cliente (CSEK), as operações em lote do Storage não podem descriptografar objetos criptografados com CSEK. Use o comando gcloud storage objects update para reescrever objetos criptografados com CSEK com a chave padrão do Cloud KMS do bucket.

    Depois de criptografar novamente todos os objetos não compatíveis em um bucket, a descoberta será removida desse bucket durante o próximo ciclo de atualização de 24 horas. No entanto, a descoberta permanece ativa nos seguintes casos até que você ou o Cloud Storage exclua permanentemente as versões de objeto retidas:

Criptografar novamente objetos criptografados com GMEK em grande escala usando operações em lote do Storage

Para criptografar novamente objetos GMEK ativos em grande escala, exporte arquivos de manifesto CSV do BigQuery e execute um job de operações em lote do Storage:

  1. Execute a seguinte consulta EXPORT DATA no BigQuery para criar um manifesto CSV usando conjuntos de dados do 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;

    Substitua:

    • DESTINATION_BUCKET: o nome do bucket do Cloud Storage em que você quer armazenar os arquivos de manifesto CSV exportados.
    • DATASET_NAME: o nome do conjunto de dados vinculado do Storage Insights no BigQuery.
    • BUCKET_NAME: o nome do bucket afetado.
  2. Conclua os pré-requisitos das operações em lote do Storage e peça ao administrador para conceder o papel de criptografador/descriptografador de CryptoKey do Cloud KMS (roles/cloudkms.cryptoKeyEncrypterDecrypter) na chave padrão do Cloud KMS do bucket para os dois agentes de serviço a seguir:

    • O agente de serviço de operações em lote do Storage (service-PROJECT_NUMBER@gcp-sa-storagebatchoperations.iam.gserviceaccount.com)
    • O agente de serviço do Cloud Storage (service-PROJECT_NUMBER@gs-project-accounts.iam.gserviceaccount.com)

    Substitua PROJECT_NUMBER pelo número do projeto que contém o bucket.

  3. Execute o comando gcloud storage batch-operations jobs create para criar um job de operações em lote do Storage usando o arquivo de manifesto e criptografar novamente os objetos com a chave padrão do Cloud KMS do bucket. Para verificar a configuração do job antes de modificar objetos, inclua a flag --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"

    Substitua:

    • JOB_NAME: um ID exclusivo para o job em lote, como update-encryption-to-cmek-job.
    • BUCKET_NAME: o nome do bucket afetado.
    • DESTINATION_BUCKET: o nome do bucket que contém os arquivos de manifesto exportados.
    • DEFAULT_KMS_KEY: o nome do recurso da chave padrão do Cloud KMS do bucket, no formato projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/CRYPTO_KEY.

Criptografar novamente objetos criptografados com CSEK usando a Google Cloud CLI

Como o Google Cloud não armazena chaves de criptografia fornecidas pelo cliente (CSEK), as operações em lote do Storage não podem descriptografar objetos criptografados com CSEK. Para criptografar novamente objetos criptografados com CSEK com a chave padrão do Cloud KMS do bucket, execute o comando gcloud storage objects update com as flags --decryption-keys e --encryption-key:

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

Substitua:

  • BUCKET_NAME: o nome do bucket afetado.
  • OBJECT_NAME: o nome do objeto criptografado por CSEK que você quer criptografar novamente. Para atualizar vários objetos em um único comando, use caracteres curinga de URI ou a flag --read-paths-from-stdin (-I).
  • DECRYPTION_KEY: a chave AES-256 codificada em base64 RFC 4648 que criptografa o objeto.
  • DEFAULT_KMS_KEY: o nome do recurso da chave padrão do Cloud KMS do bucket, no formato projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/CRYPTO_KEY.

A seguir