Criar e gerenciar uma instância do Cloud HSM de locatário único

Este guia mostra como criar, provisionar e gerenciar uma instância do Cloud HSM de locatário único usando a Google Cloud CLI. Depois de criar e provisionar a instância, é possível criar e usar chaves nela usando o console Google Cloud , a API Cloud Key Management Service, a CLI gcloud e bibliotecas de cliente.

Para criar e gerenciar sua instância, é necessário usar a autenticação de quorum. Ao criar a instância, você define o número de aprovações de membros do quorum necessárias para executar operações de instância. Os membros do quorum precisam ter sempre pelo menos este número de chaves de controle disponíveis para manter o controle administrativo da sua instância.

Antes de começar

  1. Revise e aplique as práticas recomendadas do Cloud HSM de locatário único ao criar e manter sua instância.
  2. Decida com quantos membros do quorum você quer começar. Outros membros do quorum podem ser adicionados mais tarde, se aprovados pelos membros atuais. O número mínimo de membros do quorum é três.
  3. Decida quantos membros do quorum são necessários para aprovar propostas. Você não pode mudar esse número depois que a instância for criada. Os membros do quorum precisam sempre ter acesso a esse número de chaves de controle para manter a instância. O tamanho mínimo do quorum é dois. O tamanho mínimo do quorum precisa ser menor que o número de membros do quorum.
  4. Decida como você vai garantir que a instância seja atualizada a tempo. Monitore o disableDate da instância e proponha, aprove e execute uma operação de atualização da instância antes do prazo para evitar inatividade indesejada.
  5. Para receber as permissões necessárias para criar, gerenciar e usar instâncias do Cloud HSM de locatário único, peça ao administrador para conceder a você os seguintes papéis do IAM no projeto ou em um recurso principal:

    • Criar propostas: Proponente de HSM de locatário único do Cloud KMS (cloudkms.hsmSingleTenantProposer)
    • Aprovar propostas: Membro do quórum de HSM de locatário único do Cloud KMS (cloudkms.hsmSingleTenantQuorumMember)
    • Executar propostas: Executor de HSM de locatário único do Cloud KMS (cloudkms.hsmSingleTenantExecutor)
    • Criar chaves: Criador de chaves de HSM de locatário único do Cloud KMS (roles/cloudkms.hsmSingleTenantKeyCreator)

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

    Também é possível conseguir as permissões necessárias usando papéis personalizados ou outros papéis predefinidos.

  6. Para cada membro do quorum, gere um par de chaves RSA-2048 para autenticação de dois fatores (2FA). Recomendamos que você use tokens físicos para as chaves de controle. Siga os padrões da sua organização para criar pares de chaves RSA-2048 em tokens físicos.

    Para fins de demonstração, este guia usa o OpenSSL para criar três chaves RSA-2048 com suporte de software:

        openssl genrsa -out rsaprivate1.pem
        openssl genrsa -out rsaprivate2.pem
        openssl genrsa -out rsaprivate3.pem
    
        openssl rsa -in rsaprivate1.pem  -out rsapub1.pem --pubout
        openssl rsa -in rsaprivate2.pem  -out rsapub2.pem --pubout
        openssl rsa -in rsaprivate3.pem  -out rsapub3.pem --pubout
        

    Armazene as chaves privadas com segurança. Elas são necessárias para aprovar propostas. Mantenha as chaves públicas por perto. Você vai precisar delas para criar a instância do Cloud HSM de locatário único.

  7. Escolha um local do Cloud KMS que ofereça suporte ao HSM de locatário único do Cloud. Para identificar locais compatíveis, consulte a lista de locais na página Locais do Cloud KMS. No filtro Suporte a HSM, selecione Compatível com HSM de locatário único.

Criar e provisionar uma instância

Para criar e provisionar uma instância do Cloud HSM de locatário único, use a CLI gcloud para criar o recurso de instância, uma proposta para registrar suas chaves de autenticação e, em seguida, aprovar e executar a proposta.

Criar instância

Essa etapa precisa ser concluída por um administrador de instância com o papel de Proponente de HSM de locatário único do Cloud KMS.

  1. Defina seu projeto padrão.

    gcloud config set project PROJECT_ID
    

    Substitua PROJECT_ID pelo identificador do seu projeto.

  2. Crie a instância do Cloud HSM de locatário único.

    gcloud kms single-tenant-hsm create --location=LOCATION \
        --total-approver-count=QUORUM_MEMBER_COUNT \
        --single-tenant-hsm-instance-id=INSTANCE_ID
    

    Substitua:

    • LOCATION: o local em que você quer criar a instância, por exemplo, us-central1.
    • QUORUM_MEMBER_COUNT: o número total de membros do quorum. Esse também é o número de chaves de controle que você criou anteriormente. O valor mínimo é 3. Outras chaves podem ser adicionadas mais tarde com aprovação de quorum. Você precisa ter pelo menos um membro a mais do que o tamanho de quorum necessário para fazer a recuperação após perder uma chave de controle.
    • INSTANCE_ID: o identificador que você quer usar para a instância, por exemplo, example-sthsm-instance. É possível omitir a flag --single-tenant-hsm-instance-id para que o Cloud HSM atribua um UUID.
  3. Verifique o status da instância.

    gcloud kms single-tenant-hsm describe INSTANCE_ID \
        --location=LOCATION
    

    Substitua:

    • INSTANCE_ID: o identificador da sua instância.
    • LOCATION: o local em que você criou a instância.

    Se o estado for PENDING_TWO_FACTOR_AUTH_REGISTRATION, você poderá provisionar a instância. Geralmente, leva de 5 a 30 minutos para chegar a esse estado.

