Como proteger recursos com chaves do Cloud KMS

Por padrão, no Compute Engine, o conteúdo do cliente é criptografado em repouso. O Compute Engine executa e gerencia essa criptografia sem que você precise executar outra ação. No entanto, se você quiser controlar e gerenciar essa criptografia, use as chaves de criptografia de chaves. As chaves de criptografia de chaves não criptografam diretamente seus dados, mas são usadas para criptografar as chaves de criptografia de dados que criptografam seus dados.

Você tem duas opções de chaves de criptografia de chaves no Compute Engine:

Depois de criar um recurso do Compute Engine, protegido pelo Cloud KMS, não é necessário especificar a chave, porque o Compute Engine sabe qual chave KMS foi usada. Isso é diferente da maneira como é feito, no Compute Engine, o acesso aos recursos de chaves fornecidas pelo cliente. Para esse acesso, você precisa especificar a chave fornecida pelo cliente.

Saiba mais sobre as opções de criptografia do Google Cloud Platform.

Antes de começar

  1. Aprenda sobre discos, imagens, instantâneos de disco permanente e instâncias.

  2. Decida se você executará o Compute Engine e o Cloud KMS no mesmo projeto do Google Cloud Platform ou em projetos diferentes. Para fins de exemplo de documentação, é usada a convenção a seguir:

    • [PROJECT_ID] é o código do projeto que executa o Compute Engine.
    • [PROJECT_NUMBER] é o número do projeto que executa o Compute Engine
    • [KMS_PROJECT_ID] é o código do projeto que executa o Cloud KMS, ainda que seja o mesmo que executa o Compute Engine.

    Para informações sobre códigos de projetos do GCP e números de projetos, consulte Como identificar projetos.

  3. Para o projeto do GCP que executa o Compute Engine, configure o acesso da API para o Compute Engine.

  4. No projeto do GCP que executa o Cloud KMS:

    1. Ative a API Cloud KMS.
    2. Crie um keyring e uma chave, conforme descrito em Como criar keyrings e chaves.
  5. Atribua o papel Cloud KMS CryptoKey Encrypter/Decrypter ao agente de serviço do Compute Engine. Essa conta está no formato:

    service-[PROJECT_NUMBER]@compute-system.iam.gserviceaccount.com
    

    É possível usar a ferramenta de linha de comando gcloud para atribuir o papel:

    gcloud projects add-iam-policy-binding [KMS_PROJECT_ID] \
    --member serviceAccount:service-[PROJECT_NUMBER]@compute-system.iam.gserviceaccount.com \
    --role roles/cloudkms.cryptoKeyEncrypterDecrypter
    

    Substitua [KMS_PROJECT_ID] pelo código do projeto do GCP que executa o Cloud KMS e [PROJECT_NUMBER] pelo número (e não o código) do projeto do GCP que executa os recursos do Compute Engine.

Especificações

Criptografia

As chaves do Cloud KMS usadas para proteger os dados no Compute Engine são chaves AES-256. Elas são chaves de criptografia de chaves que criptografam as chaves de criptografia de dados usadas nos seus dados.

Restrições

  • Só é possível criptografar novos discos permanentes, imagens e instantâneos com sua própria chave. Não é possível usá-la para criptografar recursos atuais.

  • Não é possível usar suas próprias chaves com SSDs locais porque eles não permanecem além da duração de uma máquina virtual. Os SSDs locais já estão protegidos com uma chave de criptografia efêmera que o Google não retém.

Criptografar um novo disco permanente com suas próprias chaves

É possível criptografar um novo disco permanente fornecendo uma chave durante a criação de uma instância ou disco.

Console

  1. No console do Google Cloud Platform, acesse a página Discos.

    Acessar a página Discos

  2. Clique em Novo disco e insira as propriedades do novo disco.
  3. Em Criptografia, selecione Chave gerenciada pelo cliente.
  4. Use o menu suspenso para selecionar a chave do Cloud KMS a ser usada para criptografar o disco.
  5. Clique em Criar para criar o disco.

