Criptografe discos com chaves de criptografia fornecidas pelo cliente


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

    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. 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.

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

      3. To initialize the gcloud CLI, run the following command:

        gcloud init
      4. 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.

      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:

  • Brasil
  • Índia

Restrições técnicas

  • 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.

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:

  1. 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.
  2. Codifique sua chave encapsulada em RSA usando a codificação base64 padrão.

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.

  1. 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
    
  2. Baixe o certificado de chave pública :

    $  curl -s -O -L https://cloud-certs.storage.googleapis.com/google-cloud-csek-ingress.pem
  3. Extraia a chave pública do certificado:

    $ openssl x509 -pubkey -noout -in google-cloud-csek-ingress.pem > pubkey.pem
    
  4. 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
    
  5. Codifique sua chave encapsulada em RSA em base64.

    $ openssl enc -base64 -in rsawrappedkey.txt | tr -d '\n' | sed -e '$a\' > rsawrapencodedkey.txt
    

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 :

import argparse
import base64
import os
from typing import Optional

from cryptography import x509
from cryptography.hazmat.backends import default_backend
from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.primitives.asymmetric import padding
from cryptography.hazmat.primitives.asymmetric.rsa import RSAPublicKey
import requests


GOOGLE_PUBLIC_CERT_URL = (
    "https://cloud-certs.storage.googleapis.com/google-cloud-csek-ingress.pem"
)


def get_google_public_cert_key() -> RSAPublicKey:
    """
    Downloads the Google public certificate.

    Returns:
        RSAPublicKey object with the Google public certificate.
    """
    r = requests.get(GOOGLE_PUBLIC_CERT_URL)
    r.raise_for_status()

    # Load the certificate.
    certificate = x509.load_pem_x509_certificate(r.content, default_backend())

    # Get the certicate's public key.
    public_key = certificate.public_key()

    return public_key


def wrap_rsa_key(public_key: RSAPublicKey, private_key_bytes: bytes) -> bytes:
    """
    Use the Google public key to encrypt the customer private key.

    This means that only the Google private key is capable of decrypting
    the customer private key.

    Args:
        public_key: The public key to use for encrypting.
        private_key_bytes: The private key to be encrypted.

    Returns:
        private_key_bytes encrypted using the public_key. Encoded using
        base64.
    """
    wrapped_key = public_key.encrypt(
        private_key_bytes,
        padding.OAEP(
            mgf=padding.MGF1(algorithm=hashes.SHA1()),
            algorithm=hashes.SHA1(),
            label=None,
        ),
    )
    encoded_wrapped_key = base64.b64encode(wrapped_key)
    return encoded_wrapped_key


def main(key_file: Optional[str]) -> None:
    """
    This script will encrypt a private key with Google public key.

    Args:
        key_file: path to a file containing your private key. If not
            provided, a new key will be generated (256 bit).
    """
    # Generate a new 256-bit private key if no key is specified.
    if not key_file:
        customer_key_bytes = os.urandom(32)
    else:
        with open(key_file, "rb") as f:
            customer_key_bytes = f.read()

    google_public_key = get_google_public_cert_key()
    wrapped_rsa_key = wrap_rsa_key(google_public_key, customer_key_bytes)

    b64_key = base64.b64encode(customer_key_bytes).decode("utf-8")

    print(f"Base-64 encoded private key: {b64_key}")
    print(f"Wrapped RSA key: {wrapped_rsa_key.decode('utf-8')}")


if __name__ == "__main__":
    parser = argparse.ArgumentParser(
        description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter
    )
    parser.add_argument("--key_file", help="File containing your binary private key.")

    args = parser.parse_args()

    main(args.key_file)

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 de rawKey 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.

Baixe e instale gcloud .

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:

  • O URI totalmente qualificado para o recurso que a chave protege
  • A chave correspondente
  • O tipo de chave, raw ou rsa-encrypted

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

  1. Vá para a página Discos .

    Vá para discos

  2. Clique em Criar disco e insira as propriedades do novo disco.

  3. Em Criptografia , selecione Chave fornecida pelo cliente .

  4. 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.

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 componente gcloud 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:

  • rawKey : se sua chave for codificada em base64
  • rsaEncryptedKey : se sua chave for encapsulada em RSA e codificada em base64

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

  1. Vá para a página Instantâneos .

    Vá para Instantâneos

  2. Clique em Criar instantâneo .

  3. Em Disco de origem , escolha o disco criptografado do qual você deseja criar um instantâneo.

  4. 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.

  5. Criptografe o novo snapshot fornecendo uma chave de criptografia adicional na seção Criptografia .

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 propriedade snapshotEncryptionKey .

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

  1. Vá para a página Imagens .

    Vá para Imagens

  2. Clique em Criar imagem .

  3. Em Disco de origem , escolha o disco criptografado do qual deseja criar uma imagem.

  4. Em Criptografia , selecione uma solução de gerenciamento de chaves de criptografia.

  5. Se a chave tiver sido agrupada com a chave RSA pública, selecione Chave agrupada .

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 componente gcloud 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:

  • Disco permanente: sourceDiskEncryptionKey
  • Imagem: sourceImageEncryptionKey

