Práticas recomendadas para AWS CloudHSM - AWS CloudHSM

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Práticas recomendadas para AWS CloudHSM

Execute as melhores práticas deste tópico para usar o AWS CloudHSM com eficiência.

Gerenciamento de clusters

Siga as melhores práticas desta seção ao criar, acessar e gerenciar seu AWS CloudHSM cluster.

Escale seu cluster para lidar com picos de tráfego

Vários fatores podem influenciar a throughput máxima que seu cluster pode suportar, incluindo tamanho da instância do cliente, tamanho do cluster, topografia da rede e as operações criptográficas necessárias para seu caso de uso.

Como ponto de partida, consulte o tópico AWS CloudHSM Desempenho para obter estimativas de desempenho sobre tamanhos e configurações comuns de clusters. Recomendamos que você teste a carga do seu cluster com o pico de carga previsto para determinar se sua arquitetura atual é resiliente e está na escala certa.

Arquitete seu cluster para alta disponibilidade

Adicione redundância à contabilização da manutenção: AWS pode substituir seu HSM para manutenção programada ou se ele detectar um problema. Como regra geral, o tamanho do seu cluster deve ter pelo menos +1 de redundância. Por exemplo, se você precisar de dois HSMs para que seu serviço opere em horários de pico, o tamanho ideal do cluster será três. Se você seguir as melhores práticas relacionadas à disponibilidade, essas substituições de HSM não devem afetar seu serviço. No entanto, as operações em andamento no HSM substituído podem falhar e devem ser repetidas.

Distribua seus HSMs em várias zonas de disponibilidade: considere como seu serviço será capaz de operar durante uma interrupção na zona de disponibilidade. AWS recomenda que você distribua seus HSMs pelo maior número possível de zonas de disponibilidade. Para um cluster com três HSMs, você deve distribuir os HSMs em três zonas de disponibilidade. Dependendo do seu sistema, você pode precisar de redundância adicional.

Tenha pelo menos três HSMs para garantir a durabilidade das chaves recém-geradas

Para aplicativos que exigem durabilidade de chaves recém-geradas, recomendamos ter pelo menos três HSMs distribuídas em todas as zonas de disponibilidade de uma região.

Acesso seguro ao cluster

Use sub-redes privadas para limitar o acesso à sua instância: execute seus HSMs e instâncias de clientes nas sub-redes privadas da sua VPC. Isso limita o acesso aos seus HSMs do mundo exterior.

Use VPC endpoints para acessar as APIs: o plano de AWS CloudHSM dados foi projetado para operar sem a necessidade de acesso à Internet ou às APIs da AWS. Se sua instância cliente exigir acesso à AWS CloudHSM API, você poderá usar VPC endpoints para acessar a API sem precisar de acesso à Internet em sua instância cliente. Consulte AWS CloudHSM e VPC endpoints Para mais informações.

Reconfigure o SSL para proteger a comunicação cliente-servidor: AWS CloudHSM usa o TLS para estabelecer uma conexão com seu HSM. Depois de inicializar seu cluster, você pode substituir o certificado TLS padrão e a chave usados para estabelecer a conexão TLS externa. Para ter mais informações, consulte Melhore a segurança do seu servidor web com o descarregamento de SSL/TLS em AWS CloudHSM.

Reduza os custos escalando de acordo com suas necessidades

Não há custos iniciais de uso do AWS CloudHSM. Você paga uma taxa horária por cada HSM lançado até encerrar o HSM. Se seu serviço não exigir o uso contínuo do AWS CloudHSM, você pode reduzir os custos reduzindo (excluindo) seus HSMs para zero quando eles não forem necessários. Quando os HSMs forem novamente necessários, você poderá restaurá-los a partir de um backup. Se, por exemplo, você tiver uma workload exigindo que você assine o código uma vez por mês, especificamente no último dia do mês, você pode aumentar a escala do seu cluster verticalmente antes, reduzi-lo excluindo seus HSMs após a conclusão do trabalho e, em seguida, restaurar seu cluster para realizar operações de assinatura novamente no final do próximo mês.

AWS CloudHSM faz automaticamente backups periódicos dos HSMs no cluster. Ao adicionar um novo HSM em uma data posterior, AWS CloudHSM restaurará o backup mais recente no novo HSM para que você possa retomar o uso do mesmo local em que o deixou. Para calcular seus custos de AWS CloudHSM arquitetura, consulte AWS CloudHSM Preços.