Provisionar a instância

  1. Crie uma proposta para registrar suas chaves de autenticação de dois fatores usando a operação register_two_factor_auth_keys. Esta etapa requer a função Proponente de HSM de locatário único do Cloud KMS. Ao contrário da maioria das propostas, a proposta register_two_factor_auth_keys exige desafios assinados de todos os membros do quorum.

        gcloud kms single-tenant-hsm proposal create INSTANCE_ID 
    --single-tenant-hsm-instance-proposal-id PROPOSAL_ID
    --location LOCATION
    --operation-type register_two_factor_auth_keys
    --required-approver-count MEMBERS_REQUIRED_FOR_APPROVAL
    --two-factor-public-key-pems=PUBLIC_KEY_LIST

    Substitua:

    • INSTANCE_ID: o identificador da sua instância.
    • PROPOSAL_ID o identificador exclusivo que você quer usar para esta proposta, por exemplo, set-up-2fa.
    • LOCATION: o local em que você criou a instância.
    • MEMBERS_REQUIRED_FOR_APPROVAL: o número de membros do quorum que precisam aprovar uma proposta antes que a operação possa ser executada. O valor mínimo é 2. Esse valor não pode ser mudado depois que a instância é provisionada. Os membros do quorum precisam sempre ter acesso a pelo menos essa quantidade de chaves de controle para manter o controle administrativo da instância.
    • PUBLIC_KEY_LIST: uma lista separada por vírgulas de caminhos para as partes de chave pública de todas as suas chaves de controle. Por exemplo, rsapub1.pem,rsapub2.pem,rsapub3.pem. O número de chaves públicas nessa lista precisa corresponder ao valor de QUORUM_MEMBER_COUNT usado anteriormente.
  2. Confira o status da proposta e aguarde até que o estado dela seja PENDING.

      gcloud kms single-tenant-hsm proposal describe PROPOSAL_ID \
          --single_tenant_hsm_instance INSTANCE_ID \
          --location LOCATION
      

    Substitua:

    • INSTANCE_ID: o identificador da sua instância.
    • PROPOSAL_ID o identificador da proposta, por exemplo, set-up-2fa.
    • LOCATION: o local em que você criou a instância.

    Quando o status é PENDING, você pode assinar os desafios.

  3. Receba os desafios da proposta. O provisionamento de uma nova instância do Cloud HSM de locatário único exige desafios assinados de todos os membros do quórum.

      gcloud kms single-tenant-hsm proposal describe PROPOSAL_ID \
          --single_tenant_hsm_instance INSTANCE_ID \
          --location LOCATION \
          --format="json[](quorumParameters.challenges)"
      

    Esse comando retorna uma matriz de desafios formatada em JSON.

  4. Para cada chave, decodifique o desafio usando `basenc --base64url -d` e assine com a chave privada correspondente.

      echo CHALLENGE_N | basenc --base64url -d > decoded-challenge-N.txt
      openssl dgst -sign PRIVATE_KEY_N -out signed-challenge-N.txt decoded-challenge-N.txt
      

    Substitua:

    • N: o número do desafio. Por exemplo, 1 para o primeiro desafio, 2 para o segundo desafio e assim por diante.
    • CHALLENGE_N: o conteúdo do desafio número N da saída da etapa anterior.
    • PRIVATE_KEY_N: o caminho para a chave privada número N. Por exemplo, rsaprivate1.pem para o primeiro desafio.
  5. Aprove a proposta fazendo upload dos desafios assinados. É possível fazer upload deles em um ou vários comandos. Essa etapa requer a função Membro do quórum de HSM de locatário único do Cloud KMS.

      gcloud kms single-tenant-hsm proposal approve PROPOSAL_ID \
          --location LOCATION \
          --single_tenant_hsm_instance INSTANCE_ID \
          --quorum-challenge-replies="SIGNED_QUORUM_CHALLENGE_LIST"
      

    Substitua SIGNED_QUORUM_CHALLENGE_LIST por uma matriz formatada em JSON de desafios, em que cada item da lista é uma tupla que contém o caminho para o desafio assinado e o caminho para a chave pública correspondente. Por exemplo, [('signed-challenge-1.txt','rsapub1.pem'), ('signed-challenge-2.txt','rsapub2.pem')] para enviar os dois primeiros desafios assinados em um comando.

    Depois de fazer upload do número necessário de desafios assinados, o estado da proposta será atualizado para APPROVED.

  6. Depois que a proposta for aprovada, use o comando execute para concluir a operação register_two_factor_auth_keys. Esta etapa exige a função Executor de HSM de locatário único do Cloud KMS e precisa ser concluída em até 24 horas após a criação da proposta.

        gcloud kms single-tenant-hsm proposal execute PROPOSAL_ID 
    --single_tenant_hsm_instance INSTANCE_ID --location LOCATION

    Essa é uma operação de longa duração que provisiona usuários e cria backups. A instância se torna ACTIVE após 20 a 30 minutos.

  7. Depois que a instância for ACTIVE, confira os detalhes dela para ver o disableDate:

        gcloud kms single-tenant-hsm describe INSTANCE_ID 
    --location=LOCATION

    Anote o disableDate da instância. Você precisa concluir uma operação refresh_single_tenant_hsm_instance antes desse horário, ou sua instância será desativada.

Ver instâncias

