Autorização e autenticação do dispositivo para o 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á.

Autorização e autenticação do dispositivo para o AWS IoT Greengrass

Os dispositivos em ambientes AWS IoT Greengrass usam certificados X.509 para autenticação e políticas de AWS IoT para autorização. Certificados e políticas permitem que os dispositivos se conectem com segurança entre si, AWS IoT Core, e AWS IoT Greengrass.

Os certificados X.509 são certificados digitais que usam a infraestrutura de chave pública X.509 padrão para associar uma chave pública a uma identidade contida em um certificado. Os certificados X.509 são emitidos por uma entidade confiável chamada de autoridade de certificação (CA). A CA mantém um ou mais certificados especiais chamados certificados CA que são usados para emitir certificados X.509. Somente a autoridade de certificação tem acesso aos certificados CA.

Políticas AWS IoT definem o conjunto de operações permitidas para dispositivos de AWS IoT. Especificamente, elas permitem e negam acesso às operações de plano de dados do AWS IoT Core e AWS IoT Greengrass, como a publicação de mensagens MQTT e recuperação de sombras de dispositivo.

Todos os dispositivos exigem uma entrada no registro do AWS IoT Core e um certificado X.509 ativado com uma política de AWS IoT anexada. Os dispositivos se enquadram em duas categorias:

  • Núcleos do Greengrass. Os dispositivos de núcleo do Greengrass usam certificados e políticas de AWS IoT para se conectarem ao AWS IoT Core. Os certificados e as políticas também permitem que o AWS IoT Greengrass implante informações de configuração, funções do Lambda, conectores e assinaturas gerenciadas em dispositivos de núcleo.

  • Dispositivos cliente. Os dispositivos cliente (também chamados dispositivos conectados, dispositivos Greengrass ou dispositivos) se conectam a um núcleo do Greengrass por meio do MQTT. Eles usam certificados e políticas para se conectar ao AWS IoT Core e ao serviço AWS IoT Greengrass. Isso permite que os dispositivos cliente usem o serviço AWS IoT Greengrass Discovery para encontrar e se conectar a um dispositivo de núcleo. Um dispositivo cliente usa o mesmo certificado para se conectar ao gateway do dispositivo AWS IoT Core e ao dispositivo de núcleo. Os dispositivos cliente também usam informações de descoberta para autenticação mútua com o dispositivo de núcleo. Para obter mais informações, consulte Gerenciar a autenticação de dispositivos com o núcleo do Greengrass e Fluxo de trabalho de conexão de dispositivo.

Certificados X.509

A comunicação entre dispositivos de núcleo e cliente, e entre dispositivos e AWS IoT Core ou AWS IoT Greengrass, deve ser autenticada. Esta autenticação mútua é baseada nos certificados e nas chaves criptográficas do dispositivo X.509 registrado.

Em um ambiente AWS IoT Greengrass, os dispositivos usam certificados com chaves públicas e privadas para as seguintes conexões Transport Layer Security (TLS):

  • O componente de cliente da AWS IoT no núcleo do Greengrass conectando AWS IoT Core e AWS IoT Greengrass pela internet.

  • Os dispositivos cliente que se conectam ao AWS IoT Greengrass para obter informações de descoberta do núcleo pela Internet.

  • O componente de servidor MQTT no núcleo do Greengrass que se conecta a dispositivos cliente no grupo pela rede local.

O dispositivo de núcleo do AWS IoT Greengrass armazena certificados em dois locais:

  • Certificado de dispositivo de núcleo em /greengrass-root/certs. Normalmente, o certificado de dispositivo de núcleo é nomeado hash.cert.pem (por exemplo, 86c84488a5.cert.pem). Este certificado é usado pelo cliente do AWS IoT para autenticação mútua quando o núcleo se conecta aos serviços do AWS IoT Core e do AWS IoT Greengrass.

  • Certificado do servidor MQTT em /greengrass-root/ggc/var/state/server. O certificado de servidor MQTT é nomeado server.crt. Este certificado é usado para autenticação mútua entre o servidor MQTT local (no núcleo do Greengrass) e Dispositivos Greengrass.

    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.

Para ter mais informações, consulte AWS IoT Greengrass princípios básicos de segurança.

Certificados da autoridade de certificação (CA)