Linha de comando

gcloud compute disks \
create encrypted-disk \
--kms-key projects/[KMS_PROJECT_ID]/locations/[REGION]/keyRings/[KEY_RING]/cryptoKeys/[KEY]

API

Criptografe um disco usando a propriedade diskEncryptionKey com a propriedade kmsKeyName. Por exemplo, para criptografar um novo disco durante a criação de instância com sua chave do Cloud KMS:

POST
https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instances

{
"machineType": "zones/[ZONE]/machineTypes/n1-standard-1",
"disks": [
 {
  "type": "PERSISTENT",
  "diskEncryptionKey": {
    "kmsKeyName": "projects/[KMS_PROJECT_ID]/locations/[REGION]/keyRings/[KEY_RING]/cryptoKeys/[KEY]"
  },
  "initializeParams": {
   "sourceImage": "projects/debian-cloud/global/images/debian-8-jessie-v20160301"
  },
  "boot": true
 }
],
...
}

De maneira similar, também é possível usar a API para criar um novo disco permanente independente e criptografá-lo com sua chave do Cloud KMS:

POST https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/
[ZONE]/disks?sourceImage=https%3A%2F%2Fwww.googleapis.com%2Fcompute%2F
projects%2Fdebian-cloud%2Fglobal%2Fimages%2Fdebian-8-jessie-v20160301

{
 "name": "new-encrypted-disk-key",
 "diskEncryptionKey": {
   "kmsKeyName": "projects/[KMS_PROJECT_ID]/locations/[REGION]/keyRings/[KEY_RING]/cryptoKeys/[KEY]"
  },
 "type": "zones/[ZONE]/diskTypes/pd-standard"
}

Criar um instantâneo de um disco criptografado

Quando você cria um instantâneo a partir de um disco criptografado com as CMEK, o instantâneo precisa ser protegido pela mesma chave de criptografia usada para criptografar o disco.

Console

  1. No console do Google Cloud Platform, acesse a página Instantâneos.

    Acessar a página Instantâneos

  2. Clique em Criar instantâneo.
  3. Em disco de origem, escolha o disco de origem para o instantâneo. O instantâneo será criptografado automaticamente com a mesma chave usada pelo disco de origem.

Linha de comando

gcloud compute \
disks snapshot encrypted-disk \
--zone [ZONE]

API

POST https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/disks/example-disk/createSnapshot

{
 "snapshotEncryptionKey":  {
   "kmsKeyName": "projects/[KMS_PROJECT_ID]/locations/[REGION]/keyRings/[KEY_RING]/cryptoKeys/[SNAPSHOT_KEY]"
 },
 "name": "snapshot-encrypted-disk"
}

Não é possível criar um instantâneo protegido pelas CMEK, a não ser que o próprio disco já esteja protegido pelas CMEK. Além disso, não é possível converter discos criptografados ou instantâneos criptografados para usar a criptografia padrão do Compute Engine, a não ser que você crie uma imagem de disco completamente nova e um novo disco permanente.

Criptografar uma imagem importada

É possível criptografar uma nova imagem ao importar uma imagem personalizada para o Compute Engine. Antes de importar uma imagem, é preciso criar e compactar um arquivo de imagem de disco e fazer o upload desse arquivo compactado para o Google Cloud Storage.

Console

  1. No console do Google Cloud Platform, acesse a página Imagens.

    Acessar a página Imagens

  2. Clique em Criar imagem.
  3. Em disco de origem, selecione o disco do qual quer criar uma imagem.
  4. Em Criptografia, selecione Chave gerenciada pelo cliente.
  5. Use o menu suspenso para selecionar a chave do Cloud KMS a ser usada para criptografar essa imagem.
  6. Continue com o processo de criação da imagem.

Linha de comando

gcloud compute \
images create [...] \
--kms-key projects/[KMS_PROJECT_ID]/locations/[REGION]/keyRings/[KEY_RING]/cryptoKeys/[KEY]

