Autenticación y autorización de dispositivos en AWS IoT Greengrass - 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.

Autenticación y autorización de dispositivos en AWS IoT Greengrass

Los dispositivos en entornos de AWS IoT Greengrass utilizan certificados X.509 para la autenticación y políticas de AWS IoT para la autorización. Los certificados y las políticas permiten que los dispositivos se conecten de forma segura entre sí, con AWS IoT Core y AWS IoT Greengrass.

Los certificados X.509 son certificados digitales que utilizan el estándar de infraestructura de clave pública X.509 para asociar una clave pública a una identidad contenida en un certificado. Una entidad de confianza conocida como entidad de certificación (CA) emite los certificados X.509. La CA administra uno o varios certificados especiales llamados certificados de CA, que utiliza para generar certificados X.509. Solo la entidad de certificación tiene acceso a los certificados de entidad de certificación.

Las políticas de AWS IoT definen el conjunto de operaciones permitidas para los dispositivos de AWS IoT. Específicamente, permiten y deniegan el acceso a operaciones de plano de datos de AWS IoT Core y AWS IoT Greengrass, como la publicación de mensajes MQTT y la recuperación de sombras de dispositivos.

Todos los dispositivos requieren una entrada en el registro de AWS IoT Core y un certificado X.509 activado con una política de AWS IoT asociada. Los dispositivos se dividen en dos categorías:

  • Núcleos de Greengrass. Los dispositivos del núcleo de Greengrass utilizan certificados y políticas de AWS IoT para conectarse de forma segura a AWS IoT Core. Los certificados y las políticas también permiten que AWS IoT Greengrass implemente información de configuración, funciones de Lambda, conectores y suscripciones administradas en dispositivos principales.

  • Dispositivos cliente. Los dispositivos cliente (también denominados dispositivos conectados, dispositivos Greengrass o dispositivos) son dispositivos que se conectan a un núcleo de Greengrass a través de MQTT. Utilizan certificados y políticas para conectarse a AWS IoT Core y al servicio AWS IoT Greengrass. Esto permite a los dispositivos del cliente utilizar el servicio de detección de AWS IoT Greengrass para buscar un dispositivo del núcleo y conectarse a él. Un dispositivo de cliente utiliza el mismo certificado para conectarse a la gateway del dispositivo de AWS IoT Core y al dispositivo principal. Los dispositivos de cliente también utilizan información de detección para la autenticación mutua con el dispositivo principal. Para obtener más información, consulte Flujo de trabajo de conexión de dispositivos y Administre la autenticación de dispositivos con el núcleo de Greengrass.

Certificados X.509

La comunicación entre dispositivos principales y de cliente, y entre dispositivos y AWS IoT Core o AWS IoT Greengrass debe autenticarse. Esta autenticación mutua se basa en certificados de dispositivo X.509 registrados y claves criptográficas.

En un entorno de AWS IoT Greengrass, los dispositivos utilizan certificados con claves públicas y privadas para las siguientes conexiones de Transport Layer Security (TLS):

  • El componente de cliente de AWS IoT en el núcleo de Greengrass que se conecta a AWS IoT Core y a AWS IoT Greengrass través de Internet.

  • Los dispositivos cliente se conectan a AWS IoT Greengrass para obtener información básica de detección a través de Internet.

  • El componente de servidor MQTT en el núcleo de Greengrass que se conecta a los dispositivos cliente en el grupo a través de la red local.

El dispositivo principal de AWS IoT Greengrass almacena los certificados en dos ubicaciones:

  • Certificado del dispositivo del núcleo en /greengrass-root/certs. Normalmente, el certificado de dispositivo del núcleo se denomina hash.cert.pem (por ejemplo, 86c84488a5.cert.pem). Este certificado es utilizado por el cliente de AWS IoT para la autenticación mutua cuando el núcleo se conecta a los servicios AWS IoT Core y AWS IoT Greengrass.

  • Certificado de servidor MQTT en /greengrass-root/ggc/var/state/server. El certificado del servidor MQTT se denomina server.crt. Este certificado se utiliza para la autenticación mutua entre el servidor MQTT local (en el núcleo de Greengrass) y los dispositivos Greengrass.

    nota

    greengrass-root representa la ruta donde está instalado el software de AWS IoT Greengrass Core en su dispositivo. Normalmente, este es el directorio /greengrass.

