Autenticar y autorizar los dispositivos cliente - AWS IoT Greengrass

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.

Autenticar y autorizar los dispositivos cliente

nota

Esta función está disponible para la versión 2.6.0 y versiones posteriores del componente núcleo de Greengrass.

Utilice el servicio IPC de autenticación de dispositivos cliente para desarrollar un componente de intermediario local personalizado al que puedan conectarse los dispositivos IoT locales, como los dispositivos cliente.

Para usar estas operaciones de IPC, incluya la versión 2.2.0 o posterior del componente de autenticación del dispositivo cliente como una dependencia en su componente personalizado. A continuación, puede utilizar las operaciones de IPC en sus componentes personalizados para hacer lo siguiente:

  • Compruebe la identidad de los dispositivos cliente que se conectan al dispositivo principal.

  • Cree una sesión para que un dispositivo cliente se conecte al dispositivo principal.

  • Compruebe si un dispositivo cliente tiene permiso para realizar una acción.

  • Reciba una notificación cuando el certificado del servidor del dispositivo principal cambie.

Versiones mínimas del SDK

En la siguiente tabla se enumeran las versiones mínimas del servicio IPC de autenticación del dispositivo cliente SDK para dispositivos con AWS IoT que debe utilizar.

Autorización

Para utilizar el servicio IPC de autenticación del dispositivo cliente en un componente personalizado, debe definir políticas de autorización que permitan a su componente realizar estas operaciones. Para obtener información sobre cómo definir las políticas de autorización, consulte. Autorice a los componentes a realizar operaciones IPC

Las políticas de autorización para la autenticación y autorización de los dispositivos cliente tienen las siguientes propiedades.

Identificador del servicio IPC: aws.greengrass.clientdevices.Auth

Operación Descripción Recursos

aws.greengrass#VerifyClientDeviceIdentity

Permite que un componente verifique la identidad de un dispositivo cliente.

*

aws.greengrass#GetClientDeviceAuthToken

Permite que un componente valide las credenciales de un dispositivo cliente y cree una sesión para ese dispositivo cliente.

*

aws.greengrass#AuthorizeClientDeviceAction

Permite que un componente verifique si un dispositivo cliente tiene permiso para realizar una acción.

*

aws.greengrass#SubscribeToCertificateUpdates

Permite que un componente reciba notificaciones cuando el certificado del servidor del dispositivo principal rota.

*

*

Permite que un componente realice todas las operaciones del servicio IPC de autenticación del dispositivo cliente.

*

Ejemplos de políticas de autorización

Puede hacer referencia al siguiente ejemplo de política de autorización para ayudarle a configurar las políticas de autorización para sus componentes.

ejemplo Ejemplo de política de autorización

El siguiente ejemplo de política de autorización permite a un componente realizar todas las operaciones IPC de autenticación del dispositivo cliente.

{ "accessControl": { "aws.greengrass.clientdevices.Auth": { "com.example.MyLocalBrokerComponent:clientdevices:1": { "policyDescription": "Allows access to authenticate and authorize client devices.", "operations": [ "aws.greengrass#VerifyClientDeviceIdentity", "aws.greengrass#GetClientDeviceAuthToken", "aws.greengrass#AuthorizeClientDeviceAction", "aws.greengrass#SubscribeToCertificateUpdates" ], "resources": [ "*" ] } } } }

VerifyClientDeviceIdentity

Compruebe la identidad de un dispositivo cliente. Esta operación verifica si el dispositivo cliente es válidoAWS IoT.

Solicitud

La solicitud de esta operación tiene los siguientes parámetros:

credential

Las credenciales del dispositivo cliente. Este objeto,ClientDeviceCredential, contiene la siguiente información:

clientDeviceCertificate(Python:client_device_certificate)

El certificado de dispositivo X.509 del dispositivo cliente.

Respuesta

La respuesta de esta operación contiene la siguiente información:

isValidClientDevice(Python:is_valid_client_device)

Si la identidad del dispositivo cliente es válida.

GetClientDeviceAuthToken