Os dispositivos de núcleo e os dispositivos cliente fazem download de um certificado CA raiz usado para autenticação com serviços do AWS IoT Core e do AWS IoT Greengrass. Recomendamos que você use um certificado CA raiz do Amazon Trust Services (ATS), como o Amazon Root CA 1. Para obter mais informações, consulte Certificados CA para a autenticação do servidor no Guia do desenvolvedor do AWS IoT Core.

nota

O tipo de certificado raiz da CA deve corresponder ao endpoint. Use um certificado de CA raiz ATS com um endpoint ATS (preferencial) ou um certificado de CA VeriSign raiz com um endpoint legado. Os endpoints legados são compatíveis apenas com algumas Regiões do Amazon Web Services. Para ter mais informações, consulte Os endpoints do serviço devem corresponder ao tipo de certificado da CA raiz.

Os dispositivos cliente também fazem download do certificado CA do grupo do Greengrass. Isso é usado para validar o certificado de servidor MQTT no núcleo do Greengrass durante a autenticação mútua. Para ter mais informações, consulte Fluxo de trabalho de conexão de dispositivo. A expiração padrão do certificado do servidor MQTT é de sete dias.

Troca de certificados no servidor MQTT local

Os dispositivos cliente usam o certificado de servidor MQTT local para autenticação mútua com o dispositivo de núcleo do Greengrass. Por padrão, esse certificado expira em 7 dias. Esse período limitado é baseado nas melhores práticas de segurança. O certificado do servidor MQTT é assinado pelo certificado CA do grupo, que é armazenado na nuvem.

Para que a rotação do certificado ocorra, o dispositivo de núcleo do Greengrass deve estar online e ser capaz de acessar o serviço do AWS IoT Greengrass diretamente em períodos regulares. Quando o certificado expirar, o dispositivo de núcleo do Greengrass tentará se conectar ao serviço do AWS IoT Greengrass para obter um novo certificado. Se a conexão for bem-sucedida, o dispositivo de núcleo fará download de um novo certificado do servidor MQTT e reiniciará o serviço MQTT local. Nesse ponto do processo, todos os dispositivos cliente conectados ao núcleo serão desconectados. Se o dispositivo de núcleo estiver offline no momento da expiração, ele não receberá o certificado de substituição. Todas as novas tentativas para se conectar ao dispositivo de núcleo serão rejeitadas. As conexões existentes não são afetadas. Os dispositivos cliente não podem se conectar ao dispositivo de núcleo até a conexão com o serviço do AWS IoT Greengrass ser restaurada e um novo certificado de servidor MQTT ser obtido por download.

Você pode definir a expiração para qualquer valor entre 7 e 30 dias, dependendo das suas necessidades. Rotação mais frequente requer conexão em nuvem mais frequente. Rotação menos frequente pode apresentar problemas de segurança. Para definir a expiração do certificado para um valor acima de 30 dias, entre em contato com o AWS Support.

No console do AWS IoT, você pode gerenciar o certificado na página Configurações do grupo. Na AWS IoT Greengrass API, você pode usar a UpdateGroupCertificateConfigurationação.

Quando o certificado do servidor MQTT expirar, qualquer tentativa de validação deste apresentará falha. Os dispositivos cliente devem ser capazes de detectar a falha e encerrar a conexão.

Políticas do AWS IoT para operações de plano de dados

Use políticas de AWS IoT para autorizar o acesso ao plano de dados do AWS IoT Core e AWS IoT Greengrass. O plano de dados do AWS IoT Core consiste em operações para dispositivos, usuários e aplicativos, como conexão ao AWS IoT Core e assinatura de tópicos. O plano de dados do AWS IoT Greengrass consiste em operações para Dispositivos Greengrass, como recuperação de implantações e atualização de informações de conectividade.

Uma política de AWS IoT é um documento JSON semelhante a uma política do IAM. Ela contém uma ou mais declarações de política que especificam as seguintes propriedades:

  • Effect. O modo de acesso, que pode ser Allow ou Deny.

  • Action. A lista de ações permitidas ou negadas pela política.

  • Resource. A lista de recursos em que a ação é permitida ou negada.