Recursos relacionados:

Gerenciamento de usuários do HSM

Siga as melhores práticas nesta seção para gerenciar com eficiência os usuários em seu AWS CloudHSM cluster. Os usuários do HSM são diferentes dos usuários do IAM. Usuários e entidades da IAM que têm uma política baseada em identidade com as permissões apropriadas podem criar HSMs interagindo com recursos por meio da API da AWS. Depois que o HSM for criado, você deverá usar as credenciais de usuário do HSM para autenticar as operações no HSM. Para obter um guia detalhado dos usuários do HSM, consulteGerenciando usuários do HSM em AWS CloudHSM.

Proteja as credenciais de seus usuários do HSM

É fundamental manter as credenciais de seus usuários do HSM protegidas com segurança, pois eles são as entidades que podem acessar e realizar operações criptográficas e de gerenciamento no seu HSM. AWS CloudHSM não tem acesso às suas credenciais de usuário do HSM e não poderá ajudá-lo se você perder o acesso a elas.

Tenha pelo menos dois administradores para evitar o bloqueio

Para evitar ficar bloqueado em seu cluster, recomendamos que você tenha pelo menos dois administradores, caso uma senha de administrador seja perdida. Caso isso aconteça, você pode usar o outro administrador para redefinir a senha.

nota

Administradores no Client SDK 5 são sinônimos de agentes criptográficos (CoS) no Client SDK 3.

Habilite o quórum para todas as operações de gerenciamento de usuários

O quórum permite que você defina um número mínimo de administradores que devem aprovar uma operação de gerenciamento de usuários antes que essa operação possa ocorrer. Devido ao privilégio que os administradores têm, recomendamos que você habilite o quórum para todas as operações de gerenciamento de usuários. Isso pode limitar o potencial de impacto se uma de suas senhas de administrador for comprometida. Para obter mais informações, consulte Gerenciar quórum.

Crie vários usuários de criptografia, cada um com permissões limitadas

Ao separar as responsabilidades dos usuários de criptografia, nenhum usuário tem controle total sobre todo o sistema. Por esse motivo, recomendamos que você crie vários usuários de criptografias e limite as permissões de cada um. Normalmente, isso é feito atribuindo a diferentes usuários de criptografia responsabilidades e ações distintas que eles realizam (por exemplo, ter um usuário de criptografia responsável por gerar e compartilhar chaves com outros usuários de criptografia que, em seguida, as utilizam em seu aplicativo).

Recursos relacionados:

Gerenciamento de chaves HSM

Siga as práticas mais recomendadas desta seção ao gerenciar as chaves em AWS CloudHSM.

Escolha o tipo de chave certo

Ao usar uma chave de sessão, suas transações por segundo (TPS) serão limitadas a um HSM onde a chave existe. HSMs extras em seu cluster não aumentarão a throughput das solicitações dessa chave. Se você usar uma chave de token para o mesmo aplicativo, suas solicitações terão a carga balanceada em todos os HSMs disponíveis em seu cluster. Para ter mais informações, consulte Configurações de sincronização e durabilidade de teclas em AWS CloudHSM.

Gerencie os principais limites de armazenamento

Os HSMs têm limites no número máximo de tokens e chaves de sessão que podem ser armazenados em um HSM ao mesmo tempo. Para obter informações sobre limites de armazenamento, consulte AWS CloudHSM cotas. Se seu aplicativo exigir mais do que o limite, você poderá usar uma ou mais das seguintes estratégias para gerenciar as chaves com eficiência:

Use um encapsulamento confiável para armazenar suas chaves em um armazenamento de dados externo: usando o agrupamento de chaves confiável, você pode superar o limite de armazenamento de chaves armazenando todas as chaves em um armazenamento de dados externo. Quando precisar usar essa chave, você pode desencapsular a chave no HSM como uma chave de sessão, usar a chave para a operação necessária e, em seguida, descartar a chave de sessão. Os dados-chave originais permanecem armazenados com segurança em seu armazenamento de dados para uso sempre que você precisar. Usar chaves confiáveis para fazer isso maximiza sua proteção.

