Proteja recursos com chaves do Cloud KMS


Este documento fornece informações sobre como usar chaves do Cloud Key Management Service Cloud KMS criadas manualmente para encriptar discos e outros recursos relacionados com o armazenamento. As chaves geridas no Cloud KMS são conhecidas como chaves de encriptação geridas pelo cliente (CMEKs).

Pode usar CMEKs para encriptar recursos do Compute Engine, como discos, imagens de máquinas, instantâneos instantâneos e instantâneos padrão.

Para saber como usar chaves de encriptação fornecidas pelo cliente (CSEKs) para encriptar discos e outros recursos de armazenamento, consulte o artigo Encriptar discos com chaves de encriptação fornecidas pelo cliente.

Saiba mais acerca da encriptação de disco.

Antes de começar

  • Compreenda os discos, as imagens, os instantâneos do disco persistente e as instâncias de máquinas virtuais (VM).
  • Decida se vai executar o Compute Engine e o Cloud KMS no mesmo Google Cloud projeto ou em projetos diferentes. Para obter informações sobre os Google Cloud IDs e os números dos projetos, consulte Identificar projetos.
  • Para o Google Cloud projeto que executa o Cloud KMS, faça o seguinte:
    1. Enable the Cloud KMS API.

      Roles required to enable APIs

      To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

      Enable the API

  • + Se quiser criar um novo volume equilibrado do Hyperdisk no modo confidencial, certifique-se de que o seu exemplo de utilização é suportado revendo as limitações e as regiões suportadas relevantes.
  • Se ainda não o tiver feito, configure a autenticação. A autenticação valida a sua identidade para aceder a Google Cloud serviços e APIs. Para executar código ou exemplos a partir de um ambiente de desenvolvimento local, pode autenticar-se no Compute Engine selecionando uma das seguintes opções:

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. Instale a CLI Google Cloud. Após a instalação, inicialize a CLI gcloud executando o seguinte comando:

      gcloud init

      Se estiver a usar um fornecedor de identidade (IdP) externo, primeiro tem de iniciar sessão na CLI gcloud com a sua identidade federada.

    2. Set a default region and zone.

    REST

    Para usar os exemplos da API REST nesta página num ambiente de desenvolvimento local, usa as credenciais que fornece à CLI gcloud.

      Instale a CLI Google Cloud. Após a instalação, inicialize a CLI gcloud executando o seguinte comando:

      gcloud init

      Se estiver a usar um fornecedor de identidade (IdP) externo, primeiro tem de iniciar sessão na CLI gcloud com a sua identidade federada.

    Para mais informações, consulte o artigo Autenticar para usar REST na Google Cloud documentação de autenticação.

Funções necessárias

Para garantir que o agente de serviço do Compute Engine tem as autorizações necessárias para proteger os recursos através de chaves do Cloud KMS, peça ao seu administrador para conceder ao agente de serviço do Compute Engine a função da IAM Encriptador/desencriptador de CryptoKey do Cloud KMS (roles/cloudkms.cryptoKeyEncrypterDecrypter) no seu projeto.

Para mais informações sobre a concessão de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.

O seu administrador também pode conceder ao agente de serviço do Compute Engine as autorizações necessárias através de funções personalizadas ou outras funções predefinidas.

O agente de serviço do Compute Engine tem o seguinte formato:

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

Pode usar a Google Cloud CLI para atribuir a função:

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

Substitua o seguinte:

  • KMS_PROJECT_ID: o ID do seu projeto que executa o Cloud KMS (mesmo que seja o mesmo projeto que executa o Compute Engine)Google Cloud
  • PROJECT_NUMBER: o número do projeto (não Google Cloud o ID do projeto) do seu Google Cloud projeto que executa os recursos do Compute Engine

Especificações de encriptação

As chaves do Cloud KMS usadas para ajudar a proteger os seus dados no Compute Engine são chaves AES-256. Estas chaves são chaves de encriptação de chaves e encriptam as chaves de encriptação de dados que encriptam os seus dados, e não os dados em si.

Os dados nos discos são encriptados através da Google-owned and Google-managed encryption keys. Para ver as especificações relacionadas com a encriptação predefinida no Google Cloud, consulte Encriptação predefinida em repouso na documentação de segurança.

Com o modo confidencial para o Hyperdisk Balanced e o Cloud HSM, a chave de encriptação de dados (DEK) tem propriedades de segurança adicionais com enclaves suportados por hardware.