As políticas AWS IoT oferecem suporte a * como um caractere curinga e tratam os caracteres curinga (+ e #) do MQTT como sequências literais. Para obter mais informações sobre o caractere curinga *, consulte Usando o caractere curinga em ARNs de recursos no Guia do usuário do AWS Identity and Access Management.

Para obter mais informações, consulte Políticas do AWS IoT e Ações de políticas do AWS IoT no Guia do desenvolvedor do AWS IoT Core.

nota

AWS IoT Core permite que você anexe políticas AWS IoT a grupos de coisas para definir permissões para grupos de dispositivos. As políticas de grupos de coisas não permitem acesso às operações do plano de dados AWS IoT Greengrass. Para permitir que uma coisa acesse uma operação de plano de dados AWS IoT Greengrass, adicione a permissão a uma política AWS IoT que você anexa ao certificado da coisa.

Ações de políticas do AWS IoT Greengrass

Ações do núcleo do Greengrass

O AWS IoT Greengrass define as seguintes ações de política que os dispositivos de núcleo do Greengrass podem usar em políticas de AWS IoT:

greengrass:AssumeRoleForGroup

Permissão para um dispositivo de núcleo do Greengrass recuperar credenciais usando a função do Lambda do sistema Token Exchange Service (TES). As permissões vinculadas às credenciais recuperadas baseiam-se na política anexada à função de grupo configurada.

Essa permissão é verificada quando um dispositivo de núcleo do Greengrass tenta recuperar credenciais (assumindo que as credenciais não sejam armazenadas em cache localmente).

greengrass:CreateCertificate

Permissão para um dispositivo de núcleo do Greengrass criar seu próprio certificado de servidor.

Esta permissão é verificada quando um dispositivo de núcleo do Greengrass cria um certificado. Os dispositivos de núcleo do Greengrass tentam criar um certificado de servidor na primeira execução, quando as informações de conectividade do núcleo mudam e em períodos de rotação designados.

greengrass:GetConnectivityInfo

Permissão para um dispositivo de núcleo do Greengrass recuperar suas próprias informações de conectividade.

Essa permissão é verificada quando um dispositivo de núcleo do Greengrass tenta recuperar suas informações de conectividade do AWS IoT Core.

greengrass:GetDeployment

Permissão para um dispositivo de núcleo do Greengrass recuperar implantações.

Essa permissão é verificada quando um dispositivo de núcleo do Greengrass tenta recuperar implantações e status de implantação da nuvem.

greengrass:GetDeploymentArtifacts

Permissão para um dispositivo de núcleo do Greengrass recuperar artefatos de implantação, como informações de grupo ou funções do Lambda.

Essa permissão é verificada quando um dispositivo de núcleo do Greengrass recebe uma implantação e tenta recuperar artefatos de implantação.

greengrass:UpdateConnectivityInfo

Permissão para um dispositivo de núcleo do Greengrass atualizar suas próprias informações de conectividade com informações de IP ou nome de host.

Essa permissão é verificada quando um dispositivo de núcleo do Greengrass tenta atualizar suas informações de conectividade na nuvem.

greengrass:UpdateCoreDeploymentStatus

Permissão para um dispositivo de núcleo do Greengrass atualizar o status de uma implantação.

Essa permissão é verificada quando um dispositivo de núcleo do Greengrass recebe uma implantação e tenta atualizar o status da implantação.

 

Ações do dispositivo do Greengrass

O AWS IoT Greengrass define a seguinte ação de política que os dispositivos cliente podem usar em políticas de AWS IoT:

greengrass:Discover

Permissão para um dispositivo cliente usar a API de descoberta para recuperar as informações de conectividade do núcleo do grupo e a autoridade de certificação do grupo.

Essa permissão é verificada quando um dispositivo cliente chama a API de descoberta com autenticação TLS mútua.

Política mínima do AWS IoT para o dispositivo de núcleo do AWS IoT Greengrass

A política de exemplo a seguir inclui o conjunto mínimo de ações necessárias para oferecer suporte à funcionalidade básica do Greengrass para seu dispositivo de núcleo.

  • A política lista os tópicos MQTT e filtros de tópicos nos quais o dispositivo de núcleo pode publicar mensagens, assinar e receber mensagens, incluindo tópicos usados para o estado de shadow. Para oferecer suporte à troca de mensagens entre o AWS IoT Core, as funções do Lambda, os conectores e os dispositivos cliente no grupo do Greengrass, especifique os tópicos e filtros de tópico que você deseja permitir. Para obter mais informações, consulte Exemplos de políticas de publicação/assinatura no Guia do desenvolvedor do AWS IoT Core.

  • A política inclui uma seção que permite ao AWS IoT Core obter, atualizar e excluir a sombra do dispositivo do núcleo. Para permitir a sincronização da sombra para dispositivos cliente no grupo do Greengrass, especifique os Nomes de recurso da Amazon (ARNs) de destino na lista Resource (por exemplo, arn:aws:iot:region:account-id:thing/device-name).

  • O uso das variáveis de política de coisas (iot:Connection.Thing.*) na política da AWS IoT para um dispositivo de núcleo não é compatível. O núcleo usa o mesmo certificado de dispositivo para fazer várias conexões com o AWS IoT Core, mas o ID do cliente em uma conexão pode não ser uma correspondência exata do nome de coisa do núcleo.

  • Para a permissão greengrass:UpdateCoreDeploymentStatus, o segmento final no ARN Resource é o ARN codificado como URL do dispositivo do núcleo.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Connect" ], "Resource": [ "arn:aws:iot:region:account-id:client/core-name-*" ] }, { "Effect": "Allow", "Action": [ "iot:Publish", "iot:Receive" ], "Resource": [ "arn:aws:iot:region:account-id:topic/$aws/things/core-name-*" ] }, { "Effect": "Allow", "Action": [ "iot:Subscribe" ], "Resource": [ "arn:aws:iot:region:account-id:topicfilter/$aws/things/core-name-*" ] }, { "Effect": "Allow", "Action": [ "iot:GetThingShadow", "iot:UpdateThingShadow", "iot:DeleteThingShadow" ], "Resource": [ "arn:aws:iot:region:account-id:thing/core-name-*" ] }, { "Effect": "Allow", "Action": [ "greengrass:AssumeRoleForGroup", "greengrass:CreateCertificate" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action": [ "greengrass:GetDeployment" ], "Resource": [ "arn:aws:greengrass:region:account-id:/greengrass/groups/group-id/deployments/*" ] }, { "Effect": "Allow", "Action": [ "greengrass:GetDeploymentArtifacts" ], "Resource": [ "arn:aws:greengrass:region:account-id:/greengrass/groups/group-id/deployments/*" ] }, { "Effect": "Allow", "Action": [ "greengrass:UpdateCoreDeploymentStatus" ], "Resource": [ "arn:aws:greengrass:region:account-id:/greengrass/groups/group-id/deployments/*/cores/arn%3Aaws%3Aiot%3Aregion%3Aaccount-id%3Athing%2Fcore-name" ] }, { "Effect": "Allow", "Action": [ "greengrass:GetConnectivityInfo", "greengrass:UpdateConnectivityInfo" ], "Resource": [ "arn:aws:iot:region:account-id:thing/core-name-*" ] } ] }
