Usar a CMEK com o Managed Service for Apache Spark

Por padrão, o Serviço Gerenciado para Apache Spark criptografa o conteúdo do cliente em repouso. O Serviço Gerenciado para Apache Spark executa a criptografia, e você não precisa fazer nada. Essa opção é chamada de criptografia padrão do Google.

Se você quiser controlar suas chaves de criptografia, use chaves de criptografia gerenciadas pelo cliente (CMEKs) no Cloud KMS com serviços integrados a CMEKs, incluindo o Serviço Gerenciado para Apache Spark. Ao usar chaves do Cloud KMS, é possível controlar o nível de proteção, o local, a programação de rotação, as permissões de uso e acesso e os limites criptográficos. Ao usar o Cloud KMS, é possível também monitorar o uso de chaves, ver registros de auditoria e controlar ciclos de vida de chaves. Em vez de o Google ser proprietário e responsável pelo gerenciamento das chaves de criptografia de chaves (KEKs) simétricas que protegem seus dados, você controla e gerencia essas chaves no Cloud KMS.

Depois de configurar seus recursos com CMEKs, a experiência de acesso aos recursos do Serviço Gerenciado para Apache Spark é semelhante ao uso da criptografia padrão do Google. Para saber mais sobre suas opções de criptografia, consulte Chaves de criptografia gerenciadas pelo cliente (CMEK).

Usar CMEK

Siga as etapas desta seção para usar a CMEK para criptografar dados que o Serviço Gerenciado para Apache Spark grava no disco permanente e no bucket de preparo do Serviço Gerenciado para Apache Spark.

Você pode usar o Cloud Key Management Service para criar e gerenciar keyrings e chaves ou usar Autokey do Cloud KMS para a criação automática simplificada de keyrings e chaves.

Como usar o Autokey do Cloud KMS

  1. Ative o Autokey na pasta que contém seu projeto.
  2. Crie um identificador de chave. Ao criar o identificador de chave, especifique dataproc.googleapis.com/Batch ou dataproc.googleapis.com/Session como --resource-type. O Autokey gera uma chave e a atribui ao identificador de chave.
  3. Conceda permissões às contas de serviço e configure sua carga de trabalho em lote ou de sessão seguindo as etapas 4 e 5 na seção Criar e usar chaves manualmente abaixo. Ao enviar sua carga de trabalho, especifique o nome do recurso do identificador de chave em vez do nome do recurso da chave no campo kmsKey.

Criar e usar chaves manualmente

Siga estas etapas para criar chaves do Cloud KMS manualmente e usá-las com o Serviço Gerenciado para Apache Spark.

  1. Crie uma chave usando o Cloud Key Management Service (Cloud KMS).

  2. Copie o nome do recurso.

    Copie o nome do recurso.
    O nome do recurso é construído da seguinte maneira:
    projects/PROJECT_ID/locations/REGION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME
    

  3. Para que as contas de serviço do Compute Engine, do Serviço Gerenciado para Apache Spark e do agente de serviço do Cloud Storage utilizem sua chave, siga as etapas a seguir.

    1. Consulte Proteger recursos usando chaves do Cloud KMS > Papéis necessários para atribuir o papel de Criptografador/Descriptografador de CryptoKey do Cloud KMS à conta de serviço do agente de serviço do Compute Engine. Se essa conta de serviço não estiver listada na página do IAM no Google Cloud console, clique em Incluir concessões de papéis fornecidas pelo Google para listá-la.
    2. Atribua o papel de criptografador/descriptografador de CryptoKey do Cloud KMS à conta de serviço do agente de serviço do Serviço Gerenciado para Apache Spark. Use a Google Cloud CLI para atribuir o papel:

       gcloud projects add-iam-policy-binding KMS_PROJECT_ID \
       --member serviceAccount:service-PROJECT_NUMBER@dataproc-accounts.iam.gserviceaccount.com \
       --role roles/cloudkms.cryptoKeyEncrypterDecrypter
      

      Substitua:

      KMS_PROJECT_ID: o ID do seu Google Cloud projeto que executa o Cloud KMS. Esse projeto também pode ser o projeto que executa recursos do Serviço Gerenciado para Apache Spark.

      PROJECT_NUMBER: o número do projeto (não o ID do projeto) do seu Google Cloud projeto que executa recursos do Serviço Gerenciado para Apache Spark.

    3. Ative a API Cloud KMS no projeto que executa recursos do Serviço Gerenciado para Apache Spark.

    4. Se o papel do agente de serviço do Serviço Gerenciado para Apache Spark não estiver anexado à conta de serviço do agente de serviço do Serviço Gerenciado para Apache Spark, adicione a permissão serviceusage.services.use ao papel personalizado anexado à conta de serviço do agente de serviço do Serviço Gerenciado para Apache Spark. Se o papel do agente de serviço do Serviço Gerenciado para Apache Spark estiver anexado à conta de serviço do agente de serviço do Serviço Gerenciado para Apache Spark, pule esta etapa.

    5. Siga as etapas para adicionar sua chave ao bucket.

  4. Ao enviar uma carga de trabalho em lote:

    1. Especifique sua chave no parâmetro kmsKey do lote.
    2. Especifique o nome do bucket do Cloud Storage no parâmetro stagingBucket do lote.
  5. Ao criar uma sessão interativa ou um modelo de sessão:

    1. Especifique sua chave no parâmetro kmsKey da sessão.
    2. Especifique o nome do bucket do Cloud Storage no parâmetro da sessão stagingBucket.