Configura il provisioning AWS IoT della flotta per i dispositivi core Greengrass - AWS IoT Greengrass

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à.

Configura il provisioning AWS IoT della flotta per i dispositivi core Greengrass

Per installare il software AWS IoT Greengrass Core con il provisioning della flotta, devi prima configurare le seguenti risorse nel tuo. Account AWS Queste risorse consentono ai dispositivi di registrarsi AWS IoT e funzionare come dispositivi core Greengrass. Segui una volta i passaggi in questa sezione per creare e configurare queste risorse nel tuoAccount AWS.

  • Un ruolo IAM per lo scambio di token, utilizzato dai dispositivi principali per autorizzare le chiamate ai AWS servizi.

  • Un alias di AWS IoT ruolo che rimanda al ruolo di scambio di token.

  • (Facoltativo) Una AWS IoT policy utilizzata dai dispositivi principali per autorizzare le chiamate ai servizi AWS IoT andAWS IoT Greengrass. Questa AWS IoT politica deve consentire l'iot:AssumeRoleWithCertificateautorizzazione per l'alias del AWS IoT ruolo che punta al ruolo di scambio di token.

    È possibile utilizzare un'unica AWS IoT policy per tutti i dispositivi principali del parco dispositivi oppure configurare il modello di provisioning del parco veicoli per creare una AWS IoT policy per ogni dispositivo principale.

  • Un modello di approvvigionamento del AWS IoT parco veicoli. Questo modello deve specificare quanto segue:

    • Qualsiasi AWS IoT cosa, risorsa. È possibile specificare un elenco di gruppi di oggetti esistenti per distribuire i componenti su ciascun dispositivo quando è online.

    • Una risorsa AWS IoT politica. Questa risorsa può definire una delle seguenti proprietà:

      • Il nome di una AWS IoT politica esistente. Se scegli questa opzione, i dispositivi principali che crei con questo modello utilizzano la stessa AWS IoT politica e puoi gestirne le autorizzazioni come flotta.

      • Un documento AWS IoT di policy. Se scegli questa opzione, ogni dispositivo principale creato a partire da questo modello utilizza una AWS IoT policy unica e puoi gestire le autorizzazioni per ogni singolo dispositivo principale.

    • Una risorsa AWS IoT certificata. Questa risorsa di certificato deve utilizzare il AWS::IoT::Certificate::Id parametro per allegare il certificato al dispositivo principale. Per ulteriori informazioni, consulta J ust-in-time provisioning nella AWS IoTDeveloper Guide.

  • Un certificato di richiesta di AWS IoT approvvigionamento e una chiave privata per il modello di approvvigionamento della flotta. Puoi incorporare questo certificato e la chiave privata nei dispositivi durante la produzione, in modo che i dispositivi possano registrarsi e rifornirsi autonomamente quando sono online.

    Importante

    Il provisioning dichiara che le chiavi private devono essere protette in ogni momento, anche sui dispositivi core Greengrass. Ti consigliamo di utilizzare i CloudWatch parametri e i log di Amazon per monitorare eventuali indicazioni di uso improprio, come l'uso non autorizzato del certificato di attestazione per il provisioning dei dispositivi. Se rilevi un uso improprio, disattiva il certificato di richiesta di approvvigionamento in modo che non possa essere utilizzato per il provisioning dei dispositivi. Per ulteriori informazioni, consulta Monitoring AWS IoT nella Developer Guide. AWS IoT Core

    Per aiutarti a gestire meglio il numero di dispositivi e i dispositivi che si registrano automaticamente nel tuo sistemaAccount AWS, puoi specificare un hook di pre-provisioning quando crei un modello di provisioning del parco veicoli. Un hook di pre-provisioning è una AWS Lambda funzione che convalida i parametri del modello forniti dai dispositivi durante la registrazione. Ad esempio, è possibile creare un hook di pre-provisioning che controlli l'ID di un dispositivo confrontandolo con un database per verificare che il dispositivo disponga dell'autorizzazione al provisioning. Per ulteriori informazioni, consulta Pre-provisioning hook nella Developer Guide. AWS IoT Core

  • Una AWS IoT politica da allegare al certificato di richiesta di approvvigionamento per consentire ai dispositivi di registrarsi e utilizzare il modello di provisioning del parco veicoli.

