Como usar chaves de criptografia gerenciadas pelo cliente

Cloud Composer 1 | Cloud Composer 2

Nesta página, você verá como usar as chaves de criptografia gerenciadas pelo cliente (CMEK, na sigla em inglês) para proteger ambientes do Cloud Composer. A ativação de CMEK permitirá que você forneça suas próprias chaves de criptografia para criptografar/descriptografar dados de ambiente.

Regiões onde as restrições de localização de recursos não estão disponíveis

O Cloud Composer não é compatível com restrições de local de recursos na região de Varsóvia (europe-central2).

Pré-requisitos

  1. Ative a API Artifact Registry.

        gcloud services enable artifactregistry.googleapis.com
      

  2. Se você quiser que o ambiente seja executado dentro de um perímetro do VPC Service Controls, adicione as APIs Cloud Key Management Service e Artifact Registry ao perímetro.

Como configurar a compatibilidade de CMEK com o Cloud Composer

Console

Siga as seguintes etapas para configurar a criptografia CMEK no Console do Cloud durante a criação do ambiente:

  1. No Console do Cloud, acesse a página Criar ambiente. Abrir a página "Criar ambiente"

  2. Expanda a seção Redes, modificações de configuração do Airflow e outros recursos.

  3. Abaixo de Criptografia de dados, selecione Chave gerenciada pelo cliente.

  4. Em Selecionar uma chave gerenciada pelo cliente, selecione sua chave no menu suspenso.

  5. Uma mensagem adicional informará que a configuração será necessária. Você terá a opção de abrir um assistente para orientá-lo durante o processo.

Após a criação do ambiente, é possível verificar a configuração de criptografia:

  1. Acesse a página "Lista de ambientes". Abrir a página de lista de ambientes

  2. No canto superior direito da página, abaixo do botão "Atualizar", clique no botão para Opções de exibição da coluna.

  3. No menu suspenso Opções de exibição da coluna, selecione Criptografia de dados.

  4. Uma nova coluna estará visível, mostrando a criptografia de dados de cada ambiente como "Chave gerenciada pelo Google" ou "Chave gerenciada pelo cliente".

  5. Para verificar se a chave gerenciada pelo cliente está disponível, selecione o novo ambiente na lista para acessar a página Detalhes do ambiente. Selecione a guia Configuração do ambiente e procure a linha Criptografia de dados.

gcloud

Abra o Console do Cloud e use os comandos abaixo para configurar a criptografia CMEK para o Cloud Composer:

  1. Defina as variáveis do projeto.

    export environmentName=ENVIRONMENT_NAME
    export project=PROJECT_ID
    export location=LOCATION
    export keyRing=KEY_RING
    export keyName=KEY_NAME
    export keyProject=${project} # Change if you are using a key from another project.
    export projectNumber=$(gcloud projects describe ${project} | grep projectNumber | cut -f2 -d" " | sed "s/'//g" )
    
  2. Crie uma chave CMEK no KMS (se ainda não houver uma disponível).

    gcloud config set project ${project}
    gcloud kms keyrings create ${keyRing} --location=${location} --project ${keyProject}
    gcloud kms keys create ${keyName} --location=${location} \
    --keyring=${keyRing} --purpose=encryption --project ${keyProject}
    

    É necessário criar uma chave CMEK na mesma região onde seus ambientes estarão localizados.

  3. Conceda permissões à conta de serviço do agente de serviços do Composer.

    gcloud kms keys add-iam-policy-binding ${keyName} \
      --location ${location} \
      --keyring ${keyRing} \
      --member=serviceAccount:$(gcloud beta services identity create \
      --service=composer.googleapis.com 2>&1 | awk '{print $4}') \
      --role=roles/cloudkms.cryptoKeyEncrypterDecrypter \
      --project ${keyProject}
    
  4. Conceda permissões à conta de serviço do Artifact Registry.

    gcloud kms keys add-iam-policy-binding ${keyName} \
      --location ${location} \
      --keyring ${keyRing} \
      --member=serviceAccount:$(gcloud beta services \
    identity create --service=artifactregistry.googleapis.com 2>&1 | awk \
    '{print $4}') --role=roles/cloudkms.cryptoKeyEncrypterDecrypter
    
  5. Conceder permissões à conta de serviço do GKE.

    gcloud kms keys add-iam-policy-binding ${keyName} \
      --location ${location} --keyring ${keyRing} \
      --member=serviceAccount:$(gcloud beta services identity create \
      --service=container.googleapis.com 2>&1 | awk '{print $4}') \
      --role=roles/cloudkms.cryptoKeyEncrypterDecrypter
    
  6. Conceda permissões à conta de serviço do Pub/Sub.

    gcloud kms keys add-iam-policy-binding ${keyName} \
      --location ${location} \
      --keyring ${keyRing} \
      --member=serviceAccount:$(gcloud beta services identity create \
      --service=pubsub.googleapis.com 2>&1 | awk '{print $4}') \
      --role=roles/cloudkms.cryptoKeyEncrypterDecrypter
    
  7. Conceda permissões à conta de serviço do Cloud Storage.

    gsutil kms authorize -k projects/${keyProject}/locations/${location}/keyRings/${keyRing}/cryptoKeys/${keyName}
    
  8. Conceda permissões à conta de serviço do Compute Engine.

    gcloud kms keys add-iam-policy-binding ${keyName} \
      --location ${location} \
      --keyring ${keyRing} \
      --member=serviceAccount:service-${projectNumber}@compute-system.iam.gserviceaccount.com \
      --role=roles/cloudkms.cryptoKeyEncrypterDecrypter
    
  9. Crie um ambiente do Cloud Composer.

    gcloud composer environments create ${environmentName} \
      --location=${location} \
      --kms-key projects/${keyProject}/locations/${location}/keyRings/${keyRing}/cryptoKeys/${keyName}
    