Limitações

  • Não é possível encriptar recursos existentes com CMEKs. Só pode encriptar discos, imagens e capturas de ecrã com CMEKs quando os cria.

  • Quando cria um disco a partir de um instantâneo instantâneo encriptado com CMEK, tem de especificar a chave usada para encriptar o disco de origem. Não tem de especificar a chave quando trabalha com outros recursos encriptados com CMEK, como clones de discos e capturas de ecrã padrão.

  • (Pré-visualização) Quando cria um instantâneo com âmbito regional a partir de um disco encriptado com CMEK, tem de criar o instantâneo com uma CMEK regional que esteja na mesma localização que o instantâneo. Isto garante o isolamento regional da sua captura de ecrã e aumenta a fiabilidade da captura de ecrã.

  • Não pode usar as suas próprias chaves com discos SSD locais porque as chaves são geridas pela infraestrutura do Google Cloud e eliminadas quando a VM é terminada.

  • Os recursos regionais (discos) só podem ser encriptados por uma chave numa das seguintes localizações do Cloud KMS:

    • Uma chave na mesma região que o disco
    • Uma chave multirregional na mesma localização geográfica que o disco
    • Uma chave na localização global.

    Por exemplo, um disco na zona us-west1-a pode ser encriptado por uma chave na localização global, na região us-west1 ou na multirregião us.

    Os recursos globais (como imagens e capturas de ecrã) podem ser encriptados por chaves em qualquer localização. Para mais informações, consulte o artigo Tipos de localizações para o Cloud KMS.

  • A encriptação de um disco, uma captura instantânea ou uma imagem com uma chave é permanente. Não pode remover a encriptação do recurso, alterar o tipo de encriptação nem alterar a chave usada. A única forma de remover a encriptação ou alterar as chaves de encriptação é criar uma cópia do recurso enquanto especifica uma nova opção de encriptação. Por exemplo, para alterar um disco de modo a usar chaves geradas pela Google em vez de CMEKs, siga estes passos:

    1. Crie um instantâneo do disco.
    2. Crie um novo disco a partir da captura de ecrã. Quando criar o novo disco, selecione o tipo de encriptação pretendido.

    Para mais informações, consulte o artigo Altere o tipo de um disco.

Criação de chaves manual ou automática

Pode criar chaves do Cloud KMS manualmente ou usar o Cloud KMS Autokey. A Autokey simplifica a criação e a gestão de chaves do Cloud KMS automatizando o aprovisionamento e a atribuição. Com a Autokey, não precisa de aprovisionar antecipadamente anéis de chaves, chaves e contas de serviço. Em alternativa, são gerados a pedido como parte da criação de recursos do Compute Engine. Para mais informações, consulte a vista geral do Autokey.

Crie manualmente um conjunto de chaves e uma chave

Para o Google Cloud projeto que executa o Cloud KMS, crie um conjunto de chaves e uma chave, conforme descrito em Criar conjuntos de chaves e chaves.

Encriptar um novo disco persistente com CMEK

Pode encriptar um novo disco persistente fornecendo uma chave durante a criação da VM ou do disco.

Consola

  1. Na Google Cloud consola, aceda à página Discos.

    Aceda a Discos

  2. Clique em Criar disco e introduza as propriedades do novo disco.
  3. Em Encriptação, selecione Chave gerida pelo cliente.
  4. No menu pendente, selecione a chave do Cloud KMS que quer usar para encriptar este disco.
  5. Para criar o disco, clique em Criar.

gcloud

Crie um disco encriptado com o comando gcloud compute disks create e especifique a chave com a flag --kms-key.

gcloud compute disks create DISK_NAME \
  --kms-key projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY

Substitua o seguinte:

  • DISK_NAME: o nome do novo disco
  • KMS_PROJECT_ID: o projeto que detém a chave do Cloud KMS
  • REGION: a região onde a chave está localizada
  • KEY_RING: o nome do conjunto de chaves que inclui a chave
  • KEY: o nome da chave usada para encriptar o disco

REST

Construa um pedido POST para o método instances.insert. Para encriptar um disco, use a propriedade diskEncryptionKey com a propriedade kmsKeyName. Por exemplo, pode encriptar um novo disco durante a criação da VM com a sua chave do Cloud KMS através do seguinte:

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

{
"machineType": "zones/ZONE/machineTypes/MACHINE_TYPE",
"disks": [
 {
  "type": "PERSISTENT",
  "diskEncryptionKey": {
    "kmsKeyName": "projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY"
  },
  "initializeParams": {
   "sourceImage": "SOURCE_IMAGE"
  },
  "boot": true
 }
],
...
}

Substitua o seguinte:

  • PROJECT_ID: o ID do projeto que executa o Compute EngineGoogle Cloud
  • ZONE: a zona na qual criar a VM
  • MACHINE_TYPE: o tipo de máquina, por exemplo, c3-standard-4
  • KMS_PROJECT_ID: o projeto que detém a chave do Cloud KMS
  • REGION: a região onde o disco está localizado
  • KEY_RING: o nome do conjunto de chaves que inclui a chave
  • KEY: o nome da chave usada para encriptar o disco
  • SOURCE_IMAGE: a imagem a usar ao criar a VM, por exemplo, projects/debian-cloud/global/images/debian-11-bullseye-v20231115

Da mesma forma, pode usar o método disks.insert para criar um novo disco persistente autónomo e encriptá-lo com a sua chave do Cloud KMS:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/disks?sourceImage=SOURCE_IMAGE
{
 "name": "DISK_NAME",
 "diskEncryptionKey": {
   "kmsKeyName": "projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY"
  },
 "type": "projects/PROJECT_ID/zones/ZONE/diskTypes/DISK_TYPE"
}

