Autorizzazione di utenti e servizi cloud all'utilizzo di AWS IoT Jobs - AWS IoT Core

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

Autorizzazione di utenti e servizi cloud all'utilizzo di AWS IoT Jobs

Per autorizzare gli utenti e i servizi cloud, è necessario utilizzare IAM le policy sia sul piano di controllo che sul piano dati. Le politiche devono essere utilizzate con il HTTPS protocollo e devono utilizzare l'autenticazione AWS Signature Version 4 (porta 443) per autenticare gli utenti.

Nota

AWS IoT Core le politiche non devono essere utilizzate sul piano di controllo. Per autorizzare gli utenti o i servizi cloud vengono utilizzate solo le IAM politiche. Per ulteriori informazioni sull'uso del tipo di policy richiesta, consulta Tipo di policy richiesto per Jobs AWS IoT.

IAMle politiche sono JSON documenti che contengono dichiarazioni politiche. Le istruzioni delle policy usano gli elementi Effect (Effetto), Action (Operazione) e Resource (Risorsa) per specificare risorse, operazioni consentite o rifiutate e le condizioni in base alle quali le operazioni sono consentite o rifiutate. Per ulteriori informazioni, vedere IAMJSONPolicy Elements Reference nella Guida IAM per l'utente.

avvertimento

Ti consigliamo di non utilizzare autorizzazioni con caratteri jolly, ad esempio "Action": ["iot:*"] nelle tue IAM politiche o AWS IoT Core politiche. L'utilizzo di autorizzazioni con caratteri jolly non è una best practice consigliata per la sicurezza. Per ulteriori informazioni, consulta la sezione AWS IoT policy eccessivamente permissiva.

IAMpolitiche sul piano di controllo

Sul piano di controllo, IAM le politiche utilizzano il iot: prefisso con l'azione per autorizzare l'operazione di job API corrispondente. Ad esempio, l'azione iot:CreateJob politica concede all'utente il permesso di utilizzare. CreateJobAPI

La tabella seguente mostra un elenco di azioni IAM politiche e autorizzazioni per utilizzare le API azioni. Per informazioni sui tipi di risorse, vedere Tipi di risorse definiti da AWS IoT. Per ulteriori informazioni sulle AWS IoT azioni, vedere Azioni definite da AWS IoT.

IAMazioni politiche sul piano di controllo
Operazione di policy APIoperazione Tipi di risorsa Descrizione
iot:AssociateTargetsWithJob AssociateTargetsWithJob
  • job

  • thing

  • thinggroup

Rappresenta l'autorizzazione per associare un gruppo a un processo continuo. L'autorizzazione iot:AssociateTargetsWithJob viene controllata ogni volta che viene effettuata una richiesta di associare le destinazioni.
iot:CancelJob CancelJob job Rappresenta l'autorizzazione per annullare un processo. L'autorizzazione iot:CancelJob viene controllata ogni volta che viene effettuata una richiesta di annullare un processo.
iot:CancelJobExecution CancelJobExecution
  • job

  • thing

Rappresenta l'autorizzazione per aggiornare l'esecuzione di un processo. L'autorizzazione iot: CancelJobExecution viene controllata ogni volta che viene effettuata una richiesta di annullare l'esecuzione di un processo.
iot:CreateJob CreateJob
  • job

  • thing

  • thinggroup

  • jobtemplate

  • package

Rappresenta l'autorizzazione per creare un processo. L'autorizzazione iot: CreateJob viene controllata ogni volta che viene effettuata una richiesta di creare un processo.
iot:CreateJobTemplate CreateJobTemplate
  • job

  • jobtemplate

  • package

Rappresenta l'autorizzazione per creare un modello di processo. L'autorizzazione iot: CreateJobTemplate viene controllata ogni volta che viene effettuata una richiesta di creare un modello di processo.
iot:DeleteJob DeleteJob job Rappresenta l'autorizzazione per eliminare un processo. L'autorizzazione iot: DeleteJob viene controllata ogni volta che viene effettuata una richiesta di eliminare un processo.
iot:DeleteJobTemplate DeleteJobTemplate jobtemplate Rappresenta l'autorizzazione per eliminare un modello di processo. L'autorizzazione iot: CreateJobTemplate viene controllata ogni volta che viene effettuata una richiesta di eliminare un modello di processo.
iot:DeleteJobExecution DeleteJobTemplate
  • job

  • thing

