Proteja recursos usando chaves do Cloud KMS


Este documento fornece informações sobre como usar chaves Cloud KMS do Cloud Key Management Service 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) .

Você pode usar CMEKs para criptografar recursos do Compute Engine, como discos , imagens de máquina , instantâneos e instantâneos padrão .

Para saber mais sobre como usar chaves de criptografia fornecidas pelo cliente (CSEKs) para criptografar discos e outros recursos de armazenamento, consulte Criptografando discos com chaves de criptografia fornecidas pelo cliente .

Saiba mais sobre criptografia de disco .

Antes de começar

  • Entenda discos , imagens , snapshots de discos permanentes e instâncias de máquinas virtuais (VM) .
  • Decida se você executará o Compute Engine e o Cloud KMS no mesmo Google Cloud projeto, ou em projetos diferentes. Para obter informações sobre IDs e números de projetos do Google Cloud, consulte Identificação de projetos .
  • Para o projeto do Google Cloud que executa o Cloud KMS, faça o seguinte:
    1. Enable the Cloud KMS API.

      Enable the API

  • + Se você deseja criar um novo volume balanceado de hiperdisco no modo confidencial, certifique-se de que seu caso de uso seja compatível revisando as limitações relevantes e as regiões suportadas .
  • Se ainda não o fez, configure a autenticação. Autenticação é o processo pelo qual sua identidade é verificada para acesso a Google Cloud serviços e APIs. Para executar códigos ou amostras em um ambiente de desenvolvimento local, você pode se autenticar 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. After installing the Google Cloud CLI, initialize it by running the following command:

      gcloud init

      If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

    2. Set a default region and zone.
    3. REST

      Para usar as amostras da API REST nesta página em um ambiente de desenvolvimento local, use as credenciais fornecidas para gcloud CLI.

        After installing the Google Cloud CLI, initialize it by running the following command:

        gcloud init

        If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

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

Funções obrigatórias

Para garantir que o agente de serviço do Compute Engine tenha as permissões necessárias para proteger recursos usando chaves do Cloud KMS, peça ao administrador para conceder ao agente de serviço do Compute Engine o papel do IAM CryptoKey Encrypter/Decrypter do Cloud KMS ( roles/cloudkms.cryptoKeyEncrypterDecrypter ) no seu projeto.

Para obter mais informações sobre a concessão de funções, consulte Gerenciar acesso a projetos, pastas e organizações .

Seu administrador também poderá conceder ao agente de serviço do Compute Engine as permissões necessárias por meio 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

Você pode usar a CLI do Google Cloud 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 do Google Cloud que executa o Cloud KMS (mesmo que este seja o mesmo projeto que executa o Compute Engine)
  • PROJECT_NUMBER : o número do projeto (não o ID do projeto do Google Cloud) do seu projeto do Google Cloud que executa os recursos do Compute Engine

Especificações de criptografia

As chaves do Cloud KMS usadas para ajudar a proteger seus dados no Compute Engine são chaves AES-256. Essas chaves são chaves de criptografia de chave e 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-owned and Google-managed encryption keys. Para especificações relacionadas à criptografia padrão em Google Cloud, 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) possui propriedades de segurança adicionais com enclaves apoiados por hardware.