Os usuários com qualquer uma das seguintes funções podem ver uma lista de instâncias do Cloud HSM de locatário único e seus estados:

  • Proponente de HSM de locatário único do Cloud KMS
  • Membro do quórum de HSM de locatário único do Cloud KMS
  • Executor de HSM de locatário único do Cloud KMS
  • Leitor do Cloud KMS
  • Administrador do Cloud KMS

Revise o estado das suas instâncias regularmente. As instâncias precisam ser atualizadas regularmente para permanecerem Ativas.

As instâncias no estado Ativo podem ser usadas. Os desenvolvedores que precisam criar ou importar chaves em instâncias do Cloud HSM de locatário único precisam do identificador de recurso da instância. O identificador de recurso usa o seguinte formato:

projects/INSTANCE_PROJECT/locations/LOCATION/singleTenantHsmInstances/INSTANCE_NAME

Para conferir as instâncias na sua organização e encontrar os identificadores de recursos delas, siga estas etapas:

Console

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

    Acesse a infraestrutura do KMS

  2. No card Instância de HSM de locatário único, clique em Visualizar. A página Instância de HSM de locatário único mostra uma lista de todas as instâncias de HSM do Cloud de locatário único que você tem permissão para visualizar.

  3. Para ver os detalhes de uma instância, clique no nome dela. A página Detalhes da instância de HSM de locatário único mostra detalhes da instância selecionada, incluindo o identificador de recurso completo dela e uma lista de propostas criadas para ela.

  4. Opcional: para ver ou baixar as chaves públicas associadas às chaves atuais de autenticação de dois fatores (2FA) dos membros do quorum, clique em Receber chave pública. Compare as chaves públicas com as chaves privadas de 2FA para verificar quais chaves de controle estão ativas.

gcloud

Confira uma lista de instâncias atuais usando o método kms single-tenant-hsm list.

gcloud kms single-tenant-hsm list projects/PROJECT_ID/locations/LOCATION

Substitua:

  • PROJECT_ID: o identificador do projeto em que você quer ver as instâncias do HSM de nuvem de locatário único.
  • LOCATION: o local em que você quer ver as instâncias do HSM de locatário único do Cloud.

Confira os detalhes de uma instância atual usando o método kms single-tenant-hsm describe.

gcloud kms single-tenant-hsm describe --location=LOCATION \
    --singletenanthsminstance=INSTANCE_ID

Substitua:

  • LOCATION: o local em que você quer ver as instâncias do HSM de locatário único do Cloud.
  • INSTANCE_ID: a instância que você quer ver os detalhes.

Usar a instância

Enquanto a instância estiver ACTIVE, você poderá criar e usar chaves. É possível criar chaves do Cloud HSM de locatário único em qualquer keyring que esteja no mesmo local de uma instância ativa do Cloud HSM de locatário único.

Para criar chaves do Cloud HSM de locatário único, é necessário ter o papel de Criador de chaves de HSM de locatário único do Cloud KMS, além do papel de Administrador do Cloud KMS.

Depois de criadas, o uso de chaves do Cloud HSM de locatário único não exige permissões especiais.

Crie uma chave

Ao criar uma chave do Cloud HSM de locatário único, especifique a instância do Cloud HSM de locatário único em que você quer criá-la. Caso contrário, o processo é semelhante à criação de qualquer outra chave. Para instruções detalhadas, consulte Criar uma chave.

Importar uma chave

Ao importar material de chave para uma chave do Cloud HSM de locatário único, você precisa especificar a instância do Cloud HSM de locatário único em que quer armazenar o material. Caso contrário, o processo é semelhante à importação de qualquer outra chave. Para instruções detalhadas, consulte Importar uma versão de chave para o Cloud Key Management Service.

Usar uma chave

Depois que a chave é criada, usar uma chave do Cloud HSM de locatário único é idêntico a usar qualquer outra chave do Cloud HSM. Não é necessário especificar a instância do Cloud HSM de locatário único para usar a chave.

Manter uma instância

Depois que a instância é provisionada, você é responsável pela manutenção dela. Você mantém a instância criando propostas de operações de manutenção, obtendo aprovação de quorum e executando a operação aprovada. Só é possível ter uma proposta ativa por vez. Se você não quiser seguir em frente com uma proposta, não poderá sugerir uma operação diferente até excluir a proposta ativa ou esperar que ela expire.

É necessário atualizar a instância antes do disableDate. Se você precisar verificar o disableDate de uma instância, confira os detalhes dela.

Ver propostas de instâncias

Para conferir as propostas de uma instância, siga estas etapas:

Console

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

    Acesse a infraestrutura do KMS

  2. No card Instância de HSM de locatário único, clique em Visualizar. A página Instância de HSM de locatário único mostra uma lista de todas as instâncias de HSM do Cloud de locatário único que você tem permissão para visualizar.

  3. Localize a instância em que você quer ver as propostas e clique no nome dela. A página Detalhes da instância de HSM de locatário único mostra detalhes da instância, incluindo uma lista de propostas criadas para ela.

  4. Opcional: para filtrar a lista de propostas, clique na barra Filtrar e insira seus critérios de filtro. Por exemplo, você pode filtrar a lista para ver apenas a proposta pendente de aprovação ou as que foram concluídas com sucesso.

gcloud

  • Confira uma lista de propostas usando o método kms single-tenant-hsm proposal list.

    gcloud kms single-tenant-hsm proposal list --location=LOCATION \
        --singletenanthsminstance=INSTANCE_ID

    Substitua:

    • LOCATION: o local em que você quer ver as instâncias do HSM de locatário único do Cloud.
    • INSTANCE_ID: o identificador da instância do Cloud HSM de locatário único para que você quer ver propostas.