Para obtener más información, consulte AWS IoT Greengrass principios básicos de seguridad.

Certificados de entidad de certificación (CA)

Los dispositivos de núcleo y los dispositivos cliente descargan un certificado de entidad de certificación raíz utilizado para la autenticación con los servicios de AWS IoT Core y AWS IoT Greengrass. Le recomendamos que utilice un certificado de entidad de certificación raíz de Amazon Trust Services (ATS), como Amazon Root CA 1. Para obtener más información, consulte Certificados de CA para autenticación de servidor en la Guía del desarrollador de AWS IoT Core.

nota

El tipo de certificado de CA raíz debe coincidir con su punto de enlace. Utilice un certificado de CA raíz de ATS con un punto final de ATS (preferido) o un certificado de CA VeriSign raíz con un punto de conexión heredado. Solo algunas regiones de Amazon Web Services admiten puntos de conexión heredados. Para obtener más información, consulte Los puntos de conexión del servicio deben coincidir con el tipo de certificado de CA raíz..

Los dispositivos cliente también descargan el certificado de entidad de certificación del grupo de Greengrass. Esto se utiliza para validar el certificado del servidor MQTT en el núcleo de Greengrass durante la autenticación mutua. Para obtener más información, consulte Flujo de trabajo de conexión de dispositivos. El vencimiento predeterminado del certificado del servidor MQTT es de siete días.

Rotación de certificados en el servidor MQTT local

Los dispositivos cliente utilizan el certificado de servidor MQTT local para la autenticación mutua con el dispositivo del núcleo de Greengrass. De forma predeterminada, este certificado caduca en siete días. Este período limitado se basa en las prácticas recomendadas de seguridad. El certificado del servidor MQTT está firmado por el certificado de entidad de certificación del grupo, que se almacena en la nube.

Para que se produzca rotación de certificados, su dispositivo principal de Greengrass debe estar en línea y ser capaz de acceder directamente al servicio de AWS IoT Greengrass de forma periódica. Cuando vence el certificado, el dispositivo principal de Greengrass intenta conectarse al servicio de AWS IoT Greengrass para obtener un nuevo certificado. Si la conexión se realiza correctamente, el dispositivo central descarga un nuevo certificado de servidor de MQTT y reinicia el servicio de MQTT local. En este momento, se desconectan todos los dispositivos cliente que están conectados al núcleo. Si el núcleo del dispositivo está sin conexión en el momento en que vence el certificado, no recibe el certificado de sustitución. Cualquier nuevo intento de conectarse al dispositivo central se rechazará. Las conexiones existentes no se ven afectadas. Los dispositivos cliente no pueden conectarse al dispositivo principal hasta que la conexión al servicio de AWS IoT Greengrass se restaura y se puede descargar un nuevo certificado del servidor de MQTT.

Puede configurar el vencimiento en cualquier valor comprendido entre 7 y 30 días, en función de sus necesidades. Una rotación más frecuente requiere conexiones a la nube más frecuentes. Una rotación menos frecuente puede suponer un riesgo para la seguridad. Si desea definir el vencimiento del certificado en un valor superior a 30 días, póngase en contacto con AWS Support.

En la consola de AWS IoT, puede administrar el certificado en la página Configuración del grupo. En la AWS IoT Greengrass API, puedes usar la UpdateGroupCertificateConfigurationacción.

Cuando el certificado de servidor de MQTT vence, se produce un error en cualquier intento de validar el certificado. Los dispositivos de cliente debe poder detectar el error y terminar la conexión.

Políticas de AWS IoT para operaciones de plano de datos

