Visão geral da AWS IoT Greengrass segurança - 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á.

Visão geral da AWS IoT Greengrass segurança

AWS IoT Greengrass usa certificados, AWS IoT políticas e políticas e funções do IAM X.509 para proteger os aplicativos que são executados em dispositivos em seu ambiente Greengrass local.

O diagrama a seguir mostra os componentes do modelo AWS IoT Greengrass de segurança:

Diagrama da arquitetura de serviços do Greengrass mostrando AWS os serviços, os dispositivos principais e conectados do Greengrass e suas interações com certificados.
A — Função de serviço do Greengrass

Uma função do IAM criada pelo cliente assumida AWS IoT Greengrass ao acessar seus AWS recursos de AWS IoT Core AWS Lambda, e outros AWS serviços. Para ter mais informações, consulte Perfil de serviço do Greengrass.

B — Certificado de dispositivo de núcleo

Um certificado X.509 usado para autenticar um núcleo do Greengrass com e. AWS IoT Core AWS IoT Greengrass Para ter mais informações, consulte Autorização e autenticação do dispositivo para o AWS IoT Greengrass.

C — Certificado de dispositivo

Um certificado X.509 usado para autenticar um dispositivo cliente, também conhecido como dispositivo conectado, com e. AWS IoT Core AWS IoT Greengrass Para ter mais informações, consulte Autorização e autenticação do dispositivo para o AWS IoT Greengrass.

D — Função de grupo

Uma função do IAM criada pelo cliente assumida AWS IoT Greengrass ao chamar AWS serviços de um núcleo do Greengrass.

Você usa essa função para especificar as permissões de acesso que suas funções e conectores do Lambda definidos pelo usuário precisam para AWS acessar serviços, como o DynamoDB. Você também o usa para permitir AWS IoT Greengrass a exportação de fluxos do gerenciador de streams para AWS serviços e a gravação em CloudWatch registros. Para ter mais informações, consulte Função do grupo do Greengrass..

nota

AWS IoT Greengrass não usa a função de execução do Lambda especificada na versão em nuvem AWS Lambda de uma função do Lambda.

Certificado do servidor E - MQTT

O certificado usado para autenticação mútua Transport Layer Security (TLS) entre um dispositivo de núcleo do Greengrass e dispositivos cliente no grupo do Greengrass. O certificado é assinado pelo certificado CA do grupo, que é armazenado na Nuvem AWS.

Fluxo de trabalho de conexão de dispositivo

Esta seção descreve como os dispositivos cliente se conectam ao AWS IoT Greengrass serviço e aos dispositivos principais do Greengrass. Os dispositivos cliente são AWS IoT Core dispositivos registrados que estão no mesmo grupo do Greengrass que o dispositivo principal.

  • Um dispositivo principal do Greengrass usa seu certificado de dispositivo, sua chave privada e o certificado CA AWS IoT Core raiz para se conectar ao AWS IoT Greengrass serviço. No dispositivo de núcleo, o objeto crypto no arquivo de configuração especifica o caminho do arquivo para esses itens.

  • O dispositivo de núcleo do Greengrass faz download das informações de associação em grupo do serviço do AWS IoT Greengrass .

  • Quando uma implantação é feita no dispositivo de núcleo do Greengrass, o Device Certificate Manager (DCM) lida com o gerenciamento de certificados do servidor local para o dispositivo de núcleo do Greengrass.

  • Um dispositivo cliente se conecta ao AWS IoT Greengrass serviço usando seu certificado de dispositivo, chave privada e o certificado CA AWS IoT Core raiz. Após estabelecer a conexão, o dispositivo cliente usa o Greengrass Discovery Service para encontrar o endereço IP do dispositivo de núcleo do Greengrass. O dispositivo cliente também faz download do certificado CA do grupo, que é usado para autenticação TLS mútua com o dispositivo de núcleo do Greengrass.

  • Um dispositivo cliente tenta se conectar ao dispositivo de núcleo do Greengrass, passando seu certificado de dispositivo e ID de cliente. Se o ID do cliente corresponder ao nome de coisa do dispositivo cliente e o certificado for válido (parte do grupo do Greengrass), a conexão será estabelecida. Caso contrário, a conexão será encerrada.

A AWS IoT política para dispositivos cliente deve conceder a greengrass:Discover permissão para permitir que os dispositivos clientes descubram informações de conectividade para o núcleo. Para obter mais informações sobre a declaração de política, consulte Autorização de descoberta.

Configurando a segurança AWS IoT Greengrass