CMEK para registros do Cloud Composer

Se você espera que seus registros contenham dados confidenciais, também pode optar por redirecionar os registros do Cloud Composer para o bucket do Cloud Storage criptografado pelo CMEK por meio do roteador de registros. Isso impedirá que os registros sejam enviados ao Monitoring. Se você precisar de suporte do Google Cloud, precisará conceder aos engenheiros de suporte do Google acesso aos registros do Cloud Composer armazenados no Cloud Storage.

gcloud

  1. Crie um novo bucket do Cloud Storage (por exemplo, composer-logs-${location}-${environmentName}).

    gsutil mb -l ${location} gs://${bucket_name}
    
  2. Criptografe-a com a chave CMEK.

    gsutil kms encryption -k projects/${project}/locations/${location}/keyRings/${keyRing}/cryptoKeys/${keyName} gs://${bucket_name}
    
  3. Crie um novo coletor de registros.

    gcloud logging sinks create composer-log-sink-${environmentName} storage.googleapis.com/${bucket_name}
      --log-filter "resource.type=cloud_composer_environment AND resource.labels.environment_name=${envname} AND resource.labels.location=${location}"
    
  4. Conceda o papel apropriado à conta de serviço para esse bucket (mostrado no resultado do comando anterior).

    gcloud projects add-iam-policy-binding ${project} --member="serviceAccount:${serviceAccountNumber}@gcp-sa-logging.iam.gserviceaccount.com" --role='roles/storage.objectCreator' --condition=None
    
  5. Exclua os registros do novo ambiente no Monitoring.

    gcloud beta logging sinks update _Default --add-exclusion name=${environmentName}-exclusion,filter="resource.type=cloud_composer_environment AND resource.labels.environment_name=${envname} AND resource.labels.location=${location}"
    
  6. Adicionar criptografia CMEK no nível da organização ao roteador de registros

    gcloud beta logging cmek-settings describe --organization=[ORGANIZATION_ID]
    gcloud kms keys add-iam-policy-binding \
      --project=[KMS_PROJECT_ID] \
      --member [SERVICE_ACCOUNT_ID]@gcp-sa-logging.iam.gserviceaccount.com \
      --role roles/cloudkms.cryptoKeyEncrypterDecrypter \
      --location=[KMS_KEY_LOCATION] \
      --keyring=[KMS_KEY_RING] \
      [KMS_KEY]
    gcloud beta logging cmek-settings update \
      --organization=[ORGANIZATION_ID] --kms-key-name=[KMS_KEY_NAME]
    

Dados do Cloud Composer protegidos com chaves de criptografia fornecidas pelo Google

O Cloud Monitoring não é compatível com criptografia CMEK, o que significa que os nomes de seus ambientes e DAGs do Cloud Composer serão armazenados no banco de dados do Monitoring em formato criptografado usando chaves de criptografia do Google.

O banco de dados de back-end do Cloud Composer também armazena os metadados do ambiente em formato criptografado usando as chaves de criptografia do Google.