Como importar uma chave pré-encapsulada para o Cloud KMS

Este tópico mostra como encapsular manualmente a chave criada a partir de uma fonte externa e depois importá-la para o Cloud KMS.

Se você quiser que o Cloud KMS encapsule a chave automaticamente e não manualmente, consulte Como importar uma chave.

Introdução

O Cloud KMS permite importar chaves criptográficas fornecidas pelo usuário. Por exemplo, é possível ter chaves que você usa em um ambiente com várias nuvens e/ou no local, com um armazenamento de chaves diferente do Cloud KMS. Outra opção é importar essas chaves caso você queira usar o material de chave atual com o Cloud KMS.

Para importar as chaves, primeiro crie um job de importação, que é um recurso temporário usado apenas com esse fim. Quando você cria um job de importação, o Cloud KMS gera uma "chave de encapsulamento", que é um par de chaves públicas/privadas. A parte de chave pública da chave de encapsulamento é usada para criptografar (processo também conhecido como encapsulamento) o material de chave preexistente para protegê-lo durante o processo de importação. Depois que o material de chave é encapsulado, ele pode ser importado para uma nova chave ou versão de chave. A parte de chave privada da chave de encapsulamento fica disponível apenas no Cloud HSM. Se você restringi-la ao Cloud HSM, o Google não poderá desencapsular o material de chave fora dele.

É possível usar o mesmo job de importação repetidamente para encapsular várias chaves a serem importadas. Os jobs de importação expiram três dias após a criação. Depois de expirados, o Cloud KMS não poderá mais importar ou desencapsular qualquer material de chave que tenha sido encapsulado pela chave pública do job de importação.

Antes de começar

  1. Neste tópico, consideramos que você já esteja usando o Cloud KMS. Caso ainda não esteja, siga as etapas descritas no guia de início rápido do Cloud KMS.
  2. Crie um keyring em uma região permitmida no Cloud HSM, conforme descrito em Como criar keyrings.
  3. Crie uma chave com o nível de proteção HSM, conforme descrito em Como criar chaves.
  4. Configure as permissões do Cloud Identity and Access Management para o keyring e a chave.
  5. Verifique se a chave que você quer importar esteja no formato correto.

Fluxo de importação de chaves

Para importar uma chave, siga estas etapas:

  1. Crie um job de importação.
  2. Recupere a chave de encapsulamento do job de importação.
  3. Encapsule a chave a ser importada.
  4. Faça uma solicitação de importação.

Criar um job de importação

Os jobs de importação são recursos ImportJob. Ao criar um job de importação, você precisa especificar o nível de proteção e o método de importação que serão usados para encapsular a chave.

Para criar um job de importação, siga estas etapas:

Console

  1. Abra a página Chaves de criptografia no Console do GCP.

  2. Clique no nome do keyring em que você criará um job de importação.

  3. Clique em Criar job de importação.

  4. No campo Nome, digite o nome do job de importação.

  5. No menu suspenso Método de importação, selecione um método.

  6. Clique em Criar.

gcloud

gcloud kms import-jobs create \
--location LOCATION \
--keyring KEYRING_NAME \
IMPORTJOB_NAME \
--import-method IMPORT_METHOD \
--protection-level hsm

Substitua IMPORT_METHOD por rsa-oaep-3072-sha1-aes-256 ou rsa-oaep-4096-sha1-aes-256.

Também é possível especificar LOCATION com um local do KMS válido. Acesse uma lista de valores de local usando gcloud kms locations list.

API

  1. Crie uma instância do tipo ImportJob. Forneça valores iniciais para os campos ImportJob.protectionLevel e ImportJob.importMethod.

  2. Usando a instância de ImportJob como corpo da solicitação, chame o método ImportJob.create.

Verificar o estado do job de importação

O estado inicial de um job de importação é PENDING_GENERATION. Quando ele muda para ACTIVE, significa que o job está pronto para uso.

Para verificar o estado, siga estas etapas:

Console

  1. Abra a página Chaves de criptografia no Console do GCP.

  2. Clique no nome do keyring que contém o job de importação.

  3. Clique na guia Jobs de importação na parte superior da página.

  4. O estado ficará visível em Status, ao lado do nome do job de importação.

gcloud

Use o comando gcloud kms import-jobs describe para verificar o estado.

gcloud kms import-jobs \
describe IMPORTJOB_NAME \
--location LOCATION \
--keyring KEYRING_NAME

Também é possível especificar LOCATION com um local do KMS válido. Acesse uma lista de valores de local usando gcloud kms locations list.

API

Chame o método ImportJob.get e verifique o campo state. Se state for PENDING_GENERATION, o job de importação ainda está sendo criado. Verifique periodicamente o estado até que ele seja ACTIVE.

Recuperar a chave de encapsulamento

Para recuperar a chave de encapsulamento, siga estas etapas:

Console

  1. Abra a página Chaves de criptografia no Console do GCP.

  2. Clique no nome do keyring que contém o job de importação.

  3. Clique na guia Jobs de importação na parte superior da página.

  4. Clique no ícone Mais (três pontos verticais) ao lado do job de importação.

  5. Clique em Fazer o download da chave de encapsulamento no menu pop-up.

gcloud

Execute o comando gcloud kms import-jobs describe:

gcloud kms import-jobs \
describe IMPORTJOB_NAME \
--location LOCATION \
--keyring KEYRING_NAME

Se o estado do job de importação se tornar ACTIVE, o campo pem dentro do campo public_key será a chave pública codificada no formato Privacy Enhanced Mail (PEM).

Também é possível especificar LOCATION com um local do KMS válido. Acesse uma lista de valores de local usando gcloud kms locations list.