Para configurar a segurança do aplicativo Greengrass
  1. Crie qualquer AWS IoT Core coisa para o seu dispositivo principal do Greengrass.

  2. Gere um par de chaves e um certificado de dispositivo para o dispositivo de núcleo do Greengrass.

  3. Crie e anexe uma política do AWS IoT para o certificado de dispositivo. O certificado e a política permitem que o dispositivo principal do Greengrass acesse AWS IoT Core e AWS IoT Greengrass seus serviços. Para ter mais informações, consulte Política mínima do AWS IoT para o dispositivo de núcleo.

    nota

    O uso de variáveis de política de coisas (iot:Connection.Thing.*) na AWS IoT política de um dispositivo principal não é suportado. O núcleo usa o mesmo certificado de dispositivo para fazer várias conexões AWS IoT Core , mas o ID do cliente em uma conexão pode não corresponder exatamente ao nome do item principal.

  4. Crie uma função de serviço do Greengrass. Essa função do IAM AWS IoT Greengrass autoriza o acesso a recursos de outros AWS serviços em seu nome. Isso permite AWS IoT Greengrass realizar tarefas essenciais, como recuperar AWS Lambda funções e gerenciar sombras do dispositivo.

    Você pode usar a mesma função de serviço em Região da AWS s, mas ela deve estar associada à sua Conta da AWS em todos os Região da AWS lugares em que você usa AWS IoT Greengrass.

  5. (Opcional) Crie uma função de grupo do Greengrass. Essa função do IAM concede permissão às funções e conectores do Lambda executados em um núcleo do Greengrass para chamar serviços. AWS Por exemplo, o conector Kinesis Firehose exige permissão para gravar registros em um stream de entrega do Amazon Data Firehose.

    Você pode anexar apenas uma função a um grupo do Greengrass.

  6. Crie AWS IoT Core algo para cada dispositivo que se conecta ao seu núcleo do Greengrass.

    nota

    Você também pode usar AWS IoT Core itens e certificados existentes.

  7. Crie certificados de dispositivos, pares de chaves e AWS IoT políticas para cada dispositivo que se conecta ao seu núcleo do Greengrass.

AWS IoT Greengrass princípios básicos de segurança

O núcleo do Greengrass usa os seguintes princípios de segurança: AWS IoT cliente, servidor MQTT local e gerenciador de segredos local. A configuração para essas entidades principais são armazenadas no objeto crypto no arquivo de configuração config.json. Para ter mais informações, consulte Arquivo de configuração de núcleo do AWS IoT Greengrass.

Essa configuração inclui o caminho para a chave privada usada pelo componente principal para autenticação e criptografia. O AWS IoT Greengrass oferece suporte a dois modos de chave privada: armazenamento baseado em hardware ou baseado no sistema de arquivos (padrão). Para obter mais informações sobre como armazenar chaves nos módulos de segurança de hardware, consulte Integração de segurança de hardware.

AWS IoT Cliente

O AWS IoT cliente (cliente IoT) gerencia a comunicação pela Internet entre o núcleo do Greengrass e. AWS IoT Core AWS IoT Greengrass usa certificados X.509 com chaves públicas e privadas para autenticação mútua ao estabelecer conexões TLS para essa comunicação. Para obter mais informações, consulte Certificados X.509 e AWS IoT Core no Guia do desenvolvedor do AWS IoT Core .

O cliente da IoT oferece suporte a certificados e chaves RSA e EC. Os caminhos do certificado e da chave privada são especificados para a entidade principal IoTCertificate em config.json.

Servidor MQTT

O servidor MQTT local gerencia a comunicação pela rede local entre os dispositivos principais e clientes do Greengrass no grupo. AWS IoT Greengrass usa certificados X.509 com chaves públicas e privadas para autenticação mútua ao estabelecer conexões TLS para essa comunicação.

Por padrão, AWS IoT Greengrass gera uma chave privada RSA para você. Para configurar o núcleo para usar uma chave privada diferente, você deve fornecer o caminho da chave para a entidade principal MQTTServerCertificate em config.json. Você é responsável por girar uma chave fornecida pelo cliente.

Suporte à chave privada
Chave RSA Chave EC
Tipo de chave Compatível Compatível
Principais parâmetros comprimento mínimo de 2.048 bits NIST P-256 ou NIST P-384 curva
Formato de disco PKCS#1, PKCS#8 SECG1, PKCS#8
Versão mínima do GGC
  • Usar chaves RSA padrão: 1.0

  • Especificar uma chave RSA: 1.7

  • Especificar uma chave EC: 1.9

A configuração da chave privada determina os processos associados. Para ver a lista de pacotes de criptografia aos quais o núcleo do Greengrass oferece suporte como um servidor, consulte Suporte a pacotes de criptografia TLS.

Se nenhuma chave privada for especificada (padrão)
  • AWS IoT Greengrass gira a chave com base nas suas configurações de rotação.

  • O núcleo gera uma chave RSA, que é usada para gerar o certificado.

  • O certificado do servidor MQTT tem uma chave pública RSA e uma assinatura SHA-256 RSA.

Se uma chave privada RSA for especificada (requer o GGC v1.7 ou posterior)
  • Você é responsável pela rotação das chaves.

  • O núcleo usa a chave especificada para gerar o certificado.

  • A chave RSA deve ter um tamanho mínimo de 2.048 bits.

  • O certificado do servidor MQTT tem uma chave pública RSA e uma assinatura SHA-256 RSA.