Utilice las políticas de AWS IoT para autorizar el acceso al plano de datos de AWS IoT Core y AWS IoT Greengrass. El plano de datos de AWS IoT Core consta de operaciones para dispositivos, usuarios y aplicaciones, como conectarse a AWS IoT Core y suscribirse a temas. El plano de datos de AWS IoT Greengrass consta de operaciones para dispositivos de Greengrass, como la recuperación de implementaciones y la actualización de la información de conectividad.

Una política de AWS IoT es un documento JSON que es similar a una política de IAM. Contiene una o varias instrucciones de política que especifican las siguientes propiedades:

  • Effect. El modo de acceso, que puede ser Allow o Deny.

  • Action. La lista de acciones permitidas o denegadas por la política.

  • Resource. La lista de recursos en los que se permite o deniega la acción.

Las políticas de AWS IoT admiten * como caracteres comodín y tratan los caracteres comodín MQTT (+ y #) como cadenas literales. Para obtener más información sobre el comodín *, consulte Uso del comodín en los ARN de los recursos en la Guía del usuario de AWS Identity and Access Management.

Para obtener más información, consulte Políticas de AWS IoT y Acciones de política de AWS IoT en la Guía del desarrollador de AWS IoT Core.

nota

AWS IoT Core permite adjuntar políticas de AWS IoT a grupos de objetos a fin de definir los permisos para grupos de dispositivos. Las políticas de grupos de objetos no permiten el acceso a las operaciones del plano de datos de AWS IoT Greengrass. Para permitir que una objeto acceda a una operación del plano de datos de AWS IoT Greengrass, añada el permiso a una política de AWS IoT que adjunta al certificado del objeto.

Acciones de política de AWS IoT Greengrass

Acciones del núcleo de Greengrass

AWS IoT Greengrass define las siguientes acciones de política que los dispositivos del núcleo de Greengrass pueden usar en las políticas de AWS IoT:

greengrass:AssumeRoleForGroup

Permiso para que un dispositivo del núcleo de Greengrass recupere credenciales mediante la función de Lambda del sistema de servicio de intercambio de token (TES). Los permisos vinculados a las credenciales recuperadas se basan en la política asociada al rol de grupo configurado.

Este permiso se comprueba cuando un dispositivo del núcleo de Greengrass intenta recuperar credenciales (suponiendo que las credenciales no se almacenan en caché localmente).

greengrass:CreateCertificate

Permiso para que un dispositivo del núcleo de Greengrass cree su propio certificado de servidor.

Este permiso se comprueba cuando un dispositivo del núcleo de Greengrass crea un certificado. Los dispositivos del núcleo de Greengrass intentan crear un certificado de servidor al ejecutarse por primera vez, cuando cambia la información de conectividad del núcleo y en los períodos de rotación designados.

greengrass:GetConnectivityInfo

Permiso para que un dispositivo del núcleo de Greengrass recupere su propia información de conectividad.

Este permiso se comprueba cuando un dispositivo del núcleo de Greengrass intenta recuperar su información de conectividad desde AWS IoT Core.

greengrass:GetDeployment

Permiso para que un dispositivo del núcleo de Greengrass recupere implementaciones.

Este permiso se comprueba cuando un dispositivo del núcleo de Greengrass intenta recuperar implementaciones y estados de implementación desde la nube.

greengrass:GetDeploymentArtifacts

Permiso para que un dispositivo del núcleo de Greengrass recupere artefactos de implementación como información de grupo o funciones de Lambda.

Este permiso se comprueba cuando un dispositivo del núcleo de Greengrass recibe una implementación y, a continuación, intenta recuperar artefactos de implementación.

greengrass:UpdateConnectivityInfo

Permiso para que un dispositivo del núcleo de Greengrass actualice su propia información de conectividad con información IP o nombre de host.

Este permiso se comprueba cuando un dispositivo del núcleo de Greengrass intenta actualizar su información de conectividad en la nube.

greengrass:UpdateCoreDeploymentStatus

Permiso para que un dispositivo del núcleo de Greengrass actualice el estado de una implementación.

Este permiso se comprueba cuando un dispositivo del núcleo de Greengrass recibe una implementación y, a continuación, intenta actualizar el estado de implementación.

 

Acciones de dispositivos de Greengrass

AWS IoT Greengrass define la siguiente acción de política que los dispositivos de cliente pueden usar en las políticas de AWS IoT:

greengrass:Discover

Permiso para que un dispositivo de cliente utilice la API de detección para recuperar la información de conectividad cenral de su grupo y la autoridad de certificación de grupo.

Este permiso se comprueba cuando un dispositivo de cliente llama a la API de detección con autenticación mutua TLS.

Política mínima de AWS IoT para el dispositivo central de AWS IoT Greengrass

La siguiente política de ejemplo incluye un conjunto mínimo de acciones necesario para respaldar la funcionalidad básica de Greengrass para su dispositivo del núcleo.

  • La política muestra los temas de MQTT y los filtros de tema en los que el dispositivo del núcleo puede publicar mensajes, suscribirse y recibir mensajes, incluidos temas utilizados para estado de sombra. Para admitir el intercambio de mensajes entre AWS IoT Core, funciones de Lambda, conectores y dispositivos cliente en el grupo de Greengrass, especifique los temas y filtros de temas que desea permitir. Para obtener más información, consulte Ejemplos de política de publicación/suscripción en la Guía del desarrollador de AWS IoT Core.

  • La política incluye una sección que permite a AWS IoT Core obtener, actualizar y eliminarla sombra del dispositivo de núcleo. Para permitir la sincronización de sombras para dispositivos cliente conectados en el grupo de Greengrass, especifique los nombres de recursos de Amazon (ARN) de destino en la lista Resource (por ejemplo, arn:aws:iot:region:account-id:thing/device-name).

  • No se permite utilizar variables de políticas de objetos (iot:Connection.Thing.*) en la política de AWS IoT de un dispositivo del núcleo. El dispositivo principal utiliza el mismo certificado del dispositivo para realizar varias conexiones a AWS IoT Core, pero puede ocurrir que el ID de cliente de una conexión no coincida exactamente con el nombre del objeto principal.

  • Para el permiso greengrass:UpdateCoreDeploymentStatus, el segmento final de la ARN Resource es el ARN codificado en URL del dispositivo de 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

Las políticas de AWS IoT para dispositivos cliente normalmente requieren permisos similares para acciones iot:Connect, iot:Publish, iot:Receive y iot:Subscribe.

Para permitir que un dispositivo de cliente detecte automáticamente la información de conectividad de los núcleos de los grupos de Greengrass a los que pertenece el dispositivo, la política de AWS IoT de un dispositivo de cliente debe incluir la acción greengrass:Discover. En la sección Resource, especifique el ARN del dispositivo de cliente, no el ARN del dispositivo principal de Greengrass. Por ejemplo:

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

La política de AWS IoT para los dispositivos cliente normalmente no requiere permisos para acciones iot:GetThingShadow, iot:UpdateThingShadow o iot:DeleteThingShadow, ya que el núcleo de Greengrass controla las operaciones de sincronización de sombras para los dispositivos de clientes. En este caso, asegúrese de que la sección Resource para acciones de sombra en la política central de AWS IoT incluya los ARN de los dispositivos cliente.

 

En la consola de AWS IoT, puede ver y editar la política que está asociada su certificado principal.

  1. En el panel de navegación, en Administrar, expanda Todos los dispositivos y, a continuación, elija Objetos.

  2. Elija su núcleo.

  3. En la página de configuración del núcleo, seleccione la pestaña Certificados.

  4. En la pestaña Certificados, elija su certificado.

  5. En la página de configuración del certificado, elija Policies (Políticas) y, a continuación, seleccione la política.

    Si desea editar la política, elija Editar versión activa.

  6. Revise la política y agregue, elimine o edite los permisos según sea necesario.

  7. Para establecer una nueva versión de la política como la versión activa, en Estado de la versión de la política, seleccione Establecer la versión editada como la versión activa de esta política.

  8. Seleccione Guardar como versión nueva.