name: projects/[PROJECT_ID]/locations/[LOCATION]/keyRings/[KEYRING_NAME]/importJobs/[IMPORTJOB_NAME]
createTime: '2019-03-21T17:10:10.864211749Z'
generateTime: '2019-03-21T17:10:10.864211749Z'
importMethod: [IMPORT_METHOD]
protectionLevel: [PROTECTION_LEVEL]
state: ACTIVE
public_key:
  pem: -----BEGIN PUBLIC KEY-----
[PUBLIC_KEY]
-----END PUBLIC KEY-----

API

  1. Chame o método ImportJob.get.

  2. Recupere a chave pública por meio do campo publicKey da resposta ImportJob.get. Esse valor é do tipo WrappingPublicKey. O campo pem do tipo WrappingPublicKey é a chave pública codificada no formato Privacy Enhanced Mail (PEM).

Para mais informações sobre o formato de codificação PEM, consulte as seções de RFC 7468 referentes a Considerações gerais e Codificação textual de informações de chave pública do assunto (links em inglês).

Encapsular o material de chave

Encapsule o material de chave preexistente usando a chave pública do job de importação, que é o valor PEM recuperado na etapa anterior. A documentação do método de importação associado ao job de importação contém instruções mais específicas sobre como a chave deve ser encapsulada.

Fazer uma solicitação para importar a chave

No Cloud KMS, o material de chave é desencapsulado e armazenado na versão de chave resultante quando você o inclui, encapsulado, em uma solicitação para criar uma nova chave ou versão.

Para fazer uma solicitação de importação que inclua a chave encapsulada, siga estas etapas:

Console

Crie uma chave para importar o material de chave nela.

  1. Abra a página Chaves de criptografia no Console do GCP.

  2. Clique no nome do keyring que contém o job de importação.

  3. Clique em Criar chave.

  4. No campo Nome da chave, insira o nome da sua chave.

  5. No menu suspenso Nível de proteção, selecione HSM.

  6. Selecione a Finalidade correspondente à sua chave na lista suspensa. Se você selecionou uma finalidade assimétrica, selecione o Algoritmo no menu suspenso.

  7. Em Material da chave, selecione Importar material da chave. A página Criar chave terá esta aparência:

    Criar uma chave

  8. Clique em Criar.

Você será redirecionado para a página Importar versão da chave.

  1. Selecione seu job de importação no menu suspenso Selecionar tarefa de importação.

  2. No seletor Carregar a chave encapsulada, selecione o material da chave que você ajustou na etapa Encapsular o material da chave.

  3. Se você estiver importando uma chave assimétrica, selecione o algoritmo no menu suspenso Algoritmo. A página Importar versão da chave será semelhante a:

    Importar versão da chave

  4. Clique em Importar.

gcloud

Importe a chave usando o comando gcloud kms keys versions import.

gcloud kms keys versions import \
--location LOCATION \
--keyring KEYRING_NAME \
--key KEY_NAME \
--import-job IMPORTJOB_NAME \
--algorithm ALGORITHM_NAME \
--rsa-aes-wrapped-key-file=PATH_TO_WRAPPED_RSA_AES_KEY

Especifique um LOCATION com um local válido do KMS. Acesse uma lista de valores de local usando gcloud kms locations list.

Veja a seguir a saída do comando gcloud kms keys versions import.

algorithm: [ALGORITHM]
createTime: '2019-03-21T17:10:10.864211749Z'
generateTime: '2019-03-21T17:10:10.864211749Z'
name: projects/[PROJECT_ID]/locations/[LOCATION]/keyRings/[KEYRING_NAME]/cryptoKeys/[KEY_NAME]/cryptoKeyVersions/1
protectionLevel: [PROTECTION_LEVEL]
state: ENABLED

API

  1. Para o corpo da solicitação do método cryptoKeyVersions.import, defina o campo algorithm para o algoritmo da chave que está sendo importada. Esse valor não precisa corresponder ao versionTemplate do CryptoKey que está importando esta versão. O campo algorithm é do tipo CryptoKeyVersionAlgorithm.

  2. Também para o corpo da solicitação, defina o campo wrappedKeyMaterial para o material da chave que você encapsulou na etapa Encapsular o material da chave.

  3. Chame o método cryptoKeyVersions.import. A resposta cryptoKeyVersions.import é do tipo CryptoKeyVersion. Quando uma chave é importada com sucesso, ela recebe o estado ENABLED e pode ser usada com o Cloud KMS.

Verificar o estado da chave importada

O estado inicial de uma chave importada é PENDING_IMPORT. Quando o estado for ENABLED, a chave importada estará pronta para o uso.

Para verificar o estado, siga estas etapas:

Console

  1. Abra a página Chaves de criptografia no Console do GCP.

  2. Clique no nome do keyring que contém a chave.

  3. Clique no nome da sua chave.

  4. O estado ficará visível em Estado ao lado da versão recém-importada.

gcloud

Use o comando gcloud kms keys versions describe para verificar o estado.

gcloud kms keys versions \
describe VERSION \
--location LOCATION \
--keyring KEYRING_NAME \
--key KEY_NAME

Substitua LOCATION por um local válido do KMS. Acesse uma lista de valores de local usando gcloud kms locations list.

API

Chame o método CryptoKeyVersions.get e verifique o campo state. Se state for PENDING_IMPORT, a chave ainda será importada. Verifique periodicamente o estado até que ele seja ENABLED.

Quando uma chave é importada com sucesso, ela recebe o estado ENABLED e pode ser usada com o Cloud KMS.

Para verificar se a chave contém o material da chave e está protegida por HSM, consulte Verificar a chave importada.

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Documentação do Cloud KMS