Rappresenta l'autorizzazione per eliminare l'esecuzione di un processo. L'autorizzazione iot: DeleteJobExecution viene controllata ogni volta che viene effettuata una richiesta di eliminare l'esecuzione di un processo.
iot:DescribeJob DescribeJob job Rappresenta l'autorizzazione per descrivere un processo. L'autorizzazione iot: DescribeJob viene controllata ogni volta che viene effettuata una richiesta di descrivere un processo.
iot:DescribeJobExecution DescribeJobExecution
  • job

  • thing

Rappresenta l'autorizzazione per descrivere l'esecuzione di un processo. L'autorizzazione iot: DescribeJobExecution viene controllata ogni volta che viene effettuata una richiesta di descrivere l'esecuzione di un processo.
iot:DescribeJobTemplate DescribeJobTemplate jobtemplate Rappresenta l'autorizzazione per descrivere un modello di processo. L'autorizzazione iot: DescribeJobTemplate viene controllata ogni volta che viene effettuata una richiesta di descrivere un modello di processo.
iot:DescribeManagedJobTemplate DescribeManagedJobTemplate jobtemplate Rappresenta l'autorizzazione per descrivere un modello di processo gestito. L'autorizzazione iot: DescribeManagedJobTemplate viene controllata ogni volta che viene effettuata una richiesta di descrivere un modello di processo gestito.
iot:GetJobDocument GetJobDocument job Rappresenta l'autorizzazione per ottenere il documento di un processo. L'autorizzazione iot:GetJobDocument viene controllata ogni volta che viene effettuata una richiesta di ottenere un documento di processo.
iot:ListJobExecutionsForJob ListJobExecutionsForJob job Rappresenta l'autorizzazione per elencare le esecuzioni per un processo. L'autorizzazione iot:ListJobExecutionsForJob viene controllata ogni volta che viene effettuata una richiesta di elencare le esecuzioni di un processo.
iot:ListJobExecutionsForThing ListJobExecutionsForThing thing Rappresenta l'autorizzazione per elencare le esecuzioni per un processo. L'autorizzazione iot:ListJobExecutionsForThing viene controllata ogni volta che viene effettuata una richiesta di elencare le esecuzioni di processo per un oggetto.
iot:ListJobs ListJobs nessuno Rappresenta l'autorizzazione per elencare i processi. L'autorizzazione iot:ListJobs viene controllata ogni volta che viene effettuata una richiesta di elencare i processi.
iot:ListJobTemplates ListJobTemplates nessuno Rappresenta l'autorizzazione per elencare i modelli di processo. L'autorizzazione iot:ListJobTemplates viene controllata ogni volta che viene effettuata una richiesta di elencare i modelli di processo.
iot:ListManagedJobTemplates ListManagedJobTemplates nessuno Rappresenta l'autorizzazione per elencare i modelli di processo gestiti. L'autorizzazione iot:ListManagedJobTemplates viene controllata ogni volta che viene effettuata una richiesta di elencare i modelli di processo gestiti.
iot:UpdateJob UpdateJob job Rappresenta l'autorizzazione per aggiornare un processo. L'autorizzazione iot:UpdateJob viene controllata ogni volta che viene effettuata una richiesta di aggiornare un processo.
iot:TagResource TagResource
  • job

  • jobtemplate

  • thing

Concede l'autorizzazione per taggare una risorsa specifica.
iot:UntagResource UntagResource
  • job

  • jobtemplate

  • thing

Concede l'autorizzazione per rimuovere i tag da una risorsa specifica.

L'esempio seguente mostra una IAM policy che consente l'autorizzazione dell'utente a eseguire le seguenti azioni per l'oggetto e il gruppo di oggetti IoT.

Nell'esempio, sostituisci:

  • region con il tuo Regione AWS, ad esempious-east-1.

  • account-id con il tuo Account AWS numero, ad esempio57EXAMPLE833.

  • thing-group-name con il nome del gruppo di oggetti IoT a cui stai indirizzando i lavori, ad esempioFirmwareUpdateGroup.

  • thing-name con il nome dell'oggetto IoT a cui stai indirizzando lavori, ad esempioMyIoTThing.

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "iot:CreateJobTemplate", "iot:CreateJob", ], "Effect": "Allow", "Resource": "arn:aws:iot:region:account-id:thinggroup/thing-group-name" }, { "Action": [ "iot:DescribeJob", "iot:CancelJob", "iot:DeleteJob", ], "Effect": "Allow", "Resource": "arn:aws:iot:region:account-id:job/*" }, { "Action": [ "iot:DescribeJobExecution", "iot:CancelJobExecution", "iot:DeleteJobExecution", ], "Effect": "Allow", "Resource": [ "arn:aws:iot:region:account-id:thing/thing-name" "arn:aws:iot:region:account-id:job/*" ] } ] }