Distribua chaves entre clusters: outra estratégia para superar o limite de armazenamento de chaves é armazenar suas chaves em vários clusters. Nessa abordagem, você mantém um mapeamento das chaves armazenadas em cada cluster. Use esse mapeamento para rotear as solicitações do cliente para o cluster com a chave necessária. Para obter informações sobre como se conectar a vários clusters do mesmo aplicativo cliente, consulte os tópicos a seguir:

Gerenciando e protegendo o encapsulamento de chaves

As chaves podem ser marcadas como extraíveis ou não extraíveis por meio do atributo EXTRACTABLE. Por padrão, as chaves HSM são marcadas como extraíveis.

Chaves extraíveis são chaves que podem ser exportadas do HSM por meio do encapsulamento de chaves. As chaves encapsuladas são criptografadas e devem ser desencapsuladas usando a mesma chave de encapsulamento antes de poderem ser usadas. Chaves não extraíveis não podem ser exportadas do HSM em nenhuma circunstância. Não há como tornar extraível uma chave não extraível. Por esse motivo, é importante considerar se você exige que suas chaves sejam extraíveis ou não e definir o atributo de chave correspondente adequadamente.

Se você precisar de encapsulamento de chaves em seu aplicativo, deverá utilizar o encapsulamento de chaves confiável para limitar a capacidade dos usuários do HSM de encapsular/desencapsular somente chaves que tenham sido explicitamente marcadas como confiáveis por um administrador. Para obter mais informações, consulte tópicos sobre encapsulamento de chaves confiáveis em Gerenciando chaves em AWS CloudHSM.

Recursos relacionados

Integração de aplicações

Siga as melhores práticas nesta seção para otimizar a integração do aplicativo com o AWS CloudHSM cluster.

Faça o bootstrap do seu Client SDK

Antes que seu SDK do cliente possa se conectar ao seu cluster, deve ser feito o bookstrap. Ao fazer bootstrap dos endereços IP para seu cluster, recomendamos usar o parâmetro --cluster-id sempre que possível. Esse método preenche sua configuração com todos os endereços IP do HSM em seu cluster sem precisar acompanhar cada endereço individual. Isso adiciona mais resiliência à inicialização do seu aplicativo no caso de um HSM estar em manutenção ou durante uma interrupção na zona de disponibilidade. Para obter mais detalhes, consulte Bootstrap o Client SDK.

Autentique-se para realizar operações

Em AWS CloudHSM, você deve se autenticar em seu cluster antes de poder realizar a maioria das operações, como operações criptográficas.

Autenticar com a CLI do CloudHSM: você pode se autenticar com a CLI do CloudHSM usando seu modo de comando único ou o modo interativo. Use o comando login para autenticar no modo interativo. Para autenticar no modo de comando único, você deve definir as variáveis ambientais CLOUDHSM_ROLE e. CLOUDHSM_PIN Para obter detalhes sobre como fazer isso, consulteModo de comando único. AWS CloudHSM recomenda armazenar com segurança suas credenciais do HSM quando não estiverem sendo usadas pelo seu aplicativo.

Autenticar com PKCS #11: No PKCS #11, você faz login usando a API C_Login depois de abrir uma sessão usando C_. OpenSession Você só precisa executar um C_Login por slot (cluster). Depois de fazer login com sucesso, você pode abrir sessões adicionais usando C_ OpenSession sem a necessidade de realizar operações adicionais de login. Para obter exemplos de autenticação no PKCS #11, consulte Exemplos de código para a biblioteca PKCS #11.

Autenticar com o JCE: O provedor AWS CloudHSM JCE suporta login implícito e explícito. O método que você escolhe depende do seu caso de uso. Quando possível, recomendamos o uso do Login Implícito, pois o SDK processará automaticamente a autenticação se seu aplicativo for desconectado do cluster e precisar ser autenticado novamente. O uso do login implícito também permite que você forneça credenciais ao seu aplicativo ao usar uma integração que não permite que você tenha controle sobre o código do aplicativo. Para obter mais informações sobre os métodos de login, consulteForneça credenciais ao provedor JCE.

Autenticar com OpenSSL: com o OpenSSL Dynamic Engine, você fornece credenciais por meio de variáveis de ambiente. AWS CloudHSM recomenda armazenar com segurança suas credenciais do HSM quando não estiverem sendo usadas pelo seu aplicativo. Se possível, você deve configurar seu ambiente para recuperar e definir sistematicamente essas variáveis de ambiente sem entrada manual. Para obter detalhes sobre a autenticação com o OpenSSL, consulte Instalação do Mecanismo dinâmico do OpenSSL.