Substitua o seguinte:

  • PROJECT_ID: o ID do projeto que executa o Compute EngineGoogle Cloud
  • ZONE: a zona na qual criar o disco
  • SOURCE_IMAGE: a imagem a usar ao criar o disco, por exemplo, projects/debian-cloud/global/images/debian-11-bullseye-v20231115
  • DISK_NAME: um nome para o novo disco
  • KMS_PROJECT_ID: o projeto que detém a chave do Cloud KMS
  • REGION: a região onde o disco está localizado
  • KEY_RING: o nome do conjunto de chaves que inclui a chave
  • KEY: o nome da chave usada para encriptar o disco
  • DISK_TYPE: o tipo de disco a criar

Crie um disco Hyperdisk Balanced no modo confidencial

Pode criar um novo disco Hyperdisk Balanced no modo confidencial com a Google Cloud consola, a Google Cloud CLI ou a API REST. Para criar um disco que não esteja no modo confidencial, siga os passos em Crie um disco persistente a partir de uma captura de ecrã encriptada com CMEK.

Consola

  1. Na Google Cloud consola, aceda à página Discos.

    Aceda a Discos

  2. Clique em Criar disco e introduza as propriedades do novo disco.
  3. Na secção Definições do disco, escolha Hyperdisk Balanced para o tipo de disco.
  4. Opcional. Altere as definições predefinidas de tamanho, IOPS aprovisionados e débito aprovisionado do disco.
  5. Na secção Encriptação, selecione Chave do Cloud KMS.
  6. Na lista de chaves, selecione a chave do Cloud HSM que quer usar para encriptar este disco.
  7. Na secção Informática confidencial, selecione Ativar serviços de informática confidencial.
  8. Para criar o disco, clique em Criar.

gcloud

Encriptar um novo disco com o modo confidencial para o Hyperdisk Balanced através do comando gcloud compute disks create. Ative o modo confidencial com a flag --confidential-compute e especifique a chave com a flag --kms-key.

gcloud compute disks create DISK_NAME \
  --type=hyperdisk-balanced \
  --kms-key projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY \
  --confidential-compute

Substitua o seguinte:

  • DISK_NAME: o nome do novo disco
  • KMS_PROJECT_ID: o projeto que detém a chave do Cloud HSM
  • REGION: a região onde a chave está localizada
  • KEY_RING: o nome do conjunto de chaves que inclui a chave
  • KEY: o nome da chave usada para encriptar o disco

REST

Construa um pedido POST para o método instances.insert. Para encriptar um disco com o modo confidencial para o Hyperdisk Balanced, use a propriedade diskEncryptionKey com a propriedade kmsKeyName e defina a flag enableConfidentialCompute. Por exemplo, pode encriptar um novo disco durante a criação da VM com a sua chave do Cloud HSM através do seguinte:

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

{
"machineType": "zones/ZONE/machineTypes/MACHINE_TYPE",
"disks": [
 {
  "type": "DISK_TYPE",
  "diskEncryptionKey": {
    "kmsKeyName": "projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY"
  },
  "initializeParams": {
   "sourceImage": "SOURCE_IMAGE",
   "enableConfidentialCompute": true
  },
  "boot": true
 }
],
"networkInterfaces": [
  {
   "network": "global/networks/default"
  }
]
}

Substitua o seguinte:

  • DISK_TYPE: o tipo de disco a criar, por exemplo, hyperdisk-balanced
  • PROJECT_ID: o ID do Google Cloud projeto que executa o Compute Engine
  • ZONE: a zona na qual criar a VM
  • MACHINE_TYPE: o tipo de máquina, por exemplo, n2d-standard-4
  • KMS_PROJECT_ID: o projeto que detém a chave do Cloud HSM
  • REGION: a região onde o disco está localizado
  • KEY_RING: o nome do conjunto de chaves que inclui a chave
  • KEY: o nome da chave usada para encriptar o disco
  • SOURCE_IMAGE: a imagem que suporta a VM confidencial a usar quando cria a VM, por exemplo, projects/debian-cloud/global/images/debian-11-bullseye-v20231115

Da mesma forma, pode usar o método disks.insert para criar um novo modo confidencial para o Hyperdisk Balanced:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/disks?sourceImage=SOURCE_IMAGE
{
 "name": "DISK_NAME",
 "diskEncryptionKey": {
   "kmsKeyName": "projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY"
  },
 "type": "projects/PROJECT_ID/zones/ZONE/diskTypes/DISK_TYPE",
 "enableConfidentialCompute": true
}