Atualizar uma instância

É possível atualizar uma instância para mantê-la atualizada e evitar períodos de inatividade não planejados. Essa operação exige autenticação de quorum. Depois que a proposta é aprovada, a operação leva aproximadamente de 15 a 30 minutos para ser concluída.

Quando você atualiza uma instância, o disableDate é definido como 120 dias a partir do momento da atualização.

  1. Crie uma proposta para atualizar a instância usando o tipo de operação refresh_single_tenant_hsm_instance. Esta etapa requer a função de Proponente de HSM de locatário único do Cloud KMS.

        gcloud kms single-tenant-hsm proposal create INSTANCE_ID \
            --location LOCATION \
            --single-tenant-hsm-instance-proposal-id PROPOSAL_ID \
            --operation-type refresh_single_tenant_hsm_instance
        

    Substitua:

    • INSTANCE_ID: o identificador da instância.
    • LOCATION: o local em que você criou a instância.
    • PROPOSAL_ID: o identificador exclusivo que você quer usar para esta proposta, por exemplo, refresh_instance.
  2. Confira o status da proposta e aguarde até que o estado dela seja PENDING.

      gcloud kms single-tenant-hsm proposal describe PROPOSAL_ID \
          --single_tenant_hsm_instance INSTANCE_ID \
          --location LOCATION
      

    Substitua:

    • INSTANCE_ID: o identificador da sua instância.
    • PROPOSAL_ID o identificador da proposta, por exemplo, refresh_instance.
    • LOCATION: o local em que você criou a instância.

    Quando o status é PENDING, você pode assinar os desafios.

  3. Receba os desafios da proposta.

      gcloud kms single-tenant-hsm proposal describe PROPOSAL_ID \
          --single_tenant_hsm_instance INSTANCE_ID \
          --location LOCATION \
          --format="json[](quorumParameters.challenges)"
      

    Esse comando retorna uma matriz de desafios formatada em JSON.

  4. Para cada desafio retornado na etapa anterior, decodifique-o usando basenc --base64url -d e assine com uma chave privada.

      echo CHALLENGE_N | basenc --base64url -d > decoded-challenge-N.txt
      openssl dgst -sign PRIVATE_KEY_N -out signed-challenge-N.txt decoded-challenge-N.txt
      

    Substitua:

    • N: o número do desafio. Por exemplo, 1 para o primeiro desafio, 2 para o segundo desafio e assim por diante.
    • CHALLENGE_N: o conteúdo do desafio número N da saída da etapa anterior.
    • PRIVATE_KEY_N: o caminho para a chave privada número N. Por exemplo, rsaprivate1.pem para o primeiro desafio.
  5. Aprove a proposta fazendo upload dos desafios assinados. É possível fazer upload deles em um ou vários comandos. Essa etapa requer a função Membro do quórum de HSM de locatário único do Cloud KMS.

      gcloud kms single-tenant-hsm proposal approve PROPOSAL_ID \
          --location LOCATION \
          --single_tenant_hsm_instance INSTANCE_ID \
          --quorum-challenge-replies="SIGNED_QUORUM_CHALLENGE_LIST"
      

    Substitua SIGNED_QUORUM_CHALLENGE_LIST por uma matriz formatada em JSON de desafios, em que cada item da lista é uma tupla que contém o caminho para o desafio assinado e o caminho para a chave pública correspondente. Por exemplo, [('signed-challenge-1.txt','rsapub1.pem'), ('signed-challenge-2.txt','rsapub2.pem')] para enviar os dois primeiros desafios assinados em um comando.

    Depois de fazer upload do número necessário de desafios assinados, o estado da proposta será atualizado para APPROVED.

  6. Execute a proposta. Esta etapa exige a função Executor de HSM de locatário único do Cloud KMS e precisa ser concluída em até 24 horas após a criação da proposta.

        gcloud kms single-tenant-hsm proposal execute  PROPOSAL_ID \
        --single_tenant_hsm_instance INSTANCE_ID --location LOCATION
        

    Depois que a operação for concluída, a instância vai permanecer no estado `ACTIVE`, e o disableDate será definido como 120 dias a partir do momento da atualização.

Adicionar um membro do quorum