È possibile impedire ai responsabili di effettuare API chiamate verso l'endpoint del piano di controllo da indirizzi IP specifici. Per specificare gli indirizzi IP che possono essere consentiti, nell'elemento Condizione della IAM politica, utilizza la chiave di condizione aws:SourceIpglobale.

L'utilizzo di questa chiave condizionale può anche impedire ad altri Servizio AWS utenti di effettuare queste API chiamate per conto dell'utente, ad esempio AWS CloudFormation. Per consentire l'accesso a questi servizi, usa la chiave aws:ViaAWSServiceglobal condition con la SourceIp chiave aws:. In questo modo garantisci che la restrizione di accesso all'indirizzo IP di origine si applichi solo alle richieste effettuate direttamente da un principale. Per maggiori informazioni, vedi AWS: Nega l'accesso a in AWS base all'IP di origine.

L'esempio seguente mostra come consentire solo un indirizzo IP specifico in grado di effettuare API chiamate all'endpoint del piano di controllo. La aws:ViaAWSService chiave è impostata sutrue, il che consente ad altri servizi di effettuare API chiamate per conto dell'utente.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:CreateJobTemplate", "iot:CreateJob" ], "Resource": ["*"], "Condition": { "IpAddress": { "aws:SourceIp": "123.45.167.89" } }, "Bool": {"aws:ViaAWSService": "true"} } ], }

IAMpolitiche sul piano dati

IAMle politiche sul piano dati utilizzano il iotjobsdata: prefisso per autorizzare API le operazioni di lavoro che gli utenti possono eseguire. Sul piano dati, è possibile concedere a un utente l'autorizzazione a utilizzare il DescribeJobExecutionAPIutilizzando l'azione iotjobsdata:DescribeJobExecution politica.

avvertimento

L'utilizzo IAM di policy sul piano dati non è consigliato quando si sceglie AWS IoT come target Jobs per i propri dispositivi. Si consiglia di utilizzare IAM le policy sul piano di controllo per consentire agli utenti di creare e gestire i lavori. Per autorizzare i dispositivi a recuperare le esecuzioni dei processi e aggiornare lo stato di esecuzione, utilizza AWS IoT Core politiche per il protocollo HTTPS sul piano dati.

Le API operazioni che devono essere autorizzate vengono in genere eseguite digitando CLI i comandi. Di seguito viene riportato l'esempio di un utente che esegue un'operazione DescribeJobExecution.

Nell'esempio, sostituisci:

  • region con il tuo Regione AWS, ad esempious-east-1.

  • account-id con il tuo Account AWS numero, ad esempio57EXAMPLE833.

  • thing-name con il nome dell'oggetto IoT a cui stai indirizzando lavori, ad esempiomyRegisteredThing.

  • job-idè l'identificatore univoco del lavoro a cui è destinato l'utilizzo di. API

aws iot-jobs-data describe-job-execution \ --endpoint-url "https://account-id.jobs.iot.region.amazonaws.com" \ --job-id jobID --thing-name thing-name

Di seguito viene illustrato un esempio di IAM politica che autorizza questa azione:

{ "Version": "2012-10-17", "Statement": { "Action": ["iotjobsdata:DescribeJobExecution"], "Effect": "Allow", "Resource": "arn:aws:iot:region:account-id:thing/thing-name", } }

È possibile impedire ai principali destinatari di effettuare API chiamate verso l'endpoint del piano dati da indirizzi IP specifici. Per specificare gli indirizzi IP che possono essere consentiti, nell'elemento Condition della IAM policy, utilizza la chiave aws:SourceIpglobal condition.

L'utilizzo di questa chiave condizionale può anche impedire ad altri Servizio AWS utenti di effettuare queste API chiamate per conto dell'utente, ad esempio AWS CloudFormation. Per consentire l'accesso a questi servizi, utilizza la chiave di condizione globale aws:ViaAWSService con la chiave di condizione aws:SourceIp. In questo modo garantisci che la restrizione di accesso all'indirizzo IP di origine si applichi solo alle richieste effettuate direttamente dal principale. Per ulteriori informazioni, vedere AWS: Nega l'accesso a in AWS base all'IP di origine.

L'esempio seguente mostra come consentire solo un indirizzo IP specifico in grado di effettuare API chiamate all'endpoint del piano dati.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["iotjobsdata:*"], "Resource": ["*"], "Condition": { "IpAddress": { "aws:SourceIp": "123.45.167.89" } }, "Bool": {"aws:ViaAWSService": "false"} } ], }