Substitua o seguinte:

  • PROJECT_ID: o ID do projeto que executa o Compute EngineGoogle Cloud
  • ZONE: a zona na qual criar o disco
  • SOURCE_IMAGE: a imagem que suporta a Confidential VM quando cria o disco, por exemplo, projects/debian-cloud/global/images/debian-11-bullseye-v20231115
  • DISK_NAME: um nome para o novo disco
  • KMS_PROJECT_ID: o projeto que detém a chave do Cloud HSM
  • REGION: a região onde o disco está localizado
  • KEY_RING: o nome do conjunto de chaves que inclui a chave
  • KEY: o nome da chave usada para encriptar o disco
  • DISK_TYPE: o tipo de disco a criar, por exemplo, hyperdisk-balanced.

Crie um instantâneo a partir de um disco encriptado com CMEK

Para ajudar a proteger um instantâneo que cria a partir de um disco encriptado com CMEK, tem de usar a mesma chave de encriptação que usou para encriptar o disco.

Não pode criar um instantâneo que use uma CMEK, a menos que o disco de origem também use uma CMEK. Além disso, não pode converter discos nem capturas de ecrã encriptados com CMEK para usar a Google Cloud encriptação predefinida, a menos que crie uma imagem de disco completamente nova e um novo disco persistente.

As capturas instantâneas de discos encriptados com CMEK são incrementais.

Consola

  1. Na Google Cloud consola, aceda à página Instantâneos.

    Aceder a Resumos

  2. Clique em Criar instantâneo.
  3. Em Disco de origem, escolha o disco de origem para o instantâneo. A imagem instantânea é encriptada automaticamente com a mesma chave usada pelo disco de origem.

gcloud

Para a encriptação gerida pelo cliente, a chave do Cloud KMS que foi usada para encriptar o disco também é usada para encriptar a captura de ecrã.

Pode criar o instantâneo na política de localização de armazenamento definida pelas suas definições de instantâneo ou usando uma localização de armazenamento alternativa à sua escolha. Para mais informações, consulte o artigo Escolha a localização de armazenamento das capturas de ecrã.

  • Para criar uma captura de ecrã na localização predefinida ou personalizada configurada nas definições de captura de ecrã, use o comando gcloud compute snapshots create.

    gcloud compute snapshots create SNAPSHOT_NAME \
        --source-disk-zone=SOURCE_ZONE \
        --source-disk=SOURCE_DISK_NAME \
        --snapshot-type=SNAPSHOT_TYPE
    
  • Em alternativa, para substituir as definições de imagens instantâneas e criar uma imagem instantânea numa localização de armazenamento personalizada, inclua a flag --storage-location para indicar onde armazenar a imagem instantânea.

    gcloud compute snapshots create SNAPSHOT_NAME \
        --source-disk-zone=SOURCE_ZONE \
        --source-disk=SOURCE_DISK_NAME \
        --snapshot-type=SNAPSHOT_TYPE \
        --storage-location=STORAGE_LOCATION
    
  • (Pré-visualização) Para criar um instantâneo com âmbito regional numa região permitida, inclua a flag --region para indicar onde criar o instantâneo.

      gcloud beta compute snapshots create SNAPSHOT_NAME \
          --region=SNAPSHOT_SCOPE_REGION
          --source-disk=SOURCE_DISK_NAME \
          --source-disk-zone=SOURCE_ZONE \
          --snapshot-type=SNAPSHOT_TYPE \
          --kms-key=projects/KMS_PROJECT_ID/locations/KEY_REGION/keyRings/KEY_RING/cryptoKeys/SNAPSHOT_KEY
    

Substitua o seguinte:

  • SNAPSHOT_NAME: um nome para o resumo.
  • SOURCE_ZONE: a zona do disco de origem.
  • SOURCE_DISK_NAME: o nome do volume do disco a partir do qual quer criar uma captura instantânea.
  • KMS_PROJECT_ID: o projeto que contém a chave de encriptação armazenada no Cloud Key Management Service.
  • KEY_REGION: a região onde a chave do Cloud KMS está localizada.
  • KEY_RING: o nome do conjunto de chaves que contém a chave do Cloud KMS.
  • SNAPSHOT_KEY: o nome da chave do Cloud KMS que usou para encriptar o disco de origem.
  • SNAPSHOT_TYPE: o tipo de instantâneo, STANDARD ou ARCHIVE. Se não for especificado um tipo de instantâneo, é criado um instantâneo STANDARD.
  • STORAGE_LOCATION: Opcional: para instantâneos com âmbito global, a multirregião do Cloud Storage ou a região do Cloud Storage onde quer armazenar o instantâneo. Só pode especificar uma localização de armazenamento.

    Use o parâmetro --storage-location apenas quando quiser substituir a localização de armazenamento predefinida ou personalizada configurada nas definições de instantâneo.

  • SNAPSHOT_SCOPE_REGION: opcional: para resumos com âmbito regional, a região à qual o resumo se destina. Se incluir este parâmetro, não pode usar o parâmetro --storage-location. O STORAGE_LOCATION é automaticamente definido como SNAPSHOT_SCOPE_REGION.

REST