Limitações

  • Não é possível criptografar recursos existentes com CMEKs. Você só pode criptografar discos, imagens e snapshots com CMEKs ao criá-los.

  • Ao criar um disco a partir de um instantâneo criptografado por CMEK, você deve especificar a chave usada para criptografar o disco de origem. Você não precisa especificar a chave ao trabalhar com outros recursos criptografados por CMEK, como clones de disco e snapshots padrão.

  • ( Visualização ) Ao criar um snapshot com escopo regional a partir de um disco criptografado com CMEK, você deverá criar o snapshot com uma CMEK regional que esteja no mesmo local do snapshot. Isso garante o isolamento regional do seu instantâneo e aumenta a confiabilidade do seu instantâneo.

  • Você não pode usar suas próprias chaves com discos SSD locais porque as chaves são gerenciadas por Google Cloud infraestrutura e excluído quando a VM for 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 na mesma localização geográfica do disco
    • Uma chave na localização global.

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

    Recursos globais (como imagens e instantâneos) podem ser criptografados por chaves em qualquer local. Para obter mais informações, consulte Tipos de locais para Cloud KMS .

  • A criptografia de um disco, instantâneo ou imagem com uma chave é permanente. Não é possível remover a criptografia do recurso, alterar o tipo de criptografia ou alterar a chave usada. A única maneira de remover a criptografia ou alterar as chaves de criptografia é criar uma cópia do recurso enquanto especifica uma nova opção de criptografia. Por exemplo, para alterar um disco de chaves geradas pelo Google para CMEKs, siga estas etapas:

    1. Crie um instantâneo do disco .
    2. Crie um novo disco a partir do instantâneo . Ao criar o novo disco, selecione o tipo de criptografia desejado.

    Para obter mais informações, consulte Alterar o tipo de um disco .

Criação manual ou automatizada de chaves

Você pode criar chaves do Cloud KMS manualmente ou usar o Cloud KMS Autokey. O Autokey simplifica a criação e o gerenciamento de chaves do Cloud KMS, automatizando o provisionamento e a atribuição. Com o Autokey, você não precisa provisionar keyrings, chaves e contas de serviço antecipadamente. Em vez disso, eles são gerados sob demanda como parte da criação de recursos do Compute Engine. Para obter mais informações, consulte a visão geral do Autokey .

Criar chaveiro e chave manualmente

Para o projeto do Google Cloud que executa o Cloud KMS, crie um keyring e uma chave conforme descrito em Como criar keyrings e chaves .

Criptografe um novo disco permanente com CMEK

Você pode criptografar um novo disco permanente fornecendo uma chave durante a criação da VM ou do disco.

Console

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

    Vá para discos

  2. Clique em Criar disco e insira as propriedades do novo disco.
  3. Em Criptografia , selecione Chave gerenciada pelo cliente .
  4. No menu suspenso, selecione a chave do Cloud KMS que você deseja usar para criptografar este disco.
  5. 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 sinalização --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 possui 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 criptografar o disco

DESCANSAR

Construa uma solicitação POST para o método instances.insert . Para criptografar um disco, use a propriedade diskEncryptionKey com a propriedade kmsKeyName . Por exemplo, você pode criptografar um novo disco durante a criação da VM com sua chave do Cloud KMS usando o 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 do Google Cloud que executa o Compute Engine
  • ZONE : a zona para criar a VM
  • MACHINE_TYPE : o tipo de máquina, por exemplo c3-standard-4
  • KMS_PROJECT_ID : o projeto que possui 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 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, você pode usar o método disks.insert para criar um novo disco permanente independente e criptografá-lo com 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 do Google Cloud que executa o Compute Engine
  • ZONE : a zona para criar o disco
  • SOURCE_IMAGE : a imagem a ser usada 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 possui 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 criptografar o disco
  • DISK_TYPE : o tipo de disco a ser criado

Crie um disco balanceado de hiperdisco no modo confidencial

Você pode criar um novo disco balanceado de hiperdisco no modo confidencial com o console do Google Cloud, Google Cloud CLI ou REST. Para criar um disco que não esteja no modo confidencial, siga as etapas em Criar um disco permanente a partir de um snapshot criptografado com CMEK .

Console

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

    Vá para discos

  2. Clique em Criar disco e insira as propriedades do novo disco.
  3. Na seção Configurações de disco , escolha Hiperdisco balanceado para o tipo de disco.
  4. Opcional. Altere as configurações padrão de tamanho do disco, IOPS provisionadas e taxa de transferência provisionada para o disco.
  5. Na seção Criptografia , selecione Chave do Cloud KMS .
  6. Na lista de chaves, selecione a chave do Cloud HSM que você deseja usar para criptografar este disco.
  7. Na seção Computação Confidencial , selecione Habilitar serviços de Computação Confidencial .
  8. Para criar o disco, clique em Criar .