L'esempio seguente mostra come limitare l'effettuazione di API chiamate all'endpoint del piano dati da parte di indirizzi IP o intervalli di indirizzi specifici.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": ["iotjobsdata:*"], "Condition": { "IpAddress": { "aws:SourceIp": [ "123.45.167.89", "192.0.2.0/24", "203.0.113.0/24" ] } }, "Resource": ["*"], } ], }

Se si esegue un'APIoperazione sia sul piano di controllo che sul piano dati, l'azione politica del piano di controllo deve utilizzare il iot: prefisso e l'azione politica del piano dati deve utilizzare il iotjobsdata: prefisso.

Ad esempio, DescribeJobExecution API può essere utilizzato sia nel piano di controllo che nel piano dati. Sul piano di controllo, DescribeJobExecutionAPIviene utilizzato per descrivere l'esecuzione di un lavoro. Sul piano dati, DescribeJobExecutionAPIviene utilizzato per ottenere dettagli sull'esecuzione di un lavoro.

La seguente IAM politica autorizza l'autorizzazione dell'utente a utilizzare il sia DescribeJobExecution API sul piano di controllo che sul piano dati.

Nell'esempio, sostituisci:

  • region con il tuo Regione AWS, ad esempious-east-1.

  • account-id con il tuo Account AWS numero, ad esempio57EXAMPLE833.

  • thing-name con il nome dell'oggetto IoT a cui stai indirizzando lavori, ad esempioMyIoTThing.

{ "Version": "2012-10-17", "Statement": [ { "Action": ["iotjobsdata:DescribeJobExecution"], "Effect": "Allow", "Resource": "arn:aws:iot:region:account-id:thing/thing-name" }, { "Action": [ "iot:DescribeJobExecution", "iot:CancelJobExecution", "iot:DeleteJobExecution", ], "Effect": "Allow", "Resource": [ "arn:aws:iot:region:account-id:thing/thing-name" "arn:aws:iot:region:account-id:job/*" ] } ] }

Autorizzazione dell'assegnazione di tag delle risorse IoT

Per un migliore controllo sui processi e sui modelli di processo che puoi creare, modificare o utilizzare, puoi aggiungere i tag ai processi o ai modelli di processo. I tag ti aiutano anche a distinguere la proprietà e ad assegnare e allocare i costi inserendoli nei gruppi di fatturazione e aggiungendo loro i tag.

Quando un utente desidera taggare i propri lavori o i modelli di lavoro che ha creato utilizzando il AWS Management Console o il AWS CLI, la tua IAM politica deve concedere all'utente le autorizzazioni per taggarlo. Per concedere le autorizzazioni, la IAM policy deve utilizzare l'azioneiot:TagResource.

Nota

Se la tua IAM politica non include l'iot:TagResourceazione, qualsiasi azione CreateJobo CreateJobTemplatecon un tag restituirà un AccessDeniedException errore.

Quando desideri taggare le offerte di lavoro o i modelli di lavoro che hai creato utilizzando il AWS Management Console o il AWS CLI, la tua IAM politica deve concedere l'autorizzazione a taggarli. Per concedere le autorizzazioni, la tua IAM politica deve utilizzare l'iot:TagResourceazione.

Per informazioni sull'assegnazione di tag alle risorse, consulta Taggare le tue risorse AWS IoT.

Fate riferimento ai seguenti esempi di IAM policy per la concessione delle autorizzazioni di etichettatura:

Esempio 1

Un utente che esegue il comando seguente per creare un processo e contrassegnarlo a un ambiente specifico.

In questo esempio, sostituisci:

  • region con il tuo Regione AWS, ad esempious-east-1.

  • account-id con il tuo Account AWS numero, ad esempio57EXAMPLE833.

  • thing-name con il nome dell'oggetto IoT a cui stai indirizzando lavori, ad esempioMyIoTThing.

aws iot create-job --job-id test_job --targets "arn:aws:iot:region:account-id:thing/thingOne" --document-source "https://s3.amazonaws.com/amzn-s3-demo-bucket/job-document.json" --description "test job description" --tags Key=environment,Value=beta

Per questo esempio, è necessario utilizzare la seguente IAM politica:

{ "Version": "2012-10-17", "Statement": { "Action": [ "iot:CreateJob", "iot:CreateJobTemplate", "iot:TagResource" ], "Effect": "Allow", "Resource": [ "arn:aws:iot:aws-region:account-id:job/*", "arn:aws:iot:aws-region:account-id:jobtemplate/*" ] } }