Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Utilizzando AWS IoT Fleet Provisioning, AWS IoT puoi generare e fornire in modo sicuro certificati e chiavi private ai tuoi dispositivi quando si connettono AWS IoT per la prima volta. AWS IoT fornisce certificati client firmati dall'autorità di certificazione Amazon Root (CA).
Esistono due modi per utilizzare il provisioning del parco istanze dispositivi:
Provisioning tramite attestazione
I dispositivi possono essere fabbricati con un certificato di attestazione di provisioning e una chiave privata (che sono credenziali per scopi speciali) incorporati in essi. Se questi certificati sono registrati presso AWS IoT, il servizio può scambiarli con certificati di dispositivo univoci che il dispositivo può utilizzare per le normali operazioni. Il processo include le seguenti fasi:
Prima di distribuire il dispositivo
-
Chiamare
CreateProvisioningTemplate
per creare un modello di provisioning. Questa API restituisce un ARN del modello. Per ulteriori informazioni, consulta API MQTT di provisioning del dispositivo.Puoi anche creare un modello di provisioning del parco veicoli nella AWS IoT console.
-
Nel pannello di navigazione, scegli Connect (Connetti), quindi Fleet provisioning templates (Modelli di provisioning del parco istanze).
-
Scegli Create template (Crea modello) e segui le istruzioni.
-
-
Creazione di certificati e chiavi private associate da utilizzare come certificati delle attestazioni di provisioning.
-
Registra questi certificati AWS IoT e associa una policy IoT che ne limiti l'uso. La policy di esempio IoT seguente limita l'uso del certificato associato a questa policy ai dispositivi di provisioning.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["iot:Connect"], "Resource": "*" }, { "Effect": "Allow", "Action": ["iot:Publish","iot:Receive"], "Resource": [ "arn:aws:iot:
aws-region
:aws-account-id
:topic/$aws/certificates/create/*", "arn:aws:iot:aws-region
:aws-account-id
:topic/$aws/provisioning-templates/templateName
/provision/*" ] }, { "Effect": "Allow", "Action": "iot:Subscribe", "Resource": [ "arn:aws:iot:aws-region
:aws-account-id
:topicfilter/$aws/certificates/create/*", "arn:aws:iot:aws-region
:aws-account-id
:topicfilter/$aws/provisioning-templates/templateName
/provision/*" ] } ] } -
Concedi al AWS IoT servizio l'autorizzazione a creare o aggiornare risorse IoT come oggetti e certificati nel tuo account durante il provisioning dei dispositivi. A tale scopo, collega la policy
AWSIoTThingsRegistration
gestita a un ruolo IAM (chiamato ruolo di provisioning) che si fida del responsabile del servizio. AWS IoT -
Il dispositivo viene prodotto con il certificato di attestazione di provisioning integrato in modo sicuro.
Il dispositivo è ora pronto per essere distribuito dove verrà installato per l'uso.
Importante
Le chiavi private dell'attestazione di provisioning devono essere protette in ogni momento, anche sul dispositivo. Ti consigliamo di utilizzare AWS IoT CloudWatch metriche e log per monitorare eventuali indicazioni di uso improprio. Se si rileva un uso improprio, disattivare il certificato di attestazione del provisioning in modo che non possa essere utilizzato per il provisioning del dispositivo.
Inizializzazione del dispositivo per l'utilizzo
-
Il dispositivo utilizza il AWS IoT SDK per dispositivi, SDK per dispositivi mobili e AWS IoT client per dispositivi per connettersi e autenticarsi AWS IoT utilizzando il certificato di provisioning claim installato sul dispositivo.
Nota
Per sicurezza, il valore
certificateOwnershipToken
restituito daCreateCertificateFromCsr
e daCreateKeysAndCertificate
scade dopo un'ora.RegisterThing
deve essere chiamato prima della scadenza dicertificateOwnershipToken
. Se il certificato creato daCreateCertificateFromCsr
oCreateKeysAndCertificate
non è stato attivato e non è stato collegato a una policy o a un oggetto entro la scadenza del token, il certificato viene eliminato. Se il token scade, il dispositivo può chiamare nuovamenteCreateCertificateFromCsr
oCreateKeysAndCertificate
per generare un nuovo certificato. -
Il dispositivo ottiene un certificato permanente e una chiave privata utilizzando una di queste opzioni. Il dispositivo utilizzerà il certificato e la chiave per tutte le future autenticazioni con AWS IoT.
-
Chiama CreateKeysAndCertificateper creare un nuovo certificato e una chiave privata utilizzando l'autorità di AWS certificazione.
Or
-
Chiama CreateCertificateFromCsr per generare un certificato da una richiesta di firma del certificato che mantenga la propria chiave privata protetta.
-
-
Dal dispositivo, richiamare RegisterThing per registrare il dispositivo con AWS IoT e creare risorse cloud.
Il servizio di provisioning del parco istanze utilizza un modello di provisioning per definire e creare risorse cloud, come oggetti IoT. Il modello può specificare gli attributi e i gruppi a cui appartiene l'oggetto. I gruppi di oggetti devono esistere prima di poter aggiungere il nuovo oggetto.
-
Dopo aver salvato il certificato permanente sul dispositivo, il dispositivo deve disconnettersi dalla sessione avviata con il certificato di attestazione di provisioning e riconnettersi utilizzando il certificato permanente.
Il dispositivo è ora pronto per comunicare normalmente con AWS IoT.
Provisioning tramite utente attendibile
In molti casi, un dispositivo si connette AWS IoT per la prima volta quando un utente affidabile, ad esempio un utente finale o un tecnico di installazione, utilizza un'app mobile per configurare il dispositivo nella posizione in cui è installato.
Importante
Per eseguire questa procedura, è necessario gestire l'accesso e l'autorizzazione dell'utente attendibile. Un modo per eseguire questa operazione consiste nel fornire e gestire un account per l'utente attendibile che lo autentichi e conceda l'accesso alle funzionalità e alle API AWS IoT necessarie per eseguire questa procedura.
Prima di distribuire il dispositivo
-
Chiama
CreateProvisioningTemplate
per creare un modello di provisioning e restituire i relativitemplateArn
etemplateName
. -
Creare un ruolo IAM utilizzato da un utente attendibile per avviare il processo di provisioning. Il modello di provisioning consente solo all'utente di eseguire il provisioning di un dispositivo. Per esempio:
{ "Effect": "Allow", "Action": [ "iot:CreateProvisioningClaim" ], "Resource": [ "arn:aws:iot:
aws-region
:aws-account-id
:provisioningtemplate/templateName
" ] } -
Concedi al AWS IoT servizio l'autorizzazione a creare o aggiornare risorse IoT, come oggetti e certificati nel tuo account durante il provisioning dei dispositivi. A tale scopo, collega la policy
AWSIoTThingsRegistration
gestita a un ruolo IAM (chiamato ruolo di provisioning) che si fida del responsabile del servizio. AWS IoT -
Fornisci i mezzi per identificare i tuoi utenti fidati, ad esempio fornendo loro un account in grado di autenticarli e autorizzare le loro interazioni con le operazioni AWS API necessarie per registrare i loro dispositivi.
Inizializzazione del dispositivo per l'utilizzo
-
Un utente attendibile accede all'app per dispositivi mobili o al servizio Web di provisioning.
-
L'applicazione per dispositivi mobili o l'applicazione Web utilizza il ruolo IAM e chiama
CreateProvisioningClaim
per ottenere un certificato di attestazione di provisioning temporaneo da AWS IoT.Nota
Per motivi di sicurezza, il certificato di attestazione di provisioning temporaneo restituito da
CreateProvisioningClaim
è valido solo per cinque minuti. Le fasi seguenti devono restituire un certificato valido prima della scadenza del certificato di attestazione di provisioning temporaneo. I certificati di attestazione di provisioning temporaneo non vengono visualizzati nell'elenco dei certificati dell'account. -
L'app per dispositivi mobili o l'applicazione Web fornisce al dispositivo il certificato di attestazione di provisioning temporaneo insieme a tutte le informazioni di configurazione necessarie, ad esempio le credenziali Wi-Fi.
-
Il dispositivo utilizza il certificato di attestazione di provisioning temporaneo per connettersi a AWS IoT , utilizzando AWS IoT SDK per dispositivi, SDK per dispositivi mobili e AWS IoT client per dispositivi.
-
Il dispositivo ottiene un certificato permanente e una chiave privata utilizzando una di queste opzioni entro cinque minuti dalla connessione al certificato di richiesta AWS IoT di approvvigionamento temporaneo. Il dispositivo utilizzerà il certificato e la chiave restituiti da queste opzioni per tutte le future autenticazioni con AWS IoT.
-
Chiama CreateKeysAndCertificateper creare un nuovo certificato e una nuova chiave privata utilizzando l'autorità di AWS certificazione.
Or
-
Chiama CreateCertificateFromCsr per generare un certificato da una richiesta di firma del certificato che mantenga la propria chiave privata protetta.
Nota
Ricorda CreateKeysAndCertificateo CreateCertificateFromCsrdevi restituire un certificato valido entro cinque minuti dalla connessione al AWS IoT certificato di richiesta di approvvigionamento temporaneo.
-
-
Il dispositivo chiama RegisterThingper registrare il dispositivo AWS IoT e creare risorse cloud.
Il servizio di provisioning del parco istanze utilizza un modello di provisioning per definire e creare risorse cloud, come oggetti IoT. Il modello può specificare gli attributi e i gruppi a cui appartiene l'oggetto. I gruppi di oggetti devono esistere prima di poter aggiungere il nuovo oggetto.
-
Dopo aver salvato il certificato permanente sul dispositivo, il dispositivo deve disconnettersi dalla sessione avviata con il certificato di attestazione di provisioning temporaneo e riconnettersi utilizzando il certificato permanente.
Il dispositivo è ora pronto per comunicare normalmente con AWS IoT.
Utilizzo degli hook di pre-provisioning con l'interfaccia a riga di comando AWS
La procedura seguente crea un modello di provisioning con hook di pre-provisioning. La funzione Lambda utilizzata qui è un esempio che può essere modificato.
Per creare e applicare un hook di pre-provisioning a un modello di provisioning
-
Creare una funzione Lambda con input e output definiti. Le funzioni Lambda sono altamente personalizzabili.
allowProvisioning
eparameterOverrides
sono necessari per la creazione di hook pre-provisioning. Per ulteriori informazioni sulla creazione di funzioni Lambda, consulta Utilizzo AWS Lambda con l'interfaccia a riga di AWS comando.Di seguito è riportato un esempio di output di una funzione Lambda:
{ "allowProvisioning": True, "parameterOverrides": { "
incomingKey0
": "incomingValue0
", "incomingKey1
": "incomingValue1
" } } -
AWS IoT utilizza politiche basate sulle risorse per chiamare Lambda, quindi è necessario autorizzare la chiamata AWS IoT alla funzione Lambda.
Importante
Assicurati di includere il valore
source-arn
osource-account
nelle chiavi del contesto delle condizioni globali delle policy associate all'operazione Lambda per impedire la manipolazione delle autorizzazioni. Per ulteriori informazioni, consulta Prevenzione del confused deputy tra servizi.Di seguito è riportato un esempio che utilizza add-permission per concedere l'autorizzazione IoT all'utente Lambda.
aws lambda add-permission \ --function-name
myLambdaFunction
\ --statement-id iot-permission \ --action lambda:InvokeFunction \ --principal iot.amazonaws.com -
Aggiungere un hook di pre-provisioning a un modello utilizzando il comando create-provisioning-template o update-provisioning-template.
Nell'esempio dell'interfaccia a riga di comando seguente viene utilizzato create-provisioning-template per creare un modello di provisioning con hook di pre-provisioning:
aws iot create-provisioning-template \ --template-name
myTemplate
\ --provisioning-role-arnarn:aws:iam:us-east-1:1234564789012:role/myRole
\ --template-bodyfile://template.json
\ --pre-provisioning-hookfile://hooks.json
L'output di questo comando è simile al seguente:
{ "templateArn": "
arn:aws:iot:us-east-1:1234564789012:provisioningtemplate/myTemplate
", "defaultVersionId": 1, "templateName":myTemplate
}È in oltre possibile caricare un parametro da un file invece di digitarlo per intero come valore di parametro della riga di comando per risparmiare tempo. Per ulteriori informazioni, consulta Caricamento dei parametri da un file AWS CLI. Di seguito è riportato il parametro
template
in formato JSON espanso:{ "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" } }, "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"]} } }
Di seguito è riportato il parametro
pre-provisioning-hook
in formato JSON espanso:{ "targetArn" : "
arn:aws:lambda:us-east-1:765219403047:function:pre_provisioning_test
", "payloadVersion" : "2020-04-01
" }