Pode criar o instantâneo na política de localização de armazenamento definida pelas suas definições de instantâneo ou usando uma localização de armazenamento alternativa à sua escolha. Para mais informações, consulte o artigo Escolha a localização de armazenamento das capturas de ecrã.

  • Para criar um instantâneo na localização predefinida ou personalizada configurada nas definições de instantâneos, faça um pedido POST ao método snapshots.insert:

    POST https://compute.googleapis.com/compute/v1/projects/DESTINATION_PROJECT_ID/global/snapshots
    {
        "name": "SNAPSHOT_NAME",
        "sourceDisk": "projects/SOURCE_PROJECT_ID/zones/SOURCE_ZONE/disks/SOURCE_DISK_NAME",
        "snapshotEncryptionKey":  {
         "kmsKeyName": "projects/KMS_PROJECT_ID/locations/KEY_REGION/keyRings/KEY_RING/cryptoKeys/SNAPSHOT_KEY"
        },
        "snapshotType": "SNAPSHOT_TYPE"
    }
    
  • Em alternativa, para substituir as definições de instantâneo e criar um instantâneo numa localização de armazenamento personalizada, faça um pedido ao método POST e inclua a propriedade snapshots.insert no seu pedido:storageLocations

    POST https://compute.googleapis.com/compute/v1/projects/DESTINATION_PROJECT_ID/global/snapshots
    {
        "name": "SNAPSHOT_NAME",
        "sourceDisk": "projects/SOURCE_PROJECT_ID/zones/SOURCE_ZONE/disks/SOURCE_DISK_NAME",
        "snapshotEncryptionKey":  {
         "kmsKeyName": "projects/KMS_PROJECT_ID/locations/KEY_REGION/keyRings/KEY_RING/cryptoKeys/SNAPSHOT_KEY"
        },
        "snapshotType": "SNAPSHOT_TYPE",
        "storageLocations": [
            "STORAGE_LOCATION"
        ],
    }
    
  • (Pré-visualização) Para criar uma imagem instantânea com âmbito regional numa região permitida, faça um pedido POST ao método snapshots.insert e defina a região de criação:

    POST https://compute.googleapis.com/compute/beta/projects/DESTINATION_PROJECT_ID/regions/SNAPSHOT_SCOPE_REGION/snapshots
    {
      "name": "SNAPSHOT_NAME",
      "sourceDisk": "projects/SOURCE_PROJECT_ID/regions/SOURCE_REGION/disks/SOURCE_DISK_NAME",
      "snapshotType": "SNAPSHOT_TYPE",
      "snapshotEncryptionKey": {
        "kmsKeyName":"projects/KMS_PROJECT_ID/locations/KEY_REGION/keyRings/KEY_RING/cryptoKeys/SNAPSHOT_KEY",
      },
    }
    

Substitua o seguinte:

  • DESTINATION_PROJECT_ID: o ID do projeto no qual quer criar a captura de ecrã.
  • SNAPSHOT_NAME: um nome para o resumo.
  • SOURCE_PROJECT_ID: o ID do projeto do disco de origem.
  • SOURCE_ZONE: a zona do disco de origem.
  • SOURCE_DISK_NAME: o nome do disco a partir do qual quer criar uma captura instantânea.
  • KMS_PROJECT_ID: o projeto que contém a chave de encriptação armazenada no Cloud Key Management Service.
  • KEY_REGION: a região onde a chave do Cloud KMS está localizada.
  • KEY_RING: o nome do conjunto de chaves que contém a chave do Cloud KMS.
  • SNAPSHOT_KEY: o nome da chave do Cloud KMS que usou para encriptar o disco de origem.
  • SNAPSHOT_TYPE: o tipo de instantâneo, STANDARD ou ARCHIVE. Se não for especificado um tipo de instantâneo, é criado um instantâneo STANDARD.
  • STORAGE_LOCATION: Opcional: para instantâneos com âmbito global, a multirregião do Cloud Storage ou a região do Cloud Storage onde quer armazenar o instantâneo. Só pode especificar uma localização de armazenamento.

    Use o parâmetro storageLocations apenas quando quiser substituir a localização de armazenamento predefinida ou personalizada configurada nas definições de instantâneo.

  • SNAPSHOT_SCOPE_REGION: Opcional: para resumos com âmbito regional, a região à qual o resumo se destina. Se incluir este parâmetro, não pode usar o parâmetro storageLocations. O STORAGE_LOCATION é automaticamente definido como SNAPSHOT_SCOPE_REGION.

Encriptar uma imagem importada com CMEK

Pode encriptar uma nova imagem quando importa uma imagem personalizada para o Compute Engine. Antes de poder importar uma imagem, tem de criar e comprimir um ficheiro de imagem de disco e carregar esse ficheiro comprimido para o Cloud Storage.

Consola

  1. Na Google Cloud consola, aceda à página Imagens.

    Aceder a Imagens

  2. Clique em Criar imagem.
  3. Em Disco de origem, selecione o disco do qual quer criar uma imagem.
  4. Para Encriptação, selecione Chave gerida pelo cliente.
  5. No menu pendente, selecione a chave do Cloud KMS que quer usar para encriptar esta imagem.
  6. Continue com o processo de criação de imagens.

gcloud