Se uma chave privada EC for especificada (requer o GGC v1.9 ou posterior)
  • Você é responsável pela rotação das chaves.

  • O núcleo usa a chave especificada para gerar o certificado.

  • A chave privada deve usar um NIST P-256 ou NIST P-384 curva.

  • O certificado do servidor MQTT EC tem uma chave pública e uma assinatura SHA-256 RSA.

    O certificado do servidor MQTT apresentado pelo núcleo tem uma assinatura SHA-256 RSA, independentemente do tipo de chave. Por esse motivo, os clientes devem oferecer suporte à validação do certificado SHA-256 RSA para estabelecer uma conexão segura com o núcleo.

Secrets Manager

O gerenciador de segredos local gerencia com segurança as cópias locais dos segredos que você cria em. AWS Secrets Manager Ele usa uma chave privada para proteger a chave de dados que é usada para criptografar os segredos. Para ter mais informações, consulte Implantar segredos no núcleo do AWS IoT Greengrass.

Por padrão, a chave privada do cliente da IoT é usada, mas você pode especificar outra chave privada para a entidade principal SecretsManager em config.json. Somente o tipo de chave RSA tem suporte. Para ter mais informações, consulte Especificar a chave privada para criptografia de segredos.

nota

Atualmente, AWS IoT Greengrass suporta somente o 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 manualmente chaves privadas baseadas em hardware, certifique-se de escolher PKCS #1 v1.5. AWS IoT Greengrass não oferece suporte ao Optimal Asymmetric Encryption Padding (OAEP).

Suporte à chave privada
Chave RSA Chave EC
Tipo de chave Compatível Sem compatibilidade
Principais parâmetros comprimento mínimo de 2.048 bits Não aplicável
Formato de disco PKCS#1, PKCS#8 Não aplicável
Versão mínima do GGC 1,7 Não aplicável

Assinaturas gerenciadas no fluxo de trabalho de mensagens MQTT

AWS IoT Greengrass usa uma tabela de assinatura para definir como as mensagens MQTT podem ser trocadas entre dispositivos, funções e conectores clientes em um grupo do Greengrass e com AWS IoT Core o serviço paralelo local. Cada assinatura especifica uma origem, destino e tópico (ou assunto) do MQTT sobre o qual as mensagens são enviadas ou recebidas. AWS IoT Greengrass permite que mensagens sejam enviadas de uma origem para um destino somente se uma assinatura correspondente for definida.

Uma assinatura define o fluxo de mensagens em uma única direção, da origem para o destino. Para oferecer suporte à troca de mensagens bidirecional, você deve criar duas assinaturas, uma para cada direção.

Suporte a pacotes de criptografia TLS

AWS IoT Greengrass usa o modelo de segurança de AWS IoT Core transporte para criptografar a comunicação com a nuvem usando pacotes de criptografia TLS. Além disso, AWS IoT Greengrass os dados são criptografados quando estão em repouso (na nuvem). Para obter mais informações sobre segurança de AWS IoT Core transporte e pacotes de criptografia compatíveis, consulte Segurança de transporte no Guia do AWS IoT Core desenvolvedor.

Pacotes de criptografia com suporte para a comunicação na rede local

Ao contrário AWS IoT Core, o AWS IoT Greengrass núcleo suporta os seguintes pacotes de criptografia TLS de rede local para algoritmos de assinatura de certificados. Todos esses pacotes de criptografia têm suporte quando as chaves privadas são armazenadas no sistema de arquivos. Um subconjunto têm suporte quando o núcleo está configurado para usar os módulos de segurança de hardware (HSM). Para obter mais informações, consulte AWS IoT Greengrass princípios básicos de segurança e Integração de segurança de hardware. A tabela também inclui a versão mínima do software AWS IoT Greengrass Core necessária para suporte.

Cifra Suporte do HSM Versão mínima do GGC
TLSv1.2 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA Com suporte 1,0
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA Com suporte 1,0
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 Com suporte 1,0
TLS_RSA_WITH_AES_128_CBC_SHA Sem compatibilidade 1,0
TLS_RSA_WITH_AES_128_GCM_SHA256 Sem compatibilidade 1,0
TLS_RSA_WITH_AES_256_CBC_SHA Sem compatibilidade 1,0
TLS_RSA_WITH_AES_256_GCM_SHA384 Sem compatibilidade 1,0
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 Compatível 1.9
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 Compatível 1.9
TLSv1.1 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA Com suporte 1,0
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA Com suporte 1,0
TLS_RSA_WITH_AES_128_CBC_SHA Sem compatibilidade 1,0
TLS_RSA_WITH_AES_256_CBC_SHA Sem compatibilidade 1,0
TLSv1.0 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA Com suporte 1,0
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA Com suporte 1,0
TLS_RSA_WITH_AES_128_CBC_SHA Sem compatibilidade 1,0
TLS_RSA_WITH_AES_256_CBC_SHA Sem compatibilidade 1,0