Crea un ruolo di scambio di token

I dispositivi core Greengrass utilizzano un ruolo di servizio IAM, chiamato token exchange role, per autorizzare le chiamate ai servizi. AWS Il dispositivo utilizza il provider di AWS IoT credenziali per ottenere AWS credenziali temporanee per questo ruolo, che consente al dispositivo di interagireAWS IoT, inviare log ad Amazon CloudWatch Logs e scaricare elementi dei componenti personalizzati da Amazon S3. Per ulteriori informazioni, consulta Autorizza i dispositivi principali a interagire con i servizi AWS.

Si utilizza un alias di AWS IoT ruolo per configurare il ruolo di scambio di token per i dispositivi principali Greengrass. Gli alias di ruolo consentono di modificare il ruolo di scambio di token per un dispositivo ma mantengono invariata la configurazione del dispositivo. Per ulteriori informazioni, consulta Autorizzazione delle chiamate dirette ai AWS servizi nella Guida per gli AWS IoT Coresviluppatori.

In questa sezione, crei un ruolo IAM per lo scambio di token e un alias di AWS IoT ruolo che rimanda al ruolo. Se hai già configurato un dispositivo principale Greengrass, puoi utilizzare il ruolo di scambio di token e l'alias del ruolo invece di crearne di nuovi.

