Implantar segredos no núcleo do AWS IoT Greengrass - AWS IoT Greengrass

AWS IoT Greengrass Version 1 entrou na fase de vida útil prolongada em 30 de junho de 2023. Para obter mais informações, consulte política de manutenção do AWS IoT Greengrass V1. Após essa data, AWS IoT Greengrass V1 não lançaremos atualizações que forneçam recursos, aprimoramentos, correções de erros ou patches de segurança. Os dispositivos que funcionam AWS IoT Greengrass V1 não serão interrompidos e continuarão operando e se conectando à nuvem. É altamente recomendável que você migre para AWS IoT Greengrass Version 2, o que adiciona novos recursos significativos e suporte para plataformas adicionais.

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á.

Implantar segredos no núcleo do AWS IoT Greengrass

Esse atributo está disponível para o AWS IoT Greengrass Core v1.7 e posterior.

O AWS IoT Greengrass permite que você se autentique com serviços e aplicativos de Dispositivos Greengrass sem codificar senhas, tokens ou outros segredos.

O AWS Secrets Manager é um serviço que você pode usar para armazenar e gerenciar seus segredos na nuvem. O AWS IoT Greengrass estende o Secrets Manager para dispositivos de núcleo do Greengrass, de modo que seus conectores e funções do Lambda possam usar segredos locais para interagir com serviços e aplicações. Por exemplo, o conector Twilio Notifications usa um token de autenticação armazenado localmente.

Para integrar um segredo a um grupo do Greengrass, crie um recurso de grupo que faça referência ao segredo do Secrets Manager. Esse recurso de segredo faz referência ao segredo na nuvem pelo ARN. Para saber como criar, gerenciar e usar recursos de segredos, consulte Como trabalhar com recursos de segredos.

O AWS IoT Greengrass criptografa seus segredos em trânsito e em repouso. Durante a implantação de grupo, o AWS IoT Greengrass busca o segredo do Secrets Manager e cria uma cópia criptografada local no núcleo do Greengrass. Após alternar os segredos na nuvem do Secrets Manager, implante o grupo novamente para propagar os valores atualizados para o núcleo.

O diagrama a seguir mostra o processo de alto nível de implantação de um segredo no núcleo. Os segredos são criptografados em repouso e em trânsito.

O AWS IoT Greengrass obtém um segredo no AWS Secrets Manager e o implanta como um recurso de segredo no dispositivo do núcleo, em que ele está disponível para conectores e funções do Lambda.

O uso do AWS IoT Greengrass para armazenar os segredos localmente oferece as seguintes vantagens:

  • Dissociação do código (não codificado). Oferece suporte a credenciais gerenciadas centralmente e ajuda a proteger dados confidenciais contra o risco de comprometimento.

  • Disponível para cenários offline. Conectores e funções podem acessar serviços e software locais com segurança quando desconectados da Internet.

  • Acesso controlado a segredos. Somente conectores e funções autorizados no grupo podem acessar seus segredos. O AWS IoT Greengrass usa criptografia de chave privada para proteger os segredos. Os segredos são criptografados em repouso e em trânsito. Para obter mais informações, consulte Criptografia de segredos.

  • Alternância controlada. Após alternar seus segredos no Secrets Manager, implante o grupo do Greengrass novamente para atualizar as cópias locais dos segredos. Para obter mais informações, consulte Criar e gerenciar segredos.

    Importante

    O AWS IoT Greengrass não atualiza automaticamente os valores de segredos locais depois que as versões de nuvem são alternadas. Para atualizar valores locais, você deve implantar o grupo novamente.

Criptografia de segredos

O AWS IoT Greengrass criptografa segredos em repouso e em trânsito.

Importante

Certifique-se de que suas funções do Lambda definidas pelo usuário tratem os segredos com segurança e não registrem nenhum dado confidencial armazenado no segredo. Para obter mais informações, consulte Mitigue os riscos de registrar logs e depurar sua função do Lambda no Guia do usuário do AWS Secrets Manager. Embora essa documentação se refira especificamente às funções de alternância, a recomendação também se aplica às funções do Lambda do Greengrass.

Criptografia em trânsito