nota

As políticas de AWS IoT para dispositivos cliente normalmente exigem permissões semelhantes para ações iot:Connect, iot:Publish, iot:Receive e iot:Subscribe.

Para permitir que um dispositivo cliente detecte automaticamente informações de conectividade para os núcleos nos grupos dos Greengrass aos quais o dispositivo pertence, a política de AWS IoT para um dispositivo cliente deve incluir a ação greengrass:Discover. Na seção Resource, especifique o ARN do dispositivo cliente, não o ARN do dispositivo de núcleo do Greengrass. Por exemplo: .

{ "Effect": "Allow", "Action": [ "greengrass:Discover" ], "Resource": [ "arn:aws:iot:region:account-id:thing/device-name" ] }

A política de AWS IoT para dispositivos cliente normalmente não requer permissões para ações iot:GetThingShadow, iot:UpdateThingShadow ou iot:DeleteThingShadow, porque o núcleo do Greengrass lida com operações de sincronização de sombra para dispositivos cliente. Nesse caso, certifique-se de que a seção Resource para ações de sombra na política de AWS IoT do núcleo inclua os ARNs dos dispositivos cliente.

 

No console do AWS IoT, você pode visualizar e editar a política anexada ao certificado do núcleo.

  1. No painel de navegação, em Gerenciar, expanda Todos os dispositivos e, em seguida selecione Coisas.

  2. Selecione seu núcleo

  3. Na página de configuração do seu núcleo, selecione a guia Certificados.

  4. Na guia Certificados, selecione seu certificado.

  5. Na página de configuração do certificado, selecione Políticas e, em seguida, selecione a política.

    Se quiser editar a política, selecione Editar versão ativa.

  6. Revise a política e adicione, remova ou edite as permissões, conforme necessário.

  7. Para definir uma nova versão da política como a versão ativa, em Status da versão da política, selecione Definir a versão editada como a versão ativa desta política.

  8. Selecione Salvar como nova versão.