Gerencie com eficácia as chaves em seu aplicativo

Use os atributos-chave para controlar o que as chaves podem fazer: ao gerar uma chave, use os atributos-chave para definir um conjunto de permissões que permitirão ou negarão tipos específicos de operações para essa chave. Recomendamos que as chaves sejam geradas com a menor quantidade de atributos necessária para concluir a tarefa. Por exemplo, uma chave AES usada para criptografia também não deve ter permissão para extrair chaves do HSM. Para obter mais informações, consulte nossas páginas de atributos dos seguintes SDKs do cliente:

Quando possível, armazene em cache os objetos de chaves para minimizar a latência: as operações de localização de chaves consultarão cada HSM em seu cluster. Essa operação é cara e não se escala com a contagem de HSM em seu cluster.

  • Com o PKCS #11, você encontra chaves usando a API do C_FindObjects.

  • Com o JCE, você encontra chaves usando o. KeyStore

Para um desempenho ideal, AWS recomenda que você utilize comandos de localização de teclas (como findKey elista de chaves) somente uma vez durante a inicialização do aplicativo e armazene em cache o objeto chave retornado na memória do aplicativo. Se você precisar desse objeto chave posteriormente, deverá recuperar o objeto do seu cache em vez de consultar esse objeto para cada operação, o que adicionará uma sobrecarga significativa de desempenho.

Use multiencadeamento

AWS CloudHSM oferece suporte a aplicativos multiencadeados, mas há algumas coisas a serem lembradas com aplicativos multiencadeados.

Com o PKCS #11, você deve inicializar a biblioteca PKCS #11 (chamandoC_Initialize) somente uma vez. Cada thread deve ter sua própria sessão (C_OpenSession) atribuída. Não é recomendável usar a mesma sessão em vários threads.

Com o JCE, o AWS CloudHSM provedor deve ser inicializado somente uma vez. Não compartilhe instâncias de objetos SPI entre threads. Por exemplo, Cipher, Signature, Digest, Mac KeyFactory ou KeyGenerator objetos só devem ser utilizados no contexto de seu próprio thread.

Lide com erros de controle de utilização

Você pode enfrentar erros de controle de utilização do HSM nas seguintes circunstâncias:

  • Seu cluster não está adequadamente escalado para gerenciar picos de tráfego.

  • Seu cluster não está dimensionado com redundância de +1 durante eventos de manutenção.

  • Interrupções na zona de disponibilidade resultam em um número reduzido de HSMs disponíveis em seu cluster.

Consulte Controle de utilização do HSM para obter informações sobre a melhor forma de lidar com esse cenário.

Para garantir que seu cluster tenha o tamanho adequado e não seja limitado, AWS recomenda que você faça um teste de carga em seu ambiente com o pico de tráfego esperado.

Integre novas tentativas em operações de cluster

AWS pode substituir seu HSM por motivos operacionais ou de manutenção. Para tornar seu aplicativo resiliente a essas situações, AWS recomenda que você implemente a lógica de repetição do lado do cliente em todas as operações que são roteadas para seu cluster. Espera-se que novas tentativas de operações com falha devido a substituições sejam bem-sucedidas.

Implementação de estratégias de recuperação de desastres

Em resposta a um evento, pode ser necessário afastar seu tráfego de um cluster ou região inteira. As seções a seguir descrevem várias estratégias para fazer isso.

Use o emparelhamento de VPC para acessar seu cluster de outra conta ou região: você pode utilizar o emparelhamento de VPC para acessar seu AWS CloudHSM cluster de outra conta ou região. Para ter mais informações, consulte O que é emparelhamento de VPC? no Amazon VPC Peering Guide. Depois de estabelecer suas conexões de peering e configurar seus grupos de segurança adequadamente, você poderá se comunicar com os endereços IP do HSM da mesma forma que faria normalmente.