Per creare un ruolo IAM per lo scambio di token
  1. Crea un ruolo IAM che il tuo dispositivo possa utilizzare come ruolo di scambio di token. Esegui questa operazione:

    1. Crea un file che contenga il documento sulla politica di fiducia richiesto dal ruolo di scambio di token.

      Ad esempio, su un sistema basato su Linux, è possibile eseguire il comando seguente per utilizzare GNU nano per creare il file.

      nano device-role-trust-policy.json

      Copiate il seguente codice JSON nel file.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "credentials.iot.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
    2. Crea il ruolo di scambio di token con il documento sulla politica di fiducia.

      • Sostituisci greengrassV2 TokenExchangeRole con il nome del ruolo IAM da creare.

      aws iam create-role --role-name GreengrassV2TokenExchangeRole --assume-role-policy-document file://device-role-trust-policy.json

      La risposta è simile all'esempio seguente, se la richiesta ha esito positivo.

      { "Role": { "Path": "/", "RoleName": "GreengrassV2TokenExchangeRole", "RoleId": "AROAZ2YMUHYHK5OKM77FB", "Arn": "arn:aws:iam::123456789012:role/GreengrassV2TokenExchangeRole", "CreateDate": "2021-02-06T00:13:29+00:00", "AssumeRolePolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "credentials.iot.amazonaws.com" }, "Action": "sts:AssumeRole" } ] } }
    3. Crea un file che contenga il documento sulla politica di accesso richiesto dal ruolo di scambio di token.

      Ad esempio, su un sistema basato su Linux, è possibile eseguire il comando seguente per utilizzare GNU nano per creare il file.

      nano device-role-access-policy.json

      Copiate il seguente codice JSON nel file.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", "logs:DescribeLogStreams", "s3:GetBucketLocation" ], "Resource": "*" } ] }
      Nota

      Questa politica di accesso non consente l'accesso agli artefatti dei componenti nei bucket S3. Per distribuire componenti personalizzati che definiscono gli artefatti in Amazon S3, devi aggiungere autorizzazioni al ruolo per consentire al dispositivo principale di recuperare gli artefatti dei componenti. Per ulteriori informazioni, consulta Consenti l'accesso ai bucket S3 per gli artefatti dei componenti.

      Se non disponi ancora di un bucket S3 per gli artefatti dei componenti, puoi aggiungere queste autorizzazioni in un secondo momento dopo aver creato un bucket.

    4. Crea la policy IAM dal documento di policy.

      • Sostituisci GreenGrassV2 TokenExchangeRoleAccess con il nome della policy IAM da creare.

      aws iam create-policy --policy-name GreengrassV2TokenExchangeRoleAccess --policy-document file://device-role-access-policy.json

      La risposta è simile all'esempio seguente, se la richiesta ha esito positivo.

      { "Policy": { "PolicyName": "GreengrassV2TokenExchangeRoleAccess", "PolicyId": "ANPAZ2YMUHYHACI7C5Z66", "Arn": "arn:aws:iam::123456789012:policy/GreengrassV2TokenExchangeRoleAccess", "Path": "/", "DefaultVersionId": "v1", "AttachmentCount": 0, "PermissionsBoundaryUsageCount": 0, "IsAttachable": true, "CreateDate": "2021-02-06T00:37:17+00:00", "UpdateDate": "2021-02-06T00:37:17+00:00" } }
    5. Allega la policy IAM al ruolo di scambio di token.

      • Sostituisci greengrassV2 TokenExchangeRole con il nome del ruolo IAM.

      • Sostituisci l'ARN della policy con l'ARN della policy IAM che hai creato nel passaggio precedente.

      aws iam attach-role-policy --role-name GreengrassV2TokenExchangeRole --policy-arn arn:aws:iam::123456789012:policy/GreengrassV2TokenExchangeRoleAccess

      Il comando non ha alcun output se la richiesta ha esito positivo.

  2. Crea un alias di AWS IoT ruolo che punti al ruolo di scambio di token.

    • Sostituiscilo GreengrassCoreTokenExchangeRoleAliascon il nome dell'alias del ruolo da creare.

    • Sostituisci il ruolo ARN con l'ARN del ruolo IAM creato nel passaggio precedente.

    aws iot create-role-alias --role-alias GreengrassCoreTokenExchangeRoleAlias --role-arn arn:aws:iam::123456789012:role/GreengrassV2TokenExchangeRole

    La risposta è simile all'esempio seguente, se la richiesta ha esito positivo.

    { "roleAlias": "GreengrassCoreTokenExchangeRoleAlias", "roleAliasArn": "arn:aws:iot:us-west-2:123456789012:rolealias/GreengrassCoreTokenExchangeRoleAlias" }
    Nota

    Per creare un alias di ruolo, devi disporre dell'autorizzazione a passare il ruolo IAM per lo scambio di token a. AWS IoT Se ricevi un messaggio di errore quando tenti di creare un alias di ruolo, verifica che AWS l'utente disponga di questa autorizzazione. Per ulteriori informazioni, consulta Concessione a un utente delle autorizzazioni per il trasferimento di un ruolo a un AWS servizio nella Guida per l'AWS Identity and Access Managementutente.

Creazione di una policy AWS IoT

Dopo aver registrato un dispositivo come AWS IoT oggetto, quel dispositivo può utilizzare un certificato digitale con cui autenticarsi. AWS Questo certificato include una o più AWS IoT politiche che definiscono le autorizzazioni che un dispositivo può utilizzare con il certificato. Queste politiche consentono al dispositivo di comunicare con AWS IoT eAWS IoT Greengrass.

Con AWS IoT Fleet Provisioning, i dispositivi si connettono AWS IoT per creare e scaricare un certificato del dispositivo. Nel modello di provisioning del parco veicoli creato nella sezione successiva, puoi specificare se AWS IoT allega la stessa AWS IoT policy ai certificati di tutti i dispositivi o crea una nuova policy per ogni dispositivo.

In questa sezione, crei una AWS IoT policy da AWS IoT allegare ai certificati di tutti i dispositivi. Con questo approccio, puoi gestire le autorizzazioni per tutti i dispositivi come una flotta. Se preferisci creare una nuova AWS IoT politica per ogni dispositivo, puoi saltare questa sezione e fare riferimento alla politica in essa contenuta quando definisci il modello del tuo parco veicoli.

Per creare una policy AWS IoT
  • Crea una AWS IoT politica che definisca le AWS IoT autorizzazioni per la tua flotta di dispositivi principali Greengrass. La seguente politica consente l'accesso a tutti gli argomenti MQTT e alle operazioni di Greengrass, in modo che il dispositivo funzioni con applicazioni personalizzate e modifiche future che richiedono nuove operazioni Greengrass. Questa politica consente anche l'iot:AssumeRoleWithCertificateautorizzazione, che consente ai dispositivi di utilizzare il ruolo di scambio di token creato nella sezione precedente. Puoi limitare questa politica in base al tuo caso d'uso. Per ulteriori informazioni, consulta AWS IoTPolitica minima per i dispositivi AWS IoT Greengrass V2 principali.

    Esegui questa operazione:

    1. Crea un file che contenga il documento di AWS IoT policy richiesto dai dispositivi core Greengrass.

      Ad esempio, su un sistema basato su Linux, è possibile eseguire il comando seguente per utilizzare GNU nano per creare il file.

      nano greengrass-v2-iot-policy.json

      Copiate il seguente codice JSON nel file.

      • Sostituisci la iot:AssumeRoleWithCertificate risorsa con l'ARN dell'alias del AWS IoT ruolo creato nella sezione precedente.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Publish", "iot:Subscribe", "iot:Receive", "iot:Connect", "greengrass:*" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action": "iot:AssumeRoleWithCertificate", "Resource": "arn:aws:iot:us-west-2:123456789012:rolealias/GreengrassCoreTokenExchangeRoleAlias" } ] }
    2. Crea una AWS IoT politica dal documento di policy.

      • Sostituisci GreengrassV2IoT ThingPolicy con il nome della politica da creare.

      aws iot create-policy --policy-name GreengrassV2IoTThingPolicy --policy-document file://greengrass-v2-iot-policy.json

      La risposta è simile all'esempio seguente, se la richiesta ha esito positivo.

      { "policyName": "GreengrassV2IoTThingPolicy", "policyArn": "arn:aws:iot:us-west-2:123456789012:policy/GreengrassV2IoTThingPolicy", "policyDocument": "{ \"Version\": \"2012-10-17\", \"Statement\": [ { \"Effect\": \"Allow\", \"Action\": [ \"iot:Publish\", \"iot:Subscribe\", \"iot:Receive\", \"iot:Connect\", \"greengrass:*\" ], \"Resource\": [ \"*\" ] }, { \"Effect\": \"Allow\", \"Action\": \"iot:AssumeRoleWithCertificate\", \"Resource\": \"arn:aws:iot:us-west-2:123456789012:rolealias/GreengrassCoreTokenExchangeRoleAlias\" } ] }", "policyVersionId": "1" }