gcloud

Criptografe um novo disco com o modo confidencial para hiperdisco balanceado usando o comando gcloud compute disks create . Habilite o modo confidencial com o sinalizador --confidential-compute e especifique a chave usando o sinalizador --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 possui 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 criptografar o disco

DESCANSAR

Construa uma solicitação POST para o método instances.insert . Para criptografar um disco com o modo Confidencial para Hyperdisk Balanced, use a propriedade diskEncryptionKey com a propriedade kmsKeyName e configure o sinalizador enableConfidentialCompute . Por exemplo, você pode criptografar um novo disco durante a criação da VM com sua chave do Cloud HSM usando o 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 ser criado, por exemplo, hyperdisk-balanced
  • PROJECT_ID : o ID do projeto do Google Cloud que executa o Compute Engine
  • ZONE : a zona para criar a VM
  • MACHINE_TYPE : o tipo de máquina, por exemplo n2d-standard-4
  • KMS_PROJECT_ID : o projeto que possui 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 criptografar o disco
  • SOURCE_IMAGE : a imagem que suporta VM Confidencial a ser usada ao criar a VM, por exemplo, projects/debian-cloud/global/images/debian-11-bullseye-v20231115

Da mesma forma, você pode usar o método disks.insert para criar um novo modo Confidencial para 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 do Google Cloud que executa o Compute Engine
  • ZONE : a zona para criar o disco
  • SOURCE_IMAGE : a imagem que suporta VM confidencial 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 possui 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 criptografar o disco
  • DISK_TYPE : o tipo de disco a ser criado, por exemplo, hyperdisk-balanced .

Crie um snapshot de um disco criptografado com CMEK

Para ajudar a proteger um snapshot criado a partir de um disco criptografado com CMEK, você deve usar 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 CMEK para usoGoogle Cloud criptografia padrão, 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

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

    Vá para Instantâneos

  2. Clique em Criar instantâneo .
  3. Em Disco de origem , escolha o disco de origem do snapshot. O instantâneo é criptografado automaticamente com a mesma chave usada pelo disco de origem.

gcloud

Para criptografia gerenciada pelo cliente, a chave do Cloud KMS usada para criptografar o disco também é usada para criptografar o snapshot.

Você pode criar seu instantâneo na política de local de armazenamento definida pelas configurações de instantâneo ou usando um local de armazenamento alternativo de sua escolha. Para obter mais informações, consulte Escolha o local de armazenamento do snapshot .

  • Para criar um snapshot no local padrão predefinido ou personalizado configurado 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
    
  • Alternativamente, para substituir as configurações de snapshot e criar um snapshot em um local de armazenamento personalizado, inclua o sinalizador --storage-location para indicar onde armazenar seu snapshot.

    gcloud compute snapshots create SNAPSHOT_NAME \
        --source-disk-zone=SOURCE_ZONE \
        --source-disk=SOURCE_DISK_NAME \
        --snapshot-type=SNAPSHOT_TYPE \
        --storage-location=STORAGE_LOCATION
    
  • ( Visualização ) Para criar um instantâneo com escopo regional em uma região permitida, inclua o sinalizador --region para indicar onde criar seu 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 instantâneo.
  • SOURCE_ZONE : a zona do disco de origem.
  • SOURCE_DISK_NAME : o nome do volume de disco a partir do qual você deseja criar um instantâneo.
  • 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 usada para criptografar o disco de origem.
  • SNAPSHOT_TYPE : o tipo de instantâneo, STANDARD ou ARCHIVE . Se um tipo de instantâneo não for especificado, um instantâneo STANDARD será criado.
  • STORAGE_LOCATION : opcional: para snapshots com escopo global, a multirregião do Cloud Storage ou a região do Cloud Storage onde você deseja armazenar o snapshot. Você pode especificar apenas um local de armazenamento.

    Use o parâmetro --storage-location somente quando desejar substituir o local de armazenamento padrão predefinido ou customizado configurado nas configurações do snapshot.

  • SNAPSHOT_SCOPE_REGION : Opcional: para capturas instantâneas com escopo regional, a região para a qual a captura instantânea tem escopo. Se você incluir esse parâmetro, não poderá usar o parâmetro --storage-location . O STORAGE_LOCATION é automaticamente definido como SNAPSHOT_SCOPE_REGION .