Conecte-se a vários clusters do mesmo aplicativo: o provedor JCE, a biblioteca PKCS #11 e a CLI do CloudHSM no Client SDK 5 oferecem suporte à conexão com vários clusters do mesmo aplicativo. Por exemplo, você pode ter dois clusters ativos, cada um em regiões diferentes, e seu aplicativo pode se conectar a ambos ao mesmo tempo e equilibrar a carga entre os dois como parte das operações normais. Se seu aplicativo não estiver usando o Client SDK 5 (o SDK mais recente), você não poderá se conectar a vários clusters do mesmo aplicativo. Como alternativa, você pode manter outro cluster em funcionamento e, no caso de uma interrupção regional, transferir seu tráfego para o outro cluster para minimizar o tempo de inatividade. Consulte as respectivas páginas para obter detalhes:

Restaurar um cluster a partir de um backup: você pode criar um novo cluster a partir do backup de um cluster existente. Para ter mais informações, consulte Gerenciando AWS CloudHSM backups.

Monitorar

Esta seção descreve vários mecanismos que você pode usar para monitorar seu cluster e aplicativo. Para obter detalhes adicionais sobre monitoramento, consulte Monitoramento AWS CloudHSM.

Monitoramento de logs do cliente

Cada Client SDK grava registros que você pode monitorar. Para obter mais informações sobre registro em log, consulte Trabalhar com logs do Client SDK.

Em plataformas projetadas para serem efêmeras, como Amazon ECS e AWS Lambda, coletar registros de clientes de um arquivo pode ser difícil. Nessas situações, é uma prática recomendada configurar o registro do Client SDK para gravar logs no console. A maioria dos serviços coletará automaticamente essa saída e a publicará CloudWatch nos registros da Amazon para você mantê-la e visualizá-la.

Se você estiver usando qualquer integração de terceiros além do SDK do AWS CloudHSM cliente, certifique-se de configurar esse pacote de software para registrar também sua saída no console. Caso contrário, a saída do SDK do AWS CloudHSM cliente pode ser capturada por esse pacote e gravada em seu próprio arquivo de log.

Consulte o Ferramenta de configuração do Client SDK 5 para obter informações sobre como configurar as opções de registro em seu aplicativo.

Monitoramento de logs de auditoria

AWS CloudHSM publica registros de auditoria na sua CloudWatch conta da Amazon. Os registros de auditoria vêm do HSM e rastreiam determinadas operações para fins de auditoria.

Você pode usar registros de auditoria para acompanhar todos os comandos de gerenciamento que são invocados no seu HSM. Por exemplo, você pode acionar um alarme ao perceber que uma operação de gerenciamento inesperada está sendo executada.

Consulte Como funciona o registro em log de auditoria do HSM para obter mais detalhes.

Monitorar AWS CloudTrail

AWS CloudHSM é integrado com AWS CloudTrail, um serviço que fornece um registro das ações realizadas por um usuário, função ou AWS serviço em AWS CloudHSM. AWS CloudTrail captura todas as chamadas de API AWS CloudHSM como eventos. As chamadas capturadas incluem chamadas do AWS CloudHSM console e chamadas de código para as operações AWS CloudHSM da API.

Você pode usar AWS CloudTrail para auditar qualquer chamada de API feita ao plano de AWS CloudHSM controle para garantir que nenhuma atividade indesejada esteja ocorrendo em sua conta.

Para mais detalhes, consulte Trabalhando com AWS CloudTrail e AWS CloudHSM.

Monitore as CloudWatch métricas da Amazon

Você pode usar CloudWatch as métricas da Amazon para monitorar seu AWS CloudHSM cluster em tempo real. As métricas podem ser agrupadas por região, pelo ID do cluster ou pelo ID do HSM e ID do cluster.

Usando CloudWatch as métricas da Amazon, você pode configurar CloudWatch os alarmes da Amazon para alertá-lo sobre qualquer possível problema que possa afetar seu serviço. Recomendamos configurar alarmes para monitorar o seguinte:

  • Aproximação do limite de chaves em um HSM

  • Aproximação do limite de contagem de sessões do HSM em um HSM

  • Aproximação do limite de contagem de usuários do HSM em um HSM

  • Diferenças na contagem de usuários ou chaves do HSM para identificar problemas de sincronização

  • HSMs não íntegros para escalar seu cluster até que AWS CloudHSM possam resolver o problema

Para obter mais detalhes, consulte Trabalhando com Amazon CloudWatch Logs e AWS CloudHSM Audit Logs.