Crea un modello di approvvigionamento del parco veicoli

AWS IoTi modelli di provisioning della flotta definiscono come fornire AWS IoT oggetti, politiche e certificati. Per effettuare il provisioning dei dispositivi core Greengrass con il plug-in fleet provisioning, è necessario creare un modello che specifichi quanto segue:

  • Una cosa, una risorsaAWS IoT. È possibile specificare un elenco di gruppi di oggetti esistenti per distribuire i componenti su ciascun dispositivo quando è online.

  • Una risorsa AWS IoT politica. Questa risorsa può definire una delle seguenti proprietà:

    • Il nome di una AWS IoT politica esistente. Se scegli questa opzione, i dispositivi principali che crei con questo modello utilizzano la stessa AWS IoT politica e puoi gestirne le autorizzazioni come flotta.

    • Un documento AWS IoT di policy. Se scegli questa opzione, ogni dispositivo principale creato a partire da questo modello utilizza una AWS IoT policy unica e puoi gestire le autorizzazioni per ogni singolo dispositivo principale.

  • Una risorsa AWS IoT certificata. Questa risorsa di certificato deve utilizzare il AWS::IoT::Certificate::Id parametro per allegare il certificato al dispositivo principale. Per ulteriori informazioni, consulta J ust-in-time provisioning nella AWS IoTDeveloper Guide.

