AWS IoT Device Defender
O componente AWS IoT Device Defender (aws.greengrass.DeviceDefender
) notifica os administradores sobre alterações no estado dos dispositivos principais do Greengrass. Isso pode ajudar a identificar comportamento incomum e, assim, indicar um dispositivo comprometido. Para obter mais informações, consulte AWS IoT Device Defender no Guia do desenvolvedor do AWS IoT Core.
Esse componente lê as métricas do sistema no dispositivo principal. Em seguida, ele publica as métricas para o AWS IoT Device Defender. Para mais informações sobre como ler e interpretar as métricas que esse componente relata, consulte Especificação do documento de métricas do dispositivo no Guia do desenvolvedor do AWS IoT Core.
Este componente fornece funcionalidade semelhante ao conector Device Defender em AWS IoT Greengrass V1. Para mais informações, consulte Conector Device Defender no Guia do desenvolvedor do AWS IoT Greengrass V1.
Versões
Esse componente tem as seguintes versões:
Para informações sobre alterações em cada versão do componente, consulte changelog.
Tipo
- v3.x
-
Esse é um componente genérico (aws.greengrass.generic
). O núcleo do Greengrass executa os scripts do ciclo de vida do componente.
- v2.x
-
Esse é um componente do Lambda (aws.greengrass.lambda
).. O núcleo do Greengrass executa a função do Lambda desse componente usando o componente inicializador do Lambda.
Para ter mais informações, consulte Tipos de componentes.
Sistema operacional
- v3.x
-
Esse componente pode ser instalado em dispositivos principais que executam os seguintes sistemas operacionais:
- v2.x
-
Esse componente pode ser instalado somente nos dispositivos principais do Linux.
Requisitos
Esse componente tem os seguintes requisitos:
- v3.x
-
-
Python versão 3.7 instalado no dispositivo de núcleo e adicionado à variável de ambiente PATH.
-
AWS IoT Device Defender configurado para usar o atributo Detect para monitorar violações. Para obter mais informações, consulte Detectar no Guia do desenvolvedor do AWS IoT Core.
- v2.x
-
-
O dispositivo principal deve atender aos requisitos para executar as funções do Lambda. Se você deseja que o dispositivo principal execute funções do Lambda em contêiner, o dispositivo deve atender aos requisitos para isso. Para ter mais informações, consulte Requisitos da função do Lambda.
-
Python versão 3.7 instalado no dispositivo de núcleo e adicionado à variável de ambiente PATH.
-
AWS IoT Device Defender configurado para usar o atributo Detect para monitorar violações. Para obter mais informações, consulte Detectar no Guia do desenvolvedor do AWS IoT Core.
-
A biblioteca psutil instalada no dispositivo principal. A versão 5.7.0 é a versão mais recente verificada para trabalhar com o componente.
-
A biblioteca cbor instalada no dispositivo principal. A versão 1.0.0 é a versão mais recente verificada para trabalhar com o componente.
-
Para receber os dados de saída desse componente, você deve mesclar a seguinte atualização de configuração no componente legado de roteador de assinatura (aws.greengrass.LegacySubscriptionRouter
) ao implantar esse componente. Essa configuração especifica o tópico em que esse componente publica as respostas.
Legacy subscription router v2.1.xLegacy subscription router v2.0.x
- Legacy subscription router v2.1.x
{
"subscriptions": {
"aws-greengrass-device-defender": {
"id": "aws-greengrass-device-defender",
"source": "component:aws.greengrass.DeviceDefender",
"subject": "$aws/things/+/defender/metrics/json",
"target": "cloud"
}
}
}
- Legacy subscription router v2.0.x
{
"subscriptions": {
"aws-greengrass-device-defender": {
"id": "aws-greengrass-device-defender",
"source": "arn:aws:lambda:region
:aws:function:aws-greengrass-device-defender:version
",
"subject": "$aws/things/+/defender/metrics/json",
"target": "cloud"
}
}
}
-
Substitua region
pela Região da AWS que você usa.
-
Substitua version
pela versão da função do Lambda que esse componente executa. Para encontrar a versão da função do Lambda, você deve visualizar a fórmula da versão desse componente que deseja implantar. Abra a página de detalhes do componente no console do AWS IoT Greengrass e procure o par de chave/valor da função do Lambda. Esse par de chave/valor contém o nome e a versão da função do Lambda.
Você deve atualizar a versão da função do Lambda no roteador de assinatura legado sempre que implantar esse componente. Isso garante que você use a versão correta da função do Lambda em relação à do componente que é implantado.
Para ter mais informações, consulte Criar implantações.
Dependências
Quando você implanta um componente, o AWS IoT Greengrass também implanta versões compatíveis das dependências dele. Isso significa que é preciso atender aos requisitos do componente e de todas as dependências dele para implantá-lo com êxito. Nesta seção, há uma lista de todas as dependências das versões lançadas desse componente e as restrições de versão semântica que definem as versões dos componentes para cada dependência. Também é possível visualizar as dependências de cada versão do componente no console do AWS IoT Greengrass. Na página de detalhes do componente, procure a lista de dependências.
- 3.1.1
-
A tabela a seguir lista as dependências da versão 3.1.1 desse componente.
- 3.0.0 - 3.0.2
-
A tabela a seguir lista as dependências das versões 3.0.0 e 3.0.2 desse componente.
- 2.0.12 - 2.0.16
-
A tabela a seguir lista as dependências da versão 2.0.16 desse componente.
- 2.0.10 - 2.0.11
-
A tabela a seguir lista as dependências para as versões 2.0.10 e 2.0.11 desse componente.
- 2.0.9
-
A tabela a seguir lista as dependências da versão 2.0.9 desse componente.
- 2.0.8
-
A tabela a seguir lista as dependências da versão 2.0.8 desse componente.
- 2.0.7
-
A tabela a seguir lista as dependências da versão 2.0.7 desse componente.
- 2.0.6
-
A tabela a seguir lista as dependências da versão 2.0.6 desse componente.
- 2.0.5
-
A tabela a seguir lista as dependências da versão 2.0.5 desse componente.
- 2.0.4
-
A tabela a seguir lista as dependências da versão 2.0.4 deste componente.
- 2.0.3
-
A tabela a seguir lista as dependências para a versão 2.0.3 desse componente.
Para obter mais informações sobre as dependências dos componentes, consulte referência de fórmula do componente.
Configuração
Esse componente fornece os seguintes parâmetros de configuração que podem ser personalizados ao implantar o componente.
- v3.x
-
PublishRetryCount
-
A quantidade de vezes que a publicação será repetida. Esse atributo está disponível na versão 3.1.1.
O mínimo é 0.
O máximo é 72.
Padrão: 5
SampleIntervalSeconds
-
(Opcional) A quantidade de tempo em segundos entre cada ciclo em que o componente coleta e relata métricas.
O valor mínimo é 300 segundos (5 minutos).
Padrão: 300 segundos
-
UseInstaller
-
(Opcional) Valor booleano que define se o script do instalador deve ser usado nesse componente para instalar as dependências dele.
Defina esse valor como false
se você quiser usar um script personalizado para instalar dependências ou se quiser incluir dependências de runtime em uma imagem Linux pré-criada. Para usar esse componente, é preciso instalar as seguintes bibliotecas, incluindo quaisquer dependências, e disponibilizá-las para o usuário padrão do sistema do Greengrass.
-
AWS IoT Device SDK v2 para Python
-
Biblioteca cbor. A versão 1.0.0 é a versão mais recente verificada para trabalhar com o componente.
-
Biblioteca psutil. A versão 5.7.0 é a versão mais recente verificada para trabalhar com o componente.
Se você usa a versão 3.0.0 ou 3.0.1 desse componente em dispositivos principais que você configura para usar um proxy HTTPS, defina esse valor como false
. O script do instalador não é compatível com a operação por trás de um proxy HTTPS nessas versões desse componente.
Padrão: true
- v2.x
-
A configuração padrão desse componente inclui parâmetros da função do Lambda. Recomendamos que você edite somente os parâmetros a seguir para configurar esse componente em seus dispositivos.
lambdaParams
-
Um objeto que contém os parâmetros para a função do Lambda desse componente. Esse objeto contém as seguintes informações:
EnvironmentVariables
-
Um objeto que contém os parâmetros da função do Lambda. Esse objeto contém as seguintes informações:
PROCFS_PATH
-
(Opcional) O caminho para a pasta /proc
.
-
Para executar esse componente em um contêiner, use o valor padrão, /host-proc
. O componente é executado em um contêiner por padrão.
-
Para executar esse componente no modo sem contêiner, especifique /proc
para esse parâmetro.
Padrão: /host-proc
. Esse é o caminho padrão em que esse componente monta a pasta /proc
no contêiner.
Esse componente tem acesso somente leitura a essa pasta.
SAMPLE_INTERVAL_SECONDS
-
(Opcional) A quantidade de tempo em segundos entre cada ciclo em que o componente coleta e relata métricas.
O valor mínimo é 300 segundos (5 minutos).
Padrão: 300 segundos
containerMode
-
(Opcional) O modo de conteinerização desse componente. Escolha uma das seguintes opções:
-
GreengrassContainer
: o componente é executado em um ambiente de runtime isolado dentro do contêiner do AWS IoT Greengrass.
-
NoContainer
; o componente não é executado em um ambiente de runtime isolado.
Se especificar essa opção, você deverá especificar /proc
para o parâmetro da variável de ambiente PROCFS_PATH
.
Padrão: GreengrassContainer
containerParams
-
(Opcional) Um objeto que contém os parâmetros de contêiner para esse componente. O componente usará esses parâmetros se você especificar GreengrassContainer
para containerMode
.
Esse objeto contém as seguintes informações:
memorySize
-
(Opcional) A quantidade de memória (em kilobytes) a ser alocada para o componente.
O padrão é 50.000 KB.
pubsubTopics
-
(Opcional) Um objeto que contém os tópicos que o componente assina para receber mensagens. Você pode especificar cada tópico e se o componente faz a assinatura nos tópicos MQTT pelo AWS IoT Core ou nos tópicos locais de publicação/assinatura.
Esse objeto contém as seguintes informações:
0
: este é um índice de matriz como uma string.
-
Um objeto que contém as seguintes informações:
type
-
(Opcional) O tipo de sistema de publicação e assinatura de mensagens que esse componente usa para assinar mensagens. Escolha uma das seguintes opções:
-
PUB_SUB
– Assine mensagens locais de publicar/assinar. Se escolher essa opção, o tópico não poderá conter curingas MQTT. Para obter mais informações sobre como enviar mensagens do componente personalizado quando você especifica essa opção, consulte Publicar/assinar mensagens locais.
-
IOT_CORE
: assinar mensagens MQTT do AWS IoT Core. Se você escolher essa opção, o tópico poderá conter curingas do MQTT. Para obter mais informações sobre como enviar mensagens de componentes personalizados quando você especifica essa opção, consulte Publicar/assinar mensagens MQTT do AWS IoT Core.
Padrão: PUB_SUB
topic
-
(Opcional) O tópico que o componente assina para receber mensagens. Se você especificar IotCore
para type
, poderá usar curingas MQTT (+
e #
) neste tópico.
exemplo Exemplo: atualização da mesclagem de configuração (modo de contêiner)
{
"lambdaExecutionParameters": {
"EnvironmentVariables": {
"PROCFS_PATH": "/host_proc"
}
},
"containerMode": "GreengrassContainer"
}
exemplo Exemplo: atualização da mesclagem de configuração (sem modo de contêiner)
{
"lambdaExecutionParameters": {
"EnvironmentVariables": {
"PROCFS_PATH": "/proc"
}
},
"containerMode": "NoContainer"
}
Este componente não aceita mensagens como dados de entrada.
Dados de saída
Esse componente publica métricas de segurança no seguinte tópico reservado para o AWS IoT Device Defender. Esse componente substitui coreDeviceName
pelo nome do dispositivo principal quando ele publica as métricas.
Tópico (AWS IoT Core MQTT): $aws/things/coreDeviceName
/defender/metrics/json
exemplo Exemplo de saída
{
"header": {
"report_id": 1529963534,
"version": "1.0"
},
"metrics": {
"listening_tcp_ports": {
"ports": [
{
"interface": "eth0",
"port": 24800
},
{
"interface": "eth0",
"port": 22
},
{
"interface": "eth0",
"port": 53
}
],
"total": 3
},
"listening_udp_ports": {
"ports": [
{
"interface": "eth0",
"port": 5353
},
{
"interface": "eth0",
"port": 67
}
],
"total": 2
},
"network_stats": {
"bytes_in": 1157864729406,
"bytes_out": 1170821865,
"packets_in": 693092175031,
"packets_out": 738917180
},
"tcp_connections": {
"established_connections":{
"connections": [
{
"local_interface": "eth0",
"local_port": 80,
"remote_addr": "192.168.0.1:8000"
},
{
"local_interface": "eth0",
"local_port": 80,
"remote_addr": "192.168.0.1:8000"
}
],
"total": 2
}
}
}
}
Para mais informações sobre as métricas que esse componente relata, consulte Especificação do documento de métricas do dispositivo no Guia do desenvolvedor do AWS IoT Core.
Arquivo de log local
Esse componente usa o arquivo de log abaixo.
- Linux
-
/greengrass/v2
/logs/aws.greengrass.DeviceDefender.log
- Windows
-
C:\greengrass\v2
\logs\aws.greengrass.DeviceDefender.log
Para exibir os logs desse componente
Licenças
Esse componente é liberado de acordo com o Contrato de licença de software Greengrass Core.
Changelog
A tabela a seguir descreve as alterações em cada versão do componente.
- v3.x
-
Version (Versão)
|
Alterações
|
3.1.1
|
- Correções de bugs e melhorias
-
|
3.1.0
|
- Correções de bugs e melhorias
-
|
3.0.1
|
Corrige um problema na forma como o componente calcula valores delta para métricas.
|
3.0.0
|
Esta versão não está mais disponível. As melhorias nesta versão estão disponíveis em versões posteriores desse componente.
Versão inicial.
|
- v2.x
-
Version (Versão)
|
Alterações
|
2.0.16
|
Versão atualizada para o lançamento da versão 2.13.0 do núcleo do Greengrass.
|
2.0.11
|
Versão atualizada para o lançamento da versão 2.11.0 do núcleo do Greengrass.
|
2.0.10
|
Versão atualizada para o lançamento da versão 2.7.0 do núcleo do Greengrass.
|
2.0.9
|
Versão atualizada para o lançamento da versão 2.6.0 do núcleo do Greengrass.
|
2.0.8
|
Versão atualizada para o lançamento da versão 2.5.0 do núcleo do Greengrass.
|
2.0.7
|
Versão atualizada para o lançamento da versão 2.4.0 do núcleo do Greengrass.
|
2.0.6
|
Versão atualizada para o lançamento da versão 2.3.0 do núcleo do Greengrass.
|
2.0.5
|
Versão atualizada para o lançamento do núcleo do Greengrass versão 2.2.0.
|
2.0.4
|
Versão atualizada para o lançamento do núcleo do Greengrass versão 2.1.0.
|
2.0.3
|
Versão inicial.
|