É possível adicionar um membro do quorum a uma instância. Essa operação requer autenticação por quorum. Depois que a proposta é aprovada, a operação leva aproximadamente de 15 a 30 minutos para ser concluída.

  1. Gere um novo par de chaves RSA-2048 para o novo membro do quorum. Siga os padrões da sua organização para criar pares de chaves RSA-2048 em tokens físicos.

    Armazene a chave privada com segurança. Ela é necessária para aprovar propostas. Mantenha a chave pública por perto. Você vai precisar dela para adicionar o novo membro do quorum à instância de HSM de locatário único do Cloud.

  2. Crie uma proposta para adicionar um membro do quorum à instância usando a operação add_quorum_member. Esta etapa requer a função de Proponente de HSM de locatário único do Cloud KMS.

        gcloud kms single-tenant-hsm proposal create INSTANCE_ID \
            --location LOCATION \
            --single-tenant-hsm-instance-proposal-id PROPOSAL_ID \
            --operation-type add_quorum_member \
            --two_factor_public_key_pem PATH_TO_PUBLIC_KEY
        

    Substitua:

    • INSTANCE_ID: o identificador da instância.
    • LOCATION: o local em que você criou a instância.
    • PROPOSAL_ID: o identificador exclusivo que você quer usar para esta proposta, por exemplo, add_quorum_member.
    • PATH_TO_PUBLIC_KEY: o caminho para a nova chave pública, por exemplo, rsapub4.pem.
  3. Confira o status da proposta e aguarde até que o estado seja PENDING.

      gcloud kms single-tenant-hsm proposal describe PROPOSAL_ID \
          --single_tenant_hsm_instance INSTANCE_ID \
          --location LOCATION
      

    Substitua:

    • INSTANCE_ID: o identificador da sua instância.
    • PROPOSAL_ID o identificador da proposta, por exemplo, add_quorum_member.
    • LOCATION: o local em que você criou a instância.

    Quando o status é PENDING, você pode assinar os desafios.

  4. Receba os desafios da proposta. Para adicionar um novo membro do quorum, é necessário ter desafios assinados de um quorum de membros atuais e um desafio assinado do novo membro usando a nova chave.

      gcloud kms single-tenant-hsm proposal describe PROPOSAL_ID \
          --single_tenant_hsm_instance INSTANCE_ID \
          --location LOCATION \
          --format="json[](requiredActionQuorumParameters.requiredChallenges,requiredActionQuorumParameters.quorumChallenges)"
      

    Esse comando retorna uma matriz de desafios formatada em JSON. O campo requiredActionQuorumParameters.requiredChallenges contém um desafio para a nova chave que você está registrando. O campo requiredActionQuorumParameters.quorumChallenges contém desafios para um quorum das chaves atuais. Você precisa assinar todos os desafios no objeto requiredActionQuorumParameters.

  5. Para cada desafio retornado na etapa anterior, decodifique-o usando basenc --base64url -d e assine com uma chave privada.

      echo CHALLENGE_N | basenc --base64url -d > decoded-challenge-N.txt
      openssl dgst -sign PRIVATE_KEY_N -out signed-challenge-N.txt decoded-challenge-N.txt
      

    Substitua:

    • N: o número do desafio. Por exemplo, 1 para o primeiro desafio, 2 para o segundo desafio e assim por diante.
    • CHALLENGE_N: o conteúdo do desafio número N da saída da etapa anterior.
    • PRIVATE_KEY_N: o caminho para a chave privada número N. Por exemplo, rsaprivate1.pem para o primeiro desafio.
  6. Aprove a proposta fazendo upload dos desafios assinados. É possível fazer upload deles em um ou vários comandos. Essa etapa requer a função Membro do quórum de HSM de locatário único do Cloud KMS.

      gcloud kms single-tenant-hsm proposal approve PROPOSAL_ID \
          --location LOCATION \
          --single_tenant_hsm_instance INSTANCE_ID \
          --quorum-challenge-replies="SIGNED_QUORUM_CHALLENGE_LIST" \
          --required-challenge-replies="SIGNED_REQUIRED_CHALLENGE_LIST"
      

    Substitua:

    • SIGNED_QUORUM_CHALLENGE_LIST: uma matriz formatada em JSON de desafios assinados usando chaves privadas já registradas. Cada item da lista é uma tupla que contém o caminho para o desafio assinado e o caminho para a chave pública correspondente. Por exemplo, [('signed-challenge-1.txt','rsapub1.pem'), ('signed-challenge-2.txt','rsapub2.pem')] para enviar os dois primeiros desafios assinados em um comando.
    • SIGNED_REQUIRED_CHALLENGE_LIST: uma matriz formatada em JSON que contém o desafio assinado usando a nova chave privada, em que o único item da lista é uma tupla que contém o caminho para o desafio assinado e o caminho para a chave pública correspondente. Por exemplo, [('signed-challenge-newkey.txt','rsapub-newkey.pem')].

    Depois de fazer upload do número necessário de desafios assinados, o estado da proposta será atualizado para APPROVED.

  7. Execute a proposta. Esta etapa exige a função Executor de HSM de locatário único do Cloud KMS e precisa ser concluída em até 24 horas após a criação da proposta.

        gcloud kms single-tenant-hsm proposal execute  PROPOSAL_ID \
        --single_tenant_hsm_instance INSTANCE_ID --location LOCATION
        

    Depois que a operação for concluída, o novo membro do quorum poderá participar de desafios para aprovar propostas. A chave pública adicionada agora está incluída na lista de chaves públicas nos detalhes da instância.

Remover um membro do quorum

