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.
Aprovisionamiento de dispositivos que no tienen certificados de dispositivo mediante el aprovisionamiento de flotas
Al utilizar el aprovisionamiento de AWS IoT flotas, AWS IoT puedes generar y entregar de forma segura certificados de dispositivos y claves privadas a tus dispositivos cuando se conectan AWS IoT por primera vez. AWS IoT proporciona certificados de cliente firmados por la autoridad de certificación (CA) raíz de Amazon.
Existen dos formas de utilizar el aprovisionamiento de flotas:
Aprovisionamiento por reclamación
Los dispositivos se pueden fabricar con un certificado de notificación de aprovisionamiento y una clave privada (que son credenciales de uso especial) incrustados. Si estos certificados están registrados AWS IoT, el servicio puede cambiarlos por certificados de dispositivo únicos que el dispositivo pueda usar para sus operaciones habituales. El proceso consta de los pasos siguientes:
Antes de entregar el dispositivo
-
Llame a
CreateProvisioningTemplatepara crear una plantilla de aprovisionamiento. Esta API devuelve un ARN de plantilla. Para obtener más información, consulte API de MQTT de aprovisionamiento de dispositivos.También puedes crear una plantilla de aprovisionamiento de flotas en la AWS IoT consola.
-
En el panel de navegación, seleccione el menú desplegable Conectar muchos dispositivos. A continuación, elija Conectar muchos dispositivos.
-
Seleccione Crear plantilla de aprovisionamiento.
-
Elija la opción Situación de aprovisionamiento que mejor se adapte a los procesos de instalación. A continuación, elija Siguiente.
-
Complete el flujo de trabajo de la plantilla.
-
-
Cree los certificados y las claves privadas asociadas que se utilizarán como certificados de reclamación de aprovisionamiento.
-
Registre estos certificados AWS IoT y asocie una política de IoT que restrinja el uso de los certificados. El siguiente ejemplo de política de IoT restringe el uso del certificado asociado a esta política para aprovisionar dispositivos.
-
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Connect" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "iot:Publish", "iot:Receive" ], "Resource": [ "arn:aws:iot:us-east-1:123456789012:topic/$aws/certificates/create/*", "arn:aws:iot:us-east-1:123456789012:topic/$aws/provisioning-templates/templateName/provision/*" ] }, { "Effect": "Allow", "Action": "iot:Subscribe", "Resource": [ "arn:aws:iot:us-east-1:123456789012:topicfilter/$aws/certificates/create/*", "arn:aws:iot:us-east-1:123456789012:topicfilter/$aws/provisioning-templates/templateName/provision/*" ] } ] }
-
Conceda permiso al AWS IoT servicio para crear o actualizar recursos de IoT, como objetos y certificados, en su cuenta al aprovisionar dispositivos. Para ello, asocie la política
AWSIoTThingsRegistrationgestionada a una función de IAM (denominada función de aprovisionamiento) que confíe en el principal del servicio. AWS IoT -
Fabricar el dispositivo con el certificado de reclamación de aprovisionamiento incrustado de forma segura en él.
El dispositivo ya está listo para ser entregado a donde se instalará para su uso.
importante
Las claves privadas de la notificación de aprovisionamiento deben estar protegidas en todo momento, también en el dispositivo. Le recomendamos que utilice AWS IoT CloudWatch métricas y registros para supervisar los indicios de uso indebido. Si detecta un uso incorrecto, desactive el certificado de reclamación de aprovisionamiento para que no se pueda utilizar para el aprovisionamiento de dispositivos.
Para inicializar el dispositivo para su uso
-
El dispositivo usa el AWS IoT SDKs para dispositivos, SDKs para dispositivos móviles y AWS IoT Cliente de dispositivo para conectarse y autenticarse AWS IoT mediante el certificado de notificación de aprovisionamiento que está instalado en el dispositivo.
nota
Por motivos de seguridad, el
certificateOwnershipTokendevuelto porCreateCertificateFromCsryCreateKeysAndCertificatecaduca al cabo de una hora. Debe llamarse aRegisterThingantes de quecertificateOwnershipTokenvenza. Si el certificado creado porCreateCertificateFromCsroCreateKeysAndCertificateno se ha activado y no se ha asociado a una política o a un objeto en el momento de caducar el token, el certificado se eliminará. Si el token caduca, el dispositivo puede volver a llamar aCreateCertificateFromCsro aCreateKeysAndCertificatepara generar un nuevo certificado. -
El dispositivo obtiene un certificado permanente y una clave privada mediante una de estas opciones. El dispositivo utilizará el certificado y la clave para todas las autenticaciones futuras. AWS IoT
-
Llame CreateKeysAndCertificate para crear un certificado y una clave privada nuevos con la autoridad de AWS certificación.
O
-
Llame a CreateCertificateFromCsr para generar un certificado desde una solicitud de firma de certificado que mantiene su clave privada segura.
-
-
Desde el dispositivo, llame a RegisterThing para registrar el dispositivo con AWS IoT y crear recursos en la nube.
El servicio de aprovisionamiento de flotas utiliza una plantilla de aprovisionamiento para definir y crear recursos en la nube como objetos de IoT. La plantilla puede especificar los atributos y grupos a los que pertenece el objeto. Los grupos de objetos deben existir para poder agregarles el nuevo objeto.
-
Después de guardar el certificado permanente en el dispositivo, este debe desconectarse de la sesión que inició con el certificado de reclamación de aprovisionamiento y volver a conectarse con el certificado permanente.
El dispositivo ya está listo para comunicarse normalmente con él AWS IoT.
Aprovisionamiento por usuario de confianza
En muchos casos, un dispositivo se conecta AWS IoT por primera vez cuando un usuario de confianza, como un usuario final o un técnico de instalación, utiliza una aplicación móvil para configurar el dispositivo en la ubicación en la que está desplegado.
importante
Debe administrar el acceso y el permiso del usuario de confianza para realizar este procedimiento. Una forma de hacerlo es proporcionar y mantener una cuenta para el usuario de confianza que lo autentica y le otorga acceso a las características y las operaciones API de AWS IoT necesarias para realizar este procedimiento.
Antes de entregar el dispositivo
-
Llame
CreateProvisioningTemplatepara crear una plantilla de aprovisionamiento y devuélvalatemplateArnytemplateName. -
Cree un rol de IAM que utilice un usuario de confianza para iniciar el proceso de aprovisionamiento. La plantilla de aprovisionamiento solo permite a ese usuario aprovisionar un dispositivo. Por ejemplo:
{ "Effect": "Allow", "Action": [ "iot:CreateProvisioningClaim" ], "Resource": [ "arn:aws:iot:aws-region:aws-account-id:provisioningtemplate/templateName" ] } -
Concede permiso al AWS IoT servicio para crear o actualizar los recursos de IoT, como elementos y certificados, de tu cuenta al aprovisionar dispositivos. Para ello, debes adjuntar la política
AWSIoTThingsRegistrationgestionada a una función de IAM (denominada función de aprovisionamiento) que confíe en el principal del servicio. AWS IoT -
Proporcione los medios para identificar a sus usuarios de confianza, por ejemplo, proporcionándoles una cuenta que pueda autenticarlos y autorizar sus interacciones con las operaciones de AWS API necesarias para registrar sus dispositivos.
Para inicializar el dispositivo para su uso
-
El usuario de confianza inicia sesión en su aplicación móvil o servicio web de aprovisionamiento.
-
La aplicación móvil o la aplicación web utiliza el rol de IAM y llama a
CreateProvisioningClaimpara obtener un certificado de reclamación de aprovisionamiento temporal de AWS IoT.nota
Por motivos de seguridad, el certificado de reclamación de aprovisionamiento temporal devuelto por
CreateProvisioningClaimsolo es válido durante cinco minutos. Los pasos siguientes deben devolver correctamente un certificado válido antes de que caduque el certificado de reclamación de aprovisionamiento temporal. Los certificados de reclamación de aprovisionamiento temporal no aparecen en la lista de certificados de su cuenta. -
La aplicación móvil o la aplicación web proporcionan el certificado de aprovisionamiento temporal al dispositivo junto con toda la información de configuración requerida, como Wi-Fi las credenciales.
-
El dispositivo utiliza el certificado de reclamación de aprovisionamiento temporal para conectarse a AWS IoT mediante el AWS IoT SDKs para dispositivos, SDKs para dispositivos móviles y AWS IoT Cliente de dispositivo.
-
El dispositivo obtiene un certificado permanente y una clave privada mediante una de estas opciones a los cinco minutos de conectarse AWS IoT con el certificado de reclamación de aprovisionamiento temporal. El dispositivo utilizará el certificado y la clave que devuelvan estas opciones para cualquier autenticación futura. AWS IoT
-
Llame CreateKeysAndCertificate para crear un certificado y una clave privada nuevos con la autoridad de AWS certificación.
O
-
Llame a CreateCertificateFromCsr para generar un certificado desde una solicitud de firma de certificado que mantiene su clave privada segura.
nota
Recuerda CreateKeysAndCertificate o CreateCertificateFromCsr debes devolver un certificado válido en un plazo de cinco minutos después de conectarte AWS IoT con el certificado de aprovisionamiento temporal.
-
-
El dispositivo llama RegisterThing para registrarlo AWS IoT y crear recursos en la nube.
El servicio de aprovisionamiento de flotas utiliza una plantilla de aprovisionamiento para definir y crear recursos en la nube como objetos de IoT. La plantilla puede especificar los atributos y grupos a los que pertenece el objeto. Los grupos de objetos deben existir para poder agregarles el nuevo objeto.
-
Después de guardar el certificado permanente en el dispositivo, el dispositivo debe desconectarse de la sesión que inició con el certificado de reclamación de aprovisionamiento temporal y volver a conectarse con el certificado permanente.
El dispositivo ya está listo para comunicarse normalmente con él AWS IoT.
Uso de ganchos de preaprovisionamiento con AWS CLI
El siguiente procedimiento crea una plantilla de aprovisionamiento con enlaces de preaprovisionamiento. La función de Lambda utilizada aquí es un ejemplo que se puede modificar.
Para crear y aplicar un enlace de preaprovisionamiento a una plantilla de aprovisionamiento
-
Cree una función de Lambda que tenga una entrada y una salida definidas. Las funciones de Lambda son altamente personalizables.
allowProvisioningyparameterOverridesson necesarias para crear enlaces previos al aprovisionamiento. Para obtener más información sobre la creación de funciones de Lambda, consulte Utilizarlas AWS Lambda con la interfaz de AWS línea de comandos.El siguiente es un ejemplo de una salida de función de Lambda:
{ "allowProvisioning": True, "parameterOverrides": { "incomingKey0": "incomingValue0", "incomingKey1": "incomingValue1" } } -
AWS IoT usa políticas basadas en recursos para llamar a Lambda, por lo que debe conceder AWS IoT permiso para llamar a su función de Lambda.
importante
Asegúrese de incluir las claves contextuales de condición global
source-arnosource-accounten las de las políticas adjuntas a su acción de Lambda para evitar la manipulación de permisos. Para obtener más información acerca de este tema, consulte Cross-service confusa prevención adjunta.El siguiente ejemplo utiliza add-permission para dar permiso de IoT a su Lambda.
aws lambda add-permission \ --function-namemyLambdaFunction\ --statement-id iot-permission \ --action lambda:InvokeFunction \ --principal iot.amazonaws.com -
Agregue un enlace de preaprovisionamiento a una plantilla mediante el comando create-provisioning-template o update-provisioning-template .
En el siguiente ejemplo de CLI se utiliza la create-provisioning-template para crear una plantilla de aprovisionamiento que tenga enlaces de preaprovisionamiento:
aws iot create-provisioning-template \ --template-namemyTemplate\ --provisioning-role-arnarn:aws:iam:us-east-1:1234564789012:role/myRole\ --template-bodyfile://template.json\ --pre-provisioning-hookfile://hooks.jsonEl resultado de este comando tendrá un aspecto similar al siguiente.
{ "templateArn": "arn:aws:iot:us-east-1:1234564789012:provisioningtemplate/myTemplate", "defaultVersionId": 1, "templateName":myTemplate}También puede cargar un parámetro desde un archivo en lugar de escribirlo todo como un valor de parámetro de línea de comandos para ahorrar tiempo. Para obtener más información, consulte Carga de parámetros de AWS CLI desde un archivo. A continuación se muestra el parámetro
templateen formato JSON expandido:{ "Parameters" : { "DeviceLocation": { "Type": "String" } }, "Mappings": { "LocationTable": { "Seattle": { "LocationUrl": "https://example.aws" } } }, "Resources" : { "thing" : { "Type" : "AWS::IoT::Thing", "Properties" : { "AttributePayload" : { "version" : "v1", "serialNumber" : "serialNumber" }, "ThingName" : {"Fn::Join":["",["ThingPrefix_",{"Ref":"SerialNumber"}]]}, "ThingTypeName" : {"Fn::Join":["",["ThingTypePrefix_",{"Ref":"SerialNumber"}]]}, "ThingGroups" : ["widgets", "WA"], "BillingGroup": "BillingGroup" }, "OverrideSettings" : { "AttributePayload" : "MERGE", "ThingTypeName" : "REPLACE", "ThingGroups" : "DO_NOTHING" } }, "certificate" : { "Type" : "AWS::IoT::Certificate", "Properties" : { "CertificateId": {"Ref": "AWS::IoT::Certificate::Id"}, "Status" : "Active", "ThingPrincipalType" : "EXCLUSIVE_THING" } }, "policy" : { "Type" : "AWS::IoT::Policy", "Properties" : { "PolicyDocument" : { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action":["iot:Publish"], "Resource": ["arn:aws:iot:us-east-1:504350838278:topic/foo/bar"] }] } } } }, "DeviceConfiguration": { "FallbackUrl": "https://www.example.com/test-site", "LocationUrl": { "Fn::FindInMap": ["LocationTable",{"Ref": "DeviceLocation"}, "LocationUrl"]} } }A continuación se muestra el parámetro
pre-provisioning-hooken formato JSON expandido:{ "targetArn" : "arn:aws:lambda:us-east-1:765219403047:function:pre_provisioning_test", "payloadVersion" : "2020-04-01" }