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.

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/)
Leave a Reply