Se você tiver mais membros do quorum do que o tamanho necessário, poderá remover um membro de uma instância. Essa operação exige autenticação de quorum. Depois que a proposta é aprovada, a operação leva aproximadamente de 15 a 30 minutos para ser concluída.

  1. Crie uma proposta para remover um membro do quorum da instância usando a operação remove_quorum_member. Esta etapa requer a função de Proponente de HSM de locatário único do Cloud KMS.

        gcloud kms single-tenant-hsm proposal create INSTANCE_ID \
            --location LOCATION \
            --single-tenant-hsm-instance-proposal-id PROPOSAL_ID \
            --operation-type remove_quorum_member \
            --two_factor_public_key_pem PATH_TO_PUBLIC_KEY
        

    Substitua:

    • INSTANCE_ID: o identificador da instância.
    • LOCATION: o local em que você criou a instância.
    • PROPOSAL_ID: o identificador exclusivo que você quer usar para esta proposta, por exemplo, remove_quorum_member.
    • PATH_TO_PUBLIC_KEY: o caminho para a chave pública que você quer remover da instância. Por exemplo, rsapub3.pem. Depois que a operação for concluída, a chave privada correspondente não poderá ser usada para aprovar propostas.
  2. Confira o status da proposta e aguarde até que o estado dela seja PENDING.

      gcloud kms single-tenant-hsm proposal describe PROPOSAL_ID \
          --single_tenant_hsm_instance INSTANCE_ID \
          --location LOCATION
      

    Substitua:

    • INSTANCE_ID: o identificador da sua instância.
    • PROPOSAL_ID o identificador da proposta, por exemplo, remove_quorum_member.
    • LOCATION: o local em que você criou a instância.

    Quando o status é PENDING, você pode assinar os desafios.

  3. Receba os desafios da proposta.

      gcloud kms single-tenant-hsm proposal describe PROPOSAL_ID \
          --single_tenant_hsm_instance INSTANCE_ID \
          --location LOCATION \
          --format="json[](quorumParameters.challenges)"
      

    Esse comando retorna uma matriz de desafios formatada em JSON.

  4. Para cada desafio retornado na etapa anterior, decodifique-o usando basenc --base64url -d e assine com uma chave privada.

      echo CHALLENGE_N | basenc --base64url -d > decoded-challenge-N.txt
      openssl dgst -sign PRIVATE_KEY_N -out signed-challenge-N.txt decoded-challenge-N.txt
      

    Substitua:

    • N: o número do desafio. Por exemplo, 1 para o primeiro desafio, 2 para o segundo desafio e assim por diante.
    • CHALLENGE_N: o conteúdo do desafio número N da saída da etapa anterior.
    • PRIVATE_KEY_N: o caminho para a chave privada número N. Por exemplo, rsaprivate1.pem para o primeiro desafio.
  5. Aprove a proposta fazendo upload dos desafios assinados. É possível fazer upload deles em um ou vários comandos. Essa etapa requer a função Membro do quórum de HSM de locatário único do Cloud KMS.

      gcloud kms single-tenant-hsm proposal approve PROPOSAL_ID \
          --location LOCATION \
          --single_tenant_hsm_instance INSTANCE_ID \
          --quorum-challenge-replies="SIGNED_QUORUM_CHALLENGE_LIST"
      

    Substitua SIGNED_QUORUM_CHALLENGE_LIST por uma matriz formatada em JSON de desafios, em que cada item da lista é uma tupla que contém o caminho para o desafio assinado e o caminho para a chave pública correspondente. Por exemplo, [('signed-challenge-1.txt','rsapub1.pem'), ('signed-challenge-2.txt','rsapub2.pem')] para enviar os dois primeiros desafios assinados em um comando.

    Depois de fazer upload do número necessário de desafios assinados, o estado da proposta será atualizado para APPROVED.

  6. Execute a proposta. Esta etapa exige a função Executor de HSM de locatário único do Cloud KMS e precisa ser concluída em até 24 horas após a criação da proposta.

        gcloud kms single-tenant-hsm proposal execute  PROPOSAL_ID \
        --single_tenant_hsm_instance INSTANCE_ID --location LOCATION
        

    Depois que a operação for concluída, o membro removido não poderá mais participar de desafios para aprovar propostas. A chave pública removida não aparece mais na lista de chaves públicas nos detalhes da instância.

Desativar uma instância

É possível desativar uma instância para bloquear temporariamente o acesso a todas as chaves dela. Essa operação requer autenticação de quorum. Depois que a proposta é aprovada, a operação leva cerca de 15 a 30 minutos para ser concluída.

Enquanto uma instância está desativada, as chaves armazenadas nela ainda aparecem como ACTIVE, mas não podem ser usadas. A tentativa de realizar operações criptográficas com uma chave em uma instância desativada resulta em um erro.

  1. Crie uma proposta para desativar a instância usando o tipo de operação disable_single_tenant_hsm_instance. Esta etapa requer a função de Proponente de HSM de locatário único do Cloud KMS.

        gcloud kms single-tenant-hsm proposal create INSTANCE_ID \
            --location LOCATION \
            --single-tenant-hsm-instance-proposal-id PROPOSAL_ID \
            --operation-type disable_single_tenant_hsm_instance
        

    Substitua:

    • INSTANCE_ID: o identificador da instância.
    • LOCATION: o local em que você criou a instância.
    • PROPOSAL_ID: o identificador exclusivo que você quer usar para esta proposta, por exemplo, disable_instance.
  2. Confira o status da proposta e aguarde até que o estado dela seja PENDING.

      gcloud kms single-tenant-hsm proposal describe PROPOSAL_ID \
          --single_tenant_hsm_instance INSTANCE_ID \
          --location LOCATION
      

    Substitua:

    • INSTANCE_ID: o identificador da sua instância.
    • PROPOSAL_ID o identificador da proposta, por exemplo, disable_instance.
    • LOCATION: o local em que você criou a instância.

    Quando o status é PENDING, você pode assinar os desafios.

  3. Receba os desafios da proposta.

      gcloud kms single-tenant-hsm proposal describe PROPOSAL_ID \
          --single_tenant_hsm_instance INSTANCE_ID \
          --location LOCATION \
          --format="json[](quorumParameters.challenges)"
      

    Esse comando retorna uma matriz de desafios formatada em JSON.

  4. Para cada desafio retornado na etapa anterior, decodifique-o usando basenc --base64url -d e assine com uma chave privada.

      echo CHALLENGE_N | basenc --base64url -d > decoded-challenge-N.txt
      openssl dgst -sign PRIVATE_KEY_N -out signed-challenge-N.txt decoded-challenge-N.txt
      

    Substitua:

    • N: o número do desafio. Por exemplo, 1 para o primeiro desafio, 2 para o segundo desafio e assim por diante.
    • CHALLENGE_N: o conteúdo do desafio número N da saída da etapa anterior.
    • PRIVATE_KEY_N: o caminho para a chave privada número N. Por exemplo, rsaprivate1.pem para o primeiro desafio.
  5. Aprove a proposta fazendo upload dos desafios assinados. É possível fazer upload deles em um ou vários comandos. Essa etapa requer a função Membro do quórum de HSM de locatário único do Cloud KMS.

      gcloud kms single-tenant-hsm proposal approve PROPOSAL_ID \
          --location LOCATION \
          --single_tenant_hsm_instance INSTANCE_ID \
          --quorum-challenge-replies="SIGNED_QUORUM_CHALLENGE_LIST"
      

    Substitua SIGNED_QUORUM_CHALLENGE_LIST por uma matriz formatada em JSON de desafios, em que cada item da lista é uma tupla que contém o caminho para o desafio assinado e o caminho para a chave pública correspondente. Por exemplo, [('signed-challenge-1.txt','rsapub1.pem'), ('signed-challenge-2.txt','rsapub2.pem')] para enviar os dois primeiros desafios assinados em um comando.

    Depois de fazer upload do número necessário de desafios assinados, o estado da proposta será atualizado para APPROVED.

  6. Execute a proposta. Esta etapa exige a função Executor de HSM de locatário único do Cloud KMS e precisa ser concluída em até 24 horas após a criação da proposta.

        gcloud kms single-tenant-hsm proposal execute  PROPOSAL_ID \
        --single_tenant_hsm_instance INSTANCE_ID --location LOCATION
        

    Depois que a operação é concluída, a instância permanece no estado DISABLED e não pode ser usada até ser reativada.

