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á.
Integração de segurança de hardware
nota
Esse recurso está disponível para a versão 2.5.3 e posterior do componente núcleo do Greengrass. AWS IoT Greengrass atualmente não oferece suporte a esse recurso nos dispositivos principais do Windows.
Você pode configurar o software AWS IoT Greengrass Core para usar um módulo de segurança de hardware (HSM) por meio da interface PKCS #11
O software AWS IoT Greengrass Core usa uma chave privada e um certificado X.509 para autenticar conexões com os serviços e. AWS IoT AWS IoT Greengrass O componente gerenciador de segredos usa essa chave privada para criptografar e descriptografar com segurança os segredos que você implanta em um dispositivo principal do Greengrass. Quando você configura um dispositivo principal para usar um HSM, esses componentes usam a chave privada e o certificado que você armazena no HSM.
O componente de agente Moquette MQTT também armazena uma chave privada para seu certificado de servidor MQTT local. Esse componente armazena a chave privada no sistema de arquivos do dispositivo na pasta de trabalho do componente. Atualmente, AWS IoT Greengrass não é compatível com o armazenamento dessa chave privada ou certificado em um HSM.
dica
Pesquise dispositivos compatíveis com esse recurso no Catálogo de dispositivos de parceiros da AWS
Tópicos
Requisitos
Você deve atender aos seguintes requisitos para usar um HSM em um dispositivo Greengrass principal:
-
Núcleo do Greengrass v2.5.3 ou posterior instalado no dispositivo principal. Você pode escolher uma versão compatível ao instalar o software AWS IoT Greengrass Core em um dispositivo principal.
-
O componente do provedor PKCS#11 instalado no dispositivo principal. Você pode baixar e instalar esse componente ao instalar o software AWS IoT Greengrass Core em um dispositivo principal.
-
Um módulo de segurança de hardware que suporta o esquema de assinatura PKCS#1 v1.5
e chaves RSA com tamanho de chave RSA-2048 (ou maior) ou chaves ECC. nota
Para usar um módulo de segurança de hardware com chaves ECC, use o núcleo do Greengrass v2.5.6 ou posterior.
Para usar um módulo de segurança de hardware e um gerenciador de segredos, use um módulo de segurança de hardware com chaves RSA.
-
Uma biblioteca do provedor PKCS #11 que o software AWS IoT Greengrass Core pode carregar em tempo de execução (usando libdl) para invocar as funções do PKCS #11. A biblioteca do provedor PKCS#11 deve implementar as operações de API do PKCS#11 a seguir:
-
C_Initialize
-
C_Finalize
-
C_GetSlotList
-
C_GetSlotInfo
-
C_GetTokenInfo
-
C_OpenSession
-
C_GetSessionInfo
-
C_CloseSession
-
C_Login
-
C_Logout
-
C_GetAttributeValue
-
C_FindObjectsInit
-
C_FindObjects
-
C_FindObjectsFinal
-
C_DecryptInit
-
C_Decrypt
-
C_DecryptUpdate
-
C_DecryptFinal
-
C_SignInit
-
C_Sign
-
C_SignUpdate
-
C_SignFinal
-
C_GetMechanismList
-
C_GetMechanismInfo
-
C_GetInfo
-
C_GetFunctionList
-
-
O módulo de hardware deve ser solucionado pelo rótulo do slot, conforme definido na especificação PKCS#11.
-
Você deve armazenar a chave privada e o certificado no HSM no mesmo slot, e eles devem usar o mesmo rótulo de objeto e ID de objeto, se o HSM suportar objetos. IDs
-
O certificado e a chave privada devem ser resolvidos por rótulos de objeto.
-
A chave privada deve ter as seguintes permissões:
-
sign
-
decrypt
-
-
(Opcional) Para usar o componente gerenciador de segredos, você deve usar a versão 2.1.0 ou posterior, e a chave privada deve ter as seguintes permissões:
-
unwrap
-
wrap
-
Práticas recomendadas de segurança de hardware
Pense nas seguintes práticas recomendadas ao configurar a segurança do hardware nos dispositivos principais do Greengrass.
-
Gerar chaves privadas diretamente no HSM usando o hardware interno gerador de número aleatório. Essa abordagem é mais segura do que importar uma chave privada que você gera em outro lugar, porque a chave privada permanece dentro do HSM.
-
Configure as chaves privadas para que sejam imutáveis e proíba a exportação.
-
Use a ferramenta de provisionamento recomendada pelo fornecedor de hardware do HSM para gerar uma solicitação de assinatura de certificado (CSR) usando a chave privada protegida por hardware e, em seguida, use o console ou a API para gerar um certificado de cliente. AWS IoT
nota
A prática recomendada de segurança de rodízio de chaves não se aplica quando você gera chaves privadas em um HSM.
Instale o software AWS IoT Greengrass Core com segurança de hardware
Ao instalar o software AWS IoT Greengrass Core, você pode configurá-lo para usar uma chave privada gerada em um HSM. Essa abordagem segue a prática recomendada de segurança para gerar a chave privada no HSM, de forma que a chave privada permaneça dentro do HSM.
Para instalar o software AWS IoT Greengrass Core com segurança de hardware, faça o seguinte:
-
Gere uma chave privada no HSM
-
Crie uma Certificate Signing Request (CSR – Solicitação de assinatura de certificado) a partir da chave privada.
-
Crie um certificado da CSR. Você pode criar um certificado assinado por AWS IoT ou por outra autoridade de certificação (CA) raiz. Para obter mais informações sobre como usar outra CA raiz, consulte Criar seus próprios certificados de cliente no Guia do desenvolvedor do AWS IoT Core .
-
Baixe o AWS IoT certificado e importe-o para o HSM.
-
Instale o software AWS IoT Greengrass Core a partir de um arquivo de configuração que especifica o uso do componente provedor PKCS #11 e da chave privada e do certificado no HSM.
Você pode escolher uma das seguintes opções de instalação para instalar o software AWS IoT Greengrass Core com segurança de hardware:
-
Instalação manual
Escolha essa opção para criar manualmente os AWS recursos necessários e configurar a segurança do hardware. Para obter mais informações, consulte Instale o software AWS IoT Greengrass principal com provisionamento manual de recursos.
-
Instalação com provisionamento personalizado
Escolha essa opção para desenvolver um aplicativo Java personalizado que cria automaticamente os AWS recursos necessários e configura a segurança do hardware. Para obter mais informações, consulte Instale o software AWS IoT Greengrass principal com provisionamento personalizado de recursos.
Atualmente, AWS IoT Greengrass não oferece suporte à instalação do software AWS IoT Greengrass Core com segurança de hardware quando você instala com provisionamento automático de recursos ou provisionamento de AWS IoT frota.
Configurar a segurança do hardware em um dispositivo principal existente
Você pode importar a chave privada e o certificado de um dispositivo principal para um HSM para configurar a segurança do hardware.
Considerações
-
Você deve ter acesso root ao sistema de arquivos do dispositivo principal.
-
Neste procedimento, você desliga o software AWS IoT Greengrass Core para que o dispositivo principal fique off-line e indisponível enquanto você configura a segurança do hardware.
Para configurar a segurança do hardware em um dispositivo principal existente, faça o seguinte:
-
Inicializar o HSM
-
Implante o componente do provedor PKCS#11 no dispositivo principal.
-
Pare o software AWS IoT Greengrass principal.
-
Importe a chave privada e o certificado do dispositivo principal para o HSM.
-
Atualize o arquivo de configuração do software AWS IoT Greengrass principal para usar a chave privada e o certificado no HSM.
-
Inicie o software AWS IoT Greengrass principal.
Etapa 1: inicializar o módulo de segurança do hardware
Conclua a etapa a seguir para inicializar o HSM em seu dispositivo principal.
Para inicializar o módulo de segurança de hardware
-
Inicialize um token PKCS#11 no HSM e salve o ID do slot e o PIN do usuário para o token. Consulte a documentação do HSM para aprender a inicializar um token. Você usa o ID do slot e o PIN do usuário posteriormente ao implantar e configurar o componente provedor PKCS#11.
Etapa 2: implantar o componente do provedor PKCS#11
Conclua as etapas a seguir para implantar e configurar o componente provedor PKCS#11. É possível implantar o componente em um ou mais dispositivos principais.
-
No menu de navegação do console do AWS IoT Greengrass
, selecione Componentes. -
Na página Componentes, escolha a guia Componentes públicos e, em seguida, escolha aws.greengrass.crypto.Pkcs11Provider.
-
Sobre o aws.greengrass.crypto.Pkcs11Providerpágina, escolha Implantar.
-
Em Adicionar à implantação, escolha uma implantação existente para revisar ou opte por criar uma nova e, em seguida, escolha Avançar.
-
Se você criar uma nova implantação, escolha o dispositivo principal ou grupo de objetos de destino para ela. Na página Especificar destino, em Destino de implantação, escolha um dispositivo principal ou grupo de objetos e, depois, Avançar.
-
Na página Selecionar componentes, em Componentes públicos, selecione aws.greengrass.crypto.Pkcs11Providere, em seguida, escolha Avançar.
-
Na página Configurar componentes, selecione aws.greengrass.crypto.Pkcs11Providere, em seguida, faça o seguinte:
-
Escolha Configurar componente.
-
No Configure aws.greengrass.crypto.Pkcs11Providermodal, em Atualização de configuração, em Configuração a ser mesclada, insira a seguinte atualização de configuração. Atualize os seguintes parâmetros de configuração com valores para os dispositivos principais de destino. Especifique o ID do slot e o PIN do usuário em que você inicializou o token PKCS#11 anteriormente. Posteriormente, você importa a chave privada e o certificado para esse slot no HSM.
name
-
Um nome para a configuração de PKCS#11.
library
-
O caminho absoluto do arquivo para a biblioteca da implementação do PKCS #11 que o software AWS IoT Greengrass Core pode carregar com libdl.
slot
-
O ID do slot que contém a chave privada e o certificado do dispositivo. Esse valor é diferente do índice do slot ou do rótulo do slot.
userPin
-
O PIN do usuário a ser usado para acessar o slot.
{ "name": "softhsm_pkcs11", "library": "/usr/lib/softhsm/libsofthsm2.so", "slot": 1, "userPin": "1234" }
-
Escolha Confirmar para fechar o modal e, em seguida, escolha Avançar.
-
-
Na página Definir configurações avançadas, mantenha as configurações padrão e escolha Avançar.
-
Na página Pré-visualizar, escolha Implantar.
A implantação pode levar até um minuto para ser concluída.
Para implantar o componente do provedor PKCS#11, crie um documento de implantação que inclua aws.greengrass.crypto.Pkcs11Provider
no objeto components
e especifique a atualização de configuração do componente. Siga as instruções em Criar implantações para criar uma nova implantação ou revisar uma existente.
O exemplo de documento de implantação parcial a seguir especifica a implantação e a configuração do componente provedor PKCS#11. Atualize os seguintes parâmetros de configuração com valores para os dispositivos principais de destino. Salve o ID do slot e o PIN do usuário para usar posteriormente ao importar a chave privada e o certificado para o HSM.
name
-
Um nome para a configuração de PKCS#11.
library
-
O caminho absoluto do arquivo para a biblioteca da implementação do PKCS #11 que o software AWS IoT Greengrass Core pode carregar com libdl.
slot
-
O ID do slot que contém a chave privada e o certificado do dispositivo. Esse valor é diferente do índice do slot ou do rótulo do slot.
userPin
-
O PIN do usuário a ser usado para acessar o slot.
{ "name": "softhsm_pkcs11", "library": "/usr/lib/softhsm/libsofthsm2.so", "slot": 1, "userPin": "1234" }
{
...
, "components": {...
, "aws.greengrass.crypto.Pkcs11Provider": { "componentVersion": "2.0.0", "configurationUpdate": { "merge": "{\"name\":\"softhsm_pkcs11\",\"library\":\"/usr/lib/softhsm/libsofthsm2.so\",\"slot\":1,\"userPin\":\"1234\"}" } } } }
A implantação pode levar vários minutos para ser concluída. Você pode usar o AWS IoT Greengrass serviço para verificar o status da implantação. Você pode verificar os registros do software AWS IoT Greengrass principal para verificar se o componente do provedor PKCS #11 foi implantado com êxito. Para obter mais informações, consulte:
Se a implantação falhar, você pode solucionar o problema de implantação em cada dispositivo principal. Para obter mais informações, consulte Solução de problemas AWS IoT Greengrass V2.
Etapa 3: atualizar a configuração no dispositivo principal
O software AWS IoT Greengrass Core usa um arquivo de configuração que especifica como o dispositivo opera. Esse arquivo de configuração inclui onde encontrar a chave privada e o certificado que o dispositivo usa para se conectar à Nuvem AWS. Conclua as etapas a seguir para importar a chave privada e o certificado do dispositivo principal para o HSM e atualizar o arquivo de configuração para usar o HSM.
Para atualizar a configuração no dispositivo principal para usar a segurança de hardware
-
Pare o software AWS IoT Greengrass principal. Se você configurou o software AWS IoT Greengrass Core como um serviço do sistema com o systemd, você pode executar o comando a seguir para interromper o software.
sudo systemctl stop greengrass.service
-
Localize a chave privada e os arquivos de certificado do dispositivo principal.
-
Se você instalou o software AWS IoT Greengrass Core com provisionamento automático ou provisionamento de frota, a chave privada existe em
, e o certificado existe em.
/privKey.key/greengrass/v2
/thingCert.crt/greengrass/v2
-
Se você instalou o software AWS IoT Greengrass Core com provisionamento manual, a chave privada existe
por padrão e o certificado existe
/private.pem.key/greengrass/v2
por padrão.
/device.pem.crt/greengrass/v2
Você também pode verificar as propriedades
system.privateKeyPath
esystem.certificateFilePath
no
para encontrar a localização desses arquivos.
/config/effectiveConfig.yaml/greengrass/v2
-
-
Importe a chave privada e o certificado para o HSM. Consulte a documentação do HSM para saber como importar chaves privadas e certificados para ele. Importe a chave privada e o certificado usando o ID do slot e o PIN do usuário em que você inicializou o token PKCS#11 anteriormente. Você deve usar o mesmo rótulo de objeto e ID de objeto para a chave privada e o certificado. Salve o rótulo do objeto que você especifica ao importar cada arquivo. Você usa esse rótulo posteriormente ao atualizar a configuração do software AWS IoT Greengrass principal para usar a chave privada e o certificado no HSM.
-
Atualize a configuração AWS IoT Greengrass principal para usar a chave privada e o certificado no HSM. Para atualizar a configuração, você modifica o arquivo de configuração AWS IoT Greengrass principal e executa o software AWS IoT Greengrass principal com o arquivo de configuração atualizado para aplicar a nova configuração.
Faça o seguinte:
-
Crie um backup do arquivo de configuração AWS IoT Greengrass principal. Você pode usar esse backup para restaurar o dispositivo principal se tiver problemas ao configurar a segurança do hardware.
sudo cp
/config/effectiveConfig.yaml ~/ggc-config-backup.yaml/greengrass/v2
-
Abra o arquivo de configuração AWS IoT Greengrass principal em um editor de texto. Por exemplo, você pode executar o seguinte comando para usar o GNU nano para editar o arquivo. Substitua
pelo caminho para a pasta raiz do Greengrass./greengrass/v2
sudo nano
/config/effectiveConfig.yaml/greengrass/v2
-
Substitua o valor do
system.privateKeyPath
pelo URI PKCS#11 para a chave privada no HSM.iotdevicekey
Substitua pelo rótulo do objeto em que você importou a chave privada e o certificado anteriormente.pkcs11:object=
iotdevicekey
;type=private -
Substitua o valor do
system.certificateFilePath
pelo URI PKCS#11 para o certificado no HSM.iotdevicekey
Substitua pelo rótulo do objeto em que você importou a chave privada e o certificado anteriormente.pkcs11:object=
iotdevicekey
;type=cert
Depois de concluir essas etapas, a
system
propriedade no arquivo de configuração AWS IoT Greengrass principal deve ser semelhante ao exemplo a seguir.system: certificateFilePath: "pkcs11:object=
iotdevicekey
;type=cert" privateKeyPath: "pkcs11:object=iotdevicekey
;type=private" rootCaPath: "
/rootCA.pem" rootpath: "/greengrass/v2
" thingName: "/greengrass/v2
MyGreengrassCore
" -
-
Aplique a configuração no arquivo
effectiveConfig.yaml
atualizado. ExecuteGreengrass.jar
com o parâmetro--init-config
no qual aplicar a configuração emeffectiveConfig.yaml
. Substitua
pelo caminho para a pasta raiz do Greengrass./greengrass/v2
sudo java -Droot="
" \ -jar/greengrass/v2
/alts/current/distro/lib/Greengrass.jar \ --start false \ --init-config/greengrass/v2
/config/effectiveConfig.yaml/greengrass/v2
-
Inicie o software AWS IoT Greengrass principal. Se você configurou o software AWS IoT Greengrass Core como um serviço do sistema com o systemd, você pode executar o comando a seguir para iniciar o software.
sudo systemctl start greengrass.service
Para obter mais informações, consulte Execute o software AWS IoT Greengrass Core.
-
Verifique os registros do software AWS IoT Greengrass principal para verificar se o software é iniciado e se conecta ao Nuvem AWS. O software AWS IoT Greengrass Core usa a chave privada e o certificado para se conectar aos AWS IoT Greengrass serviços AWS IoT e.
sudo tail -f
/logs/greengrass.log/greengrass/v2
As seguintes mensagens de registro em nível de informação indicam que o software AWS IoT Greengrass Core se conecta com êxito aos serviços AWS IoT e. AWS IoT Greengrass
2021-12-06T22:47:53.702Z [INFO] (Thread-3) com.aws.greengrass.mqttclient.AwsIotMqttClient: Successfully connected to AWS IoT Core. {clientId=MyGreengrassCore5, sessionPresent=false}
-
(Opcional) Depois de verificar se o software AWS IoT Greengrass Core funciona com a chave privada e o certificado no HSM, exclua a chave privada e os arquivos do certificado do sistema de arquivos do dispositivo. Execute o comando a seguir e substitua os caminhos dos arquivos pelos caminhos para a chave privada e os arquivos de certificado.
sudo rm
sudo rm
/privKey.key/greengrass/v2
/thingCert.crt/greengrass/v2
usar hardware sem suporte a PKCS#11
Em geral, a biblioteca PKCS#11 é fornecida pelo fornecedor de hardware ou é de código aberto. Por exemplo, com hardware compatível com os padrões (como TPM1 .2), talvez seja possível usar o software de código aberto existente. No entanto, se o hardware não tem uma implementação de biblioteca PKCS#11 correspondente, ou se você deseja gravar um provedor de PKCS#11 personalizada, entre em contato com seu representante do Amazon Web Services Enterprise Support com perguntas relacionadas com a integração.