Valida las credenciales de un dispositivo cliente y crea una sesión para el dispositivo cliente. Esta operación devuelve un token de sesión que puede usar en solicitudes posteriores para autorizar acciones del dispositivo cliente.

Para conectar correctamente un dispositivo cliente, el componente de autenticación del dispositivo cliente debe conceder el mqtt:connect permiso para el ID de cliente que utiliza el dispositivo cliente.

Solicitud

La solicitud de esta operación tiene los siguientes parámetros:

credential

Las credenciales del dispositivo cliente. Este objeto,CredentialDocument, contiene la siguiente información:

mqttCredential(Python:mqtt_credential)

Las credenciales MQTT del dispositivo cliente. Especifique el ID de cliente y el certificado que el dispositivo cliente utiliza para conectarse. Este objeto,MQTTCredential, contiene la siguiente información:

clientId(Python:client_id)

El ID de cliente que se utilizará para conectarse.

certificatePem(Python:certificate_pem)

El certificado del dispositivo X.509 que se utilizará para conectarse.

username
nota

Esta propiedad no se utiliza actualmente.

password
nota

Esta propiedad no se utiliza actualmente.

Respuesta

La respuesta de esta operación contiene la siguiente información:

clientDeviceAuthToken(Python:client_device_auth_token)

El token de sesión del dispositivo cliente. Puede usar este token de sesión en solicitudes posteriores para autorizar las acciones de este dispositivo cliente.

AuthorizeClientDeviceAction

Compruebe si un dispositivo cliente tiene permiso para realizar una acción en un recurso. Las políticas de autorización de los dispositivos cliente especifican los permisos que los dispositivos cliente pueden realizar mientras están conectados a un dispositivo principal. Las políticas de autorización de los dispositivos cliente se definen al configurar el componente de autenticación del dispositivo cliente.

Solicitud

La solicitud de esta operación tiene los siguientes parámetros:

clientDeviceAuthToken(Python:client_device_auth_token)

El token de sesión del dispositivo cliente.

operation

La operación que se va a autorizar.

resource

El recurso en el que el dispositivo cliente realiza la operación.

Respuesta

La respuesta de esta operación contiene la siguiente información:

isAuthorized(Python:is_authorized)

Si el dispositivo cliente está autorizado a realizar la operación en el recurso.

SubscribeToCertificateUpdates

Suscríbase para recibir el nuevo certificado de servidor del dispositivo principal cada vez que gire. Cuando el certificado de servidor rota, los intermediarios deben volver a cargarlo con el nuevo certificado de servidor.

De forma predeterminada, el componente de autenticación del dispositivo cliente rota los certificados del servidor cada 7 días. Puede configurar el intervalo de rotación entre 2 y 10 días.

Esta operación es una operación de suscripción en la que se suscribe a un flujo de mensajes de eventos. Para utilizar esta operación, defina un controlador de respuesta de transmisión con funciones que gestionen los mensajes de eventos, los errores y el cierre de la transmisión. Para obtener más información, consulte Suscríbase a las transmisiones de IPC eventos.

Tipo de mensaje de evento: CertificateUpdateEvent

Solicitud

La solicitud de esta operación tiene los siguientes parámetros:

certificateOptions(Python:certificate_options)

Los tipos de actualizaciones de certificados a las que suscribirse. Este objeto,CertificateOptions, contiene la siguiente información:

certificateType(Python:certificate_type)

El tipo de actualizaciones de certificados a las que suscribirse. Elija la opción siguiente:

  • SERVER

Respuesta

La respuesta de esta operación contiene la siguiente información:

messages

El flujo de mensajes. Este objeto,CertificateUpdateEvent, contiene la siguiente información:

certificateUpdate(Python:certificate_update)

La información sobre el nuevo certificado. Este objeto,CertificateUpdate, contiene la siguiente información:

certificate

El certificado.

privateKey(Python:private_key)

La clave privada del certificado.

publicKey(Python:public_key)

La clave pública del certificado.

caCertificates(Python:ca_certificates)

La lista de certificados de la autoridad de certificación (CA) de la cadena de certificados de CA del certificado.