Ativar uma instância

É possível reativar uma instância DISABLED para restaurar o acesso a ela e às chaves. Essa operação exige autenticação de quorum. Depois que a proposta é aprovada, a operação leva aproximadamente de 15 a 30 minutos para ser concluída.

  1. Crie uma proposta para ativar a instância usando o tipo de operação enable_single_tenant_hsm_instance. Esta etapa requer a função de Proponente de HSM de locatário único do Cloud KMS.

        gcloud kms single-tenant-hsm proposal create INSTANCE_ID \
            --location LOCATION \
            --single-tenant-hsm-instance-proposal-id PROPOSAL_ID \
            --operation-type enable_single_tenant_hsm_instance
        

    Substitua:

    • INSTANCE_ID: o identificador da instância.
    • LOCATION: o local em que você criou a instância.
    • PROPOSAL_ID: o identificador exclusivo que você quer usar para esta proposta, por exemplo, enable_instance.
  2. Confira o status da proposta e aguarde até que o estado dela seja PENDING.

      gcloud kms single-tenant-hsm proposal describe PROPOSAL_ID \
          --single_tenant_hsm_instance INSTANCE_ID \
          --location LOCATION
      

    Substitua:

    • INSTANCE_ID: o identificador da sua instância.
    • PROPOSAL_ID o identificador da proposta, por exemplo, enable_instance.
    • LOCATION: o local em que você criou a instância.

    Quando o status é PENDING, você pode assinar os desafios.

  3. Receba os desafios da proposta.

      gcloud kms single-tenant-hsm proposal describe PROPOSAL_ID \
          --single_tenant_hsm_instance INSTANCE_ID \
          --location LOCATION \
          --format="json[](quorumParameters.challenges)"
      

    Esse comando retorna uma matriz de desafios formatada em JSON.

  4. Para cada desafio retornado na etapa anterior, decodifique-o usando basenc --base64url -d e assine com uma chave privada.

      echo CHALLENGE_N | basenc --base64url -d > decoded-challenge-N.txt
      openssl dgst -sign PRIVATE_KEY_N -out signed-challenge-N.txt decoded-challenge-N.txt
      

    Substitua:

    • N: o número do desafio. Por exemplo, 1 para o primeiro desafio, 2 para o segundo desafio e assim por diante.
    • CHALLENGE_N: o conteúdo do desafio número N da saída da etapa anterior.
    • PRIVATE_KEY_N: o caminho para a chave privada número N. Por exemplo, rsaprivate1.pem para o primeiro desafio.
  5. Aprove a proposta fazendo upload dos desafios assinados. É possível fazer upload deles em um ou vários comandos. Essa etapa requer a função Membro do quórum de HSM de locatário único do Cloud KMS.

      gcloud kms single-tenant-hsm proposal approve PROPOSAL_ID \
          --location LOCATION \
          --single_tenant_hsm_instance INSTANCE_ID \
          --quorum-challenge-replies="SIGNED_QUORUM_CHALLENGE_LIST"
      

    Substitua SIGNED_QUORUM_CHALLENGE_LIST por uma matriz formatada em JSON de desafios, em que cada item da lista é uma tupla que contém o caminho para o desafio assinado e o caminho para a chave pública correspondente. Por exemplo, [('signed-challenge-1.txt','rsapub1.pem'), ('signed-challenge-2.txt','rsapub2.pem')] para enviar os dois primeiros desafios assinados em um comando.

    Depois de fazer upload do número necessário de desafios assinados, o estado da proposta será atualizado para APPROVED.

  6. Execute a proposta. Esta etapa exige a função Executor de HSM de locatário único do Cloud KMS e precisa ser concluída em até 24 horas após a criação da proposta.

        gcloud kms single-tenant-hsm proposal execute  PROPOSAL_ID \
        --single_tenant_hsm_instance INSTANCE_ID --location LOCATION
        

    Depois que a operação for concluída, a instância vai retornar ao estado "ACTIVE" e o disableDate será definido como 120 dias a partir do momento da atualização.

