Como clonar um cluster AWS CloudHSM entre Regiões

Por que clonar um cluster CloudHSM entre Regiões?

O AWS CloudHSM é o serviço da AWS para geração, armazenamento, importação, exportação e gerenciamento de chaves criptográficas em hardware dedicado. Ele também suporta funções de hash para cálculo de resumos de mensagens e Códigos de Autenticação de Mensagens Baseados em Hash (HMACs), além de assinatura e verificação de dados.

Para garantir redundância e simplificar a recuperação de desastres, a AWS recomenda clonar o cluster CloudHSM para uma Região diferente. Esse processo permite sincronizar chaves entre Regiões — incluindo as chamadas chaves não exportáveis, que nunca saem do dispositivo HSM em texto simples e só podem ser sincronizadas para clusters clonados.

Neste guia, a AWS descreve como usar o recurso CopyBackupToRegion para clonar um cluster da Região 1 para uma Nuvem Privada Virtual (VPC) na Região 2. O processo é feito em dois passos: copiar um backup para a Região de destino e criar um novo cluster a partir desse backup.

Atenção: A partir de 1º de janeiro de 2025, as ferramentas do Client SDK 3 (CMU e KMU) não têm mais suporte. Todo este guia usa exclusivamente comandos do Client SDK 5 (versão 5.17 ou superior).

Como funciona o processo

O CloudHSM cria um backup do cluster e o armazena em um bucket do Amazon Simple Storage Service (Amazon S3) pertencente ao próprio serviço. Em seguida, você usa a Interface de Linha de Comando da AWS (AWS CLI) para copiar esse backup para outra Região. Com o backup disponível na Região de destino, você cria um novo cluster e os módulos de segurança de hardware (HSMs) a partir dele.

Imagem original — fonte: Aws

Vale destacar alguns pontos importantes sobre os backups:

  • Backups não podem ser copiados entre partições distintas, como as Regiões AWS GovCloud, Região da China e AWS European Sovereign Cloud.
  • O backup em ambas as Regiões fica armazenado em um bucket S3 gerenciado pelo CloudHSM, com durabilidade de 99,999999999%.
  • A criptografia e a segurança do backup na Região 2 são idênticas às da Região 1. Mais detalhes em AWS CloudHSM cluster backups.
  • Qualquer HSM criado no cluster clonado terá os mesmos usuários e chaves do cluster original no momento do backup.
  • A partir do momento da clonagem, a sincronização precisa ser feita manualmente.

Pré-requisitos

Antes de começar, certifique-se de ter em mãos:

  • VPC na Região 1 com pelo menos 1 sub-rede pública e 1 privada
  • VPC na Região 2 com pelo menos 1 sub-rede pública e 1 privada
  • Cross-Region VPC habilitada entre as duas Regiões
  • AWS CLI instalada
  • Permissões de Gerenciamento de Identidade e Acesso da AWS (IAM) para as APIs do CloudHSM em ambas as Regiões
  • Client SDK 5 instalado na instância de gerenciamento (versão 5.17 ou superior recomendada)

Observação importante: A sincronização de chaves entre clusters em mais de uma Região só funciona se todos os clusters forem criados a partir do mesmo backup. Isso ocorre porque a sincronização exige a presença da mesma chave secreta — chamada de masking key — no HSM de origem e no de destino. Essa chave é específica de cada cluster, não pode ser exportada e serve exclusivamente para sincronizar chaves entre HSMs de um mesmo cluster.

Passo 1: Criar o primeiro cluster na Região 1

Criar o cluster

Substitua <SUBNET_ID_1> por uma das suas sub-redes privadas e anote o ID do cluster retornado:

aws cloudhsmv2 create-cluster --hsm-type hsm2m.medium --subnet-ids <SUBNET_ID_1>

Lançar a instância EC2 cliente

Lance uma instância do Amazon Elastic Compute Cloud (Amazon EC2) na sub-rede pública. Consulte o Passo 1 do guia de início do Amazon EC2 para instruções detalhadas.

Criar o primeiro HSM

Substitua <CLUSTER_ID> pelo ID anotado anteriormente e <AVAILABILITY_ZONE> pela Zona de Disponibilidade correspondente à sua sub-rede privada (por exemplo, us-east-1a):

aws cloudhsmv2 create-hsm --cluster-id <CLUSTER_ID> --availability-zone <AVAILABILITY_ZONE>

Inicializar o cluster