Para importar e encriptar uma imagem, use o comando gcloud compute images create. Para a encriptação gerida pelo cliente, especifique a chave do Cloud KMS para a imagem.

gcloud compute images create IMAGE_NAME \
    --source-disk=SOURCE_DISK  \
    --kms-key projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY

Substitua o seguinte:

  • IMAGE_NAME: o nome da imagem que está a criar
  • SOURCE_DISK: o nome do disco para criar uma captura instantânea de
  • KMS_PROJECT_ID: o projeto que contém a chave do Cloud KMS
  • REGION: a região onde a chave do Cloud KMS está localizada
  • KEY_RING: o conjunto de chaves que contém a chave do Cloud KMS
  • KEY: o nome da chave a usar para encriptar o novo disco

REST

Para encriptar uma imagem importada, crie um pedido POST para o método images.insert. Especifique o URI para o ficheiro comprimido, adicione a propriedade imageEncryptionKey ao pedido de criação de imagens e especifique a chave para encriptar a imagem na propriedade kmsKeyName.

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

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

Substitua o seguinte:

  • PROJECT_ID: o projeto para criar a imagem encriptada em
  • IMAGE_NAME: o nome da imagem que está a criar
  • KMS_PROJECT_ID: o projeto que contém a chave do Cloud KMS
  • REGION: a região onde a chave do Cloud KMS está localizada
  • KEY_RING: o conjunto de chaves que contém a chave do Cloud KMS
  • KEY: o nome da chave que usou para encriptar o disco de origem

Crie um disco a partir de um instantâneo encriptado com CMEK

Para criar um novo disco a partir de uma imagem instantânea encriptada, faça o seguinte:

Consola

  1. Na Google Cloud consola, aceda à página Discos.

    Aceda a Discos

  2. Clique em Criar disco e introduza as propriedades do novo disco.
  3. Em Tipo de origem, selecione o instantâneo ou a imagem que quer usar.
  4. Opcional: se quiser especificar uma nova chave de encriptação, em Encriptação, especifique o tipo de chave de encriptação a usar e, em seguida, faculte as informações da chave de encriptação.

    Se quiser remover a chave de encriptação gerida ou fornecida pelo cliente, para Encriptação, use o valor predefinido Google-managed encryption key.

  5. Continue com o processo de criação do disco.

gcloud

  • Para criar um novo disco a partir de uma imagem instantânea encriptada com âmbito global, use o comando gcloud compute disks create.

    gcloud compute disks create DISK_NAME \
      --zone=ZONE \
      --source-snapshot=SNAPSHOT_NAME \
      --kms-key=projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY
    
  • (Pré-visualização) Para criar um novo disco a partir de um instantâneo encriptado com âmbito regional, use o comando gcloud compute disks create e especifique a região do instantâneo de origem.

    gcloud compute disks create DISK_NAME \
      --zone=ZONE \
      --source-snapshot=SNAPSHOT_NAME \
      --source-snapshot-region=SOURCE_REGION \
      --kms-key=projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY
    

Substitua o seguinte:

  • DISK_NAME: o nome do novo disco
  • SNAPSHOT_NAME: o nome do instantâneo encriptado

    Para usar uma imagem em vez de uma captura instantânea, substitua --source-snapshot SNAPSHOT_NAME por --image IMAGE_NAME.

  • KMS_PROJECT_ID: Opcional: o projeto que contém a chave do Cloud KMS

  • REGION: Opcional: a região onde a chave do Cloud KMS está localizada

  • SOURCE_REGION: a região à qual o instantâneo de origem está associado

  • ZONE: a zona onde o novo disco vai residir

  • KEY_RING: opcional: o conjunto de chaves que contém a chave do Cloud KMS

  • KEY: Opcional: o nome da chave do Cloud KMS a usar para encriptar o novo disco

    Para encriptar o novo disco, pode fazer uma das seguintes ações:

    • Para especificar uma nova chave de encriptação gerida pelo cliente, use a flag --kms-key.
    • Para usar a predefinição Google-owned and Google-managed encryption key, não inclua a flag --kms-key.

REST

  • Para criar um novo disco a partir de uma imagem instantânea encriptada com âmbito global, crie um pedido POST para o método compute.disks.insert. Use a propriedade sourceSnapshot para especificar a imagem instantânea.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/disks
    
    {
      "name": "DISK_NAME",
      "sourceSnapshot": "projects/SNAPSHOT_PROJECT_ID/global/snapshots/SNAPSHOT_NAME",
      "diskEncryptionKey": {
        "kmsKeyName": "projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY"
      }
    }
    
  • (Pré-visualização) Para criar um novo disco a partir de uma imagem instantânea encriptada com âmbito regional, crie um pedido POST para o método compute.disks.insert. Use a propriedade sourceSnapshot para especificar a imagem instantânea.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/disks
    
    {
      "name": "DISK_NAME",
      "sourceSnapshot": "projects/SNAPSHOT_PROJECT_ID/regions/SOURCE_REGION/snapshots/SNAPSHOT_NAME",
      "type": "projects/PROJECT_ID/zones/ZONE/diskTypes/DISK_TYPE",
      "zone": "projects/PROJECT_ID/zones/ZONE"
      "diskEncryptionKey": {
        "kmsKeyName": "projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY"
      }
    }
    