API

Para criptografar uma imagem importada, especifique o URI do arquivo compactado, adicione a propriedade imageEncryptionKey à solicitação de criação de imagem e especifique a chave para criptografar a imagem na propriedade kmsKeyName:

POST https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/images

{
"rawDisk": {
 "source": "http://storage.googleapis.com/example-image/example-image.tar.gz"
},
"name": "new-encrypted-image",
"sourceType": "RAW",
"imageEncryptionKey": {
  "kmsKeyName": "projects/[KMS_PROJECT_ID]/locations/[REGION]/keyRings/[KEY_RING]/cryptoKeys/[IMAGE_KEY]"
  }
}

Criar um disco permanente a partir de um recurso criptografado

Criar um disco a partir de um instantâneo criptografado

Para criar um novo disco permanente independente usando um instantâneo criptografado:

Console

  1. No console do Google Cloud Platform, acesse a página Discos.

    Acessar a página Discos

  2. Clique em Novo disco e insira as propriedades do novo disco.
  3. Em Tipo de origem, selecione o instantâneo ou a imagem que você quer.
  4. Continue com o processo de criação do disco permanente.

Linha de comando

gcloud compute \
disks create [...] \
--source-snapshot example-snapshot \
--kms-key projects/[KMS_PROJECT_ID]/locations/[REGION]/keyRings/[KEY_RING]/cryptoKeys/[KEY]

Para usar uma imagem em vez de um instantâneo, substitua --source-snapshot example-snapshot por --image example-image.

API

POST https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/disks

{
"name": "disk-from-encrypted-snapshot",
"sourceSnapshot": "global/snapshots/encrypted-snapshot"
}

Como anexar um disco criptografado a uma nova instância

Console

  1. No console do Google Cloud Platform, acesse a página Instâncias de VMs.

    Acessar a página Instâncias de VM

  2. Clique em Criar instância.
  3. Em disco de inicialização, clique em Alterar.
  4. Clique em discos existentes.
  5. Escolha um disco existente para anexar à instância.
  6. Continue com o processo de criação de instâncias.

Linha de comando

gcloud compute instances \
create example-instance \
--disk name=encrypted-disk,boot=yes

API

"disks": [
{
  "deviceName": "encrypted-disk",
  "source": "projects/[PROJECT_ID]/zones/[ZONE]/disks/encrypted-disk"
  }
 }
]

Remover a chave de criptografia do Cloud KMS de um disco permanente

É possível descriptografar o conteúdo de um disco criptografado e criar um novo disco que use a criptografia padrão do Compute Engine.

  1. Crie uma imagem do disco criptografado e especifique criptografia automática para a nova imagem.
  2. Use a nova imagem para criar um novo disco permanente.

Depois de criar o novo disco permanente, a criptografia padrão do Compute Engine será usada para proteger o conteúdo do disco. Todos os instantâneos criados com base nesse disco precisarão usar a criptografia padrão.

Impacto da desativação ou ativação das chaves de criptografia

Desativar ou excluir uma chave de criptografia terá os seguintes efeitos no conteúdo protegido por ela:

  • VMs com discos anexados protegidos pela chave não podem inicializar
  • Os discos protegidos pela chave não podem ser anexados a máquinas virtuais, nem podem ser criados instantâneos para eles
  • Instantâneos protegidos pela chave não podem ser usados para criar um disco
  • Imagens protegidas pela chave não podem ser usadas para criar um disco

Se a chave for desabilitada, os efeitos acima podem ser revertidos com a habilitação da chave. Se você excluir a chave, os efeitos acima serão irreversíveis.

Limitações

  • Os recursos regionais (discos) podem ser criptografados por chaves no mesmo local ou no local global. Por exemplo, um disco na zona us-west1-a pode ser criptografado por uma chave em us-west1 ou global. Recursos globais (imagens, instantâneos) podem ser criptografados por chaves em qualquer local.
Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Documentação do Compute Engine