Antes de inicializar o cluster, crie um certificado autoassinado e use-o para assinar a Requisição de Assinatura de Certificado (CSR) do cluster. Com o certificado assinado em mãos, inicialize o cluster:

aws cloudhsmv2 initialize-cluster \
  --cluster-id <CLUSTER_ID> \
  --signed-cert file://<CLUSTER_ID>_CustomerHsmCertificate.crt \
  --trust-anchor file://customerCA.crt

Após o comando, o cluster entra no estado Initialized. Copie os certificados para que o cliente CloudHSM possa verificar a identidade do cluster:

sudo cp _CustomerHsmCertificate.crt /opt/cloudhsm/etc/
sudo cp customerCA.crt /opt/cloudhsm/etc/

Instalar e configurar o Client SDK 5

Baixe e instale o CloudHSM Client SDK 5 mais recente (versão 5.17 ou superior). Exemplo para Amazon Linux 2023:

wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/Amzn2023/cloudhsm-cli-latest.amzn2023.x86_64.rpm
sudo yum install -y ./cloudhsm-cli-latest.amzn2023.x86_64.rpm

Configure o cliente com o endereço IP da Interface de Rede Elástica (ENI) do seu HSM:

configure-cli -a <HSM_IP>

Ativar o cluster

Para ativar o cluster, execute o CloudHSM CLI em modo interativo:

cloudhsm-cli interactive

Execute user list para ver o usuário admin ainda não ativado. Em seguida, use cluster activate para definir a senha inicial:

aws-cloudhsm > cluster activate
Enter password:<NewPassword>
Confirm password:<NewPassword>
{
  "error_code": 0,
  "data": "Cluster activation successful"
}

Após ativar, saia com quit e faça login novamente com a nova senha usando login --username admin --role admin. Em seguida, crie o primeiro usuário criptográfico (CU) com o comando abaixo. Para mais informações sobre tipos de usuário, consulte os tipos de usuário HSM para o CloudHSM CLI.

user create --username <USERNAME> --role crypto-user

Passo 2: Criar chaves na Região 1

Crie uma chave AES-256 não exportável:

aws-cloudhsm > key generate-symmetric aes \
  --label aes-example \
  --key-length-bytes 32 \
  --attributes extractable=false

Anote a referência da chave retornada no output — você precisará dela para a sincronização mais adiante.

Passo 3: Acionar o backup do cluster

Para gerar um backup destinado à Região 2, adicione um segundo HSM ao cluster na Região 1 (via Console AWS ou AWS CLI). O backup gerado conterá:

  • Todos os usuários (Oficiais de Criptografia (COs), Usuários de Criptografia (CUs) e Usuários de Dispositivo)
  • Todo o material de chaves dos HSMs
  • Todas as configurações e políticas

Anote o ID do backup. Você pode encontrá-lo no console do CloudHSM em Backups ou usando o comando:

aws cloudhsmv2 describe-backups --cluster-id <CLUSTER_ID>

Para evitar cobranças desnecessárias, o HSM adicional pode ser excluído após a criação do backup.

Passo 4: Copiar o backup entre Regiões

Permissões IAM necessárias

Certifique-se de que sua função ou usuário IAM possui os privilégios de administrador do CloudHSM. Veja um exemplo de política de permissões:

{
  "Version": "2012-10-17",
  "Statement": {
    "Effect": "Allow",
    "Action": [
      "cloudhsm:*",
      "ec2:CreateNetworkInterface",
      "ec2:DescribeNetworkInterfaces",
      "ec2:DescribeNetworkInterfaceAttribute",
      "ec2:DetachNetworkInterface",
      "ec2:DeleteNetworkInterface",
      "ec2:CreateSecurityGroup",
      "ec2:AuthorizeSecurityGroupIngress",
      "ec2:AuthorizeSecurityGroupEgress",
      "ec2:RevokeSecurityGroupEgress",
      "ec2:DescribeSecurityGroups",
      "ec2:DeleteSecurityGroup",
      "ec2:CreateTags",
      "ec2:DescribeVpcs",
      "ec2:DescribeSubnets",
      "iam:CreateServiceLinkedRole"
    ],
    "Resource": "*"
  }
}

Executar a cópia do backup

Para copiar o backup da Região 1 para a Região 2, você precisa da Região de destino e do ID do cluster ou do backup. Se informar apenas o ID do cluster, o backup mais recente será utilizado. Para um backup específico, use o ID do backup:

aws cloudhsmv2 copy-backup-to-region \
  --destination-region <DESTINATION_REGION> \
  --backup-id <BACKUP_ID>