Excluir uma instância

É possível excluir uma instância para destruí-la permanentemente, assim como as chaves dela. Essa operação requer autenticação de quorum. Depois que a proposta é aprovada, a operação leva cerca de 15 a 30 minutos para ser concluída.

Depois que uma instância é excluída, as chaves armazenadas nela ainda aparecem como ACTIVE, mas não podem ser usadas. A tentativa de realizar operações criptográficas com uma chave em uma instância excluída resulta em um erro.

  1. Crie uma proposta para excluir a instância usando o tipo de operação delete_single_tenant_hsm_instance. Esta etapa requer a função de Proponente de HSM de locatário único do Cloud KMS.

        gcloud kms single-tenant-hsm proposal create INSTANCE_ID \
            --location LOCATION \
            --single-tenant-hsm-instance-proposal-id PROPOSAL_ID \
            --operation-type delete_single_tenant_hsm_instance
        

    Substitua:

    • INSTANCE_ID: o identificador da instância que você quer excluir.
    • LOCATION: o local em que você criou a instância.
    • PROPOSAL_ID: o identificador exclusivo que você quer usar para esta proposta, por exemplo, delete_instance.
  2. Confira o status da proposta e aguarde até que o estado dela seja PENDING.

      gcloud kms single-tenant-hsm proposal describe PROPOSAL_ID \
          --single_tenant_hsm_instance INSTANCE_ID \
          --location LOCATION
      

    Substitua:

    • INSTANCE_ID: o identificador da sua instância.
    • PROPOSAL_ID o identificador da proposta, por exemplo, delete_instance.
    • LOCATION: o local em que você criou a instância.

    Quando o status é PENDING, você pode assinar os desafios.

  3. Receba os desafios da proposta.

      gcloud kms single-tenant-hsm proposal describe PROPOSAL_ID \
          --single_tenant_hsm_instance INSTANCE_ID \
          --location LOCATION \
          --format="json[](quorumParameters.challenges)"
      

    Esse comando retorna uma matriz de desafios formatada em JSON.

  4. Para cada desafio retornado na etapa anterior, decodifique-o usando basenc --base64url -d e assine com uma chave privada.

      echo CHALLENGE_N | basenc --base64url -d > decoded-challenge-N.txt
      openssl dgst -sign PRIVATE_KEY_N -out signed-challenge-N.txt decoded-challenge-N.txt
      

    Substitua:

    • N: o número do desafio. Por exemplo, 1 para o primeiro desafio, 2 para o segundo desafio e assim por diante.
    • CHALLENGE_N: o conteúdo do desafio número N da saída da etapa anterior.
    • PRIVATE_KEY_N: o caminho para a chave privada número N. Por exemplo, rsaprivate1.pem para o primeiro desafio.
  5. Aprove a proposta fazendo upload dos desafios assinados. É possível fazer upload deles em um ou vários comandos. Essa etapa requer a função Membro do quórum de HSM de locatário único do Cloud KMS.

      gcloud kms single-tenant-hsm proposal approve PROPOSAL_ID \
          --location LOCATION \
          --single_tenant_hsm_instance INSTANCE_ID \
          --quorum-challenge-replies="SIGNED_QUORUM_CHALLENGE_LIST"
      

    Substitua SIGNED_QUORUM_CHALLENGE_LIST por uma matriz formatada em JSON de desafios, em que cada item da lista é uma tupla que contém o caminho para o desafio assinado e o caminho para a chave pública correspondente. Por exemplo, [('signed-challenge-1.txt','rsapub1.pem'), ('signed-challenge-2.txt','rsapub2.pem')] para enviar os dois primeiros desafios assinados em um comando.

    Depois de fazer upload do número necessário de desafios assinados, o estado da proposta será atualizado para APPROVED.

  6. Confirme se você quer excluir a instância e triturar criptograficamente todos os dados criptografados usando chaves criadas nela. Depois, execute a proposta. Esta etapa exige a função Executor de HSM de locatário único do Cloud KMS e precisa ser concluída em até 24 horas após a criação da proposta.

    Aviso: o comando a seguir é irreversível. Pode ocorrer perda permanente de dados. O Google não pode ajudar a recuperar chaves em uma instância excluída.
        gcloud kms single-tenant-hsm proposal execute  PROPOSAL_ID \
        --single_tenant_hsm_instance INSTANCE_ID --location LOCATION
        

    Depois que a operação for concluída, a instância será excluída.

Excluir uma proposta

Se você decidir não aprovar ou executar uma proposta, poderá excluí-la antes que ela expire. Ao excluir uma proposta pendente, você não poderá aprová-la e poderá criar uma nova. Excluir uma proposta aprovada impede que você execute a operação.

  • Exclua uma proposta usando o comando proposal delete. Isso requer o papel Proponente de HSM de locatário único do Cloud KMS.

        gcloud kms single-tenant-hsm proposal delete PROPOSAL_ID \
            --location LOCATION \
            --single_tenant_hsm_instance INSTANCE_ID
        

    Substitua:

    • INSTANCE_ID: o identificador da instância.
    • LOCATION: o local em que você criou a instância.
    • PROPOSAL_ID: o identificador exclusivo da proposta que você quer excluir. Por exemplo, proposal_to_delete.

A seguir