O AWS IoT Greengrass usa Transport Layer Security (TLS) para criptografar todas as comunicações por meio da Internet e rede local. Isso protege segredos em trânsito, o que ocorre quando segredos são recuperados do Secrets Manager e implantados no núcleo. Para pacotes de criptografia do TLS com suporte, consulte Suporte a pacotes de criptografia TLS.

Criptografia em repouso

O AWS IoT Greengrass usa a chave privada especificada no config.json para a criptografia dos segredos que são armazenados no núcleo. Por esse motivo, o armazenamento seguro da chave privada é essencial para proteger segredos locais. No modelo de responsabilidade compartilhada AWS, é responsabilidade do cliente garantir o armazenamento seguro da chave privada no dispositivo de núcleo.

O AWS IoT Greengrass oferece suporte a dois modos de armazenamento de chaves privadas:

  • Uso dos módulos de segurança de hardware. Para obter mais informações, consulte Integração de segurança de hardware.

    nota

    Atualmente, AWS IoT Greengrass só oferece suporte ao mecanismo de preenchimento PKCS#1 v1.5 para criptografia e decodificação de segredos locais ao usar chaves privadas baseadas em hardware. Se você estiver seguindo as instruções fornecidas pelo fornecedor para gerar chaves privadas baseadas em hardware manualmente, certifique-se de escolher o PKCS#1 v1.5. O AWS IoT Greengrass não oferece suporte ao Optimal Asymmetric Encryption Padding (OAEP).

  • Uso de permissões do sistema de arquivos (padrão).

A chave privada é usada para proteger a chave de dados, que é usada para criptografar segredos locais. A chave de dados é alternada com cada grupo de implantação.

O núcleo AWS IoT Greengrass é a única entidade que tem acesso à chave privada. Os conectores do Greengrass ou funções do Lambda que são afiliados a um recurso de segredo obtêm o valor do segredo do núcleo.

Requisitos

Estes são os requisitos para suporte de segredo local:

  • Você deve estar usando o AWS IoT Greengrass Core v1.7 ou posterior.

  • Para obter os valores dos segredos locais, suas funções do Lambda definidas pelo usuário devem usar o SDK do AWS IoT Greengrass Core v1.3.0 ou posterior.

  • A chave privada usada para criptografia de segredos locais deve ser especificada no arquivo de configuração do Greengrass. Por padrão, o AWS IoT Greengrass usa a chave privada do núcleo armazenada no sistema de arquivos. Para fornecer sua própria chave privada, consulte Especificar a chave privada para criptografia de segredos. Somente o tipo de chave RSA tem suporte.

    nota

    Atualmente, AWS IoT Greengrass só oferece suporte ao mecanismo de preenchimento PKCS#1 v1.5 para criptografia e decodificação de segredos locais ao usar chaves privadas baseadas em hardware. Se você estiver seguindo as instruções fornecidas pelo fornecedor para gerar chaves privadas baseadas em hardware manualmente, certifique-se de escolher o PKCS#1 v1.5. O AWS IoT Greengrass não oferece suporte ao Optimal Asymmetric Encryption Padding (OAEP).

  • O AWS IoT Greengrass deve ser receber permissão para obter os valores de segredos. Isso permite que o AWS IoT Greengrass obtenha os valores durante a implantação do grupo. Se você estiver usando o perfil de serviço padrão do Greengrass, o AWS IoT Greengrass já terá acesso a segredos com nomes que começam com greengrass-. Para personalizar o acesso, consulte Permitir que o AWS IoT Greengrass obtenha valores de segredos.

    nota

    Recomendamos que você use essa convenção de nomenclatura para identificar os segredos que o AWS IoT Greengrass tem permissão para acessar, mesmo se você personalizar as permissões. O console usa diferentes permissões para ler seus segredos. Portanto, é possível que você selecione segredos no console que o AWS IoT Greengrass não tem permissão para obter. O uso de uma convenção de nomenclatura pode ajudar a evitar um conflito de permissões, resultando em um erro de implantação.

Especificar a chave privada para criptografia de segredos

Neste procedimento, você fornece o caminho para uma chave privada que é usada para criptografia de segredos locais. Essa deve ser uma chave RSA com tamanho mínimo de 2048 bits. Para obter mais informações sobre chaves privadas usadas no AWS IoT Greengrass core, consulte AWS IoT Greengrass princípios básicos de segurança.