Exemplo de resposta:

{
  "DestinationBackup": {
    "SourceBackup": "backup-4kuraxsqetz",
    "SourceCluster": "cluster-kzlczlspnho",
    "CreateTimestamp": 1531742400,
    "SourceRegion": "us-east-1"
  }
}

Com o novo ID de backup disponível na Região 2, crie o cluster clonado:

aws cloudhsmv2 create-cluster \
  --hsm-type hsm2m.medium \
  --subnet-ids <SUBNET_ID_REGION_2> \
  --source-backup-id <BACKUP_ID_REGION_2>

Transferência de certificado e configuração do grupo de segurança

Copie o conteúdo do certificado do cluster original para um novo arquivo no cluster da Região 2. O certificado é necessário para conexões criptografadas entre o cliente e as instâncias HSM.

Em seguida, adicione o Grupo de Segurança do cluster clonado à sua instância EC2 cliente: selecione o Grupo de Segurança da instância EC2 no console, escolha “Adicionar regras” e adicione uma regra que permita tráfego do ID do Grupo de Segurança do cluster na porta 2225.

Recupere o endereço IP da ENI do HSM na Região 2 — você precisará dele no próximo passo:

aws cloudhsmv2 describe-clusters \
  --filters clusterIds=<cluster_ID_region_2> \
  --region <region_2> \
  --query 'Clusters.Hsms.EniIp' \
  --output text

Passo 5: Configurar a conectividade entre Regiões

Para que o CloudHSM CLI se comunique simultaneamente com os dois clusters, adicione o cluster da Região 2 à configuração do cliente usando o endereço IP da ENI obtido anteriormente:

configure-cli add-cluster \
  --cluster-id <cluster_ID_region_2> \
  --endpoint <hsm_eni_ip_region_2> \
  --region <region_2>

A partir desse ponto, o CloudHSM CLI se comunicará com ambos os clusters simultaneamente, usando os certificados já configurados e a masking key compartilhada entre os clusters clonados.

Passo 6: Sincronizar chaves entre os clusters

Listar usuários e chaves

Antes de replicar, verifique quais usuários e chaves existem:

# Listar todos os usuários
cloudhsm-cli user list

# Listar chaves de um usuário específico
cloudhsm-cli key list --username <username>

Replicar chaves

Para replicar uma chave da Região 1 para a Região 2:

cloudhsm-cli key replicate \
  --filter key-reference=<key_ref> \
  --source-cluster-id <source_cluster_ID> \
  --destination-cluster-id <destination_cluster_ID>

Verifique a replicação listando as chaves novamente. O output deve mostrar referências de chaves idênticas em ambos os clusters. Repita o processo para cada chave adicional que precisar sincronizar.

Pontos de atenção após a clonagem

  • Usuários criados após o backup inicial precisam ser criados manualmente nos dois clusters.
  • Alterações de senha em um cluster precisam ser replicadas manualmente para o outro.
  • Chaves criadas após o backup inicial precisam ser sincronizadas com pelo menos um HSM do cluster clonado — depois disso, a sincronização automática do CloudHSM cuida do restante dentro do segundo cluster.
  • Mantenha as ferramentas do Client SDK 5 atualizadas para ter acesso aos recursos mais recentes e melhorias de segurança.
  • O Client SDK 5 oferece suporte à arquitetura ARM64 nas seguintes distribuições Linux: Amazon Linux 2023, Amazon Linux 2, Red Hat Enterprise Linux (RHEL) 8 (8.3+), RHEL 9 (9.2+), RHEL 10 (10.0+), Ubuntu 22.04 LTS, Ubuntu 24.04 LTS, Debian 12 e SUSE Linux Enterprise Server 15.

Conclusão

Seguindo esse processo, é possível configurar um ambiente AWS CloudHSM tolerante a falhas, com chaves sincronizadas entre Regiões usando as ferramentas e práticas recomendadas mais recentes. A configuração de clusters entre Regiões traz melhorias na recuperação de desastres, reduz o risco de perda de dados e garante a continuidade das operações criptográficas — assegurando que as chaves críticas permaneçam disponíveis mesmo diante de uma falha regional. Dúvidas ou comentários podem ser enviados ao AWS re:Post.

Fonte

How to clone an AWS CloudHSM cluster across Regions (https://aws.amazon.com/blogs/security/how-to-clone-an-aws-cloudhsm-cluster-across-regions-2/)

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *