Descripción general de la AWS IoT Greengrass seguridad - AWS IoT Greengrass

AWS IoT Greengrass Version 1 entró en la fase de vida útil prolongada el 30 de junio de 2023. Para obtener más información, consulte la política de mantenimiento de AWS IoT Greengrass V1 Después de esta fecha, AWS IoT Greengrass V1 no se publicarán actualizaciones que proporcionen funciones, mejoras, correcciones de errores o parches de seguridad. Los dispositivos que se ejecuten AWS IoT Greengrass V1 no se verán afectados y seguirán funcionando y conectándose a la nube. Le recomendamos encarecidamente que migre a AWS IoT Greengrass Version 2, ya que añade importantes funciones nuevas y es compatible con plataformas adicionales.

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Descripción general de la AWS IoT Greengrass seguridad

AWS IoT Greengrass utiliza certificados, AWS IoT políticas y políticas y funciones de IAM X.509 para proteger las aplicaciones que se ejecutan en los dispositivos de su entorno local de Greengrass.

El siguiente diagrama muestra los componentes del modelo de seguridad: AWS IoT Greengrass

A: rol de servicio de Greengrass

Una función de IAM creada por el cliente que asume AWS IoT Greengrass al acceder a sus AWS recursos desde y AWS IoT Core otros AWS Lambda servicios. AWS Para obtener más información, consulte Rol de servicio de Greengrass.

B: certificado del dispositivo del núcleo

Un certificado X.509 utilizado para autenticar un núcleo de Greengrass con y. AWS IoT Core AWS IoT Greengrass Para obtener más información, consulte Autenticación y autorización de dispositivos en AWS IoT Greengrass.

C: certificado de dispositivo

Un certificado X.509 utilizado para autenticar un dispositivo cliente, también conocido como dispositivo conectado, con y. AWS IoT Core AWS IoT Greengrass Para obtener más información, consulte Autenticación y autorización de dispositivos en AWS IoT Greengrass.

D: rol de grupo

Una función de IAM creada por el cliente que asume AWS IoT Greengrass al llamar a los AWS servicios desde un núcleo de Greengrass.

Esta función se utiliza para especificar los permisos de acceso que necesitan las funciones y conectores de Lambda definidos por el usuario para AWS acceder a los servicios, como DynamoDB. También se usa para permitir exportar las transmisiones del administrador de transmisiones AWS IoT Greengrass a los AWS servicios y escribirlas en los registros. CloudWatch Para obtener más información, consulte Rol de grupo de Greengrass.

nota

AWS IoT Greengrass no utiliza la función de ejecución de Lambda que se especifica en la versión AWS Lambda de nube de una función de Lambda.

E - Certificado de servidor MQTT

El certificado utilizado para la autenticación mutua de seguridad de la capa de transporte (TLS) entre un dispositivo del núcleo de Greengrass y dispositivos del cliente en el grupo Greengrass. El certificado está firmado por el certificado de entidad de certificación de grupo, que se almacena en la Nube de AWS.

Flujo de trabajo de conexión de dispositivos

En esta sección se describe cómo los dispositivos cliente se conectan al AWS IoT Greengrass servicio y a los dispositivos principales de Greengrass. Los dispositivos cliente son AWS IoT Core dispositivos registrados que están en el mismo grupo de Greengrass que el dispositivo principal.

  • Un dispositivo principal de Greengrass utiliza su certificado de dispositivo, su clave privada y el certificado de CA AWS IoT Core raíz para conectarse al AWS IoT Greengrass servicio. En el dispositivo del núcleo, el objeto crypto del archivo de configuración especifica la ruta de archivo de estos elementos.

  • El dispositivo del núcleo de Greengrass descarga información de miembros de grupo del servicio de AWS IoT Greengrass .

  • Cuando se realiza una implementación en el dispositivo del núcleo de Greengrass, el Administrador de certificados de dispositivo (DCM) gestiona la administración de certificados de servidor local para el dispositivo del núcleo de Greengrass.

  • Un dispositivo cliente se conecta al AWS IoT Greengrass servicio mediante su certificado de dispositivo, su clave privada y el certificado de CA AWS IoT Core raíz. Después de realizar la conexión, el dispositivo cliente utiliza el servicio de detección de Greengrass para encontrar la dirección IP de su dispositivo del núcleo de Greengrass. El dispositivo del cliente también descarga el certificado de entidad de certificación de grupo, que se utiliza para la autenticación mutua TLS con el dispositivo del núcleo de Greengrass.

  • Un dispositivo cliente intenta conectarse al dispositivo del núcleo de Greengrass, pasándole su certificado de dispositivo y su ID de cliente. Si el ID de cliente coincide con el nombre de objeto del dispositivo cliente y el certificado es válido (parte del grupo de Greengrass), se establece la conexión. De lo contrario, se termina la conexión.

La AWS IoT política para los dispositivos cliente debe conceder el greengrass:Discover permiso para permitir que los dispositivos cliente descubran la información de conectividad del núcleo. Para obtener más información sobre esta instrucción de política, consulte Autorización de detección.

Configurar la AWS IoT Greengrass seguridad

Para configurar la seguridad de su aplicación Greengrass:
  1. Crea cualquier AWS IoT Core cosa para tu dispositivo principal de Greengrass.

  2. Genere un par de claves y un certificado de dispositivo para su dispositivo del núcleo de Greengrass.

  3. Cree y asocie una política de AWS IoT al certificado del dispositivo. El certificado y la política permiten que el dispositivo principal de Greengrass acceda a los servicios AWS IoT Core y AWS IoT Greengrass los servicios. Para obtener más información, consulte Política mínima de AWS IoT para el dispositivo central.

    nota

    No se admite el uso de variables de política de objetos (iot:Connection.Thing.*) en la AWS IoT política de un dispositivo principal. El núcleo usa el mismo certificado de dispositivo para realizar varias conexiones AWS IoT Core , pero es posible que el ID de cliente de una conexión no coincida exactamente con el nombre del dispositivo principal.

  4. Cree un rol de servicio de Greengrass. Esta función de IAM AWS IoT Greengrass le autoriza a acceder a los recursos de otros AWS servicios en su nombre. Esto permite AWS IoT Greengrass realizar tareas esenciales, como recuperar AWS Lambda funciones y gestionar las sombras de los dispositivos.

    Puedes usar el mismo rol de servicio en todos Región de AWS los servidores, pero debe estar asociado a ti Cuenta de AWS en todos los Región de AWS lugares donde lo utilices AWS IoT Greengrass.

  5. (Opcional) Cree un rol de grupo de Greengrass. Esta función de IAM concede permiso a las funciones y conectores de Lambda que se ejecutan en un núcleo de Greengrass para llamar a los servicios. AWS Por ejemplo, el conector Kinesis Firehose requiere permiso para escribir registros en una transmisión de entrega de Amazon Data Firehose.

    Solo puede asociar un rol a un grupo de Greengrass.

  6. Crea AWS IoT Core algo para cada dispositivo que se conecte a tu núcleo de Greengrass.

    nota

    También puedes usar AWS IoT Core cosas y certificados existentes.

  7. Cree certificados de dispositivo, pares de claves y AWS IoT políticas para cada dispositivo que se conecte a su núcleo de Greengrass.

AWS IoT Greengrass principios básicos de seguridad

El núcleo de Greengrass utiliza los siguientes principios de seguridad: AWS IoT cliente, servidor MQTT local y administrador de secretos local. La configuración de estas entidades principales se almacena en el objeto crypto en el archivo de configuración config.json. Para obtener más información, consulte Archivo de configuración de AWS IoT Greengrass Core.

Esta configuración incluye la ruta al archivo de clave privada que la entidad principal utiliza para realizar la autenticación y el cifrado. AWS IoT Greengrass admite dos modos de almacenamiento de claves privadas: basado en hardware o basado en el sistema de archivos (valor predeterminado). Para obtener más información sobre el almacenamiento de claves en los módulos de seguridad de hardware, consulte Integración de la seguridad de hardware.

AWS IoT Cliente

El AWS IoT cliente (cliente de IoT) gestiona la comunicación a través de Internet entre el núcleo de Greengrass y. AWS IoT Core AWS IoT Greengrass utiliza certificados X.509 con claves públicas y privadas para la autenticación mutua al establecer conexiones TLS para esta comunicación. Para obtener más información, consulte Certificados X.509 e AWS IoT Core en la Guía para desarrolladores de AWS IoT Core .

El cliente de IoT es compatible con RSA y con los certificados y claves EC. La ruta del certificado y de la clave privada se especifica para la entidad principal IoTCertificate en config.json.

Servidor MQTT

El servidor MQTT local gestiona la comunicación a través de la red local entre el núcleo de Greengrass y los dispositivos cliente del grupo. AWS IoT Greengrass utiliza certificados X.509 con claves públicas y privadas para la autenticación mutua al establecer conexiones TLS para esta comunicación.

De forma predeterminada, AWS IoT Greengrass genera una clave privada RSA para usted. Para configurar el núcleo de modo que use una clave privada, debe proporcionar la ruta de la clave para la entidad principal MQTTServerCertificate en config.json. Tiene la responsabilidad de rotar una clave proporcionada por el cliente.

Compatibilidad con clave privada
Clave RSA Clave EC
Tipo de clave Supported Supported
Parámetros clave Minimum 2048-bit length NIST P-256 or NIST P-384 curve
Formato de disco PKCS#1, PKCS#8 SECG1, PKCS#8
Versión mínima de GGC
  • Usar la clave RSA predeterminada: 1.0

  • Especificar una clave RSA: 1.7

  • Especificar una clave EC: 1.9

La configuración de la clave privada determina los procesos relacionados. Para ver la lista de conjuntos de cifrado que el núcleo Greengrass admite como servidor, consulte Compatibilidad con conjuntos de cifrado TLS.

Si no se especifica ninguna clave privada (valor predeterminado)
  • AWS IoT Greengrass gira la clave en función de la configuración de rotación.

  • El núcleo genera una clave RSA, que se utiliza para generar el certificado.

  • El certificado del servidor MQTT tiene una clave pública RSA y una firma SHA-256 RSA.

Si se especifica una clave privada RSA (requiere GGC versión 1.7 o posterior)
  • Usted es responsable de rotar la clave.

  • El núcleo utiliza la clave especificada para generar el certificado.

  • La clave RSA debe tener una longitud mínima de 2048 bits.

  • El certificado del servidor MQTT tiene una clave pública RSA y una firma SHA-256 RSA.

Si se especifica una clave privada EC (requiere GGC versión 1.9 o posterior)
  • Usted es responsable de rotar la clave.

  • El núcleo utiliza la clave especificada para generar el certificado.

  • La clave privada EC debe utilizar una curva NIST P-256 o NIST P-384.

  • El certificado del servidor MQTT tiene una clave pública EC y una firma SHA-256 RSA.

    El certificado del servidor MQTT presentado por el núcleo tiene una firma SHA-256 RSA, independientemente del tipo de clave. Por este motivo, los clientes deben ser compatibles con la validación de certificados RSA SHA-256 para establecer una conexión segura con el núcleo.

Secrets Manager

El administrador de secretos local gestiona de forma segura las copias locales de los secretos que usted crea en AWS Secrets Manager ellos. Utiliza una clave privada para proteger la clave de datos que se utiliza para cifrar los secretos. Para obtener más información, consulte Implementación de secretos en el núcleo de AWS IoT Greengrass.