Inclua também as propriedades rawKey ou rsaEncryptedKey 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

  1. Vá para a página Imagens .

    Vá para Imagens

  2. Clique em Criar imagem .

  3. Em Origem , escolha Arquivo do Cloud Storage .

  4. Em Arquivo do Cloud Storage , insira o URI do Cloud Storage.

  5. Em Criptografia , escolha Chave fornecida pelo cliente e forneça a chave de criptografia para criptografar a imagem na caixa de texto.

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 componente gcloud beta :

gcloud (beta) compute images create [IMAGE_NAME] \
    --source-uri gs://[BUCKET_NAME]/[COMPRESSED_FILE] \
    --csek-key-file [KEY_FILE]

Substitua o seguinte:

  • [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.

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 por rawKey ou rsaEncryptedKey . 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

  1. Vá para a página Discos .

    Vá para discos

  2. Clique em Criar disco .

  3. Em Tipo de origem , selecione Instantâneo .

  4. Em Criptografia , selecione uma solução de gerenciamento de chaves de criptografia.

  5. Se a chave tiver sido agrupada com a chave RSA pública, selecione Chave agrupada .

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 componente gcloud 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 de rawKey ou rsaEncryptedKey . 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

  1. Vá para a página Discos .

    Vá para discos

  2. Clique em Criar disco .

  3. Em Tipo de fonte , selecione Imagem .

  4. Em Criptografia , selecione uma solução de gerenciamento de chaves de criptografia.

  5. Se a chave tiver sido agrupada com a chave RSA pública, selecione Chave agrupada .

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 componente gcloud 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 de rawKey ou rsaEncryptedKey . 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

  1. Vá para a página Criar uma instância .

    Vá para Criar uma instância

  2. Na seção Disco de inicialização , clique em Alterar e faça o seguinte:

    1. Na página Disco de inicialização , clique na guia Discos existentes .
    2. Na lista Disco , escolha um disco criptografado existente para anexar à VM.
    3. 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.

    4. Clique em Selecionar .

  3. Continue com o processo de criação da VM.

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 componente gcloud 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 ou rsaEncryptedKey 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.

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

Depois de criar o novo disco permanente, 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

  • 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

    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. 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.

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

      3. To initialize the gcloud CLI, run the following command:

        gcloud init
      4. 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.

      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:

  • Brasil
  • Índia

Restrições técnicas

  • 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.

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:

  1. 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.
  2. Codifique sua chave encapsulada em RSA usando a codificação base64 padrão.

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.

  1. 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
    
  2. Baixe o certificado de chave pública :

    $  curl -s -O -L https://cloud-certs.storage.googleapis.com/google-cloud-csek-ingress.pem
  3. Extraia a chave pública do certificado:

    $ openssl x509 -pubkey -noout -in google-cloud-csek-ingress.pem > pubkey.pem
    
  4. 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
    
  5. Codifique sua chave encapsulada em RSA em base64.

    $ openssl enc -base64 -in rsawrappedkey.txt | tr -d '\n' | sed -e '$a\' > rsawrapencodedkey.txt
    

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 :

import argparse
import base64
import os
from typing import Optional

from cryptography import x509
from cryptography.hazmat.backends import default_backend
from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.primitives.asymmetric import padding
from cryptography.hazmat.primitives.asymmetric.rsa import RSAPublicKey
import requests


GOOGLE_PUBLIC_CERT_URL = (
    "https://cloud-certs.storage.googleapis.com/google-cloud-csek-ingress.pem"
)


def get_google_public_cert_key() -> RSAPublicKey:
    """
    Downloads the Google public certificate.

    Returns:
        RSAPublicKey object with the Google public certificate.
    """
    r = requests.get(GOOGLE_PUBLIC_CERT_URL)
    r.raise_for_status()

    # Load the certificate.
    certificate = x509.load_pem_x509_certificate(r.content, default_backend())

    # Get the certicate's public key.
    public_key = certificate.public_key()

    return public_key


def wrap_rsa_key(public_key: RSAPublicKey, private_key_bytes: bytes) -> bytes:
    """
    Use the Google public key to encrypt the customer private key.

    This means that only the Google private key is capable of decrypting
    the customer private key.

    Args:
        public_key: The public key to use for encrypting.
        private_key_bytes: The private key to be encrypted.

    Returns:
        private_key_bytes encrypted using the public_key. Encoded using
        base64.
    """
    wrapped_key = public_key.encrypt(
        private_key_bytes,
        padding.OAEP(
            mgf=padding.MGF1(algorithm=hashes.SHA1()),
            algorithm=hashes.SHA1(),
            label=None,
        ),
    )
    encoded_wrapped_key = base64.b64encode(wrapped_key)
    return encoded_wrapped_key


def main(key_file: Optional[str]) -> None:
    """
    This script will encrypt a private key with Google public key.

    Args:
        key_file: path to a file containing your private key. If not
            provided, a new key will be generated (256 bit).
    """
    # Generate a new 256-bit private key if no key is specified.
    if not key_file:
        customer_key_bytes = os.urandom(32)
    else:
        with open(key_file, "rb") as f:
            customer_key_bytes = f.read()

    google_public_key = get_google_public_cert_key()
    wrapped_rsa_key = wrap_rsa_key(google_public_key, customer_key_bytes)

    b64_key = base64.b64encode(customer_key_bytes).decode("utf-8")

    print(f"Base-64 encoded private key: {b64_key}")
    print(f"Wrapped RSA key: {wrapped_rsa_key.decode('utf-8')}")


if __name__ == "__main__":
    parser = argparse.ArgumentParser(
        description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter
    )
    parser.add_argument("--key_file", help="File containing your binary private key.")

    args = parser.parse_args()

    main(args.key_file)

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 de rawKey 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.

Baixe e instale gcloud .

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:

  • O URI totalmente qualificado para o recurso que a chave protege
  • A chave correspondente
  • O tipo de chave, raw ou rsa-encrypted

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

  1. Vá para a página Discos .

    Vá para discos

  2. Clique em Criar disco e insira as propriedades do novo disco.

  3. Em Criptografia , selecione Chave fornecida pelo cliente .

  4. 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.

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 componente gcloud 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:

  • rawKey : se sua chave for codificada em base64
  • rsaEncryptedKey : se sua chave for encapsulada em RSA e codificada em base64

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

  1. Vá para a página Instantâneos .

    Vá para Instantâneos

  2. Clique em Criar instantâneo .

  3. Em Disco de origem , escolha o disco criptografado do qual você deseja criar um instantâneo.

  4. 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.

  5. Criptografe o novo snapshot fornecendo uma chave de criptografia adicional na seção Criptografia .

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 propriedade snapshotEncryptionKey .

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

  1. Vá para a página Imagens .

    Vá para Imagens

  2. Clique em Criar imagem .

  3. Em Disco de origem , escolha o disco criptografado do qual deseja criar uma imagem.

  4. Em Criptografia , selecione uma solução de gerenciamento de chaves de criptografia.

  5. Se a chave tiver sido agrupada com a chave RSA pública, selecione Chave agrupada .

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 componente gcloud 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:

  • Disco permanente: sourceDiskEncryptionKey
  • Imagem: sourceImageEncryptionKey

Inclua também as propriedades rawKey ou rsaEncryptedKey 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

  1. Vá para a página Imagens .

    Vá para Imagens

  2. Clique em Criar imagem .

  3. Em Origem , escolha Arquivo do Cloud Storage .

  4. Em Arquivo do Cloud Storage , insira o URI do Cloud Storage.

  5. Em Criptografia , escolha Chave fornecida pelo cliente e forneça a chave de criptografia para criptografar a imagem na caixa de texto.

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 componente gcloud beta :

gcloud (beta) compute images create [IMAGE_NAME] \
    --source-uri gs://[BUCKET_NAME]/[COMPRESSED_FILE] \
    --csek-key-file [KEY_FILE]

Substitua o seguinte:

  • [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.

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 por rawKey ou rsaEncryptedKey . 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

  1. Vá para a página Discos .

    Vá para discos

  2. Clique em Criar disco .

  3. Em Tipo de origem , selecione Instantâneo .

  4. Em Criptografia , selecione uma solução de gerenciamento de chaves de criptografia.

  5. Se a chave tiver sido agrupada com a chave RSA pública, selecione Chave agrupada .

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 componente gcloud 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 de rawKey ou rsaEncryptedKey . 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

  1. Vá para a página Discos .

    Vá para discos

  2. Clique em Criar disco .

  3. Em Tipo de fonte , selecione Imagem .

  4. Em Criptografia , selecione uma solução de gerenciamento de chaves de criptografia.

  5. Se a chave tiver sido agrupada com a chave RSA pública, selecione Chave agrupada .

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 componente gcloud 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 de rawKey ou rsaEncryptedKey . 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

  1. Vá para a página Criar uma instância .

    Vá para Criar uma instância

  2. Na seção Disco de inicialização , clique em Alterar e faça o seguinte:

    1. Na página Disco de inicialização , clique na guia Discos existentes .
    2. Na lista Disco , escolha um disco criptografado existente para anexar à VM.
    3. 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.

    4. Clique em Selecionar .

  3. Continue com o processo de criação da VM.

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 componente gcloud 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 ou rsaEncryptedKey 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.

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

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