AWS IoT Greengrass oferece suporte a dois modos de chave privada: armazenamento baseado em hardware ou com base no sistema de arquivos (padrão). Para obter mais informações, consulte Criptografia de segredos.

Siga este procedimento somente se você deseja alterar a configuração padrão, que usa a chave privada do núcleo no sistema de arquivos. Estas etapas foram criadas pressupondo que você criou seu grupo e núcleo, conforme descrito no Módulo 2 do tutorial Conceitos básicos.

  1. Abra o arquivo config.json que está localizado no diretório /greengrass-root/config.

    nota

    greengrass-root representa o caminho no qual o software de núcleo do AWS IoT Greengrass é instalado no dispositivo. Normalmente, esse é o diretório /greengrass.

  2. No objeto crypto.principals.SecretsManager, para a propriedade privateKeyPath, insira o caminho da chave privada:

    • Se a chave privada estiver armazenada no sistema de arquivos, especifique o caminho absoluto para a chave . Por exemplo:

      "SecretsManager" : { "privateKeyPath" : "file:///somepath/hash.private.key" }
    • Se a chave privada for armazenada em um módulo de segurança de hardware (HSM), especifique o caminho usando o esquema de URI RFC 7512 PKCS#11. Por exemplo:

      "SecretsManager" : { "privateKeyPath" : "pkcs11:object=private-key-label;type=private" }

      Para obter mais informações, consulte Configuração de segurança de hardware para um AWS IoT Greengrass núcleo.

      nota

      Atualmente, AWS IoT Greengrass só oferece suporte ao mecanismo de preenchimento PKCS#1 v1.5 para criptografia e decodificação de segredos locais ao usar chaves privadas baseadas em hardware. Se você estiver seguindo as instruções fornecidas pelo fornecedor para gerar chaves privadas baseadas em hardware manualmente, certifique-se de escolher o PKCS#1 v1.5. O AWS IoT Greengrass não oferece suporte ao Optimal Asymmetric Encryption Padding (OAEP).

Permitir que o AWS IoT Greengrass obtenha valores de segredos

Neste procedimento, você adiciona uma política em linha ao perfil de serviço do Greengrass que permite que o AWS IoT Greengrass obtenha os valores dos seus segredos.

Siga este procedimento somente se você quiser conceder permissões personalizadas do AWS IoT Greengrass aos segredos ou seo seu perfil de serviço do Greengrass não inclui a política gerenciada AWSGreengrassResourceAccessRolePolicy. AWSGreengrassResourceAccessRolePolicy concede acesso a segredos com nomes que começam com greengrass-.

  1. Execute o seguinte comando da CLI para obter o ARN do perfil de serviço do Greengrass:

    aws greengrass get-service-role-for-account --region region

    O ARN retornado contém o nome da função.

    { "AssociatedAt": "time-stamp", "RoleArn": "arn:aws:iam::account-id:role/service-role/role-name" }

    Você usará o ARN ou nome na etapa a seguir.

  2. Adicione uma política em linha que permita a ação secretsmanager:GetSecretValue. Para obter informações, consulte Adicionar e remover políticas do IAM no Guia do usuário do IAM.

    Você pode conceder acesso granular listando segredos explicitamente ou usando um esquema de nomenclatura do caractere curinga * ou você pode conceder acesso condicional a segredos marcados ou versionados. Por exemplo, a seguinte política permite que o AWS IoT Greengrass leia somente os segredos especificados.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": [ "arn:aws:secretsmanager:region:account-id:secret:greengrass-SecretA-abc", "arn:aws:secretsmanager:region:account-id:secret:greengrass-SecretB-xyz" ] } ] }
    nota

    Se você usar uma chave gerenciada pelo cliente do AWS KMS para criptografar segredos, o perfil de serviço do Greengrass também deve permitir a ação kms:Decrypt.

Para obter mais informações sobre políticas do IAM para o Secrets Manager, consulte Controle de acesso e autenticação para o AWS Secrets Manager e Ações, recursos e chaves de contexto que podem ser usados em uma política do IAM ou em uma política de segredos para o AWS Secrets Manager no Guia do usuário do AWS Secrets Manager.

Consulte também