Substitua o seguinte:

  • PROJECT_ID: o projeto no qual criar o novo disco
  • ZONE: a zona na qual criar o novo disco
  • SOURCE_REGION: a região à qual o instantâneo de origem está associado
  • DISK_NAME: o nome do novo disco
  • DISK_TYPE: O URL completo ou parcial do tipo do disco, por exemplo, PROJECT_ID/zones/ZONE/diskTypes/pd-ssd
  • SNAPSHOT_PROJECT_ID: O projeto que contém a imagem instantânea
  • SNAPSHOT_NAME: o nome do instantâneo encriptado

    Para usar uma imagem em vez de uma captura de ecrã, substitua sourceSnapshot por sourceImage.

  • KMS_PROJECT_ID: Opcional: o projeto que contém a chave do Cloud KMS

  • REGION: Opcional: a região onde a chave do Cloud KMS está localizada

  • KEY_RING: opcional: o conjunto de chaves que contém a chave do Cloud KMS

  • KEY: Opcional: o nome da chave do Cloud KMS a usar para encriptar o novo disco

    Se incluir diskEncryptionKey, o disco é encriptado com a chave do Cloud KMS especificada. Se não incluir diskEncryptionKey, o disco é encriptado com um Google-owned and Google-managed encryption key.

Anexar um disco de arranque encriptado com CMEK a uma nova VM

Consola

  1. Na Google Cloud consola, aceda à página Criar uma instância.

    Aceda a Criar uma instância

  2. Especifique os detalhes da VM e, na secção Disco de arranque, clique em Alterar. Em seguida, faça o seguinte:

    1. Clique em Discos existentes.
    2. Na lista Disco, selecione um disco existente para anexar à VM.
    3. Clique em Selecionar.
  3. Continue com o processo de criação da VM.

gcloud

Para anexar um disco encriptado quando cria uma nova VM, use o comando gcloud compute instances create. Use a flag --disk para especificar o disco de arranque encriptado, conforme mostrado no exemplo seguinte:

gcloud compute instances create VM_NAME \
  ...
  --disk name=DISK_NAME,boot=yes

Substitua o seguinte:

  • VM_NAME: o nome da VM que está a criar
  • DISK_NAME: o nome do disco encriptado

REST

Construa um pedido POST para o método compute.instances.insert. Use a propriedade disks para especificar o disco de arranque encriptado, conforme mostrado no exemplo seguinte:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
{
  ...
  "disks": [
    {
      "deviceName": "DISK_ALIAS",
      "source": "projects/PROJECT_ID/zones/ZONE/disks/DISK_NAME"
    }
  ]
}

Substitua o seguinte:

  • PROJECT_ID: o projeto no qual criar a nova VM
  • ZONE: a zona na qual criar a nova VM
  • DISK_ALIAS: um nome de dispositivo exclusivo a usar como o alias do disco no diretório /dev/disk/by-id/google-* da VM que executa um sistema operativo Linux. Este nome pode ser usado para fazer referência ao disco para operações como a montagem ou a alteração do tamanho a partir da instância. Se não especificar um nome de dispositivo, a VM escolhe um nome de dispositivo predefinido para aplicar a este disco, no formato persistent-disk-x, em que x é um número atribuído pelo Compute Engine. Este campo só é aplicável a volumes de disco persistente.
  • DISK_NAME: o nome do disco encriptado

Remova a chave de encriptação do Cloud KMS de um disco persistente

Pode desencriptar o conteúdo de um disco encriptado e criar um novo disco que use a encriptação predefinida. Google Cloud Por predefinição,o Google Cloud encripta todos os dados em repouso.

  1. Crie um instantâneo do disco encriptado.
  2. Use a nova captura de ecrã encriptada para criar um novo disco persistente.

Depois de criar o novo disco persistente, este usa a encriptação Google Cloud predefinida para ajudar a proteger o conteúdo do disco. Todas as capturas de ecrã que criar a partir desse disco também têm de usar a encriptação predefinida.

Alterne a chave de encriptação do Cloud KMS para um disco

Rode a chave usada para encriptar o disco criando um novo disco que use uma nova versão da chave do Cloud KMS. Alternar chaves é uma prática recomendada para agir em conformidade com as práticas de segurança padronizadas. Para alternar as chaves, faça o seguinte:

  1. Alterne a sua chave do Cloud KMS.
  2. Crie um instantâneo do disco encriptado.
  3. Use o novo resumo para criar um novo disco com a chave rodada no passo anterior.
  4. Substitua o disco associado à sua VM que usa a chave de encriptação antiga.

Quando cria o novo disco, este usa a nova versão da chave para a encriptação. Todas as imagens instantâneas que criar a partir desse disco usam a versão mais recente da chave principal.

