Este documento discute como criptografar discos com chaves de criptografia fornecidas pelo cliente .
Para obter informações sobre criptografia de disco, consulte Sobre criptografia de disco .
Para obter informações sobre como criptografar discos com chaves de criptografia gerenciadas pelo cliente (CMEK), consulte Proteger recursos usando chaves do Cloud KMS .
Usar CSEKs significa que você fornece suas próprias chaves de criptografia e o Compute Engine usa suas chaves para proteger o Google-owned and Google-managed encryption keys usado para criptografar e descriptografar seus dados. Somente os usuários que puderem fornecer a chave correta poderão usar recursos protegidos por uma chave de criptografia fornecida pelo cliente (CSEK).
O Google não armazena suas chaves em seus servidores e não pode acessar seus dados protegidos, a menos que você forneça a chave. Isso também significa que se você esquecer ou perder sua chave, o Google não poderá recuperá-la ou recuperar quaisquer dados criptografados com a chave perdida.
Quando você exclui um volume de disco permanente, o Google descarta as chaves de criptografia, tornando os dados irrecuperáveis. Este processo é irreversível.
Antes de começar
- Leia sobre discos , imagens e instantâneos de disco .
- 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
-
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.
- Set a default region and zone.
- Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
If an authentication error is returned, confirm that you have configured the gcloud CLI to use Workforce Identity Federation.
- Brasil
- Índia
Você só pode criptografar novos discos permanentes com sua própria chave. Não é possível criptografar discos permanentes existentes com sua própria chave.
Você não pode usar suas próprias chaves com discos SSD locais porque os discos SSD locais usam Google-owned and Google-managed encryption keys. As chaves são excluídas quando a VM é encerrada.
O Compute Engine não armazena chaves de criptografia com modelos de instância , portanto, você precisa armazenar suas próprias chaves no KMS para criptografar discos em um grupo de instâncias gerenciadas .
Não é possível suspender instâncias que tenham discos protegidos por CSEK anexados.
- Combine sua chave usando a chave pública fornecida em um certificado gerenciado pelo Compute Engine. Certifique-se de agrupar sua chave usando o preenchimento OAEP, não o preenchimento PKCS #1 v1.5.
- Codifique sua chave encapsulada em RSA usando a codificação base64 padrão.
Opcional: Gere uma chave aleatória de 256 bits (32 bytes). Se você já possui uma chave que deseja usar, pode pular esta etapa. Existem muitas maneiras de gerar uma chave. Por exemplo:
$ head -c 32 /dev/urandom | LC_CTYPE=C tr '\n' = > mykey.txt
Baixe o certificado de chave pública :
$ curl -s -O -L https://cloud-certs.storage.googleapis.com/google-cloud-csek-ingress.pem
Extraia a chave pública do certificado:
$ openssl x509 -pubkey -noout -in google-cloud-csek-ingress.pem > pubkey.pem
Embrulhe sua chave com RSA, certificando-se de substituir
mykey.txt
por seu próprio arquivo de chave.$ openssl rsautl -oaep -encrypt -pubin -inkey pubkey.pem -in mykey.txt -out rsawrappedkey.txt
Codifique sua chave encapsulada em RSA em base64.
$ openssl enc -base64 -in rsawrappedkey.txt | tr -d '\n' | sed -e '$a\' > rsawrapencodedkey.txt
- O URI totalmente qualificado para o recurso que a chave protege
- A chave correspondente
- O tipo de chave,
raw
oursa-encrypted
- No Windows, considere usar o BitLocker ou o Encrypting File System (EFS) .
- No macOS, considere usar o FileVault 2 .
- No Linux, considere Linux Unified Key Setup (LUKS) ou eCryptfs .
Vá para a página Discos .
Clique em Criar disco e insira as propriedades do novo disco.
Em Criptografia , selecione Chave fornecida pelo cliente .
Forneça a chave de criptografia do disco na caixa de texto e selecione Chave encapsulada se a chave tiver sido agrupada com a chave RSA pública.
-
rawKey
: se sua chave for codificada em base64 -
rsaEncryptedKey
: se sua chave for encapsulada em RSA e codificada em base64 Vá para a página Instantâneos .
Clique em Criar instantâneo .
Em Disco de origem , escolha o disco criptografado do qual você deseja criar um instantâneo.
Forneça a chave de criptografia do disco na caixa de texto e selecione Chave encapsulada se a chave tiver sido agrupada com a chave RSA pública.
Criptografe o novo snapshot fornecendo uma chave de criptografia adicional na seção Criptografia .
Vá para a página Imagens .
Clique em Criar imagem .
Em Disco de origem , escolha o disco criptografado do qual deseja criar uma imagem.
Em Criptografia , selecione uma solução de gerenciamento de chaves de criptografia.
Se a chave tiver sido agrupada com a chave RSA pública, selecione Chave agrupada .
- Disco permanente:
sourceDiskEncryptionKey
- Imagem:
sourceImageEncryptionKey
Vá para a página Imagens .
Clique em Criar imagem .
Em Origem , escolha Arquivo do Cloud Storage .
Em Arquivo do Cloud Storage , insira o URI do Cloud Storage.
Em Criptografia , escolha Chave fornecida pelo cliente e forneça a chave de criptografia para criptografar a imagem na caixa de texto.
-
[IMAGE_NAME]
: o nome da nova imagem personalizada. -
[BUCKET_NAME]
: o nome do bucket do Cloud Storage que contém seu arquivo de imagem compactado. -
[COMPRESSED_FILE]
: o nome do arquivo de imagem compactado. -
[KEY_FILE]
: o caminho para um arquivo de chave de criptografia em sua estação de trabalho local. Vá para a página Discos .
Clique em Criar disco .
Em Tipo de origem , selecione Instantâneo .
Em Criptografia , selecione uma solução de gerenciamento de chaves de criptografia.
Se a chave tiver sido agrupada com a chave RSA pública, selecione Chave agrupada .
Vá para a página Discos .
Clique em Criar disco .
Em Tipo de fonte , selecione Imagem .
Em Criptografia , selecione uma solução de gerenciamento de chaves de criptografia.
Se a chave tiver sido agrupada com a chave RSA pública, selecione Chave agrupada .
Vá para a página Criar uma instância .
Na seção Disco de inicialização , clique em Alterar e faça o seguinte:
- Na página Disco de inicialização , clique na guia Discos existentes .
- Na lista Disco , escolha um disco criptografado existente para anexar à VM.
Insira a chave de criptografia na caixa de texto e selecione Chave agrupada se a chave tiver sido agrupada com a chave RSA pública.
Clique em Selecionar .
Continue com o processo de criação da VM.
- Crie uma imagem do disco criptografado e especifique a criptografia automática para a nova imagem.
- Use a nova imagem para criar um novo disco permanente .
- Leia sobre discos , imagens e instantâneos de disco .
- 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
-
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.
- Set a default region and zone.
- Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
If an authentication error is returned, confirm that you have configured the gcloud CLI to use Workforce Identity Federation.
- Brasil
- Índia
Você só pode criptografar novos discos permanentes com sua própria chave. Não é possível criptografar discos permanentes existentes com sua própria chave.
Você não pode usar suas próprias chaves com discos SSD locais porque os discos SSD locais usam Google-owned and Google-managed encryption keys. As chaves são excluídas quando a VM é encerrada.
O Compute Engine não armazena chaves de criptografia com modelos de instância , portanto, você precisa armazenar suas próprias chaves no KMS para criptografar discos em um grupo de instâncias gerenciadas .
Não é possível suspender instâncias que tenham discos protegidos por CSEK anexados.
- Combine sua chave usando a chave pública fornecida em um certificado gerenciado pelo Compute Engine. Certifique-se de agrupar sua chave usando o preenchimento OAEP, não o preenchimento PKCS #1 v1.5.
- Codifique sua chave encapsulada em RSA usando a codificação base64 padrão.
Opcional: Gere uma chave aleatória de 256 bits (32 bytes). Se você já possui uma chave que deseja usar, pode pular esta etapa. Existem muitas maneiras de gerar uma chave. Por exemplo:
$ head -c 32 /dev/urandom | LC_CTYPE=C tr '\n' = > mykey.txt
Baixe o certificado de chave pública :
$ curl -s -O -L https://cloud-certs.storage.googleapis.com/google-cloud-csek-ingress.pem
Extraia a chave pública do certificado:
$ openssl x509 -pubkey -noout -in google-cloud-csek-ingress.pem > pubkey.pem
Embrulhe sua chave com RSA, certificando-se de substituir
mykey.txt
por seu próprio arquivo de chave.$ openssl rsautl -oaep -encrypt -pubin -inkey pubkey.pem -in mykey.txt -out rsawrappedkey.txt
Codifique sua chave encapsulada em RSA em base64.
$ openssl enc -base64 -in rsawrappedkey.txt | tr -d '\n' | sed -e '$a\' > rsawrapencodedkey.txt
- O URI totalmente qualificado para o recurso que a chave protege
- A chave correspondente
- O tipo de chave,
raw
oursa-encrypted
- No Windows, considere usar o BitLocker ou o Encrypting File System (EFS) .
- No macOS, considere usar o FileVault 2 .
- No Linux, considere Linux Unified Key Setup (LUKS) ou eCryptfs .
Vá para a página Discos .
Clique em Criar disco e insira as propriedades do novo disco.
Em Criptografia , selecione Chave fornecida pelo cliente .
Forneça a chave de criptografia do disco na caixa de texto e selecione Chave encapsulada se a chave tiver sido agrupada com a chave RSA pública.
-
rawKey
: se sua chave for codificada em base64 -
rsaEncryptedKey
: se sua chave for encapsulada em RSA e codificada em base64 Vá para a página Instantâneos .
Clique em Criar instantâneo .
Em Disco de origem , escolha o disco criptografado do qual você deseja criar um instantâneo.
Forneça a chave de criptografia do disco na caixa de texto e selecione Chave encapsulada se a chave tiver sido agrupada com a chave RSA pública.
Criptografe o novo snapshot fornecendo uma chave de criptografia adicional na seção Criptografia .
Vá para a página Imagens .
Clique em Criar imagem .
Em Disco de origem , escolha o disco criptografado do qual deseja criar uma imagem.
Em Criptografia , selecione uma solução de gerenciamento de chaves de criptografia.
Se a chave tiver sido agrupada com a chave RSA pública, selecione Chave agrupada .
- Disco permanente:
sourceDiskEncryptionKey
- Imagem:
sourceImageEncryptionKey
Vá para a página Imagens .
Clique em Criar imagem .
Em Origem , escolha Arquivo do Cloud Storage .
Em Arquivo do Cloud Storage , insira o URI do Cloud Storage.
Em Criptografia , escolha Chave fornecida pelo cliente e forneça a chave de criptografia para criptografar a imagem na caixa de texto.
-
[IMAGE_NAME]
: o nome da nova imagem personalizada. -
[BUCKET_NAME]
: o nome do bucket do Cloud Storage que contém seu arquivo de imagem compactado. -
[COMPRESSED_FILE]
: o nome do arquivo de imagem compactado. -
[KEY_FILE]
: o caminho para um arquivo de chave de criptografia em sua estação de trabalho local. Vá para a página Discos .
Clique em Criar disco .
Em Tipo de origem , selecione Instantâneo .
Em Criptografia , selecione uma solução de gerenciamento de chaves de criptografia.
Se a chave tiver sido agrupada com a chave RSA pública, selecione Chave agrupada .
Vá para a página Discos .
Clique em Criar disco .
Em Tipo de fonte , selecione Imagem .
Em Criptografia , selecione uma solução de gerenciamento de chaves de criptografia.
Se a chave tiver sido agrupada com a chave RSA pública, selecione Chave agrupada .
Vá para a página Criar uma instância .
Na seção Disco de inicialização , clique em Alterar e faça o seguinte:
- Na página Disco de inicialização , clique na guia Discos existentes .
- Na lista Disco , escolha um disco criptografado existente para anexar à VM.
Digite a tecla de criptografia na caixa de texto e selecione a tecla embrulhada se a tecla tiver sido embrulhada com a tecla RSA pública.
Clique em Selecionar .
Continue com o processo de criação da VM.
- Crie uma imagem do disco criptografado e especifique a criptografia automática para a nova imagem.
- Use a nova imagem para criar um novo disco persistente .
Python
Para usar os exemplos Python desta página em um ambiente de desenvolvimento local, instale e inicialize o gcloud CLI e e configure o Application Default Credentials com suas credenciais de usuário.
Confira mais informações em Set up authentication for a local development environment.
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.
Restrições
Para CSEK, aplicam-se as seguintes restrições:
Restrições gerais
A disponibilidade das chaves de criptografia fornecidas pelo cliente depende da localização da sua conta de cobrança, e não da localização do recurso.
As chaves de criptografia fornecidas pelo cliente não estão disponíveis para contas de faturamento nos seguintes países:
Restrições técnicas
Especificações
Esta seção descreve a especificação de criptografia e o formato do CSEK.
Criptografia
O Compute Engine usa sua chave de criptografia para proteger as chaves de criptografia do Google com criptografia AES-256.
Formato de chave obrigatório
Cabe a você gerar e gerenciar sua chave. Você deve fornecer uma chave que seja uma string de 256 bits codificada no padrão RFC 4648 base64 para o Compute Engine.
A seguir está um exemplo de uma chave codificada em base64, gerada com a string "Hello from Google Cloud Plataforma"
SGVsbG8gZnJvbSBHb29nbGUgQ2xvdWQgUGxhdGZvcm0=
Ele pode ser gerado usando o seguinte script:
read -sp "String:" ; \ [[ ${#REPLY} == 32 ]] && \ echo "$(echo -n "$REPLY" | base64)" || \ (>&2 echo -e "\nERROR:Wrong Size"; false)
Envolvimento de chave RSA
Além de codificar sua chave em base64, você pode opcionalmente agrupar sua chave usando um certificado de chave pública RSA fornecido pelo Google, codificar a chave em base64 e usá-la em suas solicitações.
O empacotamento RSA é um processo no qual você usa uma chave pública para criptografar seus dados. Após esses dados terem sido criptografados com a chave pública, eles só poderão ser descriptografados pela respectiva chave privada. Neste caso, a chave privada é conhecida apenas por Google Cloud serviços. Ao agrupar sua chave usando o certificado RSA, você garante que apenas Google Cloud os serviços podem desembrulhar sua chave e usá-la para proteger seus dados.
Para obter mais informações, consulte Criptografia RSA .
Para criar uma chave encapsulada em RSA para o Compute Engine, faça o seguinte:
Faça download do certificado público mantido pelo Compute Engine em:
https://cloud-certs.storage.googleapis.com/google-cloud-csek-ingress.pem
Há muitas maneiras de gerar e encapsular sua chave com RSA; use um método que seja familiar para você. A seguir estão dois exemplos de encapsulamento RSA de sua chave que você pode usar.
Exemplo 1
As instruções a seguir usam o utilitário de linha de comando openssl para encapsular RSA e codificar uma chave.
Exemplo 2
A seguir está um exemplo de script Python que gera uma string aleatória de 256 bits (32 bytes) e cria uma chave encapsulada em RSA codificada em base64 usando a biblioteca de criptografia :
Sua chave agora está pronta para uso!
Use uma chave encapsulada em RSA
Usando a CLI do Google Cloud, você pode fornecer uma chave normal e uma chave encapsulada em RSA da mesma maneira .
Na API , use a propriedade
sha256
em vez derawKey
se desejar usar uma chave encapsulada em RSA.Criptografando recursos com CSEK usando a ferramenta de linha de comando
Configurar
As chaves de criptografia podem ser usadas por meio da CLI do Google Cloud.
Arquivo chave
Ao usar a ferramenta de linha de comando
gcloud compute
para definir suas chaves, você fornece chaves codificadas usando um arquivo de chave que contém suas chaves codificadas como uma lista JSON. Um arquivo de chave pode conter várias chaves, permitindo gerenciar muitas chaves em um único local. Alternativamente, você pode criar arquivos de chave única para lidar com cada chave separadamente. Um arquivo de chave só pode ser usado com a CLI gcloud. Ao usar REST, você deve fornecer a chave diretamente na sua solicitação.Cada entrada em seu arquivo de chave deve fornecer:
Quando você usa o arquivo de chave em suas solicitações, a ferramenta procura recursos correspondentes e usa as respectivas chaves. Se nenhum recurso correspondente for encontrado, a solicitação falhará.
Um exemplo de arquivo-chave é semelhante a este:
[ { "uri": "https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/disks/example-disk", "key": "acXTX3rxrKAFTF0tYVLvydU1riRZTvUNC4g5I11NY+c=", "key-type": "raw" }, { "uri": "https://www.googleapis.com/compute/v1/projects/myproject/global/snapshots/my-private-snapshot", "key": "ieCx/NcW06PcT7Ep1X6LUTc/hLvUDYyzSZPPVCVPTVEohpeHASqC8uw5TzyO9U+Fka9JFHz0mBibXUInrC/jEk014kCK/NPjYgEMOyssZ4ZINPKxlUh2zn1bV+MCaTICrdmuSBTWlUUiFoDD6PYznLwh8ZNdaheCeZ8ewEXgFQ8V+sDroLaN3Xs3MDTXQEMMoNUXMCZEIpg9Vtp9x2oeQ5lAbtt7bYAAHf5l+gJWw3sUfs0/Glw5fpdjT8Uggrr+RMZezGrltJEF293rvTIjWOEB3z5OHyHwQkvdrPDFcTqsLfh+8Hr8g+mf+7zVPEC8nEbqpdl3GPv3A7AwpFp7MA==", "key-type": "rsa-encrypted" } ]
Melhores práticas para gerenciar seu arquivo de chave
Se você usar um arquivo de chave, restrinja o acesso ao seu arquivo apenas àqueles que precisam dele. Certifique-se de definir as permissões apropriadas para esses arquivos e considere criptografá-los usando ferramentas adicionais:
Criptografe um novo disco permanente com CSEK
Você pode criptografar um novo disco permanente fornecendo uma chave durante a criação da VM ou do disco.
Console
gcloud
Na ferramenta
gcloud compute
, criptografe um disco usando o sinalizador--csek-key-file
durante a criação da VM. Se você estiver usando uma chave encapsulada em RSA, use o componentegcloud beta
:gcloud (beta) compute instances create example-instance --csek-key-file example-file.json
Para criptografar um disco permanente independente:
gcloud (beta) compute disks create example-disk --csek-key-file example-file.json
DESCANSAR
Você pode criptografar um disco usando a propriedade
diskEncryptionKey
e fazendo uma solicitação à API v1 para uma chave bruta (não encapsulada em RSA) ou à API Beta para uma chave encapsulada em RSA. Forneça uma das seguintes propriedades em sua solicitação:Por exemplo, para criptografar um novo disco durante a criação da VM com uma chave encapsulada em RSA:
POST https://compute.googleapis.com/compute/beta/projects/myproject/zones/us-central1-a/instances { "machineType": "zones/us-central1-a/machineTypes/e2-standard-2", "disks": [ { "type": "PERSISTENT", "diskEncryptionKey": { "rsaEncryptedKey": "ieCx/NcW06PcT7Ep1X6LUTc/hLvUDYyzSZPPVCVPTVEohpeHASqC8uw5TzyO9U+Fka9JFHz0mBibXUInrC/jEk014kCK/NPjYgEMOyssZ4ZINPKxlUh2zn1bV+MCaTICrdmuSBTWlUUiFoDD6PYznLwh8ZNdaheCeZ8ewEXgFQ8V+sDroLaN3Xs3MDTXQEMMoNUXMCZEIpg9Vtp9x2oeQ5lAbtt7bYAAHf5l+gJWw3sUfs0/Glw5fpdjT8Uggrr+RMZezGrltJEF293rvTIjWOEB3z5OHyHwQkvdrPDFcTqsLfh+8Hr8g+mf+7zVPEC8nEbqpdl3GPv3A7AwpFp7MA==" }, "initializeParams": { "sourceImage": "projects/debian-cloud/global/images/debian-9-stretch-v20170619" }, "boot": true } ], ... }
Da mesma forma, você também pode usar REST para criar um novo disco permanente independente e criptografá-lo com sua própria chave:
POST https://compute.googleapis.com/compute/beta/projects/myproject/zones/ us-central1-a/disks?sourceImage=https%3A%2F%2Fwww.googleapis.com%2Fcompute%2F alpha%2Fprojects%2Fdebian-cloud%2Fglobal%2Fimages%2Fdebian-9-stretch-v20170619 { "name": "new-encrypted-disk-key", "diskEncryptionKey": { "rsaEncryptedKey": "ieCx/NcW06PcT7Ep1X6LUTc/hLvUDYyzSZPPVCVPTVEohpeHASqC8uw5TzyO9U+Fka9JFHz0mBibXUInrC/jEk014kCK/NPjYgEMOyssZ4ZINPKxlUh2zn1bV+MCaTICrdmuSBTWlUUiFoDD6PYznLwh8ZNdaheCeZ8ewEXgFQ8V+sDroLaN3Xs3MDTXQEMMoNUXMCZEIpg9Vtp9x2oeQ5lAbtt7bYAAHf5l+gJWw3sUfs0/Glw5fpdjT8Uggrr+RMZezGrltJEF293rvTIjWOEB3z5OHyHwQkvdrPDFcTqsLfh+8Hr8g+mf+7zVPEC8nEbqpdl3GPv3A7AwpFp7MA==" }, "type": "zones/us-central1-a/diskTypes/pd-standard" }
Crie um snapshot de um disco criptografado com CSEK
Se você criar um instantâneo a partir de um disco criptografado, o instantâneo também deverá ser criptografado. Você deve especificar uma chave para criptografar a captura instantânea. Não é possível converter discos criptografados ou snapshots criptografados para usar a criptografia padrão do Compute Engine, a menos que você crie uma nova imagem de disco e um novo disco permanente .
Os instantâneos de discos criptografados com CSEK são sempre instantâneos completos. Isso difere dos snapshots de discos criptografados com chaves de criptografia gerenciadas pelo cliente (CMEK) , que são incrementais . Os preços dos snapshots são baseados no tamanho total do snapshot, portanto, um snapshot completo pode custar mais do que um snapshot incremental.
Para criar um instantâneo de disco permanente a partir de um disco criptografado, sua solicitação de criação de instantâneo deve fornecer a chave de criptografia usada para criptografar o disco permanente.
Revise as práticas recomendadas para snapshots de discos permanentes antes de criar seu snapshot.
Console
DESCANSAR
Para fazer a solicitação, forneça a propriedade
sourceDiskEncryptionKey
para acessar o disco permanente de origem. Você deve criptografar a nova captura instantânea usando a propriedadesnapshotEncryptionKey
.Faça uma solicitação à API v1 para obter uma chave bruta (não encapsulada em RSA) ou à API Beta para obter uma chave encapsulada em RSA.
POST https://compute.googleapis.com/compute/beta/projects/myproject/zones/us-central1-a/disks/example-disk/createSnapshot { "snapshotEncryptionKey": { "rsaEncryptedKey": "ieCx/NcW06PcT7Ep1X6LUTc/hLvUDYyzSZPPVCVPTVEohpeHASqC8uw5TzyO9U+Fka9JFHz0mBibXUInrC/jEk014kCK/NPjYgEMOyssZ4ZINPKxlUh2zn1bV+MCaTICrdmuSBTWlUUiFoDD6PYznLwh8ZNdaheCeZ8ewEXgFQ8V+sDroLaN3Xs3MDTXQEMMoNUXMCZEIpg9Vtp9x2oeQ5lAbtt7bYAAHf5l+gJWw3sUfs0/Glw5fpdjT8Uggrr+RMZezGrltJEF293rvTIjWOEB3z5OHyHwQkvdrPDFcTqsLfh+8Hr8g+mf+7zVPEC8nEbqpdl3GPv3A7AwpFp7MA==" }, "sourceDiskEncryptionKey": { "rsaEncryptedKey": "ieCx/NcW06PcT7Ep1X6LUTc/hLvUDYyzSZPPVCVPTVEohpeHASqC8uw5TzyO9U+Fka9JFHz0mBibXUInrC/jEk014kCK/NPjYgEMOyssZ4ZINPKxlUh2zn1bV+MCaTICrdmuSBTWlUUiFoDD6PYznLwh8ZNdaheCeZ8ewEXgFQ8V+sDroLaN3Xs3MDTXQEMMoNUXMCZEIpg9Vtp9x2oeQ5lAbtt7bYAAHf5l+gJWw3sUfs0/Glw5fpdjT8Uggrr+RMZezGrltJEF293rvTIjWOEB3z5OHyHwQkvdrPDFcTqsLfh+8Hr8g+mf+7zVPEC8nEbqpdl3GPv3A7AwpFp7MA==" }, "name": "snapshot-encrypted-disk" }
A propriedade
sourceDiskEncryptionKey
deve corresponder à chave usada para criptografar o disco permanente. Caso contrário, a solicitação falhará.O
snapshotEncryptionKey
permite fornecer uma chave para criptografar o snapshot para que, se o snapshot for usado para criar novos discos permanentes, uma chave correspondente seja fornecida. Esta chave deve seguir o formato de chave anterior. Você também pode optar por deixar essa propriedade indefinida e o snapshot poderá ser usado para criar novos discos permanentes sem exigir uma chave.Crie uma nova imagem de um disco ou imagem personalizada criptografada com CSEK
Você pode criar imagens personalizadas a partir de discos permanentes criptografados ou copiar imagens criptografadas. Você não pode usar o console para copiar imagens. Use a Google Cloud CLI ou REST para copiar imagens.
Console
gcloud
Siga as instruções para criar uma imagem e adicione o sinalizador
--csek-key-file
com um caminho para o arquivo de chave de criptografia do objeto de origem criptografado. Use o componentegcloud beta
se estiver usando uma chave encapsulada em RSA:gcloud (beta) compute images create .... --csek-key-file example-file.json
Se quiser criptografar a nova imagem com sua chave, adicione a chave ao arquivo de chave:
[ { "uri": "https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/disks/source-disk", "key": "acX3RqzxrKAFTF0tYVLvydU1riRZTvUNC4g5I11NY-c=", "key-type": "raw" }, { "uri": "https://www.googleapis.com/compute/v1/projects/myproject/global/snapshots/the-new-image", "key": "TF0t-cSfl7CT7xRF1LTbAgi7U6XXUNC4zU_dNgx0nQc=", "key-type": "raw" } ]
DESCANSAR
Sua solicitação de criação de API deve conter a propriedade da chave de criptografia do seu objeto de origem. Por exemplo, inclua uma das seguintes propriedades dependendo do tipo de objeto de origem:
Inclua também as propriedades
rawKey
oursaEncryptedKey
dependendo do tipo de chave. Faça uma solicitação à API v1 para obter uma chave bruta (não encapsulada em RSA) ou à API Beta para obter uma chave encapsulada em RSA. O exemplo a seguir converte um disco permanente criptografado e encapsulado em RSA em uma imagem que usa a mesma chave de criptografia.POST https://compute.googleapis.com/compute/beta/projects/myproject/global/images { "name": "image-encrypted-disk", "sourceDiskEncryptionKey": { "rsaEncryptedKey": "ieCx/NcW06PcT7Ep1X6LUTc/hLvUDYyzSZPPVCVPTVEohpeHASqC8uw5TzyO9U+Fka9JFHz0mBibXUInrC/jEk014kCK/NPjYgEMOyssZ4ZINPKxlUh2zn1bV+MCaTICrdmuSBTWlUUiFoDD6PYznLwh8ZNdaheCeZ8ewEXgFQ8V+sDroLaN3Xs3MDTXQEMMoNUXMCZEIpg9Vtp9x2oeQ5lAbtt7bYAAHf5l+gJWw3sUfs0/Glw5fpdjT8Uggrr+RMZezGrltJEF293rvTIjWOEB3z5OHyHwQkvdrPDFcTqsLfh+8Hr8g+mf+7zVPEC8nEbqpdl3GPv3A7AwpFp7MA==" } "imageEncryptionKey": { "rsaEncryptedKey": "ieCx/NcW06PcT7Ep1X6LUTc/hLvUDYyzSZPPVCVPTVEohpeHASqC8uw5TzyO9U+Fka9JFHz0mBibXUInrC/jEk014kCK/NPjYgEMOyssZ4ZINPKxlUh2zn1bV+MCaTICrdmuSBTWlUUiFoDD6PYznLwh8ZNdaheCeZ8ewEXgFQ8V+sDroLaN3Xs3MDTXQEMMoNUXMCZEIpg9Vtp9x2oeQ5lAbtt7bYAAHf5l+gJWw3sUfs0/Glw5fpdjT8Uggrr+RMZezGrltJEF293rvTIjWOEB3z5OHyHwQkvdrPDFcTqsLfh+8Hr8g+mf+7zVPEC8nEbqpdl3GPv3A7AwpFp7MA==" }, "sourceDisk": "projects/myproject/zones/us-central1-a/disks/source-disks" }
A propriedade opcional
imageEncryptionKey
permite fornecer uma chave para criptografar a imagem. Assim, quando a imagem for usada para criar novos discos permanentes, uma chave correspondente deverá ser fornecida. Esta chave deve seguir o mesmo formato de chave descrito acima. Você também pode optar por deixar essa propriedade indefinida e a imagem poderá ser usada para criar novos discos permanentes sem exigir uma chave.Criptografe uma imagem importada com CSEK
Você pode criptografar uma nova imagem ao importar manualmente 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 .
Importe a imagem personalizada do Compute Engine que você quer criptografar. Especifique o URI para o arquivo compactado e também um caminho para o arquivo de chave de criptografia.
Console
gcloud
Use o comando
compute images create
para criar uma nova imagem e especifique a sinalização--csek-key-file
com um arquivo de chave de criptografia. Se você estiver usando uma chave encapsulada em RSA, use o componentegcloud beta
:gcloud (beta) compute images create [IMAGE_NAME] \ --source-uri gs://[BUCKET_NAME]/[COMPRESSED_FILE] \ --csek-key-file [KEY_FILE]
Substitua o seguinte:
DESCANSAR
Para criptografar uma nova imagem criada a partir de um arquivo RAW, adicione a nova propriedade
imageEncryptionKey
à solicitação de criação de imagem, seguida porrawKey
oursaEncryptedKey
. Faça uma solicitação à API v1 para obter uma chave bruta (não encapsulada em RSA) ou à API Beta para obter uma chave encapsulada em RSA.POST https://compute.googleapis.com/compute/beta/projects/myproject/global/images { "rawDisk": { "source": "http://storage.googleapis.com/example-image/example-image.tar.gz" }, "name": "new-encrypted-image", "sourceType": "RAW", "imageEncryptionKey": { "rsaEncryptedKey": "ieCx/NcW06PcT7Ep1X6LUTc/hLvUDYyzSZPPVCVPTVEohpeHASqC8uw5TzyO9U+Fka9JFHz0mBibXUInrC/jEk014kCK/NPjYgEMOyssZ4ZINPKxlUh2zn1bV+MCaTICrdmuSBTWlUUiFoDD6PYznLwh8ZNdaheCeZ8ewEXgFQ8V+sDroLaN3Xs3MDTXQEMMoNUXMCZEIpg9Vtp9x2oeQ5lAbtt7bYAAHf5l+gJWw3sUfs0/Glw5fpdjT8Uggrr+RMZezGrltJEF293rvTIjWOEB3z5OHyHwQkvdrPDFcTqsLfh+8Hr8g+mf+7zVPEC8nEbqpdl3GPv3A7AwpFp7MA==" } }
Crie um disco permanente a partir de um recurso criptografado com CSEK
Crie um disco a partir de um snapshot criptografado com CSEK
Console
gcloud
Na ferramenta
gcloud compute
, forneça a chave de criptografia para o snapshot usando a sinalização--csek-key-file
ao criar o disco. Se você estiver usando uma chave encapsulada em RSA, use o componentegcloud beta
:gcloud (beta) compute disks create ... --source-snapshot example-snapshot --csek-key-file example-file.json
DESCANSAR
Para usar um snapshot criptografado, forneça
sourceSnapshotEncryptionKey
em sua solicitação, seguido derawKey
oursaEncryptedKey
. Faça uma solicitação à API v1 para obter uma chave bruta (não encapsulada em RSA) ou à API Beta para obter uma chave agrupada em RSA. Por exemplo, para um novo disco permanente independente usando um snapshot criptografado:POST https://compute.googleapis.com/compute/beta/projects/myproject/zones/us-central1-a/disks { "name": "disk-from-encrypted-snapshot", "sourceSnapshot": "global/snapshots/encrypted-snapshot", "sourceSnapshotEncryptionKey": { "rsaEncryptedKey": "ieCx/NcW06PcT7Ep1X6LUTc/hLvUDYyzSZPPVCVPTVEohpeHASqC8uw5TzyO9U+Fka9JFHz0mBibXUInrC/jEk014kCK/NPjYgEMOyssZ4ZINPKxlUh2zn1bV+MCaTICrdmuSBTWlUUiFoDD6PYznLwh8ZNdaheCeZ8ewEXgFQ8V+sDroLaN3Xs3MDTXQEMMoNUXMCZEIpg9Vtp9x2oeQ5lAbtt7bYAAHf5l+gJWw3sUfs0/Glw5fpdjT8Uggrr+RMZezGrltJEF293rvTIjWOEB3z5OHyHwQkvdrPDFcTqsLfh+8Hr8g+mf+7zVPEC8nEbqpdl3GPv3A7AwpFp7MA==" } }
Crie um disco a partir de uma imagem criptografada com CSEK
Console
gcloud
Na ferramenta
gcloud compute
, forneça a chave de criptografia para a imagem usando o sinalizador--csek-key-file
ao criar o disco. Se você estiver usando uma chave encapsulada em RSA, use o componentegcloud beta
:gcloud (beta) compute disks create ... --image example-image --csek-key-file example-file.json
DESCANSAR
Para usar uma imagem criptografada, forneça
sourceImageEncryptionKey
, seguido derawKey
oursaEncryptedKey
. Faça uma solicitação à API v1 para obter uma chave bruta (não encapsulada em RSA) ou à API Beta para obter uma chave agrupada em RSA.POST https://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/disks { "name": "disk-from-encrypted-image", "sourceImageEncryptionKey": { "rsaEncryptedKey": "ieCx/NcW06PcT7Ep1X6LUTc/hLvUDYyzSZPPVCVPTVEohpeHASqC8uw5TzyO9U+Fka9JFHz0mBibXUInrC/jEk014kCK/NPjYgEMOyssZ4ZINPKxlUh2zn1bV+MCaTICrdmuSBTWlUUiFoDD6PYznLwh8ZNdaheCeZ8ewEXgFQ8V+sDroLaN3Xs3MDTXQEMMoNUXMCZEIpg9Vtp9x2oeQ5lAbtt7bYAAHf5l+gJWw3sUfs0/Glw5fpdjT8Uggrr+RMZezGrltJEF293rvTIjWOEB3z5OHyHwQkvdrPDFcTqsLfh+8Hr8g+mf+7zVPEC8nEbqpdl3GPv3A7AwpFp7MA==" }, "sourceImage": "global/images/encrypted-image" }
Anexando um disco criptografado com CSEK a uma nova VM
Console
gcloud
Para criar uma VM e conectar um disco criptografado, crie um arquivo-chave e forneça a chave usando o sinalizador
--csek-key-file
ao criar a VM. Se você estiver usando uma tecla RSA, use o componentegcloud beta
:gcloud (beta) compute instances create example-instance \ --disk name=example-disk,boot=yes \ --csek-key-file example-file.json
DESCANSAR
Crie uma VM usando a API do mecanismo de computação e forneça o
rawKey
oursaEncryptedKey
com a especificação de disco. Faça uma solicitação à API V1 para uma tecla RAW (não embrulhada RSA) ou da API beta para uma chave RSA embrulhada.Aqui está um trecho de um exemplo de especificação de disco:
"disks": [ { "deviceName": "encrypted-disk", "source": "projects/myproject/zones/us-central1-f/disks/encrypted-disk", "diskEncryptionKey": { "rawKey": "SGVsbG8gZnJvbSBHb29nbGUgQ2xvdWQgUGxhdGZvcm0=" } } ]
Iniciando ou reiniciando VMs que têm discos criptografados com CSEK
Para obter detalhes sobre a interrupção ou o início de uma VM com discos criptografados, leia reiniciando uma VM com um disco criptografado .
Usando a linha de comando para criar recursos mistos
Se você deseja criar uma mistura de recursos criptografados do cliente e criptografados de padrão em uma única solicitação com o Google Cloud CLI, você pode usar o sinalizador
--csek-key-file
com um arquivo-chave e o--no-require-csek-key-create
crime em sua solicitação. Ao fornecer ambos os sinalizadores, a GCLOUD CLI cria quaisquer recursos criptografados do cliente que sejam explicitamente definidos em seu arquivo-chave e também criam quaisquer recursos padrão que você especificar.Por exemplo, suponha que um arquivo chave contenha o seguinte:
[ { "uri": "https://www.googleapis.com/compute/beta/projects/myproject/zones/us-central1-a/disks/example-disk", "key": "ieCx/NcW06PcT7Ep1X6LUTc/hLvUDYyzSZPPVCVPTVEohpeHASqC8uw5TzyO9U+Fka9JFHz0mBibXUInrC/jEk014kCK/NPjYgEMOyssZ4ZINPKxlUh2zn1bV+MCaTICrdmuSBTWlUUiFoDD6PYznLwh8ZNdaheCeZ8ewEXgFQ8V+sDroLaN3Xs3MDTXQEMMoNUXMCZEIpg9Vtp9x2oeQ5lAbtt7bYAAHf5l+gJWw3sUfs0/Glw5fpdjT8Uggrr+RMZezGrltJEF293rvTIjWOEB3z5OHyHwQkvdrPDFcTqsLfh+8Hr8g+mf+7zVPEC8nEbqpdl3GPv3A7AwpFp7MA==", "key-type": "rsa-encrypted" } ]
Se você deseja criar uma VM com um disco criptografado pelo cliente usando o arquivo de chave e, simultaneamente
gcloud beta compute instances create example-disk example-disk-2 \ --csek-key-file mykeyfile.json --no-require-csek-key-create
Normalmente, não seria possível criar
example-disk-2
se você especificasse o sinalizador--csek-key-file
porque o disco não está explicitamente definido no arquivo de chave. Ao adicionar o--no-require-csek-key-create
, ambos os discos são criados, um criptografado usando o arquivo-chave e o outro criptografado usandoGoogle-owned and managed keys.Remova seu CSEK de um disco persistente
Você pode descriptografar o conteúdo de um disco criptografado do cliente e criar um novo disco que usa Google-owned and managed keys em vez de.
Depois de criar o novo disco persistente, o Compute Engine usaGoogle-owned and managed keys Para proteger o conteúdo do disco. Quaisquer instantâneos que você criar a partir desse disco também deve usarGoogle-owned and managed keys
Exceto em caso de indicação contrária, o conteúdo desta página é licenciado de acordo com a Licença de atribuição 4.0 do Creative Commons, e as amostras de código são licenciadas de acordo com a Licença Apache 2.0. Para mais detalhes, consulte as políticas do site do Google Developers. Java é uma marca registrada da Oracle e/ou afiliadas.
Última atualização 2025-04-17 UTC.
-
Python
Para usar os exemplos Python desta página em um ambiente de desenvolvimento local, instale e inicialize o gcloud CLI e e configure o Application Default Credentials com suas credenciais de usuário.
Confira mais informações em Set up authentication for a local development environment.
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.
Restrições
Para CSEK, aplicam-se as seguintes restrições:
Restrições gerais
A disponibilidade das chaves de criptografia fornecidas pelo cliente depende da localização da sua conta de cobrança, e não da localização do recurso.
As chaves de criptografia fornecidas pelo cliente não estão disponíveis para contas de faturamento nos seguintes países:
Restrições técnicas
Especificações
Esta seção descreve a especificação de criptografia e o formato do CSEK.
Criptografia
O Compute Engine usa sua chave de criptografia para proteger as chaves de criptografia do Google com criptografia AES-256.
Formato de chave obrigatório
Cabe a você gerar e gerenciar sua chave. Você deve fornecer uma chave que seja uma string de 256 bits codificada no padrão RFC 4648 base64 para o Compute Engine.
A seguir está um exemplo de uma chave codificada em base64, gerada com a string "Hello from Google Cloud Plataforma"
SGVsbG8gZnJvbSBHb29nbGUgQ2xvdWQgUGxhdGZvcm0=
Ele pode ser gerado usando o seguinte script:
read -sp "String:" ; \ [[ ${#REPLY} == 32 ]] && \ echo "$(echo -n "$REPLY" | base64)" || \ (>&2 echo -e "\nERROR:Wrong Size"; false)
Envolvimento de chave RSA
Além de codificar sua chave em base64, você pode opcionalmente agrupar sua chave usando um certificado de chave pública RSA fornecido pelo Google, codificar a chave em base64 e usá-la em suas solicitações.
O empacotamento RSA é um processo no qual você usa uma chave pública para criptografar seus dados. Após esses dados terem sido criptografados com a chave pública, eles só poderão ser descriptografados pela respectiva chave privada. Neste caso, a chave privada é conhecida apenas por Google Cloud serviços. Ao agrupar sua chave usando o certificado RSA, você garante que apenas Google Cloud os serviços podem desembrulhar sua chave e usá-la para proteger seus dados.
Para obter mais informações, consulte Criptografia RSA .
Para criar uma chave encapsulada em RSA para o Compute Engine, faça o seguinte:
Faça download do certificado público mantido pelo Compute Engine em:
https://cloud-certs.storage.googleapis.com/google-cloud-csek-ingress.pem
Há muitas maneiras de gerar e encapsular sua chave com RSA; use um método que seja familiar para você. A seguir estão dois exemplos de encapsulamento RSA de sua chave que você pode usar.
Exemplo 1
As instruções a seguir usam o utilitário de linha de comando openssl para encapsular RSA e codificar uma chave.
Exemplo 2
A seguir está um exemplo de script Python que gera uma string aleatória de 256 bits (32 bytes) e cria uma chave encapsulada em RSA codificada em base64 usando a biblioteca de criptografia :
Sua chave agora está pronta para uso!
Use uma chave encapsulada em RSA
Usando a CLI do Google Cloud, você pode fornecer uma chave normal e uma chave encapsulada em RSA da mesma maneira .
Na API , use a propriedade
sha256
em vez derawKey
se desejar usar uma chave encapsulada em RSA.Criptografando recursos com CSEK usando a ferramenta de linha de comando
Configurar
As chaves de criptografia podem ser usadas por meio da CLI do Google Cloud.
Arquivo chave
Ao usar a ferramenta de linha de comando
gcloud compute
para definir suas chaves, você fornece chaves codificadas usando um arquivo de chave que contém suas chaves codificadas como uma lista JSON. Um arquivo de chave pode conter várias chaves, permitindo gerenciar muitas chaves em um único local. Alternativamente, você pode criar arquivos de chave única para lidar com cada chave separadamente. Um arquivo de chave só pode ser usado com a CLI gcloud. Ao usar REST, você deve fornecer a chave diretamente na sua solicitação.Cada entrada em seu arquivo de chave deve fornecer:
Quando você usa o arquivo de chave em suas solicitações, a ferramenta procura recursos correspondentes e usa as respectivas chaves. Se nenhum recurso correspondente for encontrado, a solicitação falhará.
Um exemplo de arquivo-chave é semelhante a este:
[ { "uri": "https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/disks/example-disk", "key": "acXTX3rxrKAFTF0tYVLvydU1riRZTvUNC4g5I11NY+c=", "key-type": "raw" }, { "uri": "https://www.googleapis.com/compute/v1/projects/myproject/global/snapshots/my-private-snapshot", "key": "ieCx/NcW06PcT7Ep1X6LUTc/hLvUDYyzSZPPVCVPTVEohpeHASqC8uw5TzyO9U+Fka9JFHz0mBibXUInrC/jEk014kCK/NPjYgEMOyssZ4ZINPKxlUh2zn1bV+MCaTICrdmuSBTWlUUiFoDD6PYznLwh8ZNdaheCeZ8ewEXgFQ8V+sDroLaN3Xs3MDTXQEMMoNUXMCZEIpg9Vtp9x2oeQ5lAbtt7bYAAHf5l+gJWw3sUfs0/Glw5fpdjT8Uggrr+RMZezGrltJEF293rvTIjWOEB3z5OHyHwQkvdrPDFcTqsLfh+8Hr8g+mf+7zVPEC8nEbqpdl3GPv3A7AwpFp7MA==", "key-type": "rsa-encrypted" } ]
Melhores práticas para gerenciar seu arquivo de chave
Se você usar um arquivo de chave, restrinja o acesso ao seu arquivo apenas àqueles que precisam dele. Certifique-se de definir as permissões apropriadas para esses arquivos e considere criptografá-los usando ferramentas adicionais:
Criptografe um novo disco permanente com CSEK
Você pode criptografar um novo disco permanente fornecendo uma chave durante a criação da VM ou do disco.
Console
gcloud
Na ferramenta
gcloud compute
, criptografe um disco usando o sinalizador--csek-key-file
durante a criação da VM. Se você estiver usando uma chave encapsulada em RSA, use o componentegcloud beta
:gcloud (beta) compute instances create example-instance --csek-key-file example-file.json
Para criptografar um disco permanente independente:
gcloud (beta) compute disks create example-disk --csek-key-file example-file.json
DESCANSAR
Você pode criptografar um disco usando a propriedade
diskEncryptionKey
e fazendo uma solicitação à API v1 para uma chave bruta (não encapsulada em RSA) ou à API Beta para uma chave encapsulada em RSA. Forneça uma das seguintes propriedades em sua solicitação:Por exemplo, para criptografar um novo disco durante a criação da VM com uma chave encapsulada em RSA:
POST https://compute.googleapis.com/compute/beta/projects/myproject/zones/us-central1-a/instances { "machineType": "zones/us-central1-a/machineTypes/e2-standard-2", "disks": [ { "type": "PERSISTENT", "diskEncryptionKey": { "rsaEncryptedKey": "ieCx/NcW06PcT7Ep1X6LUTc/hLvUDYyzSZPPVCVPTVEohpeHASqC8uw5TzyO9U+Fka9JFHz0mBibXUInrC/jEk014kCK/NPjYgEMOyssZ4ZINPKxlUh2zn1bV+MCaTICrdmuSBTWlUUiFoDD6PYznLwh8ZNdaheCeZ8ewEXgFQ8V+sDroLaN3Xs3MDTXQEMMoNUXMCZEIpg9Vtp9x2oeQ5lAbtt7bYAAHf5l+gJWw3sUfs0/Glw5fpdjT8Uggrr+RMZezGrltJEF293rvTIjWOEB3z5OHyHwQkvdrPDFcTqsLfh+8Hr8g+mf+7zVPEC8nEbqpdl3GPv3A7AwpFp7MA==" }, "initializeParams": { "sourceImage": "projects/debian-cloud/global/images/debian-9-stretch-v20170619" }, "boot": true } ], ... }
Da mesma forma, você também pode usar REST para criar um novo disco permanente independente e criptografá-lo com sua própria chave:
POST https://compute.googleapis.com/compute/beta/projects/myproject/zones/ us-central1-a/disks?sourceImage=https%3A%2F%2Fwww.googleapis.com%2Fcompute%2F alpha%2Fprojects%2Fdebian-cloud%2Fglobal%2Fimages%2Fdebian-9-stretch-v20170619 { "name": "new-encrypted-disk-key", "diskEncryptionKey": { "rsaEncryptedKey": "ieCx/NcW06PcT7Ep1X6LUTc/hLvUDYyzSZPPVCVPTVEohpeHASqC8uw5TzyO9U+Fka9JFHz0mBibXUInrC/jEk014kCK/NPjYgEMOyssZ4ZINPKxlUh2zn1bV+MCaTICrdmuSBTWlUUiFoDD6PYznLwh8ZNdaheCeZ8ewEXgFQ8V+sDroLaN3Xs3MDTXQEMMoNUXMCZEIpg9Vtp9x2oeQ5lAbtt7bYAAHf5l+gJWw3sUfs0/Glw5fpdjT8Uggrr+RMZezGrltJEF293rvTIjWOEB3z5OHyHwQkvdrPDFcTqsLfh+8Hr8g+mf+7zVPEC8nEbqpdl3GPv3A7AwpFp7MA==" }, "type": "zones/us-central1-a/diskTypes/pd-standard" }
Crie um snapshot de um disco criptografado com CSEK
Se você criar um instantâneo a partir de um disco criptografado, o instantâneo também deverá ser criptografado. Você deve especificar uma chave para criptografar a captura instantânea. Não é possível converter discos criptografados ou snapshots criptografados para usar a criptografia padrão do Compute Engine, a menos que você crie uma nova imagem de disco e um novo disco permanente .
Os instantâneos de discos criptografados com CSEK são sempre instantâneos completos. Isso difere dos snapshots de discos criptografados com chaves de criptografia gerenciadas pelo cliente (CMEK) , que são incrementais . Os preços dos snapshots são baseados no tamanho total do snapshot, portanto, um snapshot completo pode custar mais do que um snapshot incremental.
Para criar um instantâneo de disco permanente a partir de um disco criptografado, sua solicitação de criação de instantâneo deve fornecer a chave de criptografia usada para criptografar o disco permanente.
Revise as práticas recomendadas para snapshots de discos permanentes antes de criar seu snapshot.
Console
DESCANSAR
Para fazer a solicitação, forneça a propriedade
sourceDiskEncryptionKey
para acessar o disco permanente de origem. Você deve criptografar a nova captura instantânea usando a propriedadesnapshotEncryptionKey
.Faça uma solicitação à API v1 para obter uma chave bruta (não encapsulada em RSA) ou à API Beta para obter uma chave encapsulada em RSA.
POST https://compute.googleapis.com/compute/beta/projects/myproject/zones/us-central1-a/disks/example-disk/createSnapshot { "snapshotEncryptionKey": { "rsaEncryptedKey": "ieCx/NcW06PcT7Ep1X6LUTc/hLvUDYyzSZPPVCVPTVEohpeHASqC8uw5TzyO9U+Fka9JFHz0mBibXUInrC/jEk014kCK/NPjYgEMOyssZ4ZINPKxlUh2zn1bV+MCaTICrdmuSBTWlUUiFoDD6PYznLwh8ZNdaheCeZ8ewEXgFQ8V+sDroLaN3Xs3MDTXQEMMoNUXMCZEIpg9Vtp9x2oeQ5lAbtt7bYAAHf5l+gJWw3sUfs0/Glw5fpdjT8Uggrr+RMZezGrltJEF293rvTIjWOEB3z5OHyHwQkvdrPDFcTqsLfh+8Hr8g+mf+7zVPEC8nEbqpdl3GPv3A7AwpFp7MA==" }, "sourceDiskEncryptionKey": { "rsaEncryptedKey": "ieCx/NcW06PcT7Ep1X6LUTc/hLvUDYyzSZPPVCVPTVEohpeHASqC8uw5TzyO9U+Fka9JFHz0mBibXUInrC/jEk014kCK/NPjYgEMOyssZ4ZINPKxlUh2zn1bV+MCaTICrdmuSBTWlUUiFoDD6PYznLwh8ZNdaheCeZ8ewEXgFQ8V+sDroLaN3Xs3MDTXQEMMoNUXMCZEIpg9Vtp9x2oeQ5lAbtt7bYAAHf5l+gJWw3sUfs0/Glw5fpdjT8Uggrr+RMZezGrltJEF293rvTIjWOEB3z5OHyHwQkvdrPDFcTqsLfh+8Hr8g+mf+7zVPEC8nEbqpdl3GPv3A7AwpFp7MA==" }, "name": "snapshot-encrypted-disk" }
A propriedade
sourceDiskEncryptionKey
deve corresponder à chave usada para criptografar o disco permanente. Caso contrário, a solicitação falhará.O
snapshotEncryptionKey
permite fornecer uma chave para criptografar o snapshot para que, se o snapshot for usado para criar novos discos permanentes, uma chave correspondente seja fornecida. Esta chave deve seguir o formato de chave anterior. Você também pode optar por deixar essa propriedade indefinida e o snapshot poderá ser usado para criar novos discos permanentes sem exigir uma chave.Crie uma nova imagem de um disco ou imagem personalizada criptografada com CSEK
Você pode criar imagens personalizadas a partir de discos permanentes criptografados ou copiar imagens criptografadas. Você não pode usar o console para copiar imagens. Use a Google Cloud CLI ou REST para copiar imagens.
Console
gcloud
Siga as instruções para criar uma imagem e adicione o sinalizador
--csek-key-file
com um caminho para o arquivo de chave de criptografia do objeto de origem criptografado. Use o componentegcloud beta
se estiver usando uma chave encapsulada em RSA:gcloud (beta) compute images create .... --csek-key-file example-file.json
Se quiser criptografar a nova imagem com sua chave, adicione a chave ao arquivo de chave:
[ { "uri": "https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/disks/source-disk", "key": "acX3RqzxrKAFTF0tYVLvydU1riRZTvUNC4g5I11NY-c=", "key-type": "raw" }, { "uri": "https://www.googleapis.com/compute/v1/projects/myproject/global/snapshots/the-new-image", "key": "TF0t-cSfl7CT7xRF1LTbAgi7U6XXUNC4zU_dNgx0nQc=", "key-type": "raw" } ]
DESCANSAR
Sua solicitação de criação de API deve conter a propriedade da chave de criptografia do seu objeto de origem. Por exemplo, inclua uma das seguintes propriedades dependendo do tipo de objeto de origem:
Inclua também as propriedades
rawKey
oursaEncryptedKey
dependendo do tipo de chave. Faça uma solicitação à API v1 para obter uma chave bruta (não encapsulada em RSA) ou à API Beta para obter uma chave agrupada em RSA. O exemplo a seguir converte um disco permanente criptografado e encapsulado em RSA em uma imagem que usa a mesma chave de criptografia.POST https://compute.googleapis.com/compute/beta/projects/myproject/global/images { "name": "image-encrypted-disk", "sourceDiskEncryptionKey": { "rsaEncryptedKey": "ieCx/NcW06PcT7Ep1X6LUTc/hLvUDYyzSZPPVCVPTVEohpeHASqC8uw5TzyO9U+Fka9JFHz0mBibXUInrC/jEk014kCK/NPjYgEMOyssZ4ZINPKxlUh2zn1bV+MCaTICrdmuSBTWlUUiFoDD6PYznLwh8ZNdaheCeZ8ewEXgFQ8V+sDroLaN3Xs3MDTXQEMMoNUXMCZEIpg9Vtp9x2oeQ5lAbtt7bYAAHf5l+gJWw3sUfs0/Glw5fpdjT8Uggrr+RMZezGrltJEF293rvTIjWOEB3z5OHyHwQkvdrPDFcTqsLfh+8Hr8g+mf+7zVPEC8nEbqpdl3GPv3A7AwpFp7MA==" } "imageEncryptionKey": { "rsaEncryptedKey": "ieCx/NcW06PcT7Ep1X6LUTc/hLvUDYyzSZPPVCVPTVEohpeHASqC8uw5TzyO9U+Fka9JFHz0mBibXUInrC/jEk014kCK/NPjYgEMOyssZ4ZINPKxlUh2zn1bV+MCaTICrdmuSBTWlUUiFoDD6PYznLwh8ZNdaheCeZ8ewEXgFQ8V+sDroLaN3Xs3MDTXQEMMoNUXMCZEIpg9Vtp9x2oeQ5lAbtt7bYAAHf5l+gJWw3sUfs0/Glw5fpdjT8Uggrr+RMZezGrltJEF293rvTIjWOEB3z5OHyHwQkvdrPDFcTqsLfh+8Hr8g+mf+7zVPEC8nEbqpdl3GPv3A7AwpFp7MA==" }, "sourceDisk": "projects/myproject/zones/us-central1-a/disks/source-disks" }
A propriedade opcional
imageEncryptionKey
permite fornecer uma chave para criptografar a imagem. Assim, quando a imagem for usada para criar novos discos permanentes, uma chave correspondente deverá ser fornecida. Esta chave deve seguir o mesmo formato de chave descrito acima. Você também pode optar por deixar essa propriedade indefinida e a imagem poderá ser usada para criar novos discos permanentes sem exigir uma chave.Criptografe uma imagem importada com CSEK
Você pode criptografar uma nova imagem ao importar manualmente 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 .
Importe a imagem personalizada do Compute Engine que você quer criptografar. Especifique o URI para o arquivo compactado e também um caminho para o arquivo de chave de criptografia.
Console
gcloud
Use o comando
compute images create
para criar uma nova imagem e especifique a sinalização--csek-key-file
com um arquivo de chave de criptografia. Se você estiver usando uma chave encapsulada em RSA, use o componentegcloud beta
:gcloud (beta) compute images create [IMAGE_NAME] \ --source-uri gs://[BUCKET_NAME]/[COMPRESSED_FILE] \ --csek-key-file [KEY_FILE]
Substitua o seguinte:
DESCANSAR
Para criptografar uma nova imagem criada a partir de um arquivo RAW, adicione a nova propriedade
imageEncryptionKey
à solicitação de criação de imagem, seguida porrawKey
oursaEncryptedKey
. Faça uma solicitação à API v1 para obter uma chave bruta (não encapsulada em RSA) ou à API Beta para obter uma chave agrupada em RSA.POST https://compute.googleapis.com/compute/beta/projects/myproject/global/images { "rawDisk": { "source": "http://storage.googleapis.com/example-image/example-image.tar.gz" }, "name": "new-encrypted-image", "sourceType": "RAW", "imageEncryptionKey": { "rsaEncryptedKey": "ieCx/NcW06PcT7Ep1X6LUTc/hLvUDYyzSZPPVCVPTVEohpeHASqC8uw5TzyO9U+Fka9JFHz0mBibXUInrC/jEk014kCK/NPjYgEMOyssZ4ZINPKxlUh2zn1bV+MCaTICrdmuSBTWlUUiFoDD6PYznLwh8ZNdaheCeZ8ewEXgFQ8V+sDroLaN3Xs3MDTXQEMMoNUXMCZEIpg9Vtp9x2oeQ5lAbtt7bYAAHf5l+gJWw3sUfs0/Glw5fpdjT8Uggrr+RMZezGrltJEF293rvTIjWOEB3z5OHyHwQkvdrPDFcTqsLfh+8Hr8g+mf+7zVPEC8nEbqpdl3GPv3A7AwpFp7MA==" } }
Crie um disco permanente a partir de um recurso criptografado com CSEK
Crie um disco a partir de um snapshot criptografado com CSEK
Console
gcloud
Na ferramenta
gcloud compute
, forneça a chave de criptografia para o snapshot usando a sinalização--csek-key-file
ao criar o disco. Se você estiver usando uma chave encapsulada em RSA, use o componentegcloud beta
:gcloud (beta) compute disks create ... --source-snapshot example-snapshot --csek-key-file example-file.json
DESCANSAR
Para usar um snapshot criptografado, forneça
sourceSnapshotEncryptionKey
em sua solicitação, seguido derawKey
oursaEncryptedKey
. Faça uma solicitação à API v1 para obter uma chave bruta (não encapsulada em RSA) ou à API Beta para obter uma chave encapsulada em RSA. Por exemplo, para um novo disco permanente independente usando um snapshot criptografado:POST https://compute.googleapis.com/compute/beta/projects/myproject/zones/us-central1-a/disks { "name": "disk-from-encrypted-snapshot", "sourceSnapshot": "global/snapshots/encrypted-snapshot", "sourceSnapshotEncryptionKey": { "rsaEncryptedKey": "ieCx/NcW06PcT7Ep1X6LUTc/hLvUDYyzSZPPVCVPTVEohpeHASqC8uw5TzyO9U+Fka9JFHz0mBibXUInrC/jEk014kCK/NPjYgEMOyssZ4ZINPKxlUh2zn1bV+MCaTICrdmuSBTWlUUiFoDD6PYznLwh8ZNdaheCeZ8ewEXgFQ8V+sDroLaN3Xs3MDTXQEMMoNUXMCZEIpg9Vtp9x2oeQ5lAbtt7bYAAHf5l+gJWw3sUfs0/Glw5fpdjT8Uggrr+RMZezGrltJEF293rvTIjWOEB3z5OHyHwQkvdrPDFcTqsLfh+8Hr8g+mf+7zVPEC8nEbqpdl3GPv3A7AwpFp7MA==" } }
Crie um disco a partir de uma imagem criptografada com CSEK
Console
gcloud
Na ferramenta
gcloud compute
, forneça a chave de criptografia para a imagem usando o sinalizador--csek-key-file
ao criar o disco. Se você estiver usando uma chave encapsulada em RSA, use o componentegcloud beta
:gcloud (beta) compute disks create ... --image example-image --csek-key-file example-file.json
DESCANSAR
Para usar uma imagem criptografada, forneça
sourceImageEncryptionKey
, seguido derawKey
oursaEncryptedKey
. Faça uma solicitação à API v1 para obter uma chave bruta (não encapsulada em RSA) ou à API Beta para obter uma chave encapsulada em RSA.POST https://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/disks { "name": "disk-from-encrypted-image", "sourceImageEncryptionKey": { "rsaEncryptedKey": "ieCx/NcW06PcT7Ep1X6LUTc/hLvUDYyzSZPPVCVPTVEohpeHASqC8uw5TzyO9U+Fka9JFHz0mBibXUInrC/jEk014kCK/NPjYgEMOyssZ4ZINPKxlUh2zn1bV+MCaTICrdmuSBTWlUUiFoDD6PYznLwh8ZNdaheCeZ8ewEXgFQ8V+sDroLaN3Xs3MDTXQEMMoNUXMCZEIpg9Vtp9x2oeQ5lAbtt7bYAAHf5l+gJWw3sUfs0/Glw5fpdjT8Uggrr+RMZezGrltJEF293rvTIjWOEB3z5OHyHwQkvdrPDFcTqsLfh+8Hr8g+mf+7zVPEC8nEbqpdl3GPv3A7AwpFp7MA==" }, "sourceImage": "global/images/encrypted-image" }
Anexando um disco criptografado com CSEK a uma nova VM
Console
gcloud
Para criar uma VM e anexar um disco criptografado, crie um arquivo de chave e forneça a chave usando o sinalizador
--csek-key-file
ao criar a VM. Se você estiver usando uma chave encapsulada em RSA, use o componentegcloud beta
:gcloud (beta) compute instances create example-instance \ --disk name=example-disk,boot=yes \ --csek-key-file example-file.json
DESCANSAR
Crie uma VM usando a API Compute Engine e forneça
rawKey
oursaEncryptedKey
com a especificação do disco. Faça uma solicitação à API v1 para obter uma chave bruta (não encapsulada em RSA) ou à API Beta para obter uma chave encapsulada em RSA.Aqui está um trecho de um exemplo de especificação de disco:
"disks": [ { "deviceName": "encrypted-disk", "source": "projects/myproject/zones/us-central1-f/disks/encrypted-disk", "diskEncryptionKey": { "rawKey": "SGVsbG8gZnJvbSBHb29nbGUgQ2xvdWQgUGxhdGZvcm0=" } } ]
Iniciar ou reiniciar VMs que possuem discos criptografados com CSEK
Para obter detalhes sobre como parar ou iniciar uma VM que tenha discos criptografados, leia Reiniciando uma VM com um disco criptografado .
Usando a linha de comando para criar recursos mistos
Se você quiser criar uma combinação de recursos criptografados pelo cliente e criptografados padrão em uma única solicitação com a CLI do Google Cloud, poderá usar a sinalização
--csek-key-file
com um arquivo de chave e a sinalização--no-require-csek-key-create
na sua solicitação. Ao fornecer ambos os sinalizadores, a CLI gcloud cria quaisquer recursos criptografados pelo cliente que são explicitamente definidos em seu arquivo de chave e também cria quaisquer recursos padrão que você especificar.Por exemplo, suponha que um arquivo-chave contenha o seguinte:
[ { "uri": "https://www.googleapis.com/compute/beta/projects/myproject/zones/us-central1-a/disks/example-disk", "key": "ieCx/NcW06PcT7Ep1X6LUTc/hLvUDYyzSZPPVCVPTVEohpeHASqC8uw5TzyO9U+Fka9JFHz0mBibXUInrC/jEk014kCK/NPjYgEMOyssZ4ZINPKxlUh2zn1bV+MCaTICrdmuSBTWlUUiFoDD6PYznLwh8ZNdaheCeZ8ewEXgFQ8V+sDroLaN3Xs3MDTXQEMMoNUXMCZEIpg9Vtp9x2oeQ5lAbtt7bYAAHf5l+gJWw3sUfs0/Glw5fpdjT8Uggrr+RMZezGrltJEF293rvTIjWOEB3z5OHyHwQkvdrPDFcTqsLfh+8Hr8g+mf+7zVPEC8nEbqpdl3GPv3A7AwpFp7MA==", "key-type": "rsa-encrypted" } ]
Se você quiser criar uma VM com um disco criptografado pelo cliente usando o arquivo de chave e criar simultaneamente uma VM com um disco criptografado padrão na mesma solicitação, faça o seguinte:
gcloud beta compute instances create example-disk example-disk-2 \ --csek-key-file mykeyfile.json --no-require-csek-key-create
Normalmente, não seria possível criar
example-disk-2
se você especificasse o sinalizador--csek-key-file
porque o disco não está explicitamente definido no arquivo de chave. Ao adicionar--no-require-csek-key-create
, ambos os discos são criados, um criptografado usando o arquivo de chave e o outro criptografado usandoGoogle-owned and managed keys.Remova seu CSEK de um disco permanente
Você pode descriptografar o conteúdo de um disco criptografado pelo cliente e criar um novo disco que use Google-owned and managed keys em vez de.
Depois de criar o novo disco permanente, o Compute Engine usaGoogle-owned and managed keys para proteger o conteúdo do disco. Quaisquer instantâneos criados a partir desse disco também deverão usarGoogle-owned and managed keys
,
Este documento discute como criptografar discos com chaves de criptografia fornecidas pelo cliente .
Para obter informações sobre criptografia de disco, consulte Sobre criptografia de disco .
Para obter informações sobre como criptografar discos com chaves de criptografia gerenciadas pelo cliente (CMEK), consulte Proteger recursos usando chaves do Cloud KMS .
Usar CSEKs significa que você fornece suas próprias chaves de criptografia e o Compute Engine usa suas chaves para proteger o Google-owned and Google-managed encryption keys usado para criptografar e descriptografar seus dados. Somente os usuários que puderem fornecer a chave correta poderão usar recursos protegidos por uma chave de criptografia fornecida pelo cliente (CSEK).
O Google não armazena suas chaves em seus servidores e não pode acessar seus dados protegidos, a menos que você forneça a chave. Isso também significa que se você esquecer ou perder sua chave, o Google não poderá recuperá-la ou recuperar quaisquer dados criptografados com a chave perdida.
Quando você exclui um volume de disco permanente, o Google descarta as chaves de criptografia, tornando os dados irrecuperáveis. Este processo é irreversível.
Antes de começar
-