Nel modello, è possibile specificare di aggiungere l'AWS IoToggetto a un elenco di gruppi di oggetti esistenti. Quando il dispositivo principale si connette AWS IoT Greengrass per la prima volta, riceve le distribuzioni Greengrass per ogni gruppo di cose di cui è membro. Puoi utilizzare i gruppi di oggetti per distribuire il software più recente su ciascun dispositivo non appena è online. Per ulteriori informazioni, consulta Implementazione AWS IoT Greengrass dei componenti sui dispositivi.

Il AWS IoT servizio richiede le autorizzazioni per creare e aggiornare AWS IoT le risorse nei dispositivi Account AWS durante il provisioning. Per consentire l'accesso al AWS IoT servizio, crei un ruolo IAM e lo fornisci quando crei il modello. AWS IoTfornisce una policy gestita che consente l'accesso a tutte le autorizzazioni che AWS IoT potrebbero essere utilizzate per il provisioning dei dispositivi. AWSIoTThingsRegistration È possibile utilizzare questa policy gestita o creare una policy personalizzata che definisca le autorizzazioni nella policy gestita in base al proprio caso d'uso.

In questa sezione, crei un ruolo IAM che consente di AWS IoT effettuare il provisioning di risorse per i dispositivi e crei un modello di provisioning della flotta che utilizza quel ruolo IAM.