Quando alterna uma chave, os dados que foram encriptados com versões anteriores da chave não são reenviados automaticamente. Para mais informações, consulte o artigo Voltar a encriptar dados. A rotação de uma chave não desativa nem destrói automaticamente uma versão de chave existente.

Desative ou elimine uma CMEK

Se já não precisar de uma CMEK ou quiser impedir a sua utilização, elimine ou desative a chave. A eliminação, a desativação ou a remoção de autorizações de IAM numa chave também é denominada revogação da chave.

Impacto da revogação de chaves nos recursos encriptados

Quando revoga uma chave de encriptação, os recursos que a chave protege são afetados da seguinte forma:

  • Não pode arrancar uma VM se algum dos respetivos discos anexados tiver chaves revogadas.
  • Se um disco que usa a chave estiver associado a uma VM em execução e tiver ativado a opção Desligamento da VM na revogação da chave para a VM, o Compute Engine desliga a VM no prazo de 7 horas.
  • Não pode anexar um disco com uma chave revogada a uma VM nem criar uma captura de ecrã a partir do disco.
  • Não pode usar imagens nem capturas de ecrã encriptadas com chaves revogadas para criar discos.

Se desativar a chave, pode reverter os efeitos anteriores ativando a chave. Se eliminar a chave, não pode reverter os efeitos anteriores.

Configure o encerramento da VM na revogação da chave do Cloud KMS

Pode configurar a VM para que seja encerrada automaticamente quando revogar a chave do Cloud KMS que está a ajudar a proteger um disco anexado à VM. Pode revogar uma chave desativando-a ou eliminando-a. Com esta definição ativada, a VM é encerrada no prazo de 7 horas após a revogação da chave.

Se ativar novamente a chave, pode reiniciar a VM com o disco anexado que a chave ajuda a proteger. A VM não é reiniciada automaticamente depois de ativar a chave.

Consola

Para configurar uma VM para ser encerrada quando uma chave do Cloud KMS é revogada, faça o seguinte:

  1. Comece a criar uma VM que inclua um disco protegido por uma chave do Cloud KMS.
  2. Abra o menu Trabalhar em rede, discos, segurança, gestão, arrendamento único.
  3. Expanda a secção Gestão.
  4. Em Política de revogação da chave de encriptação gerida pelo cliente (CMEK), selecione Encerrar.

gcloud

Use o gcloud compute instances createcomando para criar uma VM e inclua --key-revocation-action-type=stop.

gcloud compute instances create VM_NAME \
  --image IMAGE \
  --key-revocation-action-type=stop

REST

Use o método instances.insert para criar uma VM e defina a propriedade "keyRevocationActionType" como "STOP". O exemplo seguinte cria a VM a partir de uma imagem pública.

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

{
  "machineType": "zones/MACHINE_TYPE_ZONE/machineTypes/MACHINE_TYPE",
  "name": "VM_NAME",
  "disks": [
    {
      "initializeParams": {
        "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
      },
      "boot": true
    }
  ],
  "keyRevocationActionType": "STOP"
}

Em alternativa, pode configurar um modelo de instância para criar VMs que são encerradas na revogação de chaves através da Google Cloud CLI ou REST.

Consola

Pode usar um modelo de instância para criar VMs que são encerradas quando uma chave do Cloud KMS é revogada.

  1. Comece a criar um novo modelo de instância que inclua um disco protegido por uma chave do Cloud KMS.
  2. Abra o menu Trabalhar em rede, discos, segurança, gestão, arrendamento único.
  3. Expanda a secção Gestão.
  4. Em Política de revogação da chave de encriptação gerida pelo cliente (CMEK), selecione Desativar.

gcloud

Crie um modelo de instância com o comando gcloud compute instance-templates create e inclua --key-revocation-action-type=stop.

gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
  --key-revocation-action-type=stop

REST

Construa um pedido POST para o método instanceTemplates.insert. No corpo do pedido, tem de definir explicitamente todos os campos de configuração obrigatórios. Se quiser que as VMs criadas a partir deste modelo sejam encerradas na revogação da chave, especifique "keyRevocationActionType":"STOP". Por exemplo, um modelo de instância com os campos mínimos obrigatórios que cria VMs que são encerradas na revogação de chaves tem o seguinte aspeto:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceTemplates

{
  "name": "example-template",
  "properties": {
  "machineType": "e2-standard-4",
  "networkInterfaces": [
    {
      "network": "global/networks/default",
      "accessConfigs": [
        {
          "name": "external-IP",
          "type": "ONE_TO_ONE_NAT"
        }
      ]
    }
  ],
  "disks":
  [
    {
      "type": "PERSISTENT",
      "boot": true,
      "mode": "READ_WRITE",
      "initializeParams":
      {
        "sourceImage": "projects/debian-cloud/global/images/family/debian-11"
      }
    }
  ],
  "keyRevocationActionType": "STOP"
  }
}

Depois de criar uma VM configurada para ser encerrada na revogação do Cloud KMS, crie e anexe um disco persistente encriptado com uma chave do Cloud KMS.