DESCANSAR

Você pode criar seu instantâneo na política de local de armazenamento definida pelas configurações de instantâneo ou usando um local de armazenamento alternativo de sua escolha. Para obter mais informações, consulte Escolha o local de armazenamento do snapshot .

  • Para criar um snapshot no local padrão predefinido ou personalizado configurado nas configurações do snapshot, faça uma solicitação POST para o 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"
    }
    
  • Alternativamente, para substituir as configurações de snapshot e criar um snapshot em um local de armazenamento personalizado, faça uma solicitação POST para o método snapshots.insert e inclua a propriedade storageLocations em sua solicitação:

    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"
        ],
    }
    
  • ( Visualização ) Para criar um snapshot com escopo regional em uma região permitida, faça uma solicitação POST para o 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 você deseja criar o instantâneo.
  • SNAPSHOT_NAME : um nome para o instantâneo.
  • 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 você deseja criar um instantâneo.
  • 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 usada para criptografar o disco de origem.
  • SNAPSHOT_TYPE : o tipo de instantâneo, STANDARD ou ARCHIVE . Se um tipo de instantâneo não for especificado, um instantâneo STANDARD será criado.
  • STORAGE_LOCATION : opcional: para snapshots com escopo global, a multirregião do Cloud Storage ou a região do Cloud Storage onde você deseja armazenar o snapshot. Você pode especificar apenas um local de armazenamento.

    Use o parâmetro storageLocations somente quando desejar substituir o local de armazenamento padrão predefinido ou customizado configurado nas configurações de snapshot.

  • SNAPSHOT_SCOPE_REGION : Opcional: para capturas instantâneas com escopo regional, a região para a qual a captura instantânea tem escopo. Se você incluir esse parâmetro, não poderá usar o parâmetro storageLocations . O STORAGE_LOCATION é automaticamente definido como SNAPSHOT_SCOPE_REGION .

Criptografe uma imagem importada com CMEK

Você pode criptografar uma nova imagem ao importar uma imagem personalizada para o Compute Engine. Antes de importar uma imagem, você precisa criar e compactar um arquivo de imagem de disco e fazer upload desse arquivo compactado para o Cloud Storage .

Console

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

    Vá para Imagens

  2. Clique em Criar imagem .
  3. Para Disco de origem , selecione o disco do qual deseja criar uma imagem.
  4. Para Criptografia , selecione Chave gerenciada pelo cliente .
  5. No menu suspenso, selecione a chave do Cloud KMS que você deseja usar para criptografar esta imagem.
  6. 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 o seguinte:

  • IMAGE_NAME : o nome da imagem que você está criando
  • SOURCE_DISK : o nome do disco para criar um instantâneo
  • KMS_PROJECT_ID : o projeto que contém a chave do Cloud KMS
  • REGION : a região em que a chave do Cloud KMS está localizada
  • KEY_RING : o keyring que contém a chave do Cloud KMS
  • KEY : o nome da chave a ser usada para criptografar o novo disco

DESCANSAR

Para criptografar uma imagem importada, construa uma solicitação POST para o método images.insert . Especifique o URI para o arquivo compactado, inclua a propriedade imageEncryptionKey na 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 o seguinte:

  • PROJECT_ID : o projeto para criar a imagem criptografada em
  • IMAGE_NAME : o nome da imagem que você está criando
  • KMS_PROJECT_ID : o projeto que contém a chave do Cloud KMS
  • REGION : a região em que a chave do Cloud KMS está localizada
  • KEY_RING : o keyring que contém a chave do Cloud KMS
  • KEY : o nome da chave que você usou para criptografar o disco de origem

Crie um disco a partir de um snapshot criptografado com CMEK