De forma predeterminada, se usa la clave privada del cliente de IoT, pero puede especificar otra clave privada para la entidad principal SecretsManager en config.json. Solo se admite el tipo de claves RSA. Para obtener más información, consulte Especificación de la clave privada para el cifrado de secretos.

nota

Actualmente, solo AWS IoT Greengrass admite el mecanismo de relleno PKCS #1 v1.5 para el cifrado y descifrado de secretos locales cuando se utilizan claves privadas basadas en hardware. Si sigue las instrucciones del proveedor para generar manualmente claves privadas basadas en hardware, asegúrese de elegir PKCS #1 v1.5. AWS IoT Greengrass no admite el relleno de cifrado asimétrico óptimo (OAEP).

Compatibilidad con clave privada
Clave RSA Clave EC
Tipo de clave Supported Not supported
Parámetros clave Minimum 2048-bit length Not applicable
Formato de disco PKCS#1, PKCS#8 Not applicable
Versión mínima de GGC 1.7 Not applicable

Suscripciones administradas en el flujo de trabajo de mensajería de MQTT

AWS IoT Greengrass utiliza una tabla de suscripciones para definir cómo se pueden intercambiar los mensajes MQTT entre los dispositivos, las funciones y los conectores del cliente de un grupo de Greengrass y AWS IoT Core con el servicio paralelo local. Cada suscripción especifica el origen, el destino y el tema (o asunto) de MQTT sobre el que se envían o reciben los mensajes. AWS IoT Greengrass permite enviar mensajes de un origen a un destino solo si se ha definido la suscripción correspondiente.

Una suscripción define el flujo de mensajes en una sola dirección, del origen al destino. Para admitir el intercambio de mensajes bidireccional, debe crear dos suscripciones, una para cada dirección.

Compatibilidad con conjuntos de cifrado TLS

AWS IoT Greengrass utiliza el modelo de seguridad del AWS IoT Core transporte para cifrar la comunicación con la nube mediante conjuntos de cifrado TLS. Además, AWS IoT Greengrass los datos se cifran cuando están en reposo (en la nube). Para obtener más información sobre la seguridad del AWS IoT Core transporte y los conjuntos de cifrado compatibles, consulte Seguridad del transporte en la Guía para AWS IoT Core desarrolladores.

Conjuntos de cifrado admitidos para las comunicaciones de red locales

Por el contrario AWS IoT Core, el AWS IoT Greengrass núcleo admite los siguientes conjuntos de cifrado TLS de redes locales para los algoritmos de firma de certificados. Todos estos conjuntos de cifrado se admiten cuando las claves privadas se almacenen en el sistema de archivos. Un subgrupo de ellos se admiten cuando el núcleo está configurado para usar módulos de seguridad de hardware (HSM). Para obtener más información, consulte AWS IoT Greengrass principios básicos de seguridad y Integración de la seguridad de hardware. La tabla también incluye la versión mínima del software AWS IoT Greengrass Core necesaria para la compatibilidad.

Cifrado Compatibilidad con HSM Versión mínima de GGC
TLSv1.2 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA Supported 1.0
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA Supported 1.0
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 Supported 1.0
TLS_RSA_WITH_AES_128_CBC_SHA Not supported 1.0
TLS_RSA_WITH_AES_128_GCM_SHA256 Not supported 1.0
TLS_RSA_WITH_AES_256_CBC_SHA Not supported 1.0
TLS_RSA_WITH_AES_256_GCM_SHA384 Not supported 1.0
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 Supported 1.9
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 Supported 1.9
TLSv1.1 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA Supported 1.0
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA Supported 1.0
TLS_RSA_WITH_AES_128_CBC_SHA Not supported 1.0
TLS_RSA_WITH_AES_256_CBC_SHA Not supported 1.0
TLSv1.0 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA Supported 1.0
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA Supported 1.0
TLS_RSA_WITH_AES_128_CBC_SHA Not supported 1.0
TLS_RSA_WITH_AES_256_CBC_SHA Not supported 1.0