Per creare un modello di provisioning della flotta
  1. Crea un ruolo IAM che AWS IoT possa pretendere di fornire risorse nel tuoAccount AWS. Esegui questa operazione:

    1. Crea un file che contenga il documento sulla politica di fiducia che AWS IoT consente di assumere il ruolo.

      Ad esempio, su un sistema basato su Linux, è possibile eseguire il seguente comando per utilizzare GNU nano per creare il file.

      nano aws-iot-trust-policy.json

      Copiate il seguente codice JSON nel file.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "iot.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
    2. Crea un ruolo IAM con il documento sulla politica di fiducia.

      • Sostituiscilo GreengrassFleetProvisioningRolecon il nome del ruolo IAM da creare.

      aws iam create-role --role-name GreengrassFleetProvisioningRole --assume-role-policy-document file://aws-iot-trust-policy.json

      La risposta è simile all'esempio seguente, se la richiesta ha esito positivo.

      { "Role": { "Path": "/", "RoleName": "GreengrassFleetProvisioningRole", "RoleId": "AROAZ2YMUHYHK5OKM77FB", "Arn": "arn:aws:iam::123456789012:role/GreengrassFleetProvisioningRole", "CreateDate": "2021-07-26T00:15:12+00:00", "AssumeRolePolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "iot.amazonaws.com" }, "Action": "sts:AssumeRole" } ] } } }
    3. Esamina la AWSIoTThingsRegistrationpolitica, che consente l'accesso a tutte le autorizzazioni che AWS IoT potrebbero essere utilizzate per il provisioning dei dispositivi. Puoi utilizzare questa policy gestita o creare una policy personalizzata che definisca autorizzazioni limitate per il tuo caso d'uso. Se scegli di creare una politica personalizzata, fallo ora.

    4. Allega la policy IAM al ruolo di provisioning della flotta.

      • Sostituisci GreengrassFleetProvisioningRole con il nome del ruolo IAM.

      • Se hai creato una policy personalizzata nel passaggio precedente, sostituisci l'ARN della policy con l'ARN della policy IAM da utilizzare.

      aws iam attach-role-policy --role-name GreengrassFleetProvisioningRole --policy-arn arn:aws:iam::aws:policy/service-role/AWSIoTThingsRegistration

      Il comando non ha alcun output se la richiesta ha esito positivo.

  2. (Facoltativo) Crea un hook di pre-provisioning, che è una AWS Lambda funzione che convalida i parametri del modello forniti dai dispositivi durante la registrazione. Puoi utilizzare un hook di pre-provisioning per avere un maggiore controllo su quali e quanti dispositivi sono integrati nel tuo dispositivo. Account AWS Per ulteriori informazioni, consulta gli hook di pre-provisioning nella Developer Guide. AWS IoT Core

  3. Crea un modello di provisioning del parco veicoli. Esegui questa operazione:

    1. Crea un file per contenere il documento del modello di approvvigionamento.

      Ad esempio, su un sistema basato su Linux, è possibile eseguire il comando seguente per utilizzare GNU nano per creare il file.

      nano greengrass-fleet-provisioning-template.json

      Scrivete il documento modello di provisioning. È possibile iniziare dal seguente esempio di modello di provisioning, che specifica di creare un AWS IoT oggetto con le seguenti proprietà:

      • Il nome dell'oggetto è il valore specificato nel parametro ThingName template.

      • L'oggetto è un membro del gruppo di oggetti specificato nel parametro ThingGroupName template. Il gruppo di cose deve esistere nel tuoAccount AWS.

      • Al certificato dell'oggetto è GreengrassV2IoTThingPolicy allegata la AWS IoT politica denominata.

      Per ulteriori informazioni, consulta Provisioning templates nella AWS IoT CoreDeveloper Guide.

      { "Parameters": { "ThingName": { "Type": "String" }, "ThingGroupName": { "Type": "String" }, "AWS::IoT::Certificate::Id": { "Type": "String" } }, "Resources": { "MyThing": { "OverrideSettings": { "AttributePayload": "REPLACE", "ThingGroups": "REPLACE", "ThingTypeName": "REPLACE" }, "Properties": { "AttributePayload": {}, "ThingGroups": [ { "Ref": "ThingGroupName" } ], "ThingName": { "Ref": "ThingName" } }, "Type": "AWS::IoT::Thing" }, "MyPolicy": { "Properties": { "PolicyName": "GreengrassV2IoTThingPolicy" }, "Type": "AWS::IoT::Policy" }, "MyCertificate": { "Properties": { "CertificateId": { "Ref": "AWS::IoT::Certificate::Id" }, "Status": "Active" }, "Type": "AWS::IoT::Certificate" } } }
      Nota

      MyThingMyPolicy, e MyCertificatesono nomi arbitrari che identificano ogni specifica di risorsa nel modello di provisioning del parco veicoli. AWS IoTnon utilizza questi nomi nelle risorse che crea dal modello. È possibile utilizzare questi nomi o sostituirli con valori che consentano di identificare ogni risorsa nel modello.

    2. Crea il modello di approvvigionamento del parco veicoli dal documento relativo al modello di approvvigionamento.

      • Sostituiscilo GreengrassFleetProvisioningTemplatecon il nome del modello da creare.

      • Sostituisci la descrizione del modello con una descrizione del modello.

      • Sostituisci l'ARN del ruolo di provisioning con l'ARN del ruolo creato in precedenza.

      Linux or Unix
      aws iot create-provisioning-template \ --template-name GreengrassFleetProvisioningTemplate \ --description "A provisioning template for Greengrass core devices." \ --provisioning-role-arn "arn:aws:iam::123456789012:role/GreengrassFleetProvisioningRole" \ --template-body file://greengrass-fleet-provisioning-template.json \ --enabled
      Windows Command Prompt (CMD)
      aws iot create-provisioning-template ^ --template-name GreengrassFleetProvisioningTemplate ^ --description "A provisioning template for Greengrass core devices." ^ --provisioning-role-arn "arn:aws:iam::123456789012:role/GreengrassFleetProvisioningRole" ^ --template-body file://greengrass-fleet-provisioning-template.json ^ --enabled
      PowerShell
      aws iot create-provisioning-template ` --template-name GreengrassFleetProvisioningTemplate ` --description "A provisioning template for Greengrass core devices." ` --provisioning-role-arn "arn:aws:iam::123456789012:role/GreengrassFleetProvisioningRole" ` --template-body file://greengrass-fleet-provisioning-template.json ` --enabled
      Nota

      Se hai creato un hook di pre-provisioning, specifica l'ARN della funzione Lambda dell'hook di pre-provisioning con l'argomento. --pre-provisioning-hook

      --pre-provisioning-hook targetArn=arn:aws:lambda:us-west-2:123456789012:function:GreengrassPreProvisioningHook

      La risposta è simile all'esempio seguente, se la richiesta ha esito positivo.

      { "templateArn": "arn:aws:iot:us-west-2:123456789012:provisioningtemplate/GreengrassFleetProvisioningTemplate", "templateName": "GreengrassFleetProvisioningTemplate", "defaultVersionId": 1 }

Crea un certificato di richiesta di approvvigionamento e una chiave privata

I certificati di attestazione sono certificati X.509 che consentono ai dispositivi di registrarsi come AWS IoT oggetti e di recuperare un certificato di dispositivo X.509 univoco da utilizzare per le normali operazioni. Dopo aver creato un certificato di attestazione, alleghi una AWS IoT politica che consente ai dispositivi di utilizzarlo per creare certificati di dispositivo unici e fornire un modello di provisioning del parco veicoli. I dispositivi con il certificato di richiesta possono effettuare il provisioning utilizzando solo il modello di provisioning consentito nella AWS IoT politica.

In questa sezione, crei il certificato di richiesta e lo configuri per i dispositivi da utilizzare con il modello di provisioning del parco veicoli creato nella sezione precedente.

Importante

Il provisioning dichiara che le chiavi private devono essere protette in ogni momento, anche sui dispositivi core Greengrass. Ti consigliamo di utilizzare i CloudWatch parametri e i log di Amazon per monitorare eventuali indicazioni di uso improprio, come l'uso non autorizzato del certificato di attestazione per il provisioning dei dispositivi. Se rilevi un uso improprio, disattiva il certificato di richiesta di approvvigionamento in modo che non possa essere utilizzato per il provisioning dei dispositivi. Per ulteriori informazioni, consulta Monitoring AWS IoT nella Developer Guide. AWS IoT Core

Per aiutarti a gestire meglio il numero di dispositivi e i dispositivi che si registrano automaticamente nel tuo sistemaAccount AWS, puoi specificare un hook di pre-provisioning quando crei un modello di provisioning del parco veicoli. Un hook di pre-provisioning è una AWS Lambda funzione che convalida i parametri del modello forniti dai dispositivi durante la registrazione. Ad esempio, è possibile creare un hook di pre-provisioning che controlli l'ID di un dispositivo confrontandolo con un database per verificare che il dispositivo disponga dell'autorizzazione al provisioning. Per ulteriori informazioni, consulta Pre-provisioning hook nella Developer Guide. AWS IoT Core

Per creare un certificato di richiesta di approvvigionamento e una chiave privata
  1. Crea una cartella in cui scaricare il certificato di richiesta e la chiave privata.

    mkdir claim-certs
  2. Crea e salva un certificato e una chiave privata da utilizzare per il provisioning. AWS IoTfornisce certificati client firmati dall'autorità di certificazione Amazon Root (CA).

    Linux or Unix
    aws iot create-keys-and-certificate \ --certificate-pem-outfile "claim-certs/claim.pem.crt" \ --public-key-outfile "claim-certs/claim.public.pem.key" \ --private-key-outfile "claim-certs/claim.private.pem.key" \ --set-as-active
    Windows Command Prompt (CMD)
    aws iot create-keys-and-certificate ^ --certificate-pem-outfile "claim-certs/claim.pem.crt" ^ --public-key-outfile "claim-certs/claim.public.pem.key" ^ --private-key-outfile "claim-certs/claim.private.pem.key" ^ --set-as-active
    PowerShell
    aws iot create-keys-and-certificate ` --certificate-pem-outfile "claim-certs/claim.pem.crt" ` --public-key-outfile "claim-certs/claim.public.pem.key" ` --private-key-outfile "claim-certs/claim.private.pem.key" ` --set-as-active

    La risposta contiene informazioni sul certificato, se la richiesta ha esito positivo. Salva l'ARN del certificato per utilizzarlo in seguito.

  3. Crea e allega una AWS IoT policy che consenta ai dispositivi di utilizzare il certificato per creare certificati univoci per i dispositivi ed esegui il provisioning con il modello di provisioning del parco veicoli. La seguente policy consente l'accesso all'API MQTT per il provisioning dei dispositivi. Per ulteriori informazioni, consulta Device Provisioning MQTT API nella Device Provisioning nella Developer Guide. AWS IoT Core

    Esegui questa operazione:

    1. Crea un file che contenga il documento di AWS IoT policy richiesto dai dispositivi core Greengrass.

      Ad esempio, su un sistema basato su Linux, è possibile eseguire il comando seguente per utilizzare GNU nano per creare il file.

      nano greengrass-provisioning-claim-iot-policy.json

      Copiate il seguente codice JSON nel file.

      • Sostituisci ogni istanza della regione con quella Regione AWS in cui hai impostato il provisioning della flotta.

      • Sostituisci ogni istanza di account-id con il tuo ID. Account AWS

      • Sostituisci ogni istanza di GreengrassFleetProvisioningTemplatecon il nome del modello di approvvigionamento della flotta creato nella sezione precedente.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iot:Connect", "Resource": "*" }, { "Effect": "Allow", "Action": [ "iot:Publish", "iot:Receive" ], "Resource": [ "arn:aws:iot:region:account-id:topic/$aws/certificates/create/*", "arn:aws:iot:region:account-id:topic/$aws/provisioning-templates/GreengrassFleetProvisioningTemplate/provision/*" ] }, { "Effect": "Allow", "Action": "iot:Subscribe", "Resource": [ "arn:aws:iot:region:account-id:topicfilter/$aws/certificates/create/*", "arn:aws:iot:region:account-id:topicfilter/$aws/provisioning-templates/GreengrassFleetProvisioningTemplate/provision/*" ] } ] }
    2. Crea una AWS IoT politica dal documento di policy.

      • Sostituisci GreengrassProvisioningClaimPolicycon il nome della politica da creare.

      aws iot create-policy --policy-name GreengrassProvisioningClaimPolicy --policy-document file://greengrass-provisioning-claim-iot-policy.json

      La risposta è simile all'esempio seguente, se la richiesta ha esito positivo.

      { "policyName": "GreengrassProvisioningClaimPolicy", "policyArn": "arn:aws:iot:us-west-2:123456789012:policy/GreengrassProvisioningClaimPolicy", "policyDocument": "{ \"Version\": \"2012-10-17\", \"Statement\": [ { \"Effect\": \"Allow\", \"Action\": \"iot:Connect\", \"Resource\": \"*\" }, { \"Effect\": \"Allow\", \"Action\": [ \"iot:Publish\", \"iot:Receive\" ], \"Resource\": [ \"arn:aws:iot:region:account-id:topic/$aws/certificates/create/*\", \"arn:aws:iot:region:account-id:topic/$aws/provisioning-templates/GreengrassFleetProvisioningTemplate/provision/*\" ] }, { \"Effect\": \"Allow\", \"Action\": \"iot:Subscribe\", \"Resource\": [ \"arn:aws:iot:region:account-id:topicfilter/$aws/certificates/create/*\", \"arn:aws:iot:region:account-id:topicfilter/$aws/provisioning-templates/GreengrassFleetProvisioningTemplate/provision/*\" ] } ] }", "policyVersionId": "1" }
  4. Allega la AWS IoT politica al certificato di richiesta di approvvigionamento.

    • Sostituiscila GreengrassProvisioningClaimPolicycon il nome della politica da allegare.

    • Sostituisci l'ARN di destinazione con l'ARN del certificato di richiesta di approvvigionamento.

    aws iot attach-policy --policy-name GreengrassProvisioningClaimPolicy --target arn:aws:iot:us-west-2:123456789012:cert/aa0b7958770878eabe251d8a7ddd547f4889c524c9b574ab9fbf65f32248b1d4

    Il comando non produce alcun output se la richiesta ha esito positivo.

Ora disponi di un certificato di richiesta di provisioning e di una chiave privata che i dispositivi possono utilizzare per registrarsi AWS IoT e rifornirsi come dispositivi core Greengrass. È possibile incorporare il certificato di richiesta e la chiave privata nei dispositivi durante la produzione oppure copiare il certificato e la chiave sui dispositivi prima di installare il AWS IoT Greengrass software Core. Per ulteriori informazioni, consulta Installa il software AWS IoT Greengrass Core con il provisioning AWS IoT della flotta.