Para criar um novo disco a partir de um instantâneo criptografado, faça o seguinte:

Console

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

    Vá para discos

  2. Clique em Criar disco e insira as propriedades do novo disco.
  3. Para Tipo de fonte , selecione o instantâneo ou imagem que deseja usar.
  4. Opcional: Se desejar especificar uma nova chave de criptografia, para Criptografia , especifique o tipo de chave de criptografia a ser usada e, em seguida, forneça as informações da chave de criptografia.

    Se você quiser remover a chave de criptografia gerenciada pelo cliente ou fornecida pelo cliente, em Criptografia , use o valor padrãoGoogle-managed encryption key .

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

gcloud

  • Para criar um novo disco a partir de um snapshot criptografado com 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
    
  • ( Visualização ) Para criar um novo disco a partir de um snapshot criptografado com escopo regional, use o comando gcloud compute disks create e 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 o seguinte:

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

    Para usar uma imagem em vez de um instantâneo, 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 em que a chave do Cloud KMS está localizada

  • SOURCE_REGION : a região cujo escopo o instantâneo de origem tem como escopo

  • ZONE : A zona onde o novo disco residirá

  • KEY_RING : opcional: o keyring que contém a chave do Cloud KMS

  • KEY : opcional: o nome da chave do Cloud KMS a ser usada para criptografar o novo disco

    Para criptografar o novo disco, você pode fazer o seguinte:

    • Para especificar uma nova chave de criptografia gerenciada pelo cliente, use o sinalizador --kms-key .
    • Para usar o padrão Google-owned and Google-managed encryption key, não inclua o sinalizador --kms-key .

DESCANSAR

  • Para criar um novo disco a partir de um snapshot criptografado com escopo global, construa uma solicitação POST para o método compute.disks.insert . Use a propriedade sourceSnapshot para especificar a captura 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"
      }
    }
    
  • ( Visualização ) Para criar um novo disco a partir de um snapshot criptografado com escopo regional, construa uma solicitação POST para o método compute.disks.insert . Use a propriedade sourceSnapshot para especificar a captura 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 para criar o novo disco em
  • ZONE : A zona para criar o novo disco
  • SOURCE_REGION : a região cujo escopo o instantâneo de origem tem como escopo
  • DISK_NAME : O nome do novo disco
  • DISK_TYPE : o URL completo ou parcial do tipo de disco, por exemplo, PROJECT_ID /zones/ ZONE /diskTypes/pd-ssd
  • SNAPSHOT_PROJECT_ID : o projeto que contém o instantâneo
  • SNAPSHOT_NAME : o nome do instantâneo criptografado

    Para usar uma imagem em vez de um instantâneo, substitua sourceSnapshot por sourceImage .

  • 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á localizada

  • KEY_RING : opcional: o keyring que contém a chave do Cloud KMS

  • KEY : opcional: o nome da chave do Cloud KMS a ser usada para criptografar o novo disco

    Se você incluir diskEncryptionKey , o disco será criptografado com a chave do Cloud KMS especificada. Se você não incluir diskEncryptionKey , o disco será criptografado usando um Google-owned and Google-managed encryption key.

Anexando um disco de inicialização criptografado com CMEK a uma nova VM

Console

  1. No console do Google Cloud, acesse a página Criar uma instância .

    Vá para Criar uma instância

  2. Especifique os detalhes da VM e, na seção Disco de inicialização , 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 criptografado ao criar uma nova VM, use o comando gcloud compute instances create . Use o sinalizador --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 o seguinte:

  • VM_NAME : o nome da VM que você está criando
  • DISK_NAME : o nome do disco criptografado

DESCANSAR

Construa 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 o seguinte:

  • PROJECT_ID : o projeto para criar a nova VM em
  • ZONE : a zona para criar a nova VM
  • DISK_ALIAS : um nome de dispositivo exclusivo para usar como 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 para operações como montagem ou redimensionamento de dentro da 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 formato persistent-disk-x , onde x é um número atribuído pelo Compute Engine. Este campo só é aplicável a volumes de disco permanente.
  • DISK_NAME : o nome do disco criptografado

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

