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 le policy IAM sia sul piano di controllo che sul piano dati. Le policy devono essere utilizzate con il protocollo HTTPS e devi usare 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. Solo le policy IAM vengono utilizzati per autorizzare gli utenti o i servizi cloud. Per ulteriori informazioni sull'uso del tipo di policy richiesta, consulta Tipo di policy richiesto per Jobs AWS IoT.

Le policy IAM sono documenti JSON che contengono le istruzioni delle policy. 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, consulta Documentazione di riferimento degli elementi delle policy JSON IAM nella Guida per l'utente di IAM.

avvertimento

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

Policy IAM sul piano di controllo

Sul piano di controllo, le policy IAM utilizzano il prefisso iot: con l'operazione per autorizzare l'operazione API dei processi corrispondente. Ad esempio, l'operazione di policy iot:CreateJob concede all'utente l'autorizzazione per utilizzare l'API CreateJob.

Nella tabella seguente viene illustrato un elenco delle operazioni di policy criteri IAM e delle autorizzazioni per utilizzare le operazioni API. 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.

Operazioni di policy IAM sul piano di controllo
Operazione di policy Operazione API 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.

Di seguito viene illustrato un esempio di policy IAM che consente all'utente di eseguire le seguenti operazioni per il gruppo di oggetti e l'oggetto IoT.

Nell'esempio, sostituisci:

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

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

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

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

JSON
{ "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/*" ] } ] }

Puoi limitare a specifici indirizzi IP le origini da cui i principali possono effettuare chiamate API all'endpoint del piano di controllo. Per specificare gli indirizzi IP che sono ammessi, nell'elemento Condition della policy IAM, utilizza la chiave di condizione globale aws:SourceIp.

L'utilizzo di questa chiave condizionale può anche impedire ad altri Servizio AWS utenti di effettuare queste chiamate API per tuo conto, 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 che solo un indirizzo IP specifico sia in grado di effettuare chiamate API all'endpoint del piano di controllo. La chiave aws:ViaAWSService è impostata su true, che consente ad altri servizi di effettuare chiamate API per tuo conto.

JSON
{ "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"} } ], }

Policy IAM sul piano dati

Le policyiotjobsdata: IAM sul piano dati utilizzano il prefisso per autorizzare le operazioni API dei processi che gli utenti possono eseguire. Sul piano dati, puoi concedere a un utente l'autorizzazione per utilizzare l'API DescribeJobExecution utilizzando l'operazione di policy iotjobsdata:DescribeJobExecution.

avvertimento

L'utilizzo di policy IAM sul piano dati non è consigliato quando si usa AWS IoT Jobs come destinazione per i tuoi dispositivi. Ti consigliamo di usare le policy IAM sul piano di controllo per consentire agli utenti di creare e gestire i processi. 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.

Solitamente eseguirai le operazioni API che devono essere autorizzate utilizzando i comandi della CLI. Di seguito viene riportato l'esempio di un utente che esegue un'operazione DescribeJobExecution.

Nell'esempio, sostituisci:

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

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

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

  • job-id è l'identificatore univoco per il processo di destinazione dell'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 illustrata una policy IAM di esempio che autorizza questa operazione:

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

Puoi limitare a specifici indirizzi IP le origini da cui i principali possono effettuare chiamate API all'endpoint del piano dati. Per specificare gli indirizzi IP che sono ammessi, nell'elemento Condition della policy IAM, utilizza la chiave di condizione globale aws:SourceIp.

L'utilizzo di questa chiave condizionale può anche impedire ad altri Servizio AWS utenti di effettuare queste chiamate API per tuo conto, 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 che solo un indirizzo IP specifico sia in grado di effettuare chiamate API all'endpoint del piano dati.

JSON
{ "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 a specifici indirizzi IP o intervalli di indirizzi l'esecuzione di chiamate API all'endpoint del piano dati.

JSON
{ "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 esegui un'operazione API sia sul piano di controllo che sul piano dati, l'operazione della policy del piano di controllo deve utilizzare il prefisso iot: e l'operazione della policy del piano dati deve utilizzare il prefisso iotjobsdata:.

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

La seguente policy IAM autorizza l'utente ad utilizzare l'API DescribeJobExecution sia sul piano di controllo che sul piano dati.

Nell'esempio, sostituisci:

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

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

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

JSON
{ "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 AWS Management Console o il AWS CLI, la tua policy IAM deve concedere all'utente le autorizzazioni per taggarlo. Per concedere le autorizzazioni, la tua policy IAM deve utilizzare l'operazione iot:TagResource.

Nota

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

Quando desideri etichettare i tuoi lavori o i modelli di lavoro che hai creato utilizzando AWS Management Console o il AWS CLI, la tua policy IAM deve concedere l'autorizzazione a taggarli. Per concedere le autorizzazioni, la tua policy IAM deve utilizzare l'operazione iot:TagResource.

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

Fai riferimento ai seguenti esempi di policy IAM che concedono le autorizzazioni di tagging:

Esempio 1

Un utente che esegue il comando seguente per creare un job e taggarlo in un ambiente specifico.

In questo esempio, sostituisci:

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

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

  • thing-namecon 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, devi utilizzare la seguente policy IAM:

JSON
{ "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/*" ] } }