Neste documento, fornecemos informações sobre como usar chaves do Cloud Key Management Service Cloud KMS criadas manualmente para criptografar discos e outros recursos relacionados ao armazenamento. As chaves gerenciadas no Cloud KMS são conhecidas como chaves de criptografia gerenciadas pelo cliente (CMEKs). É possível usar as CMEKs para criptografar recursos do Compute Engine, como discos, imagens de máquina, snapshots instantâneos e snapshots padrão.
Antes de começar
- Entenda discos, imagens, snapshots padrão e instâncias de máquina virtual (VM, na sigla em inglês).
- Decida se você executará o Compute Engine e o Cloud KMS no mesmo Cloud de Confiance by S3NS projeto ou em projetos diferentes. Para informações sobre IDs e números de projetos do Cloud de Confiance , consulte Como identificar projetos.
- Para o projeto Cloud de Confiance que executa o Cloud KMS, faça o
seguinte:
Ative a API Cloud KMS.
Funções necessárias para ativar APIs
Para ativar as APIs, é necessário ter o papel do IAM de administrador de uso do serviço (
roles/serviceusage.serviceUsageAdmin), que contém a permissãoserviceusage.services.enable. Saiba como conceder papéis.
- Para criar um volume do Hyperdisk Balanced no modo confidencial, verifique se seu caso de uso é compatível consultando as limitações e regiões com suporte.
-
Configure a autenticação, caso ainda não tenha feito isso.
Com isso, você confirma sua identidade para acesso a serviços e APIs do Cloud de Confiance by S3NS . Para executar
códigos ou amostras de um ambiente de desenvolvimento local, autentique-se no
Compute Engine selecionando uma das seguintes opções:
Selecione a guia para como planeja usar as amostras nesta página:
Console
Quando você usa o console Cloud de Confiance para acessar serviços Cloud de Confiance by S3NS e APIs, não é necessário configurar a autenticação.
gcloud
-
Instale a Google Cloud CLI e faça login na CLI gcloud com sua identidade federada. Depois de fazer login, inicialize a Google Cloud CLI executando o seguinte comando:
gcloud init
-
- Defina uma região e uma zona padrão.
REST
Para usar as amostras da API REST nesta página em um ambiente de desenvolvimento local, use as credenciais fornecidas para CLI gcloud.
Instale a Google Cloud CLI e faça login na CLI gcloud com sua identidade federada.
Saiba mais em Autenticar para usar REST na documentação de autenticação do Cloud de Confiance .
Papéis e permissões necessárias
O agente de serviço do Compute Engine tem o seguinte formato:
service-PROJECT_NUMBER@compute-system.s3ns-system.iam.gserviceaccount.com
Use Google Cloud CLI para atribuir a função:
gcloud projects add-iam-policy-binding KMS_PROJECT_ID \
--member serviceAccount:service-PROJECT_NUMBER@compute-system.s3ns-system.iam.gserviceaccount.com \
--role roles/cloudkms.cryptoKeyEncrypterDecrypter
Substitua:
KMS_PROJECT_ID: o ID do seu projeto doCloud de Confiance que executa o Cloud KMS, mesmo que seja o mesmo projeto que executa o Compute Engine.PROJECT_NUMBER: o número (e não o ID do projeto Cloud de Confiance ) do projeto Cloud de Confiance que executa os recursos do Compute Engine.
Para garantir que o agente de serviço do Compute Engine tenha as permissões
necessárias para proteger recursos usando as chaves do Cloud KMS,
peça ao administrador para conceder o
papel do IAM Criptografador/descriptografador de CryptoKey do Cloud KMS (roles/cloudkms.cryptoKeyEncrypterDecrypter) ao agente de serviço do Compute Engine no seu projeto.
Esse papel predefinido contém as permissões necessárias para proteger recursos usando chaves do Cloud KMS. Para acessar as permissões exatas necessárias, expanda a seção Permissões necessárias:
Permissões necessárias
As seguintes permissões são necessárias para proteger recursos usando chaves do Cloud KMS:
-
Para alternar uma chave de criptografia que protege um disco:
compute.disks.updateKmsKey -
Para alternar uma chave de criptografia que protege um snapshot:
compute.snapshots.updateKmsKey
O administrador também pode conceder ao agente de serviço do Compute Engine essas permissões com papéis personalizados ou outros predefinidos.
Especificações de criptografia
As chaves do Cloud KMS usadas para ajudar a 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 que criptografam seus dados, não os dados em si.
Os dados nos discos são criptografados usando Google Cloud-powered encryption keys. Para conferir especificações relacionadas à criptografia padrão no Cloud de Confiance by S3NS, consulte Criptografia padrão em repouso na documentação de segurança.
Com o modo confidencial para Hyperdisk Balanced e Cloud HSM, a chave de criptografia de dados (DEK) tem propriedades de segurança adicionais com enclaves com suporte de hardware.
Limitações
Não é possível criptografar recursos atuais com CMEKs. Só é possível criptografar discos, imagens e snapshots com CMEKs quando você os cria.
Ao criar um disco a partir de um snapshot instantâneo criptografado por CMEK, é necessário especificar a chave usada para criptografar o disco de origem. Não é necessário especificar a chave ao trabalhar com outros recursos criptografados por CMEK, como clones de disco e snapshots padrão.
Ao criar um snapshot de escopo regional (prévia) de um disco criptografado com uma CMEK, crie o snapshot com uma CMEK regional que esteja no mesmo local que o snapshot. Isso garante o isolamento regional do snapshot e aumenta a confiabilidade dele.
Não é possível usar suas próprias chaves com discos SSD locais porque elas são gerenciadas pela infraestrutura do Cloud de Confiance by S3NS e excluídas quando a VM é encerrada.
Os recursos regionais (discos) só podem ser criptografados por uma chave em um dos seguintes locais do Cloud KMS:
- Uma chave na mesma região do disco.
- Uma chave multirregional no mesmo local geográfico do disco.
- Uma chave no local global.
Por exemplo, um disco na zona
us-west1-apode ser criptografado por uma chave no local global, na regiãous-west1ou na multirregiãous.Os recursos globais (como imagens e snapshots) podem ser criptografados por chaves em qualquer local. Para mais informações, consulte Tipos de locais do Cloud KMS.
Não é possível mudar ou remover a chave de criptografia de uma imagem ou Instant Snapshot.
Não é possível remover a chave de criptografia de um disco ou snapshot nem mudar a chave de uma CMEK para uma Google Cloud-powered key. Em vez disso, crie uma cópia do disco ou snapshot e especifique um novo tipo de criptografia para a cópia.
Para mais informações, consulte Remover a CMEK de um disco e Remover a CMEK de um snapshot.
Não é possível fazer a rotação ou mudar a CMEK de volumes do Hyperdisk confidenciais on-line ou de volumes do Hyperdisk on-line anexados a tipos de máquinas não compatíveis.
É possível alternar ou mudar a CMEK apenas nos seguintes tipos de disco:
- Todos os volumes de disco permanente
- Volumes do Hyperdisk criados com um Instant Snapshot
- Volumes do Hyperdisk off-line
- Volumes do Hyperdisk confidencial off-line
- Volumes do Hyperdisk on-line anexados a tipos de máquina de primeira ou segunda geração
Volumes on-line do Hyperdisk anexados aos seguintes tipos de máquina de terceira ou quarta geração:
- A3
- A4
- Z3
- H4D
- todas as versões de TPU
- Tipos de máquina bare metal A4X, C4, C4A, C4D, C3 e X4
Não é possível mudar a chave dos volumes do Hyperdisk criados por clonagem de um disco, a menos que você tenha excluído o disco de origem e todos os outros clones dele.
Criação manual ou automatizada de chaves
É possível criar chaves do Cloud KMS manualmente ou usar a chave automática do Cloud KMS. O Autokey simplifica a criação e o gerenciamento de chaves do Cloud KMS automatizando o provisionamento e a atribuição. Com ele, não é preciso provisionar keyrings, chaves e contas de serviço com antecedência. Em vez disso, eles são gerados sob demanda como parte da criação de recursos do Compute Engine. Para mais informações, consulte a Visão geral das chaves automáticas.
Criar um keyring e uma chave manualmente
Para o projeto Cloud de Confiance que executa o Cloud KMS, crie um keyring e uma chave, conforme descrito em Como criar keyrings e chaves.
Criptografar um novo disco permanente com a CMEK
É possível criptografar um novo disco permanente fornecendo uma chave durante a criação de uma instância ou disco.
Console
- No console do Cloud de Confiance , acesse a página Discos.
- Clique em Novo disco e insira as propriedades do novo disco.
- Em Criptografia, selecione Chave gerenciada pelo cliente.
- No menu suspenso, selecione a chave do Cloud KMS que você quer usar para criptografar o disco.
- Para criar o disco, clique em Criar.
gcloud
Crie um disco criptografado usando o comando gcloud compute disks create e especifique a chave usando a flag --kms-key.
gcloud compute disks create DISK_NAME \ --kms-key projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY
Substitua:
DISK_NAME: o nome do novo discoKMS_PROJECT_ID: o projeto proprietário da chave do Cloud KMS.REGION: a região em que a chave está localizada.KEY_RING: o nome do keyring que inclui a chaveKEY: o nome da chave usada para criptografar o disco
REST
Crie uma solicitação POST para o método instances.insert.
Para criptografar um disco, use a propriedade diskEncryptionKey com a propriedade kmsKeyName. Por exemplo, é possível criptografar um novo disco durante
a criação da VM com sua chave do Cloud KMS usando:
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:
PROJECT_ID: o ID do projetoCloud de Confiance que executa o Compute EngineZONE: a zona em que a VM será criadaMACHINE_TYPE: o tipo de máquina, por exemplo,c3-standard-4.KMS_PROJECT_ID: o projeto proprietário da chave do Cloud KMS.REGION: a região onde o disco está localizado.KEY_RING: o nome do keyring que inclui a chave.KEY: o nome da chave usada para criptografar o disco.SOURCE_IMAGE: a imagem a ser usada ao criar a VM, por exemplo,projects/debian-cloud/global/images/debian-11-bullseye-v20231115.
Da mesma forma, use o
método disks.insert
para criar um novo Persistent Disk independente e criptografá-lo com a
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:
PROJECT_ID: o ID do projetoCloud de Confiance que executa o Compute EngineZONE: a zona em que o disco será criadoSOURCE_IMAGE: a imagem a ser usada ao criar o disco, por exemplo,projects/debian-cloud/global/images/debian-11-bullseye-v20231115DISK_NAME: um nome para o novo discoKMS_PROJECT_ID: o projeto proprietário da chave do Cloud KMS.REGION: a região onde o disco está localizado.KEY_RING: o nome do keyring que inclui a chave.KEY: o nome da chave usada para criptografar o disco.DISK_TYPE: o tipo de disco a ser criado
Criar um disco do Hyperdisk Balanced no modo confidencial
É possível criar um novo disco Hyperdisk Balanced no modo confidencial com o console doCloud de Confiance , a Google Cloud CLI ou o REST. Para criar um disco que não esteja no modo confidencial, siga as etapas em Criar um Persistent Disk de um snapshot criptografado com a CMEK.
Console
- No console do Cloud de Confiance , acesse a página Discos.
- Clique em Novo disco e insira as propriedades do novo disco.
- Na seção Configurações de disco, escolha Hyperdisk Balanced como o tipo de disco.
- Opcional. Altere as configurações de Tamanho, IOPS provisionadas e Capacidade de processamento provisionada do disco padrão.
- Na seção Criptografia, selecione Chave do Cloud KMS.
- Na lista de chaves, selecione a chave do Cloud HSM que você quer usar para criptografar o disco.
- Na seção Computação confidencial, selecione Ativar serviços de Computação confidencial.
- Para criar o disco, clique em Criar.
gcloud
Criptografe um novo disco com o modo confidencial para o Hyperdisk Balanced usando o
comando gcloud compute disks create.
Ative o modo confidencial com a flag --confidential-compute e especifique
a chave usando 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:
DISK_NAME: o nome do novo disco.KMS_PROJECT_ID: o projeto proprietário da chave do Cloud HSM.REGION: a região em que a chave está localizada.KEY_RING: o nome do keyring que inclui a chaveKEY: o nome da chave usada para criptografar o disco
REST
Crie uma solicitação POST para o método instances.insert.
Para criptografar 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, é possível criptografar um novo disco durante
a criação da VM com sua chave do Cloud HSM usando:
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:
DISK_TYPE: o tipo de disco a ser criado, por exemplo,hyperdisk-balanced.PROJECT_ID: o ID do Cloud de Confiance projeto que executa o Compute EngineZONE: a zona em que a VM será criadaMACHINE_TYPE: o tipo de máquina, por exemplo,n2d-standard-4.KMS_PROJECT_ID: o projeto proprietário da chave do Cloud HSM.REGION: a região onde o disco está localizado.KEY_RING: o nome do keyring que inclui a chaveKEY: o nome da chave usada para criptografar o discoSOURCE_IMAGE: a imagem que oferece suporte à VM confidencial a ser usada ao criar a VM, por exemplo,projects/debian-cloud/global/images/debian-11-bullseye-v20231115.
Da mesma forma, use 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:
PROJECT_ID: o ID do projetoCloud de Confiance que executa o Compute EngineZONE: a zona em que o disco será criadoSOURCE_IMAGE: a imagem que oferece suporte à VM confidencial ao criar o disco, por exemplo,projects/debian-cloud/global/images/debian-11-bullseye-v20231115.DISK_NAME: um nome para o novo discoKMS_PROJECT_ID: o projeto proprietário da chave do Cloud HSM.REGION: a região onde o disco está localizado.KEY_RING: o nome do keyring que inclui a chave.KEY: o nome da chave usada para criptografar o disco.DISK_TYPE: o tipo de disco a ser criado, por exemplo,hyperdisk-balanced.
Criar um snapshot a partir de um disco criptografado com a CMEK
Para criar um snapshot de um disco criptografado com CMEK, use a mesma chave de criptografia usada para criptografar o disco.
Não é possível criar um snapshot que use uma CMEK, a menos que o disco de origem também use CMEK. Além disso, não é possível converter discos ou snapshots criptografados por CMEKs para usar a criptografia padrão doCloud de Confiance by S3NS , a menos que você crie uma imagem de disco completamente nova e um novo disco permanente.
Os snapshots de discos criptografados com CMEK são incrementais.
Console
- No console do Cloud de Confiance , acesse a página Backups.
- Clique em Criar snapshot.
- Em disco de origem, escolha o disco de origem para o instantâneo. O snapshot é criptografado automaticamente com a mesma chave usada pelo disco de origem.
gcloud
Para criptografia gerenciada pelo cliente, a chave do Cloud KMS que foi usada para criptografar o disco também é usada para criptografar o snapshot.
Crie o snapshot na política de local de armazenamento definida pelas configurações do snapshot ou usando um local de armazenamento alternativo de sua escolha. Para mais informações, consulte Escolher o local de armazenamento dos snapshots.
Para criar um snapshot no local padrão predefinido ou personalizado definido nas configurações do snapshot, 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-
Como alternativa, para substituir as configurações de snapshot e criar um snapshot em um local de armazenamento personalizado, inclua a flag
--storage-locationpara indicar onde ele deve ser armazenado: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évia: para criar um snapshot com escopo regional em uma região permitida, inclua a flag
--regionpara indicar onde ele deve ser criado.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:
- SNAPSHOT_NAME: um nome para o snapshot.
- SOURCE_ZONE: a zona do disco de origem.
- SOURCE_DISK_NAME: o nome do volume de disco a partir do qual você quer criar um snapshot.
- KMS_PROJECT_ID: o projeto que contém a chave de criptografia armazenada no Cloud Key Management Service.
- KEY_REGION: a região onde a chave do Cloud KMS está localizada.
- KEY_RING: o nome do keyring que contém a chave do Cloud KMS.
- SNAPSHOT_KEY: o nome da chave do Cloud KMS que você usou para criptografar o disco de origem.
- SNAPSHOT_TYPE: o tipo de snapshot, que é STANDARD ou
ARCHIVE.
Se um tipo de snapshot não for especificado, um snapshot
STANDARDserá criado. -
STORAGE_LOCATION (opcional): para snapshots com escopo global, a multirregião do Cloud Storage ou a região do Cloud Storage em que você quer armazenar o snapshot. É possível especificar apenas um local de armazenamento.
Use o parâmetro
--storage-locationsomente quando quiser substituir o local de armazenamento padrão predefinido ou personalizado que está definido nas configurações de snapshot. -
SNAPSHOT_SCOPE_REGION: opcional: para snapshots com escopo regional, a região em que o snapshot está no escopo. Se você incluir esse parâmetro, não poderá usar o parâmetro
--storage-location. O STORAGE_LOCATION é definido automaticamente como SNAPSHOT_SCOPE_REGION.
REST
Crie o snapshot na política de local de armazenamento definida pelas configurações do snapshot ou usando um local de armazenamento alternativo de sua escolha. Para mais informações, consulte Escolher o local de armazenamento dos snapshots.
-
Para criar o snapshot no local padrão predefinido ou personalizado configurado nas configurações de snapshot, faça uma solicitação
POSTpara o métodosnapshots.insert.POST https://compute.s3nsapis.fr/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" } -
Como alternativa, para substituir as configurações de snapshot e criar um snapshot em um local de armazenamento personalizado, faça uma solicitação
POSTao métodosnapshots.inserte inclua nela a propriedadestorageLocations:POST https://compute.s3nsapis.fr/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évia) Para criar um snapshot regional em uma região permitida, faça uma solicitação
POSTao métodosnapshots.inserte defina a região de criação:POST https://compute.s3nsapis.fr/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:
- DESTINATION_PROJECT_ID: o ID do projeto em que você quer criar o snapshot.
- SNAPSHOT_NAME: um nome para o snapshot.
- SOURCE_PROJECT_ID: o ID do projeto de disco de origem.
- SOURCE_ZONE: a zona do disco de origem.
- SOURCE_DISK_NAME: o nome do disco a partir do qual você quer criar um snapshot.
- KMS_PROJECT_ID: o projeto que contém a chave de criptografia armazenada no Cloud Key Management Service.
- KEY_REGION: a região onde a chave do Cloud KMS está localizada.
- KEY_RING: o nome do keyring que contém a chave do Cloud KMS.
- SNAPSHOT_KEY: o nome da chave do Cloud KMS que você usou para criptografar o disco de origem.
- SNAPSHOT_TYPE: o tipo de snapshot, que é STANDARD ou
ARCHIVE.
Se um tipo de snapshot não for especificado, um snapshot
STANDARDserá criado. -
STORAGE_LOCATION (opcional): para snapshots com escopo global, a multirregião do Cloud Storage ou a região do Cloud Storage em que você quer armazenar o snapshot. É possível especificar apenas um local de armazenamento.
Use o parâmetro
storageLocationssomente quando quiser substituir o local de armazenamento padrão predefinido ou personalizado que está definido nas configurações de snapshot. SNAPSHOT_SCOPE_REGION (opcional): para snapshots com escopo regional, a região em que o snapshot está no escopo. Se você incluir esse parâmetro, não poderá usar o parâmetro
storageLocations. O STORAGE_LOCATION é definido automaticamente como SNAPSHOT_SCOPE_REGION.
Criptografar uma imagem importada com a CMEK
É possível criptografar uma nova imagem ao importar uma imagem personalizada para o Compute Engine. Antes de importar uma imagem, é necessário criar e compactar um arquivo de imagem de disco e fazer upload desse arquivo para o Cloud Storage.
Console
- No console do Cloud de Confiance , acesse a página Imagens.
- Clique em Criar imagem.
- Em disco de origem, selecione o disco do qual quer criar uma imagem.
- Em Criptografia, selecione Chave gerenciada pelo cliente.
- No menu suspenso, selecione a chave do Cloud KMS que você quer usar para criptografar essa imagem.
- Continue com o processo de criação da imagem.
gcloud
Para importar e criptografar uma imagem, use o
comando gcloud compute images create.
Para criptografia gerenciada 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:
IMAGE_NAME: o nome da imagem que você está criandoSOURCE_DISK: o nome do disco para criar um snapshotKMS_PROJECT_ID: o projeto que contém a chave do Cloud KMSREGION: a região em que a chave do Cloud KMS está localizadaKEY_RING: o keyring que contém a chave do Cloud KMSKEY: o nome da chave a ser usada para criptografar o novo disco
REST
Para criptografar uma imagem importada, crie uma solicitação POST para o
método images.insert.
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://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:
PROJECT_ID: o projeto em que a imagem criptografada será criadaIMAGE_NAME: o nome da imagem que você está criandoKMS_PROJECT_ID: o projeto que contém a chave do Cloud KMSREGION: a região em que a chave do Cloud KMS está localizadaKEY_RING: o keyring que contém a chave do Cloud KMSKEY: o nome da chave que você usou para criptografar o disco de origem
Criar um disco a partir de um snapshot criptografado com a CMEK
Para criar um disco com base em um snapshot criptografado, faça o seguinte:
Console
- No console do Cloud de Confiance , acesse a página Discos.
- Clique em Novo disco e insira as propriedades do novo disco.
- Em Tipo de origem, selecione o snapshot ou a imagem que você quer usar.
Opcional: para definir uma nova chave de criptografia, em Criptografia, especifique o tipo de chave a ser usada e forneça as informações da chave.
Se você quiser remover a chave de criptografia gerenciada ou fornecida pelo cliente, em Criptografar, use o valor padrão Google Cloud-powered encryption key.
Continue com o processo de criação do disco.
gcloud
Para criar um disco com base em um snapshot criptografado de escopo 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évia) Para criar um disco com base em um snapshot criptografado de escopo regional, use o comando
gcloud compute disks createe especifique a região do snapshot 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:
DISK_NAME: o nome do novo discoSNAPSHOT_NAME: o nome do snapshot criptografado.Para usar uma imagem em vez de um snapshot, substitua
--source-snapshot SNAPSHOT_NAMEpor--image IMAGE_NAME.KMS_PROJECT_ID(opcional): o projeto que contém a chave do Cloud KMS.REGION(opcional): a região em que a chave do Cloud KMS está localizadaSOURCE_REGION: a região em que o snapshot de origem está no escopoZONE: a zona em que o novo disco vai residirKEY_RING(opcional): o keyring que contém a chave do Cloud KMSKEY(opcional): o nome da chave do Cloud KMS a ser usada para criptografar o novo discoPara criptografar o novo disco, siga um destes procedimentos:
- Para especificar uma nova chave de criptografia gerenciada pelo cliente, use a
flag
--kms-key. - Para usar o Google Cloud-powered encryption keypadrão, não inclua a
flag
--kms-key.
- Para especificar uma nova chave de criptografia gerenciada pelo cliente, use a
flag
REST
Para criar um disco com base em um snapshot criptografado de escopo global, crie uma solicitação
POSTpara o métodocompute.disks.insert. Use a propriedadesourceSnapshotpara especificar o snapshot.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" } }(Visualização) Para criar um disco com base em um snapshot criptografado de escopo regional, crie uma solicitação
POSTpara o métodocompute.disks.insert. Use a propriedadesourceSnapshotpara especificar o snapshot.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:
PROJECT_ID: o projeto em que o novo disco será criadoZONE: a zona em que o novo disco será criadoSOURCE_REGION: a região em que o snapshot de origem está no escopoDISK_NAME: o nome do novo discoDISK_TYPE: o URL completo ou parcial do tipo do disco, por exemplo,PROJECT_ID/zones/ZONE/diskTypes/pd-ssdSNAPSHOT_PROJECT_ID: o projeto que contém o snapshotSNAPSHOT_NAME: o nome do snapshot criptografadoPara usar uma imagem em vez de um snapshot, substitua
sourceSnapshotporsourceImage.KMS_PROJECT_ID(opcional): o projeto que contém a chave do Cloud KMS.REGION(opcional): a região em que a chave do Cloud KMS está localizadaKEY_RING(opcional): o keyring que contém a chave do Cloud KMSKEY(opcional): o nome da chave do Cloud KMS a ser usada para criptografar o novo discoSe você incluir
diskEncryptionKey, o disco será criptografado com a chave do Cloud KMS especificada. Se você não incluirdiskEncryptionKey, o disco será criptografado usando um Google Cloud-powered encryption key.
Como anexar um disco de inicialização criptografado com a CMEK a uma nova VM
Console
No console do Cloud de Confiance , acesse a página Criar uma instância.
Especifique os detalhes da VM e, na seção Disco de inicialização, clique em Alterar. Em seguida, faça o seguinte:
- Clique em discos existentes.
- Na lista Disco, selecione um disco existente para anexar à VM.
- Clique em Selecionar.
Continue com o processo de criação da VM.
gcloud
Para anexar um disco criptografado ao criar uma nova VM, use o
comando gcloud compute instances create.
Use a flag --disk para especificar o disco de inicialização criptografado, conforme mostrado no
exemplo a seguir:
gcloud compute instances create VM_NAME \ ... --disk name=DISK_NAME,boot=yes
Substitua:
VM_NAME: o nome da VM que você está criandoDISK_NAME: o nome do disco criptografado
REST
Crie uma solicitação POST para o método compute.instances.insert.
Use a propriedade disks para especificar o disco de inicialização criptografado, conforme mostrado no exemplo a seguir:
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:
PROJECT_ID: o projeto em que a nova VM será criada.ZONE: zona em que a VM será criadaDISK_ALIAS: um nome de dispositivo exclusivo a ser usado como o alias de disco no diretório/dev/disk/by-id/google-*da VM que executa um sistema operacional Linux. Esse nome pode ser usado para fazer referência ao disco em operações como montagem ou redimensionamento na instância. Se você não especificar um nome de dispositivo, a VM escolherá um nome de dispositivo padrão para aplicar a esse disco, no formatopersistent-disk-x, em quexé um número atribuído pelo no Compute Engine. Esse campo só é aplicável a volumes do Persistent Disk.DISK_NAME: o nome do disco criptografado
Girar a CMEK de um disco ou snapshot
Para reduzir as possíveis consequências da violação da sua chave, recomendamos que você faça a rotação das chaves de criptografia do Cloud KMS regularmente usando um dos seguintes métodos.
gcloud
Para fazer a rotação da chave do Cloud KMS usada para criptografar um disco, um snapshot de arquivamento ou um snapshot padrão para uma nova versão de chave, use o
comando gcloud compute disks update-kms-key
ou
comando gcloud compute snapshots update-kms-key.
Para alternar a versão da chave que criptografa um disco:
gcloud compute disks update-kms-key DISK_NAME \ --zone ZONE
Para alternar a versão da chave que criptografa um snapshot padrão:
gcloud compute snapshots update-kms-key SNAPSHOT_NAME
Substitua:
DISK_NAME: o nome do disco criptografadoZONE: a zona em que o disco criptografado está localizadoSNAPSHOT_NAME: o nome do snapshot criptografado.
REST
Para fazer a rotação da chave do Cloud KMS usada para criptografar um disco, um snapshot arquivado ou um snapshot padrão para uma nova versão de chave, crie uma solicitação PATCH para o método compute.disks.updateKmsKey ou compute.snapshots.updateKmsKey.
Para alternar a versão da chave que criptografa um disco zonal:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/disks/DISK_NAME/updateKmsKey
Para alternar a versão da chave que criptografa um disco regional:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/disks/DISK_NAME/updateKmsKey
Para alternar a versão da chave que criptografa um snapshot padrão de escopo global:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/snapshots/SNAPSHOT_NAME/updateKmsKey
(Visualização) Para fazer a rotação da versão da chave que criptografa um snapshot padrão com escopo regional:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/snapshots/SNAPSHOT_NAME/updateKmsKey
Substitua:
PROJECT_ID: o projeto em que o disco ou snapshot criptografado está localizadoZONE: a zona em que o disco criptografado está localizadoREGION: a região em que o disco regional ou snapshot de escopo regional está localizadoDISK_NAME: o nome do disco criptografadoSNAPSHOT_NAME: o nome do snapshot criptografado.REGION: a região em que o disco regional ou snapshot de escopo regional está localizado
A resposta vai incluir um item name com um valor de operação que
representa a rotação de chaves:
"name": "operation-YYYYYYYYYYYYY-YYYYYYYYYYYYY-YYYYYYYY-YYYYYYYY"
Em seguida, pesquise o status da operação para determinar se a chamada de API
foi bem-sucedida fazendo uma solicitação GET:
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/operations/OPERATION_NAME
Substitua:
PROJECT_ID: o projeto em que o disco ou snapshot criptografado está localizadoZONE: a zona em que o disco criptografado está localizadoOPERATION_NAME: o nome da operação de rotação da CMEK, no formatooperation-YYYYYYYYYYYYY-YYYYYYYYYYYYY-YYYYYYYY-YYYYYYYY
A resposta vai incluir um valor progress que representa o status da rotação de chaves. Quando progress é 100, a operação foi concluída.
A rotação de chaves não desativa nem exclui versões anteriores. Para mais informações, consulte Depois de fazer a rotação de chaves.
Mudar a CMEK de um disco ou snapshot
É possível mudar a criptografia de um disco, um snapshot de arquivamento ou um instantâneo padrão para uma CMEK diferente (por exemplo, durante uma migração de projeto ou para atender a novos requisitos de compliance) sem tempo de inatividade.
A mudança da CMEK criptografa novamente a chave de criptografia de dados (DEK) do recurso com a nova chave. Esse processo não muda a DEK e não afeta o desempenho das cargas de trabalho em execução.
Para mudar a chave do Cloud KMS, use a CLI gcloud ou REST.
gcloud
Para mudar a chave do Cloud KMS de um disco ou snapshot padrão, use
a flag --kms-key com o
comando gcloud compute disks update-kms-key
ou
comando gcloud compute snapshots update-kms-key.
Para mudar a chave de um disco zonal:
gcloud compute disks update-kms-key DISK_NAME \ --kms-key=projects/KEY_PROJECT_ID/locations/global/keyRings/KEY_RING/cryptoKeys/NEW_KEY_NAME \ --zone=ZONE
Para mudar a chave de um disco regional:
gcloud compute disks update-kms-key DISK_NAME \ --kms-key=projects/KEY_PROJECT_ID/locations/global/keyRings/KEY_RING/cryptoKeys/NEW_KEY_NAME \ --region=REGION
Para mudar a chave de um snapshot global:
gcloud compute snapshots update-kms-key SNAPSHOT_NAME \ --kms-key=projects/KEY_PROJECT_ID/locations/global/keyRings/KEY_RING/cryptoKeys/NEW_KEY_NAME
Para mudar a chave de um snapshot com escopo regional:
gcloud beta compute snapshots update-kms-key SNAPSHOT_NAME \ --kms-key=projects/KEY_PROJECT_ID/locations/global/keyRings/KEY_RING/cryptoKeys/NEW_KEY_NAME \ --regions=REGION
Substitua:
DISK_NAME: o nome do disco criptografado.NEW_KMS_KEY: o ID completo do recurso da nova CMEK.ZONE: a zona em que o disco está localizado.REGION: a região em que o disco ou snapshot está localizado.SNAPSHOT_NAME: o nome do snapshot criptografado.
REST
Para mudar a chave, envie uma solicitação POST para o
método compute.disks.updateKmsKey
ou
método compute.snapshots.updateKmsKey
e inclua o kmsKeyName no corpo da solicitação.
Para mudar a chave de um disco zonal:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/disks/DISK_NAME/updateKmsKey { "kmsKeyName": "projects/KEY_PROJECT_ID/locations/global/keyRings/KEY_RING/cryptoKeys/NEW_KEY_NAME" }Para mudar a chave de um disco regional:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/disks/DISK_NAME/updateKmsKey { "kmsKeyName": "projects/KEY_PROJECT_ID/locations/global/keyRings/KEY_RING/cryptoKeys/NEW_KEY_NAME" }Para mudar a chave de um snapshot global:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/snapshots/SNAPSHOT_NAME/updateKmsKey { "kmsKeyName": "projects/KEY_PROJECT_ID/locations/global/keyRings/KEY_RING/cryptoKeys/NEW_KEY_NAME" }Para mudar a chave de um snapshot com escopo regional:
POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/regions/REGION/snapshots/SNAPSHOT_NAME/updateKmsKey { "kmsKeyName": "projects/KEY_PROJECT_ID/locations/global/keyRings/KEY_RING/cryptoKeys/NEW_KEY_NAME" }
Substitua:
PROJECT_ID: o projeto que contém o disco ou snapshot.ZONE: a zona em que o disco está localizado.REGION: a região em que o disco ou snapshot está localizado.DISK_NAME: o nome do disco.NEW_KEY_NAME: o nome da nova CMEK.SNAPSHOT_NAME: o nome do snapshot criptografado.
Remover a CMEK de um disco
Não é possível remover uma CMEK de um disco ou mudar o tipo da chave de criptografia. Você tem estas três opções:
Descriptografe o conteúdo de um disco criptografado com CMEK e crie um novo disco que use a criptografia padrão do Cloud de Confiance by S3NS . Por padrão,o Cloud de Confiance by S3NS criptografa todos os dados em repouso.
Para criar um disco que usa Google Cloud-powered key de um disco criptografado com CMEK, siga estas etapas:
- Crie um snapshot do disco de inicialização.
- Use o novo snapshot criptografado para criar um novo disco.
Depois de criar o novo disco, a criptografia padrão do Cloud de Confiance by S3NS será usada para proteger o conteúdo do disco. Todos os snapshots criados a partir desse disco também precisarão usar a criptografia padrão.
Remover a CMEK de um snapshot
Não é possível remover uma CMEK de um snapshot nem mudar o tipo da chave de criptografia. É possível mudar o snapshot para usar uma CMEK diferente ou criar uma cópia dele e criptografar a cópia com um Google Cloud-powered key.
Para criar um snapshot que use Google Cloud-powered key de um snapshot criptografado com CMEK, siga estas etapas:
Crie um disco com base no snapshot. Ao criar o novo disco, selecione o tipo de criptografia desejado.
Crie um snapshot do novo disco:
Se o novo disco estiver criptografado com uma CMEK, consulte Criar um disco a partir de um snapshot criptografado com a CMEK.
Se o novo disco estiver criptografado com um Google Cloud-powered key, consulte Criar snapshots de disco.
Desativar ou destruir uma CMEK
Se você não precisar mais de uma CMEK ou quiser impedir o uso dela, desative ou destrua a chave. Excluir, desativar ou remover permissões do IAM em uma chave também é chamado de revogação da chave.
Impacto da revogação de chaves em recursos criptografados
Quando você revoga uma chave de criptografia, os recursos protegidos por ela são afetados da seguinte maneira:
- Não é possível inicializar uma VM se algum dos discos anexados tiver chaves revogadas.
- Se um disco que usa a chave estiver anexado a uma VM em execução e você tiver ativado o encerramento da VM na revogação de chaves para a VM, o Compute Engine vai encerrar a VM em até 7 horas.
- Não é possível anexar um disco com uma chave revogada a uma VM nem criar um snapshot com base no disco.
- Não é possível usar imagens ou snapshots criptografados com chaves revogadas para criar discos.
Se você desativar a chave, poderá reverter os efeitos anteriores ativando-a. Se você destruir a chave, não poderá reverter os efeitos anteriores.
Configurar o encerramento da VM na revogação de chave do Cloud KMS
Você pode configurar sua VM para ser encerrada automaticamente quando revogar a chave do Cloud KMS que está ajudando a proteger um disco anexado à VM. É possível revogar uma chave desativando-a ou excluindo-a. Com essa configuração ativada, a VM é encerrada dentro de sete horas após a revogação da chave.
Se você ativar a chave novamente, reinicie a VM com o disco anexado que ela ajuda a proteger. A VM não é reiniciada automaticamente depois que você ativa a chave.
Console
Para configurar o encerramento da VM quando uma chave do Cloud KMS é revogada, faça o seguinte:
- Comece a criar uma VM que inclua um disco protegido por uma chave do Cloud KMS.
- Abra a seção Rede, discos, segurança, gerenciamento, locação individual.
- Expanda a seção Gerenciamento.
- Em Política de revogação da chave de criptografia gerenciada pelo cliente (CMEK), selecione Encerrar.
gcloud
Use o comando gcloud compute instances create para criar uma VM e inclua --key-revocation-action-type=stop.
gcloud compute instances createVM_NAME\ --imageIMAGE\ --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 a seguir 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"
}
Também é possível configurar um modelo de instância para criar VMs que são encerradas na revogação de chave usando a CLI do Google Cloud ou REST.
Console
É possível usar um modelo de instância para criar VMs que são encerradas quando uma chave do Cloud KMS é revogada.
- Comece a criar um novo modelo de instância que inclua um disco protegido por uma chave do Cloud KMS.
- Abra a seção Rede, discos, segurança, gerenciamento, locação individual.
- Expanda a seção Gerenciamento.
- Em Política de revogação da chave de criptografia gerenciada pelo cliente (CMEK), selecione Encerrar.
gcloud
Crie um modelo de instância usando 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
Envie uma solicitação POST ao método instanceTemplates.insert.
No corpo da solicitação, é preciso definir explicitamente todos os campos de configuração necessários. Se você 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 o mínimo de
campos obrigatórios que criará VMs que encerram na revogação da chave é
semelhante ao seguinte:
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 encerrar com a revogação do Cloud KMS, crie e anexe um Persistent Disk criptografado com uma chave do Cloud KMS.
A seguir
- Saiba mais sobre a criptografia de disco.