Você pode descriptografar o conteúdo de um disco criptografado e criar um novo disco que use Google Cloud criptografia padrão em vez disso. Por padrão, Google Cloudcriptografa todos os dados em repouso .

  1. Crie um instantâneo do disco criptografado .
  2. Use o novo snapshot criptografado para criar um novo disco permanente .

Depois de criar o novo disco permanente, ele usa Google Cloud criptografia padrão para ajudar a proteger o conteúdo do disco. Quaisquer instantâneos criados a partir desse disco também deverão usar criptografia padrão.

Alterne a chave de criptografia do Cloud KMS para um disco

Gire a chave usada para criptografar o disco criando um novo disco que use uma nova versão de chave do Cloud KMS. A rotação de chaves é uma prática recomendada para cumprir práticas de segurança padronizadas . Para girar suas chaves, faça o seguinte:

  1. Alterne sua chave do Cloud KMS .
  2. Crie um instantâneo do disco criptografado .
  3. Use o novo instantâneo para criar um novo disco com a chave girada na etapa anterior.
  4. Substitua o disco anexado à sua VM que usa a chave de criptografia antiga.

Ao criar o novo disco, ele usa a nova versão da chave para criptografia. Quaisquer instantâneos criados a partir desse disco usam a versão mais recente da chave primária.

Quando você alterna uma chave, os dados que foram criptografados com versões de chave anteriores não são criptografados novamente automaticamente. Para obter mais informações, consulte Criptografando novamente dados . A rotação de uma chave não desabilita ou destrói automaticamente uma versão de chave existente.

Desativar ou excluir uma CMEK

Se você não precisar mais de uma CMEK ou quiser impedir seu uso, exclua ou desative a chave. Excluir, desabilitar ou remover permissões do IAM em uma chave também é chamado de revogação da chave.

Impacto da revogação de chave em recursos criptografados

Quando você revoga uma chave de criptografia, os recursos protegidos pela chave são afetados da seguinte forma:

  • Você não poderá inicializar uma VM se algum de seus 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 da chave para a VM, o Compute Engine encerrará a VM em até sete horas.
  • Não é possível anexar um disco com uma chave revogada a uma VM ou criar um instantâneo a partir do disco.
  • Não é possível usar imagens ou instantâneos criptografados com chaves revogadas para criar discos.

Se você desabilitar a chave, poderá reverter os efeitos anteriores ativando a chave. Se você excluir a chave, não poderá reverter os efeitos anteriores.

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

Você pode configurar sua VM para desligar automaticamente ao revogar a chave do Cloud KMS que está ajudando a proteger um disco anexado à VM. Você pode revogar uma chave desativando-a ou excluindo- a. Com esta configuração habilitada, a VM é desligada dentro de 7 horas após a revogação da chave.

Se você habilitar a chave novamente, poderá reiniciar a VM com o disco anexado que a chave ajuda a proteger. A VM não reinicia automaticamente depois que você habilita a chave.

Console

Para configurar uma VM para ser encerrada quando uma chave do Cloud KMS for 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 Rede, discos, segurança, gerenciamento, locatário individual .
  3. Expanda a seção Gerenciamento .
  4. Em Política de revogação da chave de criptografia gerenciada pelo cliente (CMEK) , selecione Desligar .

gcloud

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

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

DESCANSAR

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"
}

Como alternativa, você pode configurar um modelo de instância para criar VMs que são encerradas na revogação de chave usando a Google Cloud CLI ou REST.

Console

Você 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 Rede, discos, segurança, gerenciamento, locatário individual .
  3. Expanda a seção Gerenciamento .
  4. Em Política de revogação da chave de criptografia gerenciada pelo cliente (CMEK) , selecione Desligar .

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

DESCANSAR

Construa uma solicitação POST para o método instanceTemplates.insert . No corpo da solicitação, você deve 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 criarão VMs que serão encerradas na revogação de chave terá a seguinte aparência:

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 permanente criptografado com uma chave do Cloud KMS.