

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

# Sicurezza in AWS IoT
<a name="security"></a>

La sicurezza del cloud AWS è la massima priorità. In qualità di AWS cliente, puoi beneficiare di un data center e di un'architettura di rete progettati per soddisfare i requisiti delle organizzazioni più sensibili alla sicurezza.

La sicurezza è una responsabilità condivisa tra AWS te e te. Il [modello di responsabilità condivisa](https://aws.amazon.com/compliance/shared-responsibility-model/) descrive questo come sicurezza *del* cloud e sicurezza *nel* cloud:
+ **Sicurezza del cloud**: AWS è responsabile della protezione dell'infrastruttura che gestisce AWS i servizi nel AWS cloud. AWS ti fornisce anche servizi che puoi utilizzare in modo sicuro. I revisori di terze parti testano e verificano regolarmente l'efficacia della sicurezza come parte dei [programmi di conformitàAWS](https://aws.amazon.com/compliance/programs/). Per ulteriori informazioni sui programmi di conformità applicabili AWS IoT, consulta [AWS Services in Scope by Compliance Program](https://aws.amazon.com/compliance/services-in-scope/).
+ **Sicurezza nel cloud**: la tua responsabilità è determinata dal AWS servizio che utilizzi. Inoltre, sei responsabile anche di altri fattori, tra cui la riservatezza dei dati, i requisiti dell’azienda e le leggi e le normative applicabili. 

Questa documentazione ti aiuta a capire come applicare il modello di responsabilità condivisa durante l'utilizzo AWS IoT. I seguenti argomenti mostrano come configurare per AWS IoT soddisfare gli obiettivi di sicurezza e conformità. Imparerai anche a utilizzare altri AWS servizi che ti aiutano a monitorare e proteggere AWS IoT le tue risorse. 

**Topics**
+ [AWS IoT sicurezza](iot-security.md)
+ [Autenticazione](authentication.md)
+ [Autorizzazione](iot-authorization.md)
+ [Protezione dei dati in AWS IoT Core](data-protection.md)
+ [Gestione delle identità e degli accessi per AWS IoT](security-iam.md)
+ [Registrazione e monitoraggio](security-logging.md)
+ [Convalida della conformità per Core AWS IoT](compliance.md)
+ [Resilienza in AWS IoT Core](disaster-recovery-resiliency.md)
+ [Utilizzo AWS IoT Core con gli endpoint VPC dell'interfaccia](IoTCore-VPC.md)
+ [Sicurezza dell'infrastruttura in AWS IoT](infrastructure-security.md)
+ [Monitoraggio della sicurezza delle flotte o dei dispositivi di produzione con Core AWS IoT](security-monitoring.md)
+ [Le migliori pratiche di sicurezza in AWS IoT Core](security-best-practices.md)
+ [AWS formazione e certificazione](#iot-security-training)

# AWS IoT sicurezza
<a name="iot-security"></a>

Ogni dispositivo o client connesso deve disporre di una credenziale per interagire con AWS IoT. Tutto il traffico da e verso AWS IoT viene inviato in modo sicuro tramite Transport Layer Security (TLS). AWS i meccanismi di sicurezza cloud proteggono i dati mentre si spostano tra servizi AWS IoT e altri AWS servizi.

![\[AWS IoT flussi di lavoro di sicurezza, tra cui credenziali con cui interagire AWS IoT, Transport Layer Security per proteggere la connessione e meccanismi di sicurezza AWS cloud per proteggere i dati.\]](http://docs.aws.amazon.com/it_it/iot/latest/developerguide/images/thunderball-overview.png)

+ L'utente è responsabile della gestione delle credenziali del dispositivo (certificati X.509, credenziali dei servizi AWS , Amazon Cognito, identità, identità federate o token di autenticazione personalizzati) e delle policy in AWS IoT. L'utente è inoltre responsabile dell'assegnazione di identità univoche a ciascun dispositivo e della gestione delle autorizzazioni per ogni dispositivo o gruppo di dispositivi.
+ I tuoi dispositivi si connettono AWS IoT utilizzando certificati X.509 o identità Amazon Cognito tramite una connessione TLS sicura. Durante la ricerca e lo sviluppo e per alcune applicazioni che effettuano chiamate o utilizzano API WebSockets, puoi anche autenticarti utilizzando utenti e gruppi IAM o token di autenticazione personalizzati. Per ulteriori informazioni, consulta [Utenti, gruppi e ruoli IAM](iam-users-groups-roles.md).
+ Quando si utilizza AWS IoT l'autenticazione, il broker di messaggi è responsabile dell'autenticazione dei dispositivi, dell'acquisizione sicura dei dati dei dispositivi e della concessione o negazione delle autorizzazioni di accesso specificate per i dispositivi utilizzando le policy. AWS IoT 
+ Quando si utilizza l'autenticazione personalizzata, un autorizzatore personalizzato è responsabile dell'autenticazione dei dispositivi e della concessione o negazione delle autorizzazioni di accesso specificate per i dispositivi che utilizzano le nostre politiche IAM. AWS IoT 
+ Il motore AWS IoT delle regole inoltra i dati del dispositivo ad altri dispositivi o altri AWS servizi in base alle regole definite dall'utente. Viene utilizzato AWS Identity and Access Management per trasferire in modo sicuro i dati alla destinazione finale. Per ulteriori informazioni, consulta [Gestione delle identità e degli accessi per AWS IoT](security-iam.md).

# Autenticazione
<a name="authentication"></a>

L'autenticazione è un meccanismo in cui si verifica l'identità di un client o di un server. L'autenticazione del server è il processo in cui i dispositivi o altri client assicurano che stiano comunicando con un endpoint effettivo AWS IoT . L'autenticazione del client è il processo con cui i dispositivi o altri client si autenticano. AWS IoT

## Panoramica sui certificati X.509
<a name="x509-certificate-overview"></a>

I certificati X.509 sono certificati digitali che usano lo [standard di infrastruttura a chiave pubblica X.509](https://en.wikipedia.org/wiki/X.509) per associare una chiave pubblica a un'identità contenuta in un certificato. I certificati X.509 vengono rilasciati da un'entità attendibile denominata autorità di certificazione (CA). L'autorità di certificazione mantiene uno o più certificati speciali chiamati certificati CA, che usa per rilasciare certificati X.509. Solo l'autorità di certificazione ha accesso a certificati CA. Le catene di certificati X.509 vengono utilizzate sia per l'autenticazione server da parte dei client sia per l'autenticazione client da parte del server.

# Autenticazione del server
<a name="server-authentication"></a>

Quando il dispositivo o un altro client tenta di connettersi AWS IoT Core, il AWS IoT Core server invierà un certificato X.509 utilizzato dal dispositivo per autenticare il server. L'autenticazione avviene a livello TLS tramite la convalida della [Catena di certificati X.509](x509-client-certs.md). Si tratta dello stesso metodo utilizzato dal browser quando si visita un URL HTTPS. Per utilizzare certificati della tua certification authority, consulta [Gestire i certificati CA personali](manage-your-CA-certs.md).

Quando i tuoi dispositivi o altri client stabiliscono una connessione TLS a un AWS IoT Core endpoint, AWS IoT Core presenta una catena di certificati che i dispositivi utilizzano per verificare che stiano comunicando e non che un altro server si spacci per impersonare. AWS IoT Core AWS IoT Core La catena presentata dipende da una combinazione del tipo di endpoint a cui il dispositivo si connette e dalla [suite di crittografia negoziata dal client durante l'handshake](transport-security.md) TLS. AWS IoT Core 

## Tipi di endpoint
<a name="endpoint-types"></a>

AWS IoT Core supporti. `iot:Data-ATS` `iot:Data-ATS`gli endpoint presentano un certificato server firmato da una CA di [Amazon Trust Services](https://www.amazontrust.com/repository/).

I certificati presentati dagli endpoint ATS hanno la firma incrociata di Starfield. Alcune implementazioni client TLS richiedono la convalida root trust e richiedono che i certificati CA Starfield siano installati negli archivi attendibili del client.

**avvertimento**  
Non è consigliabile utilizzare un metodo di aggiunta dei certificati che esegue l'hash dell'intero certificato (incluso il nome dell'emittente e così via) perché ciò causerà un errore di verifica del certificato e i certificati ATS forniti hanno la firma incrociata di Starfield e un nome di emittente diverso.

**Importante**  
Usa gli `iot:Data-ATS` endpoint. I certificati Symantec e Verisign sono obsoleti e non sono più supportati da. AWS IoT Core

Puoi utilizzare il comando `describe-endpoint` per creare l'endpoint ATS.

```
aws iot describe-endpoint --endpoint-type iot:Data-ATS
```

Il comando `describe-endpoint` restituisce un endpoint nel formato seguente.

```
account-specific-prefix.iot.your-region.amazonaws.com
```

**Nota**  
La prima volta che viene chiamato `describe-endpoint`, viene creato un endpoint. Tutte le chiamate successive a `describe-endpoint` restituiscono lo stesso endpoint.

**Nota**  
**Per visualizzare il tuo `iot:Data-ATS` endpoint nella console, scegli Impostazioni. AWS IoT Core ** La console visualizza solo l'endpoint `iot:Data-ATS`.

### Creazione di un file `IotDataPlaneClient` con l' AWS SDK for Java
<a name="java-client"></a>

Per creare un dispositivo `IotDataPlaneClient` che utilizza un `iot:Data-ATS` endpoint, devi fare quanto segue. 
+ Crea un `iot:Data-ATS` endpoint utilizzando l'[DescribeEndpoint](https://docs.aws.amazon.com/iot/latest/apireference/API_DescribeEndpoint.html)API.
+ Specifica l'endpoint quando crei il `IotDataPlaneClient`.

Nell'esempio seguente vengono eseguite entrambe queste operazioni.

```
public void setup() throws Exception {
        IotClient client = IotClient.builder().credentialsProvider(CREDENTIALS_PROVIDER_CHAIN).region(Region.US_EAST_1).build();
        String endpoint = client.describeEndpoint(r -> r.endpointType("iot:Data-ATS")).endpointAddress();
        iot = IotDataPlaneClient.builder()
                                .credentialsProvider(CREDENTIALS_PROVIDER_CHAIN)
                                .endpointOverride(URI.create("https://" + endpoint))
                                .region(Region.US_EAST_1)
                                .build();
}
```

## Certificati CA per l'autenticazione del server
<a name="server-authentication-certs"></a>

A seconda del tipo di endpoint di dati in uso e della suite di crittografia negoziata, i certificati di autenticazione AWS IoT Core del server sono firmati da uno dei seguenti certificati CA root:

**Amazon Trust Services Endpoint (preferito)**

**Nota**  
Potrebbe essere necessario fare clic con il pulsante destro del mouse su questi collegamenti e selezionare **Salva collegamento come...** per salvare questi certificati come file.
+ Chiave RSA a 2048 bit: [https://www.amazontrust.com/repository/AmazonRootCA1.pem](https://www.amazontrust.com/repository/AmazonRootCA1.pem).
+ Chiave RSA a 4096 bit: Amazon Root CA 2. Riservato per uso futuro.
+ Chiave ECC a 256 bit: [https://www.amazontrust.com/repository/AmazonRootCA3.pem](https://www.amazontrust.com/repository/AmazonRootCA3.pem).
+ Chiave ECC a 384 bit: Amazon Root CA 4. Riservato per uso futuro.

Questi certificati hanno tutti la firma incrociata di [ Starfield Root CA Certificate](https://www.amazontrust.com/repository/SFSRootCAG2.pem). Tutte le nuove AWS IoT Core regioni, a partire dal lancio del 9 maggio 2018 AWS IoT Core nella regione Asia Pacifico (Mumbai), offrono solo certificati ATS.

**VeriSign Endpoint (legacy)**
+ Chiave RSA a 2048 bit: certificato CA [principale G5 pubblico primario di VeriSign classe 3](https://www.digicert.com/kb/digicert-root-certificates.htm)

## Linee guida per l'autenticazione del server
<a name="server-authentication-guidelines"></a>

Esistono molte variabili che possono influire sulla capacità di un dispositivo di convalidare il certificato di autenticazione del server AWS IoT Core . Ad esempio, i dispositivi potrebbero avere una quantità eccessiva di memoria per contenere tutti i possibili certificati CA radice oppure i dispositivi possono implementare un metodo non standard di convalida del certificato. Per questi motivi suggeriamo di seguire queste linee guida:
+ Ti consigliamo di utilizzare il tuo endpoint ATS e di installare tutti i certificati Amazon Root CA supportati.
+ Se non riesci ad archiviare tutti questi certificati sul tuo dispositivo e se i tuoi dispositivi non utilizzano la convalida basata su ECC, puoi omettere i certificati ECC [https://www.amazontrust.com/repository/AmazonRootCA3.pem](https://www.amazontrust.com/repository/AmazonRootCA3.pem) e [https://www.amazontrust.com/repository/AmazonRootCA4.pem](https://www.amazontrust.com/repository/AmazonRootCA4.pem). Se i dispositivi non implementano la convalida dei certificati basata su RSA, puoi omettere i certificati RSA di [https://www.amazontrust.com/repository/AmazonRootCA1.pem](https://www.amazontrust.com/repository/AmazonRootCA1.pem) e di [https://www.amazontrust.com/repository/AmazonRootCA2.pem](https://www.amazontrust.com/repository/AmazonRootCA2.pem). Potrebbe essere necessario fare clic con il pulsante destro del mouse su questi collegamenti e selezionare **Salva collegamento come...** per salvare questi certificati come file.
+ Se riscontri problemi di convalida dei certificati server durante la connessione all'endpoint ATS, prova ad aggiungere il certificato Amazon Root CA pertinente con firma incrociata al tuo archivio attendibile. Potrebbe essere necessario fare clic con il pulsante destro del mouse su questi collegamenti e selezionare **Salva collegamento come...** per salvare questi certificati come file.
  + [Firma incrociata Amazon Root CA 1](https://www.amazontrust.com/repository/G2-RootCA1.pem)
  + [Autorità di certificazione Amazon Root CA 2 a firma incrociata](https://www.amazontrust.com/repository/G2-RootCA2.pem) – Riservata per uso futuro.
  + [Firma incrociata Amazon Root CA 3](https://www.amazontrust.com/repository/G2-RootCA3.pem)
  + [Amazon Root CA 4 a firma incrociata](https://www.amazontrust.com/repository/G2-RootCA4.pem) - Riservata per uso futuro.
+ Se si verificano problemi di convalida dei certificati server, il dispositivo potrebbe considerare esplicitamente attendibile la CA principale. Prova ad aggiungere [https://www.amazontrust.com/repository/SFSRootCAG2.pem](https://www.amazontrust.com/repository/SFSRootCAG2.pem) al tuo negozio di fiducia.
+ Se si verificano ancora problemi dopo aver eseguito i passaggi precedenti, contattare il [Supporto AWS Developer](https://aws.amazon.com/premiumsupport/plans/developers/). 

**Nota**  
I certificati CA hanno una data di scadenza dopo la quale non possono più essere usati per convalidare un certificato del server. Potrebbe essere necessario sostituire i certificati CA prima della data di scadenza. Assicurati di poter aggiornare i certificati CA root in tutti i dispositivi o client per garantire la connessione continua e per mantenere il sistema aggiornato con le best practice di sicurezza.

**Nota**  
Quando ti connetti AWS IoT Core al codice del tuo dispositivo, trasferisci il certificato all'API che stai utilizzando per la connessione. L'API utilizzata varierà in base all'SDK. Per ulteriori informazioni, consulta il [AWS IoT Core dispositivo SDKs](iot-sdks.md).

# Autenticazione client
<a name="client-authentication"></a>

AWS IoT supporta tre tipi di principi di identità per l'autenticazione del dispositivo o del client:
+ [Certificati client X.509](x509-client-certs.md)
+ [Utenti, gruppi e ruoli IAM](iam-users-groups-roles.md)
+ [Identità Amazon Cognito](cognito-identities.md)

Queste identità possono essere utilizzate con dispositivi, applicazioni mobili, Web o desktop. Possono anche essere utilizzati da un utente che digita i comandi dell'interfaccia a riga di AWS IoT comando (CLI). In genere, AWS IoT i dispositivi utilizzano certificati X.509, mentre le applicazioni mobili utilizzano identità Amazon Cognito. Le applicazioni Web e desktop usano le identità IAM o federate. I comandi AWS CLI usano IAM. Per ulteriori informazioni sulle identità IAM, consulta [Gestione delle identità e degli accessi per AWS IoT](security-iam.md).

# Certificati client X.509
<a name="x509-client-certs"></a>

I certificati X.509 offrono la possibilità di AWS IoT autenticare le connessioni di client e dispositivi. I certificati client devono essere registrati AWS IoT prima che un client possa comunicare con. AWS IoT Un certificato client può essere registrato in più Account AWS file contemporaneamente Regione AWS per facilitare lo spostamento di dispositivi tra Account AWS i server della stessa regione. Per ulteriori informazioni, consulta [Utilizzo dei certificati client X.509 in più Account AWS secondi con registrazione multiaccount](#multiple-account-cert). 

Consigliamo che a ogni dispositivo o client sia assegnato un certificato univoco per permettere operazioni di gestione granulare del client, inclusa la revoca di certificati. I dispositivi e i client devono anche supportare la rotazione e la sostituzione dei certificati per garantire un funzionamento corretto allo scadere dei certificati.

Per informazioni sull'utilizzo dei certificati X.509 per supportare più dispositivi, consulta [Provisioning dei dispositivi](iot-provision.md) per esaminare le diverse opzioni di gestione dei certificati e provisioning supportate da AWS IoT .

**AWS IoT supporta questi tipi di certificati client X.509:**
+  certificati X.509 generati da AWS IoT
+  Certificati X.509 firmati da una CA registrata con. AWS IoT
+  Certificati X.509 firmati da una CA non registrata con AWS IoT.

In questa sezione viene descritto come gestire i certificati X.509 in AWS IoT. È possibile utilizzare la AWS IoT console o AWS CLI eseguire le seguenti operazioni sui certificati:
+ [Crea certificati AWS IoT client](device-certs-create.md)
+ [Creare certificati client personali](device-certs-your-own.md)
+ [Registrare un certificato client](register-device-cert.md)
+ [Attivare o disattivare un certificato client](activate-or-deactivate-device-cert.md)
+ [Revocare un certificato client](revoke-ca-cert.md)

Per ulteriori informazioni sui AWS CLI comandi che eseguono queste operazioni, consulta [AWS IoT CLI](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/index.html) Reference.

## Utilizzo dei certificati client X.509
<a name="x509-client-cert-basics"></a>

I certificati X.509 autenticano le connessioni di client e dispositivi a. AWS IoT I certificati X.509 offrono diversi vantaggi rispetto ad altri meccanismi di identificazione e autenticazione. I certificati X.509 permettono l'uso di chiavi asimmetriche con i dispositivi. Ad esempio, è possibile masterizzare le chiavi private in un dispositivo di storage sicuro in modo che il materiale crittografico sensibile resta sempre nel dispositivo. I certificati X.509 forniscono un'autenticazione client più affidabile rispetto ad altri schemi, ad esempio un nome utente e una password o un token di connessione, perché la chiave privata resta sempre nel dispositivo.

AWS IoT autentica i certificati client utilizzando la modalità di autenticazione client del protocollo TLS. Il supporto TLS è disponibile in molti linguaggi di programmazione e sistemi operativi e viene usato in genere per crittografare i dati. Nell'autenticazione client TLS, AWS IoT richiede un certificato client X.509 e convalida lo stato del certificato e confrontandolo con un registro di certificati. Account AWS Quindi richiede al client la prova della proprietà della chiave privata che corrisponde alla chiave pubblica contenuta nel certificato. AWS IoT richiede ai client di inviare l'[estensione SNI (Server Name Indication)](https://tools.ietf.org/html/rfc3546#section-3.1) al protocollo Transport Layer Security (TLS). Per ulteriori informazioni sulla configurazione dell'estensione SNI, consulta [Sicurezza dei trasporti in AWS IoT Core](transport-security.md).

Per facilitare una connessione client sicura e coerente al AWS IoT core, un certificato client X.509 deve possedere quanto segue:
+ Registrato in Core. AWS IoT Per ulteriori informazioni, consulta [Registrare un certificato client](register-device-cert.md).
+ Avere uno stato di `ACTIVE`. Per ulteriori informazioni, consulta [Attivare o disattivare un certificato client](activate-or-deactivate-device-cert.md).
+ La data di scadenza del certificato non è ancora stata raggiunta.

Puoi creare certificati client che utilizzano l'autorità di certificazione root Amazon e puoi utilizzare i tuoi certificati client firmati da un'altra CA. Per ulteriori informazioni sull'utilizzo della AWS IoT console per creare certificati che utilizzano Amazon Root CA, consulta[Crea certificati AWS IoT client](device-certs-create.md). Per ulteriori informazioni sull'utilizzo dei certificati X.509, consulta [Creare certificati client personali](device-certs-your-own.md).

La data e l'ora di scadenza per i certificati firmati da un certificato CA vengono impostate alla creazione del certificato. I certificati X.509 generati da AWS IoT scadono alla mezzanotte UTC del 31 dicembre 2049 (2049-12-31T 23:59:59 Z).

AWS IoT Device Defender può eseguire audit su te Account AWS e sui dispositivi che supportano le migliori pratiche di sicurezza IoT comuni. Ciò include la gestione delle date di scadenza dei certificati X.509 firmati dalla tua CA o da Amazon Root CA. [Per ulteriori informazioni sulla gestione della data di scadenza di un certificato, consulta Scadenza del [certificato del dispositivo e Scadenza del](https://docs.aws.amazon.com/iot-device-defender/latest/devguide/audit-chk-device-cert-approaching-expiration.html) certificato CA.](https://docs.aws.amazon.com/iot-device-defender/latest/devguide/audit-chk-ca-cert-approaching-expiration.html)

Nel AWS IoT blog ufficiale, un approfondimento sulla gestione della rotazione dei certificati dei dispositivi e sulle migliori pratiche di sicurezza è esplorato in [Come gestire la rotazione dei certificati dei dispositivi IoT utilizzando AWS IoT](https://aws.amazon.com/blogs/iot/how-to-manage-iot-device-certificate-rotation-using-aws-iot/).

## Utilizzo dei certificati client X.509 in più Account AWS secondi con registrazione multiaccount
<a name="multiple-account-cert"></a>

La registrazione a più account consente di spostare dispositivi tra i tuoi Account AWS nella stessa regione o in regioni diverse. In questo modo puoi registrare, testare e configurare un dispositivo in un account di pre-produzione, quindi registrare e utilizzare lo stesso dispositivo e certificato del dispositivo in un account di produzione. È inoltre possibile registrare il certificato client sul dispositivo o i certificati del dispositivo senza una CA registrata con. AWS IoT Per ulteriori informazioni, consulta [Registrazione di un certificato client firmato da una CA non registrata (CLI)](manual-cert-registration.md#manual-cert-registration-noca-cli).

**Nota**  
I certificati utilizzati per la registrazione con più account sono supportati in `iot:Data-ATS`, `iot:Data` (legacy), `iot:Jobs` e nei tipi di endpoint `iot:CredentialProvider`. Per ulteriori informazioni sugli endpoint dei AWS IoT dispositivi, consulta[AWS IoT dati del dispositivo e endpoint di servizio](iot-connect-devices.md#iot-connect-device-endpoints).

I dispositivi che utilizzano la registrazione multiaccount devono inviare l'[estensione SNI (Server Name Indication)](https://tools.ietf.org/html/rfc3546#section-3.1) al protocollo Transport Layer Security (TLS) e fornire l'indirizzo completo dell'endpoint sul `host_name` campo, quando si connettono. AWS IoT AWS IoT utilizza l'indirizzo dell'endpoint in `host_name` per indirizzare la connessione all'account corretto. AWS IoT I dispositivi esistenti che non inviano un indirizzo endpoint valido in `host_name` continueranno a funzionare, ma non saranno in grado di utilizzare le funzionalità che richiedono queste informazioni. Per ulteriori informazioni sull'estensione SNI e per informazioni su come identificare l'indirizzo endpoint per il campo `host_name`, vedere [Sicurezza dei trasporti in AWS IoT Core](transport-security.md). 

**Per utilizzare la registrazione con più account**

1. Puoi registrare i certificati del dispositivo con una CA. Puoi registrare la CA di firma in più account in modalità `SNI_ONLY` e utilizzare tale CA per registrare lo stesso certificato client su più account. Per ulteriori informazioni, consulta [Registrazione di un certificato CA in modalità SNI\$1ONLY (CLI) - Consigliato](manage-your-CA-certs.md#register-CA-cert-SNI-cli).

1. Puoi registrare i certificati del dispositivo senza una CA. Per informazioni, consulta [Registra un certificato client firmato da una CA (CLI) non registrata](manual-cert-registration.md#manual-cert-registration-noca-cli). La registrazione di una CA è facoltativa. Non è necessario registrare la CA con AWS IoT cui ha firmato i certificati del dispositivo.

## Algoritmi di firma dei certificati supportati da AWS IoT
<a name="x509-cert-algorithms"></a>

AWS IoT supporta i seguenti algoritmi di firma dei certificati:
+ SHA256CON RSA
+ SHA384CON RSA
+ SHA512CON RSA
+ SHA256WITHRSAANDMGF1 (RASSA-PSS)
+ SHA384WITHRSAANDMGF1 (RASSA-PSS)
+ SHA512WITHRSAANDMGF1 (RASSA-PSS)
+ DSA\$1CON\$1 SHA256
+ ECDSA-CON- SHA256
+ ECDSA-CON- SHA384
+ ECDSA-CON- SHA512

Per ulteriori informazioni sull'autenticazione e la sicurezza dei certificati, vedere [Device](https://docs.aws.amazon.com/iot-device-defender/latest/devguide/audit-chk-device-cert-key-quality.html) certificate key quality.

**Nota**  
La richiesta di firma del certificato (CSR) deve includere una chiave pubblica. La chiave può essere una chiave RSA con lunghezza di almeno 2048 bit o una chiave ECC da curva NIST P–256, NIST P–384 o NIST P-521. Per ulteriori informazioni, consulta [CreateCertificateFromCsr](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateCertificateFromCsr.html) nella *guida di riferimento delle API AWS IoT *.

## Algoritmi chiave supportati da AWS IoT
<a name="x509-cert-key-algorithms"></a>

La tabella seguente mostra come sono supportati gli algoritmi chiave:


****  

| Algoritmo chiave | Algoritmo di firma dei certificati | Versione TLS | Supportato? Sì o No | 
| --- | --- | --- | --- | 
| RSA con una dimensione della chiave di almeno 2048 bit | Tutti | TLS 1.2 TLS 1.3 | Sì | 
| ECC NIST P-256/P-384/P-521 | Tutti | TLS 1.2 TLS 1.3 | Sì | 
| RSA-PSS con una dimensione della chiave di almeno 2048 bit | Tutti | TLS 1.2 | No | 
| RSA-PSS con una dimensione della chiave di almeno 2048 bit | Tutti | TLS 1.3 | Sì | 

Per creare un certificato utilizzando [CreateCertificateFromCSR](https://docs.aws.amazon.com//iot/latest/apireference/API_CreateCertificateFromCsr.html), puoi utilizzare un algoritmo a chiave supportato per generare una chiave pubblica per la tua CSR. Per registrare il proprio certificato utilizzando la [RegisterCertificate](https://docs.aws.amazon.com//iot/latest/apireference/API_RegisterCertificate.html)nostra [RegisterCertificateWithoutCA](https://docs.aws.amazon.com//iot/latest/apireference/API_RegisterCertificateWithoutCA.html), è possibile utilizzare un algoritmo a chiave supportato per generare una chiave pubblica per il certificato.

Per ulteriori informazioni, consulta [Politiche di sicurezza](https://docs.aws.amazon.com//iot/latest/developerguide/transport-security.html#tls-policy-table).

# Crea certificati AWS IoT client
<a name="device-certs-create"></a>

AWS IoT fornisce certificati client firmati dall'autorità di certificazione Amazon Root (CA).

In questo argomento viene descritto come creare un certificato client firmato dall'autorità di certificazione root Amazon e scaricare i file del certificato. Dopo aver creato i file di certificato client, è necessario installarli nel client.

**Nota**  
Ogni certificato client X.509 fornito da AWS IoT contiene gli attributi di emittente e soggetto impostati al momento della creazione del certificato. Gli attributi del certificato sono immutabili solo dopo la creazione del certificato.

Puoi utilizzare la AWS IoT console o il AWS CLI per creare un AWS IoT certificato firmato dall'autorità di certificazione Amazon Root.

## Crea un AWS IoT certificato (console)
<a name="device-certs-create-console"></a>

**Per creare un AWS IoT certificato utilizzando la AWS IoT console**

1. Accedi a Console di gestione AWS e apri la [AWS IoT console](https://console.aws.amazon.com/iot/home).

1. Nel riquadro di navigazione, selezionare **Sicurezza**, scegliere **Certificati**, quindi **Crea**.

1. Scegliere **One-click certificate creation (Creazione certificato con un clic)** – **Create certificate (Crea certificato)**.

1. Dalla pagina **Certificato creato** scarica i file del certificato client per l'oggetto, la chiave pubblica e la chiave privata in una posizione sicura. Questi certificati generati da AWS IoT sono disponibili solo per l'uso con AWS IoT i servizi.

   Se è necessario anche il file del certificato dell'autorità di certificazione root Amazon, questa pagina contiene anche il collegamento alla pagina da cui è possibile scaricarlo.

1. A questo punto, un certificato client è stato creato e registrato con AWS IoT. È necessario attivare il certificato prima di utilizzarlo in un client.

    Scegli **Attiva** per attivare subito il certificato client. Se non desideri attivare il certificato, in [Attivare un certificato client (console)](activate-or-deactivate-device-cert.md#activate-device-cert-console) viene descritto come attivare il certificato in un secondo momento.

   

1. Se desideri collegare una policy al certificato, scegli **Attach a policy (Collega una policy)**.

   Se non desideri collegare una policy, scegli **Done (Fatto)** per terminare. È possibile collegare una policy in un secondo momento.

Dopo aver completato la procedura, installare i file di certificato sul client.

## Creare un AWS IoT certificato (CLI)
<a name="device-certs-create-cli"></a>

 AWS CLI fornisce il **[create-keys-and-certificate](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/create-keys-and-certificate.html)** comando per creare certificati client firmati dall'autorità di certificazione Amazon Root. Questo comando però non scarica il file del certificato dell'autorità di certificazione root Amazon. Puoi scaricare il file del certificato dell'autorità di certificazione root Amazon da [Certificati CA per l'autenticazione del server](server-authentication.md#server-authentication-certs). 

Questo comando crea file e registri con chiave privata, chiave pubblica e certificati X.509 e attiva il certificato con. AWS IoT

```
aws iot create-keys-and-certificate \
    --set-as-active \
    --certificate-pem-outfile certificate_filename.pem \
    --public-key-outfile public_filename.key \
    --private-key-outfile private_filename.key
```

Se non desideri attivare il certificato durante la creazione e la registrazione, questo comando crea file di certificato di chiave privata, chiave pubblica e X.509 e registra il certificato, ma non lo attiva. In [Attivare un certificato client (CLI)](activate-or-deactivate-device-cert.md#activate-device-cert-cli) viene descritto come attivare il certificato in un secondo momento.

```
aws iot create-keys-and-certificate \
    --no-set-as-active \
    --certificate-pem-outfile certificate_filename.pem \
    --public-key-outfile public_filename.key \
    --private-key-outfile private_filename.key
```



Installa i file di certificato sul client.

# Creare certificati client personali
<a name="device-certs-your-own"></a>

AWS IoT supporta i certificati client firmati da qualsiasi autorità di certificazione (CA) principale o intermedia. AWS IoT utilizza i certificati CA per verificare la proprietà dei certificati. Per utilizzare i certificati dei dispositivi firmati da una CA che non è la CA di Amazon, è necessario registrare il certificato della CA AWS IoT in modo da poter verificare la proprietà del certificato del dispositivo.

AWS IoT supporta diversi modi per portare i propri certificati (BYOC): 
+ Innanzitutto, registrare la CA utilizzata per firmare i certificati client e quindi registrare i singoli certificati client. Se si desidera registrare il dispositivo o il client nel relativo certificato client alla prima connessione AWS IoT (noto anche come [Just-in-Time Provisioning](https://docs.aws.amazon.com//iot/latest/developerguide/jit-provisioning.html)), è necessario registrare la CA firmataria con AWS IoT e attivare la registrazione automatica.
+ Se non è possibile registrare la CA di firma, è possibile scegliere di registrare i certificati client senza CA. Per i dispositivi registrati senza CA, è necessario presentare la [Server Indication (SNI)](https://www.rfc-editor.org/rfc/rfc3546#section-3.1) quando si connettono a AWS IoT.

**Nota**  
Per registrare i certificati client utilizzando CA, è necessario registrare la CA firmataria con cui si effettua la firma AWS IoT, non con nessun'altra CAs nella gerarchia.

**Nota**  
Un certificato CA può essere registrato in modalità `DEFAULT` da un solo account in una regione. Un certificato CA può essere registrato in modalità `SNI_ONLY` da più account in una regione. 

Per ulteriori informazioni sull'utilizzo dei certificati X.509 per supportare più dispositivi, consulta [Provisioning dei dispositivi](iot-provision.md) per esaminare le diverse opzioni di gestione dei certificati e provisioning supportate da AWS IoT .

**Topics**
+ [Gestire i certificati CA personali](manage-your-CA-certs.md)
+ [Creare un certificato client utilizzando il certificato CA](create-device-cert.md)

# Gestire i certificati CA personali
<a name="manage-your-CA-certs"></a>

In questa sezione vengono descritte le attività comuni per la gestione dei certificati dell'autorità di certificazione (CA).

Puoi registrare la tua autorità di certificazione (CA) con AWS IoT se utilizzi certificati client firmati da una CA che AWS IoT non riconosce.

Se desideri che i client registrino automaticamente i propri certificati client al AWS IoT momento della prima connessione, è necessario registrare la CA che ha firmato i certificati client AWS IoT. In caso contrario, non è necessario registrare il certificato CA che ha firmato i certificati client.

**Nota**  
Un certificato CA può essere registrato in modalità `DEFAULT` da un solo account in una regione. Un certificato CA può essere registrato in modalità `SNI_ONLY` da più account in una regione.

**Topics**
+ [Creare un certificato CA](#create-your-CA-cert)
+ [Registrare il certificato CA](#register-CA-cert)
+ [Disattivare un certificato CA](#deactivate-ca-cert)

## Creare un certificato CA
<a name="create-your-CA-cert"></a>

Se non disponi di un certificato CA, puoi usare gli strumenti [OpenSSL v1.1.1i](https://www.openssl.org/) per crearne uno.

**Nota**  
Non è possibile eseguire questa procedura nella AWS IoT console.

**Per creare un certificato CA utilizzando gli strumenti [OpenSSL v1.1.1i](https://www.openssl.org/)**

1. Genera una coppia di chiavi.

   ```
   openssl genrsa -out root_CA_key_filename.key 2048
   ```

1. Usa la chiave privata della coppia di chiavi per generare un certificato CA.

   ```
   openssl req -x509 -new -nodes \
       -key root_CA_key_filename.key \
       -sha256 -days 1024 \
       -out root_CA_cert_filename.pem
   ```

## Registrare il certificato CA
<a name="register-CA-cert"></a>

Queste procedure descrivono come registrare un certificato rilasciato da un'autorità di certificazione (CA) diversa dalla CA di Amazon. AWS IoT Core utilizza i certificati CA per verificare la proprietà dei certificati. Per utilizzare i certificati dei dispositivi firmati da una CA che non è la CA di Amazon, devi registrare il certificato CA AWS IoT Core in modo che possa verificare la proprietà del certificato del dispositivo.

### Registrare un certificato CA (console)
<a name="register-CA-cert-console"></a>

**Nota**  
Per registrare un certificato emesso da una CA nella console, avvia la console all'indirizzo [Register CA certificate](https://console.aws.amazon.com//iot/home#/create/cacertificate) (Registra certificato emesso da una CA). Puoi registrare la tua CA in modalità multi-account e senza la necessità di fornire un certificato di verifica o accedere alla chiave privata. Una CA può essere registrata in modalità multi-account da più Account AWS nella stessa Regione AWS. Puoi registrare la tua CA in modalità account singolo fornendo un certificato di verifica e una verifica della proprietà della chiave privata della CA.

### Registrare un certificato CA (CLI)
<a name="register-CA-cert-cli"></a>

Puoi registrare un certificato CA in modalità `DEFAULT` o in modalità `SNI_ONLY`. Una CA può essere registrata in `DEFAULT` modalità una Account AWS alla volta Regione AWS. Una CA può essere registrata in `SNI_ONLY` modalità da più Account AWS persone contemporaneamente Regione AWS. Per ulteriori informazioni sulla modalità dei certificati CA, consulta [certificateMode](https://docs.aws.amazon.com//iot/latest/apireference/API_CACertificateDescription.html#iot-Type-CACertificateDescription-certificateMode).

**Nota**  
Ti consigliamo di registrare una CA in modalità `SNI_ONLY`. Non è necessario fornire un certificato di verifica o l'accesso alla chiave privata, ed è possibile registrare la CA più volte Account AWS contemporaneamente Regione AWS.

#### Registrazione di un certificato CA in modalità SNI\$1ONLY (CLI) - Consigliato
<a name="register-CA-cert-SNI-cli"></a>

**Prerequisiti**

Verifica che i seguenti elementi siano presenti sul tuo computer prima di continuare:
+ Il file del certificato CA root (a cui si fa riferimento nel seguente esempio come `root_CA_cert_filename.pem`)
+ [OpenSSL v1.1.1i](https://www.openssl.org/) o versione successiva

**Per registrare un certificato CA in `SNI_ONLY` modalità, utilizzare il AWS CLI**

1. Registrare il certificato CA con AWS IoT. Utilizzando il comando **register-ca-certificate**, immetti il nome del file del certificato CA. Per ulteriori informazioni, consulta [register-ca-certificate](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/register-ca-certificate.html) nella *documentazione di riferimento dei comandi della AWS CLI *.

   ```
   aws iot register-ca-certificate \
       --ca-certificate file://root_CA_cert_filename.pem \
       --certificate-mode SNI_ONLY
   ```

   In caso di successo, questo comando restituisce*certificateId*.

1. A questo punto, il certificato CA è stato registrato con AWS IoT ma non è attivo. Prima di poter registrare gli eventuali certificati client che ha firmato, il certificato CA deve essere attivato.

   Questo passaggio attiva il certificato CA.

   Per attivare il certificato CA, usa il comando **update-certificate** come riportato di seguito. Per ulteriori informazioni, consulta [update-certificate](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-certificate.html) in *Riferimento ai comandi AWS CLI *.

   ```
   aws iot update-ca-certificate \
       --certificate-id certificateId \
       --new-status ACTIVE
   ```

Per visualizzare lo stato del certificato CA, utilizza il comando **describe-ca-certificate**. Per ulteriori informazioni, consulta [describe-ca-certificate](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-ca-certificate.html) nella *documentazione di riferimento dei comandi della AWS CLI *.

#### Registrazione di un certificato CA in modalità `DEFAULT` (CLI)
<a name="register-CA-cert-default-cli"></a>

**Prerequisiti**

Verifica che i seguenti elementi siano presenti sul tuo computer prima di continuare:
+ Il file del certificato CA root (a cui si fa riferimento nel seguente esempio come `root_CA_cert_filename.pem`)
+ Il file della chiave privata del certificato CA root (a cui si fa riferimento nel seguente esempio come `root_CA_key_filename.key`)
+ [OpenSSL v1.1.1i](https://www.openssl.org/) o versione successiva

**Per registrare un certificato CA in `DEFAULT` modalità utilizzando il AWS CLI**

1. Per ottenere un codice di registrazione da AWS IoT, usa**get-registration-code**. Salvare il `registrationCode` restituito per utilizzarlo come `Common Name` del certificato di verifica della chiave privata. Per ulteriori informazioni, consulta [get-registration-code](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/get-registration-code.html) nella *documentazione di riferimento dei comandi della AWS CLI *.

   ```
   aws iot get-registration-code
   ```

1. Genera una coppia di chiavi per il certificato di verifica della chiave privata.

   ```
   openssl genrsa -out verification_cert_key_filename.key 2048
   ```

1. Creare una richiesta di firma del certificato per il certificato di verifica della chiave privata. Impostare il campo `Common Name` del certificato sul `registrationCode` restituito da **get-registration-code**.

   ```
   openssl req -new \
       -key verification_cert_key_filename.key \
       -out verification_cert_csr_filename.csr
   ```

   Ti verrà richiesto di immettere alcune informazioni, tra cui il `Common Name` per il certificato.

   ```
   You are about to be asked to enter information that will be incorporated
   into your certificate request.
   What you are about to enter is what is called a Distinguished Name or a DN.
   There are quite a few fields but you can leave some blank
   For some fields there will be a default value,
   If you enter '.', the field will be left blank.
   -----
   Country Name (2 letter code) [AU]:
       State or Province Name (full name) []:
       Locality Name (for example, city) []:
       Organization Name (for example, company) []:
       Organizational Unit Name (for example, section) []:
       Common Name (e.g. server FQDN or YOUR name) []:your_registration_code
       Email Address []:
   
       Please enter the following 'extra' attributes
       to be sent with your certificate request
       A challenge password []:
       An optional company name []:
   ```

1. Usa la richiesta di firma del certificato per creare un certificato di verifica della chiave privata.

   ```
   openssl x509 -req \
       -in verification_cert_csr_filename.csr \
       -CA root_CA_cert_filename.pem \
       -CAkey root_CA_key_filename.key \
       -CAcreateserial \
       -out verification_cert_filename.pem \
       -days 500 -sha256
   ```

1. Registra il certificato CA con AWS IoT. Passa il nome file del certificato CA e il nome file del certificato di verifica della chiave privata al comando **register-ca-certificate** come riportato di seguito: Per ulteriori informazioni, consulta [register-ca-certificate](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/register-ca-certificate.html) nella *documentazione di riferimento dei comandi della AWS CLI *.

   ```
   aws iot register-ca-certificate \
       --ca-certificate file://root_CA_cert_filename.pem \
       --verification-cert file://verification_cert_filename.pem
   ```

   Questo comando restituisce*certificateId*, in caso di successo.

1. A questo punto, il certificato CA è stato registrato AWS IoT ma non è attivo. Prima di poter registrare gli eventuali certificati client che ha firmato, il certificato CA deve essere attivato.

   Questo passaggio attiva il certificato CA.

   Per attivare il certificato CA, usa il comando **update-certificate** come riportato di seguito. Per ulteriori informazioni, consulta [update-certificate](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-certificate.html) in *Riferimento ai comandi AWS CLI *.

   ```
   aws iot update-ca-certificate \
       --certificate-id certificateId \
       --new-status ACTIVE
   ```

Per visualizzare lo stato del certificato CA, utilizza il comando **describe-ca-certificate**. Per ulteriori informazioni, consulta [describe-ca-certificate](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-ca-certificate.html) nella *documentazione di riferimento dei comandi della AWS CLI *.

### Creazione di un certificato di verifica CA per registrare il certificato emesso da una CA nella console
<a name="create-CA-verification-cert"></a>

**Nota**  
Questa procedura è utile solo se si sta registrando un certificato CA dalla AWS IoT console.  
Se non hai eseguito questa procedura dalla AWS IoT console, avvia la procedura di registrazione del certificato CA nella console all'indirizzo [Register CA certificate](https://console.aws.amazon.com//iot/home#/create/cacertificate). 

Verifica che i seguenti elementi siano presenti sullo stesso computer prima di continuare:
+ Il file del certificato CA root (a cui si fa riferimento nel seguente esempio come `root_CA_cert_filename.pem`)
+ Il file della chiave privata del certificato CA root (a cui si fa riferimento nel seguente esempio come `root_CA_key_filename.key`)
+ [OpenSSL v1.1.1i](https://www.openssl.org/) o versione successiva

**Per utilizzare l'interfaccia a riga di comando per creare un certificato di verifica CA per registrare il certificato CA nella console**

1. Sostituisci `verification_cert_key_filename.key` con il nome del file della chiave del certificato di verifica che desideri creare (ad esempio, **verification\$1cert.key**). Quindi esegui questo comando per generare una coppia di chiavi per il certificato di verifica della chiave privata:

   ```
   openssl genrsa -out verification_cert_key_filename.key 2048
   ```

1. Sostituisci `verification_cert_key_filename.key` con il nome del file della chiave creato nel passaggio 1.

   Sostituisci `verification_cert_csr_filename.csr` con il nome del file CSR (Certificate Signing Request, richiesta di firma del certificato) che desideri creare. Ad esempio, **verification\$1cert.csr**.

   Esegui questo comando per creare il file CSR.

   ```
   openssl req -new \
       -key verification_cert_key_filename.key \
       -out verification_cert_csr_filename.csr
   ```

   Il comando richiede informazioni aggiuntive che vengono spiegate in seguito.

1. Nella AWS IoT console, nel contenitore del **certificato di verifica**, copia il codice di registrazione.

1. Le istruzioni del comando **openssl** sono mostrate nell'esempio seguente. Ad eccezione del campo `Common Name`, puoi inserire valori specifici o lasciare i campi vuoti.

   Nel campo `Common Name`, incolla il codice di registrazione copiato nella fase precedente.

   ```
   You are about to be asked to enter information that will be incorporated
   into your certificate request.
   What you are about to enter is what is called a Distinguished Name or a DN.
   There are quite a few fields but you can leave some blank
   For some fields there will be a default value,
   If you enter '.', the field will be left blank.
   -----
   Country Name (2 letter code) [AU]:
       State or Province Name (full name) []:
       Locality Name (for example, city) []:
       Organization Name (for example, company) []:
       Organizational Unit Name (for example, section) []:
       Common Name (e.g. server FQDN or YOUR name) []:your_registration_code
       Email Address []:
   
       Please enter the following 'extra' attributes
       to be sent with your certificate request
       A challenge password []:
       An optional company name []:
   ```

   Al termine, il comando crea il file CSR.

1. Sostituisci `verification_cert_csr_filename.csr` con il `verification_cert_csr_filename.csr` utilizzato nella fase precedente.

   Sostituisci `root_CA_cert_filename.pem` con il nome file del certificato CA che desideri registrare.

   Sostituisci `root_CA_key_filename.key` con il nome file del file della chiave privata del certificato CA.

   Sostituisci `verification_cert_filename.pem` con il nome del file del certificato di verifica che desideri creare. Ad esempio, **verification\$1cert.pem**.

   ```
   openssl x509 -req \
       -in verification_cert_csr_filename.csr \
       -CA root_CA_cert_filename.pem \
       -CAkey root_CA_key_filename.key \
       -CAcreateserial \
       -out verification_cert_filename.pem \
       -days 500 -sha256
   ```

1. Al termine del comando OpenSSL, questi file saranno pronti per l'utilizzo quando si torna nella console.
   + Il file del certificato emesso da una CA (`root_CA_cert_filename.pem` usato nel comando precedente)
   + Il certificato di verifica creato nel passaggio precedente (*verification\$1cert\$1filename.pem*utilizzato nel comando precedente)

## Disattivare un certificato CA
<a name="deactivate-ca-cert"></a>

Quando un certificato di autorità di certificazione (CA) è abilitato per la registrazione automatica dei certificati client, AWS IoT controlla il certificato CA per assicurarsi che lo sia`ACTIVE`. Se il certificato CA lo è`INACTIVE`, AWS IoT non consente la registrazione del certificato client.

L'impostazione del certificato CA su `INACTIVE`, impedisce la registrazione automatica di eventuali nuovi certificati client emessi dalla CA.

**Nota**  
Qualsiasi certificato client registrato che sia stato firmato dal certificato CA compromesso continuerà a funzionare finché non viene esplicitamente revocato.

### Disattivare un certificato CA (console)
<a name="deactivate-ca-cert-console"></a>

**Per disattivare un certificato CA utilizzando la console AWS IoT**

1. Accedi a Console di gestione AWS e apri la [AWS IoT console](https://console.aws.amazon.com/iot/home).

1. Nel riquadro di navigazione a sinistra, scegli **Sicuro**, scegli **CAs**.

1. Nell'elenco delle autorità di certificazione, individua quella che desideri disattivare e scegli l'icona con i puntini di sospensione per aprire il menu delle opzioni.

1. Scegliere **Deactivate (Disattiva)**dal menu delle opzioni.

L'autorità di certificazione viene visualizzata come **Inactive (Inattiva)** nell'elenco.

**Nota**  
La AWS IoT console non fornisce un modo per elencare i certificati firmati dalla CA che hai disattivato. Per un'opzione AWS CLI che elenca questi certificati, consulta [Disattivare un certificato CA (CLI)](#deactivate-ca-cert-cli).

### Disattivare un certificato CA (CLI)
<a name="deactivate-ca-cert-cli"></a>

 AWS CLI Fornisce il [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-ca-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-ca-certificate.html)comando per disattivare un certificato CA.

```
aws iot update-ca-certificate \
    --certificate-id certificateId \
    --new-status INACTIVE
```

Utilizza il comando [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/list-certificates-by-ca.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/list-certificates-by-ca.html) per ottenere l'elenco di tutti i certificati client registrati firmati dalla CA specificata. Per ogni certificato client firmato dal certificato CA specificato, usa il comando [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-certificate.html) per revocare il certificato del dispositivo in modo da impedirne l'uso.

Utilizza il comando [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-ca-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-ca-certificate.html) per visualizzare lo stato del certificato CA.

# Creare un certificato client utilizzando il certificato CA
<a name="create-device-cert"></a>

È possibile utilizzare la propria autorità di certificazione (CA) per creare certificati client. Il certificato client deve essere registrato AWS IoT prima dell'uso. Per informazioni sulle opzioni di registrazione per i certificati client, consulta [Registrare un certificato client](register-device-cert.md).

## Creare un certificato client (CLI)
<a name="create-device-cert-cli"></a>

**Nota**  
Non è possibile eseguire questa procedura nella AWS IoT console.

**Per creare un certificato client utilizzando il AWS CLI**

1. Genera una coppia di chiavi.

   ```
   openssl genrsa -out device_cert_key_filename.key 2048
   ```

1. Creare una richiesta di firma del certificato per il certificato client.

   ```
   openssl req -new \
       -key device_cert_key_filename.key \
       -out device_cert_csr_filename.csr
   ```

   Ti verrà richiesto di immettere alcune informazioni, come mostrato qui.

   ```
   You are about to be asked to enter information that will be incorporated
   into your certificate request.
   What you are about to enter is what is called a Distinguished Name or a DN.
   There are quite a few fields but you can leave some blank
   For some fields there will be a default value,
   If you enter '.', the field will be left blank.
   -----
   Country Name (2 letter code) [AU]:
       State or Province Name (full name) []:
       Locality Name (for example, city) []:
       Organization Name (for example, company) []:
       Organizational Unit Name (for example, section) []:
       Common Name (e.g. server FQDN or YOUR name) []:
       Email Address []:
   
       Please enter the following 'extra' attributes
       to be sent with your certificate request
       A challenge password []:
       An optional company name []:
   ```

1. Creare un certificato client dalla richiesta di firma del certificato.

   ```
   openssl x509 -req \
       -in device_cert_csr_filename.csr \
       -CA root_CA_cert_filename.pem \
       -CAkey root_CA_key_filename.key \
       -CAcreateserial \
       -out device_cert_filename.pem \
       -days 500 -sha256
   ```

 A questo punto, il certificato client è stato creato, ma non è ancora stato registrato con AWS IoT. Per informazioni su come e quando registrare il certificato client, consulta [Registrare un certificato client](register-device-cert.md). 

# Registrare un certificato client
<a name="register-device-cert"></a>

I certificati client devono essere registrati presso AWS IoT per consentire le comunicazioni tra il client e AWS IoT. È possibile registrare ogni certificato client manualmente oppure configurare i certificati client in modo che vengano registrati automaticamente quando il client si connette AWS IoT per la prima volta.

 Se desideri che i client e i dispositivi registrino i certificati client quando si connettono per la prima volta, è necessario utilizzare [Registrare il certificato CA](manage-your-CA-certs.md#register-CA-cert) per firmare il certificato client con AWS IoT nelle regioni in cui vuoi utilizzarlo. Amazon Root CA viene registrata automaticamente con AWS IoT. 

I certificati client possono essere condivisi da Account AWS e regioni. Le procedure descritte in questi argomenti devono essere eseguite in ogni account e regione in cui vuoi utilizzare il certificato client. La registrazione di un certificato client in un account o in una regione non viene riconosciuta automaticamente.

**Nota**  
I client che utilizzano il protocollo Transport Layer Security (TLS) per connettersi ad AWS IoT devono supportare l'[estensione SNI (Server Name Indication)](https://tools.ietf.org/html/rfc3546#section-3.1) a TLS. Per ulteriori informazioni, consulta [Sicurezza dei trasporti in AWS IoT Core](transport-security.md).

**Topics**
+ [Registrare manualmente un certificato client](manual-cert-registration.md)
+ [Registrare un certificato client quando il client si connette alla AWS IoT just-in-time registrazione (JITR)](auto-register-device-cert.md)

# Registrare manualmente un certificato client
<a name="manual-cert-registration"></a>

È possibile registrare manualmente un certificato client utilizzando la AWS IoT console e AWS CLI.

La procedura di registrazione da utilizzare dipende dal fatto che il certificato venga condiviso da Account AWS s e Regions. La registrazione di un certificato client in un account o in una regione non viene riconosciuta automaticamente.

Le procedure descritte in questo argomento devono essere eseguite in ogni account e regione in cui vuoi utilizzare il certificato client. I certificati client possono essere condivisi da Account AWS regioni e regioni. 

## Registrare un certificato client firmato da una CA registrata (console)
<a name="manual-cert-registration-console"></a>

**Nota**  
Prima di eseguire questa procedura, assicurati di disporre del file.pem del certificato client e che il certificato client sia stato firmato da una CA presso cui ti sei [registrato](manage-your-CA-certs.md#register-CA-cert). AWS IoT

**Per registrare un certificato esistente AWS IoT utilizzando la console**

1. Accedi alla console di AWS gestione e apri la [AWS IoT console](https://console.aws.amazon.com/iot/home).

1. Nel riquadro di navigazione, all'interno della sezione **Manage** (Gestione), scegliere **Security** (Sicurezza) e quindi **Certificates** (Certificati).

1. Sulla pagina **Certificates** (Certificati), nella finestra di dialogo **Certificates** (Certificati), selezionare **Add certificate** (Aggiungi certificato) e quindi **Register certificates** (Registra certificati).

1. Sulla pagina **Register certificate** (Registra certificato), nella finestra di dialogo **Certificates to upload** (Certificati da caricare) eseguire le seguenti operazioni:
   + Scegliere **CA is registered with AWS IoT** (La CA è registrata presso ).
   + In **Choose a CA certificate** (Scegliere un certificato CA), selezionare il la propria **Certification authority** (Autorità di certificazione). 
     + Scegliere **Register a new CA** (Registrare una nuova CA) per registrare una nuova **Certification authority** (Autorità di certificazione) che non è registrata su AWS IoT.
     + Lasciare il campo **Choose a CA certificate** (Scegliere un certificato CA) vuoto se la propria autorità di certificazione è **Amazon Root certificate authority** (Autorità di certificazione Amazon Root).
   + Seleziona fino a 10 certificati da caricare e con cui registrarti AWS IoT.
     + Usare i file dei certificati creati in [Crea certificati AWS IoT client](device-certs-create.md) e [Creare un certificato client utilizzando il certificato CA](create-device-cert.md).
   + Scegliere **Activate** (Attiva) o **Deactivate** (Disattiva). Se si sceglie **Deactivate** (Disattiva), [Attivare o disattivare un certificato client](activate-or-deactivate-device-cert.md) spiega come attivare il certificato dopo la sua registrazione.
   + Scegli **Registrati**.

Sulla pagina **Certificates** (Certificati), nella finestra di dialogo **Certificates** (Certificati) verranno ora visualizzati i certificati registrati.

## Registra un certificato client firmato da una CA (console) non registrata
<a name="manual-cert-registration-console-noca"></a>

**Nota**  
Prima di eseguire questa procedura, assicurati di disporre del file .pem del certificato client.

**Per registrare un certificato esistente AWS IoT utilizzando la console**

1. Accedi alla console di AWS gestione e apri la [AWS IoT console](https://console.aws.amazon.com/iot/home).

1. Nel riquadro di navigazione, selezionare **Security (Sicurezza)**, scegliere **Certificates (Certificati)**, quindi **Create (Crea)**.

1. In **Create a certificate (Crea un certificato)**, individua la voce **Use my certificate (Usa certificato personale)** e scegli **Get started (Inizia)**.

1. In **Select a CA (Seleziona una CA)**, scegli **Next (Avanti)**.

1.  In **Register existing device certificates (Registra certificati dispositivo esistenti)**, seleziona **Select certificates (Scegli certificati)** e scegli fino a 10 file di certificato da registrare. 

1.  Dopo aver chiuso la finestra di dialogo del file, selezionare se si desidera attivare o revocare i certificati client al momento della registrazione.

   Se non attivi un certificato al momento della registrazione, in [Attivare un certificato client (console)](activate-or-deactivate-device-cert.md#activate-device-cert-console) viene descritto come attivarlo in un secondo momento. 

   Se un certificato viene revocato al momento della registrazione, non può essere attivato in un secondo momento.

   Dopo aver scelto i file di certificato da registrare e aver selezionato le operazioni da eseguire dopo la registrazione, seleziona **Register certificates (Registra certificati)**.

I certificati client registrati correttamente vengono visualizzati nell'elenco dei certificati.

## Registrare un certificato client firmato da una CA registrata (CLI)
<a name="manual-cert-registration-cli"></a>

**Nota**  
Prima di eseguire questa procedura, assicurati di disporre del file .pem dell'autorità di certificazione (CA) e del file .pem del certificato client. Il certificato client deve essere firmato da un'autorità di certificazione (CA) presso cui ti sei [registrato AWS IoT](manage-your-CA-certs.md#register-CA-cert).

Utilizza il comando [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/register-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/register-certificate.html) per registrare ma non attivare un certificato client.

```
aws iot register-certificate \
    --certificate-pem file://device_cert_filename.pem \
    --ca-certificate-pem file://ca_cert_filename.pem
```

Il certificato client è registrato con AWS IoT, ma non è ancora attivo. Consulta [Attivare un certificato client (CLI)](activate-or-deactivate-device-cert.md#activate-device-cert-cli) per informazioni su come attivarlo in un secondo momento.

È inoltre possibile attivare il certificato client quando lo si registra utilizzando questo comando.

```
aws iot register-certificate \
    --set-as-active \
    --certificate-pem file://device_cert_filename.pem \
    --ca-certificate-pem file://ca_cert_filename.pem
```

Per ulteriori informazioni sull'attivazione del certificato in modo che possa essere utilizzato per la connessione AWS IoT, vedere [Attivare o disattivare un certificato client](activate-or-deactivate-device-cert.md)

## Registra un certificato client firmato da una CA (CLI) non registrata
<a name="manual-cert-registration-noca-cli"></a>

**Nota**  
Prima di eseguire questa procedura, assicurati di disporre del file .pem del certificato.

Utilizzare il comando [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/register-certificate-without-ca.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/register-certificate-without-ca.html) per registrare, ma non attivare, un certificato client.

```
aws iot register-certificate-without-ca \
    --certificate-pem file://device_cert_filename.pem
```

Il certificato client è registrato con AWS IoT, ma non è ancora attivo. Consulta [Attivare un certificato client (CLI)](activate-or-deactivate-device-cert.md#activate-device-cert-cli) per informazioni su come attivarlo in un secondo momento.

È inoltre possibile attivare il certificato client quando lo si registra utilizzando questo comando.

```
aws iot register-certificate-without-ca \
    --status ACTIVE \
    --certificate-pem file://device_cert_filename.pem
```

Per ulteriori informazioni sull'attivazione del certificato in modo che possa essere utilizzato per la connessione AWS IoT, consulta[Attivare o disattivare un certificato client](activate-or-deactivate-device-cert.md).

# Registrare un certificato client quando il client si connette alla AWS IoT just-in-time registrazione (JITR)
<a name="auto-register-device-cert"></a>

È possibile configurare un certificato CA per abilitare la registrazione AWS IoT automatica dei certificati client con cui ha firmato la registrazione la prima volta che il client si connette. AWS IoT

Per registrare i certificati client quando un client si connette AWS IoT per la prima volta, è necessario abilitare il certificato CA per la registrazione automatica e configurare la prima connessione da parte del client per fornire i certificati richiesti.

## Configurare un certificato CA per supportare la registrazione automatica (console)
<a name="enable-auto-registration-console"></a>

**Per configurare un certificato CA per supportare la registrazione automatica dei certificati client tramite la AWS IoT console**

1. Accedi alla console di AWS gestione e apri la [AWS IoT console](https://console.aws.amazon.com/iot/home).

1. Nel riquadro di navigazione a sinistra, scegli **Sicuro**, scegli **CAs**.

1. Nell'elenco delle autorità di certificazione individuare quella per cui si desidera abilitare la registrazione automatica e aprire il menu delle opzioni utilizzando l'icona con i puntini di sospensione.

1. Scegliere **Enable auto-registration (Abilita registrazione automatica)**dal menu delle opzioni.

**Nota**  
Lo stato della registrazione automatica non viene visualizzato nell'elenco delle autorità di certificazione. Per visualizzare lo stato di registrazione automatica di un'autorità di certificazione, è necessario aprire la pagina **Details (Dettagli)** dell'autorità di certificazione.

## Configurare un certificato CA per supportare la registrazione automatica (CLI)
<a name="enable-auto-registration-cli"></a>

Se hai già registrato il certificato CA con AWS IoT, usa il [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-ca-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-ca-certificate.html)comando per impostare `autoRegistrationStatus` il certificato CA su`ENABLE`.

```
aws iot update-ca-certificate \
--certificate-id caCertificateId \
--new-auto-registration-status ENABLE
```

Se si desidera abilitare `autoRegistrationStatus` quando si registra il certificato CA, utilizzare il comando [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/register-ca-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/register-ca-certificate.html).

```
aws iot register-ca-certificate \
--allow-auto-registration  \
--ca-certificate file://root_CA_cert_filename.pem \
--verification-cert file://verification_cert_filename.pem
```

Usare il comando [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-ca-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-ca-certificate.html) per visualizzare lo stato del certificato CA.

## Configurare la prima connessione da parte di un client per la registrazione automatica
<a name="configure-auto-reg-first-connect"></a>

Quando un client tenta di connettersi AWS IoT per la prima volta, il certificato client firmato dal certificato CA deve essere presente sul client durante l'handshake Transport Layer Security (TLS).

Quando il client si connette AWS IoT, utilizza il certificato client creato in [Crea certificati AWS IoT client](https://docs.aws.amazon.com/iot/latest/developerguide/device-certs-create.html) o [Crea certificati client personalizzati.](https://docs.aws.amazon.com/iot/latest/developerguide/device-certs-your-own.html) AWS IoT riconosce il certificato CA come certificato CA registrato, registra il certificato client e ne imposta lo stato su. `PENDING_ACTIVATION` Questo significa che il certificato client è stato automaticamente registrato ed è in attesa dell'attivazione. Lo stato del certificato client deve essere `ACTIVE` prima che possa essere utilizzato per connettersi ad AWS IoT. Vedi [Attivare o disattivare un certificato client](activate-or-deactivate-device-cert.md) per informazioni sull'attivazione di un certificato client.

**Nota**  
È possibile effettuare il provisioning dei dispositivi utilizzando la funzionalità di AWS IoT Core just-in-time registrazione (JITR) senza dover inviare l'intera catena di fiducia alla prima connessione dei dispositivi a. AWS IoT Core La presentazione del certificato emesso da una CA è facoltativa, ma il dispositivo è necessario per inviare l'estensione [Server Name Indication (SNI)](https://datatracker.ietf.org/doc/html/rfc3546#section-3.1) quando si collegano.

Quando registra AWS IoT automaticamente un certificato o quando un client presenta un certificato nello `PENDING_ACTIVATION` stato, AWS IoT pubblica un messaggio sul seguente argomento MQTT:

`$aws/events/certificates/registered/caCertificateId`

Dove `caCertificateId` è l'ID del certificato emesso da una CA che ha rilasciato il certificato client.

Il messaggio pubblicato in questo argomento ha la struttura seguente:

```
{
        "certificateId": "certificateId",
        "caCertificateId": "caCertificateId",
        "timestamp": timestamp,
        "certificateStatus": "PENDING_ACTIVATION",
        "awsAccountId": "awsAccountId",
        "certificateRegistrationTimestamp": "certificateRegistrationTimestamp"
}
```

Puoi creare una regola che resti in ascolto in questo argomento ed esegua alcune operazioni. Ti consigliamo di creare una regola Lambda che verifichi che il certificato client non sia incluso in un elenco di revoche di certificati (CRL), che attivi il certificato e crei e colleghi una policy a quest'ultimo. La policy determina le risorse cui il client può accedere. Se la politica che state creando richiede l'ID client dai dispositivi di connessione, potete utilizzare la funzione clientid () della regola per recuperare l'ID client. Un esempio di definizione di regola può essere simile al seguente:

```
SELECT *,
   clientid() as clientid
from $aws/events/certificates/registered/caCertificateId
```

In questo esempio, la regola sottoscrive l'argomento JITR `$aws/events/certificates/registered/caCertificateID` e utilizza la funzione clientid () per recuperare l'ID del client. La regola aggiunge quindi l'ID client al payload JITR. [Per ulteriori informazioni sulla funzione clientid () della regola, vedete clientid ().](https://docs.aws.amazon.com//iot/latest/developerguide/iot-sql-functions.html#iot-sql-function-clientid)

Per ulteriori informazioni su come creare una regola Lambda che ascolti l'`$aws/events/certificates/registered/caCertificateID`argomento ed esegua queste azioni, vedi [just-in-time Registrazione dei certificati client](https://aws.amazon.com/blogs/iot/just-in-time-registration-of-device-certificates-on-aws-iot/) su. AWS IoT

Se si verifica un errore o un'eccezione durante la registrazione automatica dei certificati client, AWS IoT invia eventi o messaggi ai registri in CloudWatch Logs. Per ulteriori informazioni sulla configurazione dei log per il tuo account, consulta la [ CloudWatch documentazione di Amazon](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/).

# Gestisci i certificati dei clienti
<a name="manage-device-cert"></a>

AWS IoT fornisce funzionalità per la gestione dei certificati client.

**Topics**
+ [Attivare o disattivare un certificato client](activate-or-deactivate-device-cert.md)
+ [Collegare un oggetto o una policy a un certificato client](attach-to-cert.md)
+ [Revocare un certificato client](revoke-ca-cert.md)
+ [Trasferire un certificato a un altro account](transfer-cert.md)

# Attivare o disattivare un certificato client
<a name="activate-or-deactivate-device-cert"></a>

AWS IoT verifica che un certificato client sia attivo quando autentica una connessione.

Puoi creare e registrare certificati client senza attivarli in modo che non possano essere utilizzati finché non lo desideri. È inoltre possibile disattivare i certificati client attivi per disabilitarli temporaneamente. Infine, puoi revocare i certificati client per impedirne qualsiasi utilizzo futuro. 

## Attivare un certificato client (console)
<a name="activate-device-cert-console"></a>

**Per attivare un certificato client utilizzando la console AWS IoT**

1. Accedi alla console di AWS gestione e apri la [AWS IoT console](https://console.aws.amazon.com/iot/home).

1. Nel riquadro di navigazione di sinistra, scegliere **Secure (Sicurezza)**, quindi **Certificates (Certificati)**.

1. Nell'elenco dei certificati individuare il certificato che si desidera attivare e aprire il menu delle opzioni utilizzando l'icona con i puntini di sospensione.

1. Scegliere **Activate (Attiva)**dal menu delle opzioni.

Il certificato viene visualizzato come **Active (Attivo)** nell'elenco dei certificati.

## Disattivare un certificato client (console)
<a name="deactivate-device-cert-console"></a>

**Per disattivare un certificato client utilizzando la console AWS IoT**

1. Accedi alla console di AWS gestione e apri la [AWS IoT console](https://console.aws.amazon.com/iot/home).

1. Nel riquadro di navigazione di sinistra, scegliere **Secure (Sicurezza)**, quindi **Certificates (Certificati)**.

1. Nell'elenco dei certificati individuare il certificato che si desidera disattivare e aprire il menu delle opzioni utilizzando l'icona con i puntini di sospensione.

1. Scegliere **Deactivate (Disattiva)**dal menu delle opzioni.

Il certificato viene visualizzato come **Inactive (Inattivo)** nell'elenco dei certificati.

## Attivare un certificato client (CLI)
<a name="activate-device-cert-cli"></a>

 AWS CLI Fornisce il [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-certificate.html)comando per attivare un certificato.

```
aws iot update-certificate \
    --certificate-id certificateId \
    --new-status ACTIVE
```

Se il comando ha esito positivo, lo stato del certificato è `ACTIVE`. Eseguire [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-certificate.html) per visualizzare lo stato del certificato.

```
aws iot describe-certificate \
    --certificate-id certificateId
```

## Disattivare un certificato client (CLI)
<a name="deactivate-device-cert-cli"></a>

 AWS CLI Fornisce il [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-certificate.html)comando per disattivare un certificato.

```
aws iot update-certificate \
    --certificate-id certificateId \
    --new-status INACTIVE
```

Se il comando ha esito positivo, lo stato del certificato è `INACTIVE`. Eseguire [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-certificate.html) per visualizzare lo stato del certificato.

```
aws iot describe-certificate \
    --certificate-id certificateId
```

# Collegare un oggetto o una policy a un certificato client
<a name="attach-to-cert"></a>

Quando si crea e si registra un certificato separato da un AWS IoT oggetto, questo non avrà alcuna politica che autorizzi alcuna AWS IoT operazione, né sarà associato a nessun AWS IoT oggetto. In questa sezione viene descritto come aggiungere queste relazioni a un certificato registrato.

**Importante**  
Per completare queste procedure, è necessario aver già creato l'oggetto o la policy che si desidera collegare al certificato.

Il certificato autentica un dispositivo in AWS IoT modo che possa connettersi. Collegare il certificato a una risorsa dell'oggetto stabilisce la relazione tra il dispositivo (tramite il certificato) e la risorsa dell'oggetto. Per autorizzare il dispositivo a eseguire AWS IoT azioni, ad esempio consentirgli di connettersi e pubblicare messaggi, è necessario allegare una politica appropriata al certificato del dispositivo. 

## Collegare un oggetto a un certificato client (console)
<a name="attach-to-cert-thing-console"></a>

Per completare questa procedura, è necessario il nome dell'oggetto.

**Per collegare un oggetto a un certificato registrato**

1. Accedi alla console di AWS gestione e apri la [AWS IoT console](https://console.aws.amazon.com/iot/home).

1. Nel riquadro di navigazione di sinistra, scegliere **Secure (Sicurezza)**, quindi **Certificates (Certificati)**.

1. Nell'elenco dei certificati individuare il certificato a cui si desidera collegare una policy, aprire il menu delle opzioni del certificato scegliendo l'icona con i puntini di sospensione e scegliere **Collega oggetto**.

1. Nella finestra popup individua il nome dell'oggetto che desideri collegare al certificato, scegli la relativa casella di controllo e scegli **Attach (Collega)**.

L'oggetto dovrebbe ora essere visualizzato nell'elenco degli oggetti nella pagina dei dettagli del certificato.

## Collegare una policy a un certificato client (console)
<a name="attach-to-cert-policy-console"></a>

Per completare questa procedura, sarà necessario il nome dell'oggetto policy.

**Per collegare un oggetto policy a un certificato registrato**

1. Accedi alla console di AWS gestione e apri la [AWS IoT console](https://console.aws.amazon.com/iot/home).

1. Nel riquadro di navigazione di sinistra, scegliere **Secure (Sicurezza)**, quindi **Certificates (Certificati)**.

1. Nell'elenco dei certificati individuare il certificato a cui si desidera collegare una policy, aprire il menu delle opzioni del certificato scegliendo l'icona con i puntini di sospensione e scegliere **Collega policy**. 

1. Nella finestra popup individua il nome della policy che desideri collegare al certificato, scegli la relativa casella di controllo e scegli **Attach (Collega)**.

L'oggetto policy dovrebbe ora essere visualizzato nell'elenco delle policy nella pagina dei dettagli del certificato.

## Collegare un oggetto a un certificato client (CLI)
<a name="attach-to-cert-thing-cli"></a>

 AWS CLI Fornisce il [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/attach-thing-principal.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/attach-thing-principal.html)comando per allegare un oggetto a un certificato.

```
aws iot attach-thing-principal \
    --principal certificateArn \
    --thing-name thingName
```

## Collegare una policy a un certificato client (CLI)
<a name="attach-to-cert-policy-cli"></a>

 AWS CLI Fornisce il [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/attach-policy.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/attach-policy.html)comando per allegare un oggetto di policy a un certificato.

```
aws iot attach-policy \
    --target certificateArn \
    --policy-name policyName
```

# Revocare un certificato client
<a name="revoke-ca-cert"></a>

Se rilevi un'attività sospetta in un certificato client registrato, puoi revocarlo in modo che non possa essere utilizzato nuovamente.

**Nota**  
Dopo che un certificato è stato revocato, il suo stato non può essere modificato. Ovvero, lo stato del certificato non può essere modificato in `Active` o in qualsiasi altro stato.

## Revocare un certificato client (console)
<a name="revoke-device-cert-console"></a>

**Per revocare un certificato client utilizzando la console AWS IoT**

1. [Accedi alla console di AWS gestione e apri la AWS IoT console.](https://console.aws.amazon.com/iot/home)

1. Nel riquadro di navigazione di sinistra, scegliere **Secure (Sicurezza)**, quindi **Certificates (Certificati)**.

1. Nell'elenco dei certificati individuare il certificato che si desidera revocare e aprire il menu delle opzioni utilizzando l'icona con i puntini di sospensione.

1. Nel menu delle opzioni, scegliere **Revoke (Revoca)**.

Se il certificato viene revocato correttamente, è visualizzato come **Revoked (Revocato)** nell'elenco dei certificati.

## Revocare un certificato client (CLI)
<a name="revoke-device-cert-cli"></a>

 AWS CLI Fornisce il [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-certificate.html)comando per revocare un certificato.

```
aws iot update-certificate \
    --certificate-id certificateId \
    --new-status REVOKED
```

Se il comando ha esito positivo, lo stato del certificato è `REVOKED`. Eseguire [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-certificate.html) per visualizzare lo stato del certificato.

```
aws iot describe-certificate \
    --certificate-id certificateId
```

# Trasferire un certificato a un altro account
<a name="transfer-cert"></a>

I certificati X.509 che appartengono a uno Account AWS possono essere trasferiti a un altro. Account AWS

**Per trasferire un certificato X.509 da uno all'altro Account AWS**

1. [Avviare un trasferimento di certificato](#transfer-cert-init)

   Il certificato deve essere disattivato e scollegato da tutti le policy e gli oggetti prima di avviare il trasferimento.

1. [Accettare o rifiutare un trasferimento di certificato](#transfer-cert-accept)

   L'account ricevente deve accettare o rifiutare esplicitamente il certificato trasferito. Dopo che l'account ricevente ha accettato il certificato, il certificato deve essere attivato prima dell'uso.

1. [Annullamento di un trasferimento di certificato](#transfer-cert-cancel)

   L'account di origine può annullare un trasferimento, se il certificato non è stato accettato.

## Avviare un trasferimento di certificato
<a name="transfer-cert-init"></a>

È possibile iniziare a trasferire un certificato a un altro Account AWS utilizzando la [AWS IoT console](https://console.aws.amazon.com/iot/home) o il. AWS CLI

### Avviare un trasferimento di certificato (console)
<a name="transfer-cert-init-console"></a>

Per completare questa procedura, è necessario l'ID del certificato che vuoi trasferire.

Esegui questa procedura dall'account con il certificato da trasferire.

**Per iniziare a trasferire un certificato a un altro Account AWS**

1. Accedi alla console di AWS gestione e apri la [AWS IoT console](https://console.aws.amazon.com/iot/home).

1. Nel riquadro di navigazione di sinistra, scegliere **Secure (Sicurezza)**, quindi **Certificates (Certificati)**.

   Scegli il certificato con uno stato **Active (Attivo)** o **Inactive (Inattivo)** da trasferire e aprine la pagina dettagli.

1. Nella pagina **Details** (Dettagli) del certificato, nel menu **Actions** (Operazioni), se l'opzione **Deactivate** (Disattiva) è disponibile, selezionala per disattivare il certificato.

1. Sulla pagina **Details (Dettagli)** del certificato, seleziona **Policies (Policy)** nel menu di sinistra.

1. Se sulla pagina **Policies (Policy)** del certificato sono presenti delle policy allegate al certificato, scollegali aprendo il menu delle opzioni delle policy e scegliendo **Detach (Distacca)**.

   Prima di continuare, verifica che al certificato non siano collegate policy.

1. Sul menu a sinistra della pagina **Policies (Policy)** del certificato seleziona **Things (Oggetti)**.

1. Se sulla pagina **Things (Oggetti)** del certificato ci sono oggetti allegati al certificato, scollegali aprendo il menu delle opzioni dell'oggetto e scegliendo **Detach (Distacca)**.

   Prima di continuare, il certificato non deve essere collegato a nessun oggetto.

1. Sulla pagina **Things (Oggetti)** del certificato, nel menu a sinistra seleziona **Details (Dettagli)**.

1. Nella pagina **Details** (Dettagli) del certificato, nel menu **Actions** (Operazioni), scegli **Start transfer** (Avvia trasferimento) per aprire la relativa finestra di dialogo.

1. Nella finestra di dialogo **Avvia trasferimento**, inserisci il Account AWS numero dell'account per ricevere il certificato e un breve messaggio opzionale.

1. Scegli **Start transfer (Avvio del trasferimento)** per trasferire il certificato.

La console dovrebbe visualizzare un messaggio che indica l'esito o il fallimento del trasferimento. Se il trasferimento è stato avviato, lo stato del certificato viene aggiornato a **Transferred (Trasferimento)**.

### Avviare un trasferimento di certificati (CLI)
<a name="transfer-cert-init-cli"></a>

Per completare questa procedura, avrai bisogno *certificateArn* dell'*certificateId*e del certificato che desideri trasferire.

Esegui questa procedura dall'account con il certificato da trasferire.

**Per iniziare a trasferire un certificato su un altro AWS account**

1. Utilizza il comando [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/update-certificate.html) per disattivare il certificato.

   ```
   aws iot update-certificate --certificate-id certificateId --new-status INACTIVE
   ```

1. Scollega tutte le policy.

   1. Utilizza il comando [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/list-attached-policies.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/list-attached-policies.html) per elencare le policy collegate al certificato.

      ```
      aws iot list-attached-policies --target certificateArn
      ```

   1. Per ogni policy allegata, utilizza il comando [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/detach-policy.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/detach-policy.html) per scollegare la policy.

      ```
      aws iot detach-policy --target certificateArn --policy-name policy-name
      ```

1. Scollega tutti gli oggetti.

   1. Utilizza il comando [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/list-principal-things.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/list-principal-things.html) per fare una lista delle cose collegate al certificato.

      ```
      aws iot list-principal-things --principal certificateArn
      ```

   1. Utilizza il comando [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/detach-thing-principal.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/detach-thing-principal.html) per scollegare ogni oggetto allegato.

      ```
      aws iot detach-thing-principal --principal certificateArn --thing-name thing-name
      ```

1. Utilizza il comando [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/transfer-certificate.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/transfer-certificate.html) per avviare il trasferimento del certificato.

   ```
   aws iot transfer-certificate --certificate-id certificateId --target-aws-account account-id
   ```

## Accettare o rifiutare un trasferimento di certificato
<a name="transfer-cert-accept"></a>

È possibile accettare o rifiutare un certificato trasferito Account AWS da un altro utente Account AWS utilizzando la [AWS IoT console](https://console.aws.amazon.com/iot/home) o il AWS CLI.

### Accettare o rifiutare un trasferimento di certificato (console)
<a name="transfer-cert-accept-console"></a>

Per completare questa procedura, è necessario l'ID del certificato trasferito nel tuo account.

Eseguire questa procedura dall'account che riceve il certificato trasferito.

**Per accettare o rifiutare un certificato che è stato trasferito su Account AWS**

1. Accedi alla console di AWS gestione e apri la [AWS IoT console](https://console.aws.amazon.com/iot/home).

1. Nel riquadro di navigazione di sinistra, scegliere **Secure (Sicurezza)**, quindi **Certificates (Certificati)**.

   Scegli il certificato con lo stato **Pending transfer (Trasferimento in sospeso)** per accettare o rifiutare e aprirne la pagina dettagli.

1. Sulla pagina **Details (Dettagli)** del certificato, nel menu **Actions (Operazioni)**,
   + Per accettare il certificato, scegli **Accept transfer (Accetta il trasferimento)**.
   + Per non accettare il certificato, scegli **Reject transfer (Rifiuta del trasferimento)**.

### Accettare o rifiutare un trasferimento di certificato (CLI)
<a name="transfer-cert-accept-cli"></a>

Per completare questa procedura, è necessario il trasferimento *certificateId* del certificato che si desidera accettare o rifiutare.

Eseguire questa procedura dall'account che riceve il certificato trasferito.

**Per accettare o rifiutare un certificato che è stato trasferito al tuo Account AWS**

1. Per accettare il certificato, utilizza il comando [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/accept-certificate-transfer.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/accept-certificate-transfer.html).

   ```
   aws iot accept-certificate-transfer --certificate-id certificateId
   ```

1. Per rifiutare il certificato, utilizza il comando [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/reject-certificate-transfer.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/reject-certificate-transfer.html).

   ```
   aws iot reject-certificate-transfer --certificate-id certificateId
   ```

## Annullamento di un trasferimento di certificato
<a name="transfer-cert-cancel"></a>

È possibile annullare un trasferimento di certificato prima che sia stato accettato utilizzando la [console AWS IoT](https://console.aws.amazon.com/iot/home) o l' AWS CLI.

### Annullamento di un trasferimento di certificato (console)
<a name="transfer-cert-cancel-console"></a>

Per completare questa procedura, è necessario l'ID del certificato che vuoi cancellare.

Esegui questa procedura dall'account che ha avviato il trasferimento del certificato.

**Annullamento di un trasferimento di certificato**

1. Accedi alla console di AWS gestione e apri la [AWS IoT console](https://console.aws.amazon.com/iot/home).

1. Nel riquadro di navigazione di sinistra, scegliere **Secure (Sicurezza)**, quindi **Certificates (Certificati)**.

   Scegli il certificato con lo stato **Transferred (Trasferimento)** di cui si desidera annullare il trasferimento e apri il menu delle opzioni.

1. Nel menu delle opzioni del certificato, scegli l'opzione **Revoke transfer (Revoca del trasferimento)** per annullare il trasferimento del certificato.
**Importante**  
Fai attenzione a non confondere **Revoke transfer (Revoca del trasferimento)** con l'opzione **Revoke (Revoca)**.  
La **Revoke transfer (Revoca del trasferimento)** annulla il trasferimento del certificato, mentre l'opzione **Revoke (Revoca)** rende il certificato irreversibilmente inutilizzabile da AWS IoT. 

### Annullamento di un trasferimento di certificato (CLI)
<a name="transfer-cert-cancel-cli"></a>

Per completare questa procedura, avrai bisogno *certificateId* del trasferimento del certificato che desideri annullare.

Esegui questa procedura dall'account che ha avviato il trasferimento del certificato.

Utilizza il comando [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/cancel-certificate-transfer.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/cancel-certificate-transfer.html) per annullare il trasferimento del certificato.

```
aws iot cancel-certificate-transfer --certificate-id certificateId
```

# Convalida personalizzata del certificato del cliente
<a name="customize-client-auth"></a>

AWS IoT Core supporta la convalida personalizzata dei certificati client per i certificati client X.509, che migliora la gestione dell'autenticazione dei client. Questo metodo di convalida dei certificati è noto anche come controllo dei certificati di preautenticazione, in cui si valutano i certificati client in base a criteri personalizzati (definiti in una funzione Lambda) e si revocano i certificati client o il certificato dell'autorità di certificazione (CA) di firma dei certificati per impedire ai client di connettersi. AWS IoT Core Ad esempio, è possibile creare controlli di revoca dei certificati personalizzati che convalidano lo stato dei certificati rispetto alle autorità di convalida che supportano gli endpoint [OCSP (Online Certificate Status Protocol)](https://en.wikipedia.org/wiki/Online_Certificate_Status_Protocol) o [Certificate Revocation Lists (CRL)](https://en.wikipedia.org/wiki/Certificate_revocation_list) e impediscono le connessioni per i client con certificati revocati. I criteri utilizzati per valutare i certificati client sono definiti in una funzione Lambda (nota anche come Lambda di preautenticazione). È necessario utilizzare gli endpoint impostati nelle configurazioni di dominio e il [tipo di autenticazione](protocols.md#connection-protocol-auth-mode) deve essere un certificato X.509. Inoltre, i client devono fornire l'estensione [SNI (Server Name Indication)](https://www.rfc-editor.org/rfc/rfc3546#section-3.1) durante la connessione a. AWS IoT Core

**Nota**  
Questa funzionalità non è supportata nelle AWS GovCloud (US) regioni.

**Topics**
+ [Fase 1: Registrare i certificati client X.509 con AWS IoT Core](#client-auth-cert-verification)
+ [Passaggio 2: creazione di una funzione Lambda](#customize-client-auth-lambda)
+ [Fase 3: AWS IoT Autorizza a richiamare la funzione Lambda](#customize-client-configuration-grant-permission)
+ [Fase 4: Impostare la configurazione di autenticazione per un dominio](#customize-client-configuration)

## Fase 1: Registrare i certificati client X.509 con AWS IoT Core
<a name="client-auth-cert-verification"></a>

Se non l'hai già fatto, registra e attiva i certificati client [X.509](https://docs.aws.amazon.com//iot/latest/developerguide/x509-client-certs.html) con. AWS IoT Core Altrimenti, passare alla fase successiva.

Per registrare e attivare i certificati client con AWS IoT Core, procedi nel seguente modo:

1. Se [crei certificati client direttamente con AWS IoT](https://docs.aws.amazon.com//iot/latest/developerguide/device-certs-create.html). Questi certificati client verranno registrati automaticamente con AWS IoT Core.

1. Se [crei i tuoi certificati client](https://docs.aws.amazon.com//iot/latest/developerguide/device-certs-your-own.html), segui [queste istruzioni per registrarli AWS IoT Core](https://docs.aws.amazon.com//iot/latest/developerguide/register-device-cert.html).

1. Per attivare i certificati client, segui [queste istruzioni](https://docs.aws.amazon.com//iot/latest/developerguide/activate-or-deactivate-device-cert.html).

## Passaggio 2: creazione di una funzione Lambda
<a name="customize-client-auth-lambda"></a>

È necessario creare una funzione Lambda che esegua la verifica del certificato e venga chiamata per ogni tentativo di connessione del client per l'endpoint configurato. Quando crei questa funzione Lambda, segui le indicazioni generali di [Crea la tua prima funzione Lambda](https://docs.aws.amazon.com//lambda/latest/dg/getting-started.html). Inoltre, assicurati che la funzione Lambda aderisca ai formati di richiesta e risposta previsti come segue:

**Esempio di evento della funzione Lambda**

```
{
	"connectionMetadata": {
		"id": "string"
	},
	"principalId": "string",
	"serverName": "string",
	"clientCertificateChain": [
		"string",
		"string"
	]
}
```

`connectionMetadata`  
Metadati o informazioni aggiuntive relative alla connessione del client a. AWS IoT Core

`principalId`  
L'identificatore principale associato al client nella connessione TLS.

`serverName`  
La stringa del [nome host SNI (Server Name Indication).](https://www.rfc-editor.org/rfc/rfc3546#section-3.1) AWS IoT Core richiede che i dispositivi inviino l'[estensione SNI](https://www.rfc-editor.org/rfc/rfc3546#section-3.1) al protocollo Transport Layer Security (TLS) e forniscano l'indirizzo completo dell'endpoint sul campo. `host_name`

`clientCertificateChain`  
L'array di stringhe che rappresenta la catena di certificati X.509 del client. 

**Esempio di risposta alla funzione Lambda**

```
{
	"isAuthenticated": "boolean"
}
```

`isAuthenticated`  
Un valore booleano che indica se la richiesta è autenticata.

**Nota**  
Nella risposta Lambda, `isAuthenticated` deve essere necessario procedere `true` all'ulteriore autenticazione e autorizzazione. In caso contrario, il certificato client IoT può essere disabilitato e l'autenticazione personalizzata con certificati client X.509 può essere bloccata per ulteriori autenticazioni e autorizzazioni.

## Fase 3: AWS IoT Autorizza a richiamare la funzione Lambda
<a name="customize-client-configuration-grant-permission"></a>

[Dopo aver creato la funzione Lambda, è necessario concedere l'autorizzazione AWS IoT per richiamarla utilizzando il comando CLI add-permission.](https://docs.aws.amazon.com//cli/latest/reference/lambda/add-permission.html) Nota che questa funzione Lambda verrà richiamata per ogni tentativo di connessione all'endpoint configurato. Per ulteriori informazioni, consulta [Autorizzazione AWS IoT a richiamare la funzione Lambda](custom-auth-authorize.md).

## Fase 4: Impostare la configurazione di autenticazione per un dominio
<a name="customize-client-configuration"></a>

La sezione seguente descrive come impostare la configurazione di autenticazione per un dominio personalizzato utilizzando AWS CLI.

### Imposta la configurazione del certificato client per un dominio (CLI)
<a name="customize-client-auth-cli"></a>

Se non disponi di una configurazione di dominio, usa il comando [https://docs.aws.amazon.com//cli/latest/reference/iot/create-domain-configuration.html](https://docs.aws.amazon.com//cli/latest/reference/iot/create-domain-configuration.html)CLI per crearne una. Se disponi già di una configurazione di dominio, utilizza il comando [https://docs.aws.amazon.com//cli/latest/reference/iot/update-domain-configuration.html](https://docs.aws.amazon.com//cli/latest/reference/iot/update-domain-configuration.html)CLI per aggiornare la configurazione del certificato client per un dominio. È necessario aggiungere l'ARN della funzione Lambda creata nel passaggio precedente.

```
aws iot create-domain-configuration \
    --domain-configuration-name domainConfigurationName \
    --authentication-type AWS_X509|CUSTOM_AUTH_X509 \
    --application-protocol SECURE_MQTT|HTTPS \
    --client-certificate-config 'clientCertificateCallbackArn":"arn:aws:lambda:us-east-2:123456789012:function:my-function:1"}'
```

```
aws iot update-domain-configuration \
    --domain-configuration-name domainConfigurationName \
    --authentication-type AWS_X509|CUSTOM_AUTH_X509 \
    --application-protocol SECURE_MQTT|HTTPS \
    --client-certificate-config '{"clientCertificateCallbackArn":"arn:aws:lambda:us-east-2:123456789012:function:my-function:1"}'
```

`domain-configuration-name`  
Il nome della configurazione di dominio.

`authentication-type`  
Il tipo di autenticazione della configurazione del dominio. Per ulteriori informazioni, vedi [Scelta del tipo di autenticazione](protocols.md#connection-protocol-auth-mode).

`application-protocol`  
Il protocollo applicativo con cui i dispositivi comunicano AWS IoT Core. Per ulteriori informazioni, vedere [Scelta di un protocollo applicativo](protocols.md#protocol-selection).

`client-certificate-config`  
Un oggetto che specifica la configurazione di autenticazione del client per un dominio.

`clientCertificateCallbackArn`  
L'Amazon Resource Name (ARN) della funzione Lambda che AWS IoT richiama il livello TLS quando viene stabilita una nuova connessione. Per personalizzare l'autenticazione client per eseguire la convalida personalizzata del certificato client, devi aggiungere l'ARN della funzione Lambda che hai creato nel passaggio precedente.

*Per ulteriori informazioni, consulta [CreateDomainConfiguration](https://docs.aws.amazon.com//iot/latest/apireference/API_CreateDomainConfiguration.html)e utilizza l'AWS IoT API [UpdateDomainConfiguration](https://docs.aws.amazon.com//iot/latest/apireference/API_UpdateDomainConfiguration.html)Reference.* Per ulteriori informazioni sulle configurazioni dei domini, consulta Configurazioni dei [domini](https://docs.aws.amazon.com//iot/latest/developerguide/iot-custom-endpoints-configurable.html).

# Utenti, gruppi e ruoli IAM
<a name="iam-users-groups-roles"></a>

Gli utenti, i gruppi e i ruoli IAM; sono i meccanismi standard per la gestione di identità e autenticazione nei servizi AWS. Puoi usarli per connetterti alle interfacce AWS IoT HTTP utilizzando l' AWS SDK e. AWS CLI

I ruoli IAM consentono inoltre AWS IoT di accedere ad altre AWS risorse del tuo account per tuo conto. Ad esempio, se desideri che un dispositivo pubblichi il suo stato su una tabella DynamoDB, i ruoli IAM AWS IoT consentono di interagire con Amazon DynamoDB. Per ulteriori informazioni, consulta [IAM Roles](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use.html) (Ruoli IAM).

Per le connessioni ai broker di messaggi tramite HTTP, AWS IoT autentica utenti, gruppi e ruoli utilizzando il processo di firma Signature Version 4. Per informazioni, consulta [Firmare le richieste AWS API](https://docs.aws.amazon.com/general/latest/gr/signing_aws_api_requests.html).

Quando si utilizza AWS Signature Version 4 con AWS IoT, i client devono supportare quanto segue nella loro implementazione TLS:
+ TLS 1.2
+ Convalida della firma dei certificati SHA-256 RSA.
+ Uno dei pacchetti di crittografia indicati nella sezione relativa ai pacchetti di crittografia TLS supportati.

Per informazioni, consulta [Gestione delle identità e degli accessi per AWS IoT](security-iam.md).

# Identità Amazon Cognito
<a name="cognito-identities"></a>

Amazon Cognito Identity ti consente di creare AWS credenziali temporanee con privilegi limitati da utilizzare in applicazioni mobili e Web. Quando usi Amazon Cognito Identity, crea pool di identità che creano identità uniche per i tuoi utenti e autenticali con provider di identità come Login with Amazon, Facebook e Google. È inoltre possibile utilizzare le identità Amazon Cognito con identità autenticate dallo sviluppatore. Per ulteriori informazioni, consulta [ Amazon Cognito Identity](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-identity.html).

Per utilizzare Amazon Cognito Identity, definisci un pool di identità Amazon Cognito associato a un ruolo IAM. Il ruolo IAM è associato a una policy IAM che concede alle identità del tuo pool di identità l'autorizzazione ad accedere a AWS risorse come i servizi di chiamata. AWS 

Amazon Cognito Identity crea identità non autenticate e autenticate. Le identità non autenticate vengono utilizzate per gli utenti guest di un'applicazione mobile o Web che desiderano utilizzare l'app senza accedere. Agli utenti non autenticati vengono concesse solo le autorizzazioni specificate nelle policy IAM associate al pool di identità.

Quando utilizzi identità autenticate, oltre alla policy IAM associata al pool di identità, devi allegare una AWS IoT policy a un'identità Amazon Cognito. Per allegare una AWS IoT policy, usa l'[ AttachPolicy](https://docs.aws.amazon.com/iot/latest/apireference/API_AttachPolicy.html)API e concedi le autorizzazioni a un singolo utente della tua applicazione. AWS IoT Puoi utilizzare la AWS IoT policy per assegnare autorizzazioni dettagliate a clienti specifici e ai relativi dispositivi.

Gli utenti autenticati e non autenticati sono diversi tipi di identità. Se non alleghi una AWS IoT policy all'identità di Amazon Cognito, un utente autenticato non ottiene l'autorizzazione AWS IoT e non ha accesso a AWS IoT risorse e azioni. Per ulteriori informazioni sulla creazione di policy per le identità Amazon Cognito, consulta [Esempi di policy di pubblicazione/sottoscrizione](pub-sub-policy.md) e [Autorizzazione con identità Amazon Cognito](cog-iot-policies.md).

![\[Applicazione che accede a un dispositivo con Amazon Cognito Identity.\]](http://docs.aws.amazon.com/it_it/iot/latest/developerguide/images/device-cognito.png)


# Autenticazione e autorizzazione personalizzata
<a name="custom-authentication"></a>

 AWS IoT Core consente di definire autorizzatori personalizzati in modo da poter gestire l'autenticazione e l'autorizzazione dei client. Ciò è utile quando è necessario utilizzare meccanismi di autenticazione diversi da quelli supportati AWS IoT Core nativamente. (Per ulteriori informazioni sui meccanismi supportati in modo nativo, consulta [Autenticazione client](client-authentication.md)).  

 Ad esempio, se state migrando dispositivi esistenti sul campo verso AWS IoT Core e questi dispositivi utilizzano un token bearer personalizzato o un nome utente e una password MQTT per l'autenticazione, potete migrarli AWS IoT Core senza dover fornire loro nuove identità. È possibile utilizzare l'autenticazione personalizzata con tutti i protocolli di comunicazione supportati. AWS IoT Core Per ulteriori informazioni sui protocolli supportati da AWS IoT Core , consulta [Protocolli di dispositivo di comunicazione](protocols.md). 

**Topics**
+ [Informazioni sul flusso di lavoro di autenticazione personalizzato](custom-authorizer.md)
+ [Creazione e gestione di autorizzazioni personalizzate (CLI)](config-custom-auth.md)
+ [Autenticazione personalizzata con certificati client X.509](custom-auth-509cert.md)
+ [Connessione a AWS IoT Core tramite autenticazione personalizzata](custom-auth.md)
+ [Risoluzione dei problemi relativi agli autorizzatori](custom-auth-troubleshooting.md)

# Informazioni sul flusso di lavoro di autenticazione personalizzato
<a name="custom-authorizer"></a>

L'autenticazione personalizzata consente di definire come autenticare e autorizzare i client utilizzando le [risorse dell'autorizzatore](https://docs.aws.amazon.com/iot/latest/apireference/API_AuthorizerDescription.html).  Ogni autorizzatore contiene un riferimento a una funzione Lambda gestita dal cliente, una chiave pubblica opzionale per la convalida delle credenziali del dispositivo e informazioni di configurazione aggiuntive. Il diagramma seguente illustra il flusso di lavoro di autorizzazione per l'autenticazione personalizzata in. AWS IoT Core

![\[Flusso di lavoro di autorizzazione personalizzato per l'autenticazione personalizzata in. AWS IoT Core\]](http://docs.aws.amazon.com/it_it/iot/latest/developerguide/images/custom-authentication.png)


## AWS IoT Core flusso di lavoro di autenticazione e autorizzazione personalizzato
<a name="custom-authentication-workflow"></a>

Nell'elenco seguente viene illustrato ogni passaggio del flusso di lavoro di autenticazione e autorizzazione personalizzata.

1. Un dispositivo si connette all'endpoint di AWS IoT Core dati di un cliente utilizzando uno dei dispositivi supportati[Protocolli di dispositivo di comunicazione](protocols.md). Il dispositivo passa le credenziali nei campi di intestazione o nei parametri di query della richiesta (per i WebSockets protocolli HTTP Publish o MQTT over) o nel campo nome utente e password del messaggio MQTT CONNECT (per i protocolli MQTT e MQTT over). WebSockets 

1. AWS IoT Core verifica una delle due condizioni:
   + La richiesta in arrivo specifica un autorizzatore.
   + Per l'endpoint di AWS IoT Core dati che riceve la richiesta è configurato un autorizzatore predefinito.

   Se AWS IoT Core trova un autorizzatore in uno di questi modi, AWS IoT Core attiva la funzione Lambda associata all'autorizzatore.

1.  (Facoltativo) Se hai abilitato la firma con token, AWS IoT Core convalida la firma della richiesta utilizzando la chiave pubblica memorizzata nell'autorizzatore prima di attivare la funzione Lambda. Se la convalida non riesce, AWS IoT Core interrompe la richiesta senza invocare la funzione Lambda.  

1. La funzione Lambda riceve le credenziali e i metadati di connessione nella richiesta e prende una decisione di autenticazione.

1. La funzione Lambda restituisce i risultati della decisione di autenticazione e un documento di AWS IoT Core policy che specifica quali azioni sono consentite nella connessione. La funzione Lambda restituisce anche informazioni che specificano la frequenza di AWS IoT Core riconvalida delle credenziali nella richiesta richiamando la funzione Lambda.

1. AWS IoT Core valuta l'attività sulla connessione rispetto alla policy ricevuta dalla funzione Lambda.

1. Dopo aver stabilito la connessione e richiamato inizialmente l'autorizzatore personalizzato Lambda, la chiamata successiva può essere ritardata fino a 5 minuti su connessioni inattive senza alcuna operazione MQTT. Dopodiché, le chiamate successive seguiranno l'intervallo di aggiornamento nell'autorizzatore personalizzato Lambda. Questo approccio può prevenire invocazioni eccessive che potrebbero superare il limite di concorrenza Lambda del tuo. Account AWS

## Considerazioni sul dimensionamento
<a name="custom-authentication-scaling"></a>

 Poiché una funzione Lambda gestisce l'autenticazione e l'autorizzazione per l'autorizzatore, la funzione è soggetta ai prezzi e ai limiti del servizio Lambda, ad esempio la frequenza di esecuzione simultanea. Per ulteriori informazioni sui prezzi Lambda, consulta [Prezzi Lambda](https://aws.amazon.com/lambda/pricing/). È possibile gestire il carico sulla funzione Lambda regolando `refreshAfterInSeconds` e `disconnectAfterInSeconds` nella risposta della funzione Lambda. Per ulteriori informazioni sui contenuti della risposta della funzione Lambda, consulta [Scrittura della funzione Lambda](custom-auth-lambda.md).

**Nota**  
Se si lascia abilitata la firma, è possibile impedire l'attivazione eccessiva di Lambda da parte di client non riconosciuti. Consideralo prima di disabilitare l'accesso all'autorizzatore.

**Nota**  
Il limite di timeout della funzione Lambda per l'autorizzatore personalizzato è di 5 secondi.

# Creazione e gestione di autorizzazioni personalizzate (CLI)
<a name="config-custom-auth"></a>

AWS IoT Core implementa schemi di autenticazione e autorizzazione personalizzati utilizzando autorizzatori personalizzati. Un autorizzatore personalizzato è una AWS IoT Core risorsa che offre la flessibilità necessaria per definire e implementare le regole e le politiche in base ai requisiti specifici. Per creare un autorizzatore personalizzato con step-by-step istruzioni, vedi [Tutorial: Creazione di un autorizzatore personalizzato](https://docs.aws.amazon.com//iot/latest/developerguide/custom-auth-tutorial.html) per. AWS IoT Core

Ogni autorizzatore è costituito dai seguenti componenti: 
+  *Nome*: stringa univoca definita dall'utente che identifica l'autorizzatore.
+  *ARN della funzione Lambda*: L'Amazon Resource Name (ARN) della funzione Lambda che implementa la logica di autorizzazione e di autenticazione.  
+  *Nome della chiave dei token*: Il nome della chiave utilizzato per estrarre il token dalle intestazioni HTTP, dai parametri di query o dal nome utente MQTT CONNECT per eseguire la convalida della firma. Questo valore è obbligatorio se la firma è abilitata nell'autorizzazione. 
+  *Contrassegno di firma disabilitato (facoltativo)*: valore booleano che specifica se disattivare il requisito di firma sulle credenziali. Ciò è utile per gli scenari in cui la firma delle credenziali non ha senso, ad esempio gli schemi di autenticazione che utilizzano il nome utente e la password MQTT. Il valore predefinito è `false`, pertanto la firma è abilitata per impostazione predefinita. 
+  *Chiave pubblica per la firma di token*: chiave pubblica utilizzata da AWS IoT Core per convalidare la firma del token. La sua lunghezza minima è di 2.048 bit. Questo valore è obbligatorio se la firma è abilitata nell'autorizzatore.  

Lambda addebita per il numero di volte in cui la tua funzione Lambda viene eseguita e per il tempo necessario per l'esecuzione del codice nella funzione. Per maggiori informazioni sui prezzi di Lambda consulta [Prezzi Lambda](https://aws.amazon.com/lambda/pricing/). Per ulteriori informazioni sulla creazione di funzioni Lambda, consulta [Guida per gli sviluppatori di Lambda](https://docs.aws.amazon.com/lambda/latest/dg/).

**Nota**  
Se si lascia abilitata la firma, è possibile impedire l'attivazione eccessiva di Lambda da parte di client non riconosciuti. Consideralo prima di disabilitare l'accesso nel tuo autorizzatore.

**Nota**  
Il limite di timeout della funzione Lambda per l'autorizzatore personalizzato è di 5 secondi.

**Topics**
+ [Scrittura della funzione Lambda](custom-auth-lambda.md)
+ [Creazione di un autorizzatore](custom-auth-create-authorizer.md)
+ [Autorizzazione AWS IoT a richiamare la funzione Lambda](custom-auth-authorize.md)
+ [Verificare le autorizzazioni](custom-auth-testing.md)
+ [Gestione degli autorizzatori personalizzati](custom-auth-manage.md)

# Scrittura della funzione Lambda
<a name="custom-auth-lambda"></a>

 Quando AWS IoT Core richiama l'autorizzatore, attiva la Lambda associata all'autorizzatore con un evento che contiene il seguente oggetto JSON. L'oggetto JSON di esempio contiene tutti i campi possibili. I campi non rilevanti per la richiesta di connessione non sono inclusi.

```
{
    "token" :"aToken",
    "signatureVerified": Boolean, // Indicates whether the device gateway has validated the signature.
    "protocols": ["tls", "http", "mqtt"], // Indicates which protocols to expect for the request.
    "protocolData": {
        "tls" : {
            "serverName": "serverName" // The server name indication (SNI) host_name string.
        },
        "http": {
            "headers": {
                "#{name}": "#{value}"
            },
            "queryString": "?#{name}=#{value}"
        },
        "mqtt": {
            "username": "myUserName",
            "password": "myPassword", // A base64-encoded string.
            "clientId": "myClientId" // Included in the event only when the device sends the value.
        }
    },
    "connectionMetadata": {
        "id": UUID // The connection ID. You can use this for logging.
    },
}
```

 La funzione Lambda deve utilizzare queste informazioni per autenticare la connessione in ingresso e decidere quali azioni sono consentite nella connessione. La funzione deve inviare una risposta che contiene i seguenti valori. 
+  `isAuthenticated`: valore booleano che indica se la richiesta è stata autenticata.
+  `principalId`: Una stringa alfanumerica che funge da identificatore per il token inviato dalla richiesta di autorizzazione personalizzata. Il valore deve essere una stringa alfanumerica con almeno uno e non più di 128 caratteri e corrisponde a questo pattern di espressione regolare (regex):`([a-zA-Z0-9]){1,128}`. I caratteri speciali che non sono alfanumerici non possono essere utilizzati con l'in. `principalId` AWS IoT Core Consultate la documentazione relativa agli altri AWS servizi se sono consentiti caratteri speciali non alfanumerici per. `principalId`
+  `policyDocuments`: Un elenco di documenti relativi alle policy in formato JSON Per ulteriori informazioni sulla creazione di AWS IoT Core policy, vedere. AWS IoT Core [AWS IoT Core politiche](iot-policies.md) Il numero massimo di documenti di policy è di 10. Ogni documento di policy può contenere un massimo di 2.048 caratteri.
+  `disconnectAfterInSeconds`: numero intero che specifica la durata massima (in secondi) della connessione al gateway di AWS IoT Core . Il valore minimo è 300 secondi e il valore massimo è 86400 secondi. Il valore predefinito è 86.400.
**Nota**  
Il valore di `disconnectAfterInSeconds` (restituito dalla funzione Lambda) viene impostato quando viene stabilita la connessione. Questo valore non può essere modificato durante le successive chiamate Lambda di aggiornamento delle policy.
+  `refreshAfterInSeconds`: numero intero che specifica l'intervallo tra gli aggiornamenti delle policy. Passato questo intervallo, AWS IoT Core richiama la funzione Lambda per consentire gli aggiornamenti delle policy. Il valore minimo è 300 secondi e il valore massimo è 86400 secondi. 

  Il seguente oggetto JSON contiene un esempio di risposta che la funzione Lambda può inviare. 

 **\$1 "isAuthenticated":true, //A Boolean that determines whether client can connect. "principalId": "xxxxxxxx",  //A string that identifies the connection in logs. "disconnectAfterInSeconds": 86400,  "refreshAfterInSeconds": 300,   "policyDocuments": [       \$1         "Version": "2012-10-17",         "Statement": [            \$1               "Action": "iot:Publish",               "Effect": "Allow",               "Resource": "arn:aws:iot:us-east-1:<your\$1aws\$1account\$1id>:topic/customauthtesting"             \$1          ]        \$1     ] \$1**

 Il `policyDocument` valore deve contenere un documento di policy valido. AWS IoT Core Per ulteriori informazioni sulle AWS IoT Core politiche, vedere[AWS IoT Core politiche](iot-policies.md). In MQTT su TLS e MQTT su WebSockets connessioni, AWS IoT Core memorizza nella cache questa politica per l'intervallo specificato nel valore del campo. `refreshAfterInSeconds` Nel caso di connessioni HTTP, la funzione Lambda viene richiamata per ogni richiesta di autorizzazione a meno che il dispositivo non utilizzi connessioni persistenti HTTP (chiamate anche HTTP keep-alive o riutilizzo della connessione HTTP), è possibile scegliere di abilitare la memorizzazione nella cache durante la configurazione dell'autorizzatore. Durante questo intervallo, AWS IoT Core autorizza le azioni in una connessione stabilita contro questa policy memorizzata nella cache senza attivare nuovamente la funzione Lambda. Se si verificano errori durante l'autenticazione personalizzata, interrompe la connessione. AWS IoT Core AWS IoT Core interrompe inoltre la connessione se è rimasta aperta per un periodo superiore al valore specificato nel parametro. `disconnectAfterInSeconds` 

 Di seguito JavaScript è riportato un esempio di funzione Lambda di Node.js che cerca una password nel messaggio MQTT Connect con un valore `test` di e restituisce un criterio che concede il permesso di connettersi AWS IoT Core a un client `myClientName` denominato e pubblicare su un argomento che contiene lo stesso nome client. Se non trova la password prevista, restituisce una policy che nega queste due operazioni. 

```
// A simple Lambda function for an authorizer. It demonstrates 
// how to parse an MQTT password and generate a response.

exports.handler = function(event, context, callback) { 
    var uname = event.protocolData.mqtt.username;
    var pwd = event.protocolData.mqtt.password;
    var buff = new Buffer(pwd, 'base64');
    var passwd = buff.toString('ascii');
    switch (passwd) { 
        case 'test': 
            callback(null, generateAuthResponse(passwd, 'Allow')); 
            break;
        default: 
            callback(null, generateAuthResponse(passwd, 'Deny'));  
    }
};

// Helper function to generate the authorization response.
var generateAuthResponse = function(token, effect) { 
    var authResponse = {}; 
    authResponse.isAuthenticated = true; 
    authResponse.principalId = 'TEST123'; 
    
    var policyDocument = {}; 
    policyDocument.Version = '2012-10-17';		 	 	 
    policyDocument.Statement = []; 
    var publishStatement = {}; 
    var connectStatement = {};
    connectStatement.Action = ["iot:Connect"];
    connectStatement.Effect = effect;
    connectStatement.Resource = ["arn:aws:iot:us-east-1:123456789012:client/myClientName"];
    publishStatement.Action = ["iot:Publish"]; 
    publishStatement.Effect = effect; 
    publishStatement.Resource = ["arn:aws:iot:us-east-1:123456789012:topic/telemetry/myClientName"]; 
    policyDocument.Statement[0] = connectStatement;
    policyDocument.Statement[1] = publishStatement; 
    authResponse.policyDocuments = [policyDocument]; 
    authResponse.disconnectAfterInSeconds = 3600; 
    authResponse.refreshAfterInSeconds = 300;
    
    return authResponse; 
}
```

 La suddetta funzione Lambda restituisce il seguente JSON quando riceve la password prevista di `test` nel messaggio MQTT Connect. I valori delle proprietà `password` e `principalId` saranno i valori del messaggio MQTT Connect.

```
{
  "password": "password",
  "isAuthenticated": true,
  "principalId": "principalId",
  "policyDocuments": [
    {
      "Version": "2012-10-17",		 	 	 
      "Statement": [
        {
          "Action": "iot:Connect",
          "Effect": "Allow",
          "Resource": "*"
        },
        {
          "Action": "iot:Publish",
          "Effect": "Allow",
          "Resource": "arn:aws:iot:region:accountId:topic/telemetry/${iot:ClientId}"
        },
        {
          "Action": "iot:Subscribe",
          "Effect": "Allow",
          "Resource": "arn:aws:iot:region:accountId:topicfilter/telemetry/${iot:ClientId}"
        },
        {
          "Action": "iot:Receive",
          "Effect": "Allow",
          "Resource": "arn:aws:iot:region:accountId:topic/telemetry/${iot:ClientId}"
        }
      ]
    }
  ],
  "disconnectAfterInSeconds": 3600,
  "refreshAfterInSeconds": 300
}
```

# Creazione di un autorizzatore
<a name="custom-auth-create-authorizer"></a>

 [È possibile creare un autorizzatore utilizzando l'API. CreateAuthorizer](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateAuthorizer.html) L'esempio seguente descrive il comando. 

```
aws iot create-authorizer
--authorizer-name MyAuthorizer
--authorizer-function-arn arn:aws:lambda:us-west-2:<account_id>:function:MyAuthorizerFunction  //The ARN of the Lambda function.
[--token-key-name MyAuthorizerToken //The key used to extract the token from headers.
[--token-signing-public-keys FirstKey=
 "-----BEGIN PUBLIC KEY-----
  [...insert your public key here...] 
  -----END PUBLIC KEY-----"
[--status ACTIVE]
[--tags <value>]
[--signing-disabled | --no-signing-disabled]
```

Puoi utilizzare il parametro `signing-disabled` per disattivare la convalida della firma per ogni chiamata dell'autorizzatore. Si consiglia vivamente di non disattivare la firma a meno che non sia necessario. La convalida della firma ti protegge da invocazioni eccessive della funzione Lambda da dispositivi sconosciuti. Non è possibile aggiornare lo status `signing-disabled` di un autorizzatore dopo averlo creata. Per modificare questo comportamento, è necessario creare un altro autorizzatore personalizzato con un valore diverso per il parametro `signing-disabled`. 

I valori per i parametri `tokenKeyName` e `tokenSigningPublicKeys` sono facoltativi se la firma è stata disabilitata. Sono valori obbligatori se la firma è abilitata. 

Dopo aver creato la funzione Lambda e l'autorizzatore personalizzato, devi concedere esplicitamente al AWS IoT Core servizio l'autorizzazione a richiamare la funzione per tuo conto. Puoi farlo con il seguente comando. 

**Nota**  
L'endpoint IoT predefinito potrebbe non supportare l'utilizzo di autorizzazioni personalizzate con funzioni Lambda. Puoi invece utilizzare le configurazioni di dominio per definire un nuovo endpoint e quindi specificare quell'endpoint per l'autorizzatore personalizzato.

```
aws lambda add-permission --function-name <lambda_function_name>
--principal iot.amazonaws.com --source-arn <authorizer_arn>
--statement-id Id-123 --action "lambda:InvokeFunction"
```

# Autorizzazione AWS IoT a richiamare la funzione Lambda
<a name="custom-auth-authorize"></a>

In questa sezione, concederai l'autorizzazione della risorsa di autorizzazione personalizzata che hai appena creato per eseguire la funzione Lambda. Per concedere l'autorizzazione, è possibile utilizzare il comando dell'interfaccia a riga di comando [add-permission](https://docs.aws.amazon.com//cli/latest/reference/lambda/add-permission.html).

**Concedi l'autorizzazione alla tua funzione Lambda utilizzando il AWS CLI**

1. Una volta inseriti i valori, inserisci il comando seguente. Attenzione: il valore `statement-id` deve essere univoco. Sostituisci `Id-1234` con il valore esatto che hai, altrimenti potresti ricevere un `ResourceConflictException` errore.

   ```
   aws lambda add-permission  \
   --function-name "custom-auth-function" \
   --principal "iot.amazonaws.com" \
   --action "lambda:InvokeFunction" \
   --statement-id "Id-1234" \
   --source-arn authorizerArn
   ```

1. Se il comando viene completato correttamente, restituisce un'istruzione di autorizzazione come questa. È possibile passare alla sezione successiva per testare l'autorizzazione ad hoc.

   ```
   {
       "Statement": "{\"Sid\":\"Id-1234\",\"Effect\":\"Allow\",\"Principal\":{\"Service\":\"iot.amazonaws.com\"},\"Action\":\"lambda:InvokeFunction\",\"Resource\":\"arn:aws:lambda:Region:57EXAMPLE833:function:custom-auth-function\",\"Condition\":{\"ArnLike\":{\"AWS:SourceArn\":\"arn:aws:lambda:Region:57EXAMPLE833:function:custom-auth-function\"}}}"
   }
   ```

   Se il comando non ha esito positivo, restituisce un errore come questo. Dovrai esaminare e correggere l'errore prima di continuare.

   ```
   An error occurred (AccessDeniedException) when calling the AddPermission operation: User: arn:aws:iam::57EXAMPLE833:user/EXAMPLE-1 is not authorized to perform: lambda:AddPer
   mission on resource: arn:aws:lambda:Region:57EXAMPLE833:function:custom-auth-function
   ```

# Verificare le autorizzazioni
<a name="custom-auth-testing"></a>

 Puoi utilizzare l'[TestInvokeAuthorizer](https://docs.aws.amazon.com/iot/latest/apireference/API_TestInvokeAuthorizer.html)API per testare l'invocazione e restituire i valori del tuo autorizzatore. Questa API consente di specificare i metadati del protocollo e di testare la convalida della firma nell'autorizzatore.

Le seguenti schede mostrano come utilizzare per testare l'autorizzatore AWS CLI .

------
#### [ Unix-like ]

```
aws iot test-invoke-authorizer --authorizer-name NAME_OF_AUTHORIZER \
--token TOKEN_VALUE --token-signature TOKEN_SIGNATURE
```

------
#### [ Windows CMD ]

```
aws iot test-invoke-authorizer --authorizer-name NAME_OF_AUTHORIZER ^
--token TOKEN_VALUE --token-signature TOKEN_SIGNATURE
```

------
#### [ Windows PowerShell ]

```
aws iot test-invoke-authorizer --authorizer-name NAME_OF_AUTHORIZER `
--token TOKEN_VALUE --token-signature TOKEN_SIGNATURE
```

------

Il valore del parametro `token-signature` è il token firmato. Per ulteriori informazioni su come modificare questo valore, consulta [Firma del token](custom-auth.md#custom-auth-token-signature).

Se l'autorizzatore accetta un nome utente e una password, puoi trasferire queste informazioni utilizzando il parametro `--mqtt-context`. Nelle seguenti schede viene illustrato come utilizzare l'API `TestInvokeAuthorizer` per inviare un oggetto JSON che contiene un nome utente, una password e un nome client all'autorizzatore personalizzato.

------
#### [ Unix-like ]

```
aws iot test-invoke-authorizer --authorizer-name NAME_OF_AUTHORIZER  \
--mqtt-context '{"username": "USER_NAME", "password": "dGVzdA==", "clientId":"CLIENT_NAME"}'
```

------
#### [ Windows CMD ]

```
aws iot test-invoke-authorizer --authorizer-name NAME_OF_AUTHORIZER  ^
--mqtt-context '{"username": "USER_NAME", "password": "dGVzdA==", "clientId":"CLIENT_NAME"}'
```

------
#### [ Windows PowerShell ]

```
aws iot test-invoke-authorizer --authorizer-name NAME_OF_AUTHORIZER  `
--mqtt-context '{"username": "USER_NAME", "password": "dGVzdA==", "clientId":"CLIENT_NAME"}'
```

------

La password deve essere con codifica base64. Nell'esempio seguente viene illustrato come codificare una password in un ambiente simile a UNIX.

```
echo -n PASSWORD | base64
```

# Gestione degli autorizzatori personalizzati
<a name="custom-auth-manage"></a>

 Puoi gestire i tuoi autorizzatori utilizzando quanto segue. APIs 
+ [ListAuthorizers](https://docs.aws.amazon.com/iot/latest/apireference/API_ListAuthorizers.html): Mostra tutti gli autorizzatori presenti nel tuo account.
+  [DescribeAuthorizer](https://docs.aws.amazon.com/iot/latest/apireference/API_DescribeAuthorizer.html): visualizza le proprietà dell'autorizzatore specificato. Questi valori includono data di creazione, data ultima modifica e altri attributi.
+ [SetDefaultAuthorizer](https://docs.aws.amazon.com/iot/latest/apireference/API_SetDefaultAuthorizer.html): specifica l'autorizzatore predefinito per gli endpoint di dati AWS IoT Core . AWS IoT Core utilizza questo autorizzatore se un dispositivo non trasmette AWS IoT Core le credenziali e non specifica un autorizzatore. Per ulteriori informazioni sull'utilizzo delle AWS IoT Core credenziali, vedere. [Autenticazione client](client-authentication.md)
+ [UpdateAuthorizer](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdateAuthorizer.html): modifica lo stato, il nome della chiave del token o le chiavi pubbliche per l'autorizzatore specificato.
+  [DeleteAuthorizer](https://docs.aws.amazon.com/iot/latest/apireference/API_DeleteAuthorizer.html): elimina l'autorizzatore specificato. 

**Nota**  
 Non è possibile aggiornare i requisiti di firma di un autorizzatore. Ciò significa che non è possibile disabilitare la firma in un autorizzatore esistente che la richiede. Inoltre, non è possibile richiedere la firma a un autorizzatore esistente che non la richiede. 

# Autenticazione personalizzata con certificati client X.509
<a name="custom-auth-509cert"></a>

Quando si collegano dispositivi a AWS IoT Core, sono disponibili più [tipi di autenticazione](protocols.md#connection-protocol-auth-mode). È possibile utilizzare [certificati client X.509](https://docs.aws.amazon.com//iot/latest/developerguide/x509-client-certs.html) che possono essere utilizzati per autenticare le connessioni di client e dispositivi o definire [autorizzatori personalizzati](https://docs.aws.amazon.com//iot/latest/developerguide/custom-authentication.html) per gestire la propria logica di autenticazione e autorizzazione dei client. Questo argomento spiega come utilizzare l'autenticazione personalizzata con i certificati client X.509.

L'utilizzo dell'autenticazione personalizzata con i certificati X.509 può essere utile se hai già autenticato i tuoi dispositivi utilizzando certificati X.509 e desideri eseguire ulteriori convalide e autorizzazioni personalizzate. Ad esempio, se si archiviano i dati dei dispositivi, come i numeri di serie, nel certificato client X.509, dopo aver AWS IoT Core autenticato il certificato client X.509, è possibile utilizzare un autorizzatore personalizzato per identificare dispositivi specifici in base alle informazioni memorizzate nel campo del certificato. CommonName L'utilizzo dell'autenticazione personalizzata con certificati X.509 può migliorare la gestione della sicurezza dei dispositivi durante la connessione dei dispositivi AWS IoT Core e offre maggiore flessibilità nella gestione della logica di autenticazione e autorizzazione. AWS IoT Core [https://docs.aws.amazon.com//iot/latest/developerguide/mqtt.html](https://docs.aws.amazon.com//iot/latest/developerguide/mqtt.html) [Per ulteriori informazioni sui tipi di autenticazione e sui protocolli applicativi supportati dagli endpoint dei dispositivi, vedere Protocolli di comunicazione dei AWS IoT Core dispositivi.](https://docs.aws.amazon.com//iot/latest/developerguide/protocols.html)

**Nota**  
L'autenticazione personalizzata con certificati client X.509 non è supportata nelle regioni. AWS GovCloud (US) 

**Importante**  
[È necessario utilizzare un endpoint creato utilizzando configurazioni di dominio.](iot-custom-endpoints-configurable.md) Inoltre, i client devono fornire l'estensione [SNI (Server Name Indication)](https://www.rfc-editor.org/rfc/rfc3546#section-3.1) durante la connessione a. AWS IoT Core

**Topics**
+ [Fase 1: Registrare i certificati client X.509 con AWS IoT Core](#custom-auth-509cert-client)
+ [Passaggio 2: creazione di una funzione Lambda](#custom-auth-509cert-lambda)
+ [Fase 3: Creare un autorizzatore personalizzato](#custom-auth-509cert-authorizer)
+ [Fase 4: Impostare il tipo di autenticazione e il protocollo applicativo in una configurazione di dominio](#custom-auth-509cert-domainconfig)

## Fase 1: Registrare i certificati client X.509 con AWS IoT Core
<a name="custom-auth-509cert-client"></a>

Se non l'hai già fatto, registra e attiva i certificati client [X.509](https://docs.aws.amazon.com//iot/latest/developerguide/x509-client-certs.html) con. AWS IoT Core Altrimenti, passare alla fase successiva.

Per registrare e attivare i certificati client con AWS IoT Core, procedi nel seguente modo:

1. Se [crei certificati client direttamente con AWS IoT](https://docs.aws.amazon.com//iot/latest/developerguide/device-certs-create.html). Questi certificati client verranno registrati automaticamente con AWS IoT Core.

1. Se [crei i tuoi certificati client](https://docs.aws.amazon.com//iot/latest/developerguide/device-certs-your-own.html), segui [queste istruzioni per registrarli AWS IoT Core](https://docs.aws.amazon.com//iot/latest/developerguide/register-device-cert.html).

1. Per attivare i certificati client, segui [queste istruzioni](https://docs.aws.amazon.com//iot/latest/developerguide/activate-or-deactivate-device-cert.html).

## Passaggio 2: creazione di una funzione Lambda
<a name="custom-auth-509cert-lambda"></a>

AWS IoT Core utilizza autorizzatori personalizzati per implementare schemi di autenticazione e autorizzazione personalizzati. Un autorizzatore personalizzato è associato a una funzione Lambda che determina se un dispositivo è autenticato e quali operazioni il dispositivo è autorizzato a eseguire. Quando un dispositivo si connette a AWS IoT Core, AWS IoT Core recupera i dettagli dell'autorizzatore, incluso il nome dell'autorizzatore e la funzione Lambda associata, e richiama la funzione Lambda. La funzione Lambda riceve un evento che contiene un oggetto JSON con i dati del certificato client X.509 del dispositivo. La tua funzione Lambda utilizza questo oggetto JSON di eventi per valutare la richiesta di autenticazione, decidere le azioni da intraprendere e inviare una risposta.

### Esempio di evento della funzione Lambda
<a name="custom-auth-509cert-event"></a>

L'oggetto JSON di esempio seguente contiene tutti i campi possibili che possono essere inclusi. L'oggetto JSON effettivo conterrà solo i campi relativi alla richiesta di connessione specifica.

```
{
	"token": "aToken",
	"signatureVerified": true,
	"protocols": [
		"tls",
		"mqtt"
	],
	"protocolData": {
		"tls": {
			"serverName": "serverName",
			"x509CertificatePem": "x509CertificatePem",
			"principalId": "principalId"
		},
		"mqtt": {
			"clientId": "myClientId",
                     "username": "myUserName",
                     "password": "myPassword"
		}
	},
	"connectionMetadata": {
		"id": "UUID"
	}
}
```

`signatureVerified`  
Un valore booleano che indica se la firma del token configurata nell'autorizzatore è verificata o meno prima di richiamare la funzione Lambda dell'autorizzatore. Se l'autorizzatore è configurato per disabilitare la firma tramite token, questo campo sarà falso. 

`protocols`  
Un array che contiene i protocolli previsti per la richiesta.

`protocolData`  
Un oggetto che contiene informazioni sui protocolli utilizzati nella connessione. Fornisce dettagli specifici del protocollo che possono essere utili per l'autenticazione, l'autorizzazione e altro ancora.  
`tls`- Questo oggetto contiene informazioni relative al protocollo TLS (Transport Layer Security).   
+ `serverName`- La stringa del [nome host SNI (Server Name Indication)](https://www.rfc-editor.org/rfc/rfc3546#section-3.1). AWS IoT Core richiede che i dispositivi inviino l'[estensione SNI](https://www.rfc-editor.org/rfc/rfc3546#section-3.1) al protocollo Transport Layer Security (TLS) e forniscano l'indirizzo completo dell'endpoint sul campo. `host_name`
+ `x509CertificatePem`- Il certificato X.509 in formato PEM, utilizzato per l'autenticazione del client nella connessione TLS.
+ `principalId`- L'identificatore principale associato al client nella connessione TLS.
`mqtt`- Questo oggetto contiene informazioni relative al protocollo MQTT.  
+ `clientId`- È necessario includere una stringa solo nel caso in cui il dispositivo invii questo valore.
+ `username`- Il nome utente fornito nel pacchetto MQTT Connect.
+ `password`- La password fornita nel pacchetto MQTT Connect.

`connectionMetadata`  
Metadati della connessione.  
`id`- L'ID di connessione, che è possibile utilizzare per la registrazione e la risoluzione dei problemi.

**Nota**  
In questo caso, oggetto JSON, `x509CertificatePem` e `principalId` ci sono due nuovi campi nella richiesta. Il valore di `principalId` è uguale al valore di`certificateId`. Per ulteriori informazioni, consulta [Certificato](https://docs.aws.amazon.com//iot/latest/apireference/API_Certificate.html).

### Esempio di risposta alla funzione Lambda
<a name="custom-auth-509cert-response"></a>

La funzione Lambda deve utilizzare le informazioni dell'oggetto JSON dell'evento per autenticare la connessione in ingresso e decidere quali azioni sono consentite nella connessione.

Il seguente oggetto JSON contiene un esempio di risposta che la funzione Lambda può inviare.

```
{
	"isAuthenticated": true,
	"principalId": "xxxxxxxx",
	"disconnectAfterInSeconds": 86400,
	"refreshAfterInSeconds": 300,
	"policyDocuments": [
		{
			"Version": "2012-10-17",		 	 	 
			"Statement": [
				{
					"Effect": "Allow",
					"Action": "iot:Publish",
					"Resource": "arn:aws:iot:us-east-1:123456789012:topic/customauthtesting"
				}
			]
		}
	]
}
```

In questo esempio, questa funzione dovrebbe inviare una risposta che contenga i seguenti valori.

`isAuthenticated`  
Un valore booleano che indica se la richiesta è autenticata.

`principalId`  
Una stringa alfanumerica che funge da identificatore per il token inviato dalla richiesta di autorizzazione personalizzata. Il valore deve essere una stringa alfanumerica con almeno uno e non più di 128 caratteri. Identifica la connessione nei registri. Il valore di `principalId` deve essere uguale al valore dell'oggetto JSON dell'`principalId`evento (ad esempio CertificateID del certificato X.509).

`policyDocuments`  
Un elenco di documenti di policy in formato JSON. AWS IoT Core [Il valore è facoltativo e supporta le variabili [thing policy e le variabili certificate policy](https://docs.aws.amazon.com//iot/latest/developerguide/thing-policy-variables.html).](https://docs.aws.amazon.com//iot/latest/developerguide/cert-policy-variables.html) Il numero massimo di documenti relativi alle politiche è 10. Ogni documento di policy può contenere un massimo di 2.048 caratteri. Se hai più politiche collegate al certificato client e alla funzione Lambda, l'autorizzazione è una raccolta di tutte le politiche. Per ulteriori informazioni sulla creazione di AWS IoT Core politiche, consulta [Politiche](https://docs.aws.amazon.com//iot/latest/developerguide/iot-policies.html).

`disconnectAfterInSeconds`  
Un numero intero che specifica la durata massima (in secondi) della connessione al AWS IoT Core gateway. Il valore minimo è 300 secondi e il valore massimo è 86.400 secondi. `disconnectAfterInSeconds`è valido per tutta la durata di una connessione e non viene aggiornato in caso di aggiornamenti consecutivi delle policy.

`refreshAfterInSeconds`  
Un numero intero che specifica l'intervallo tra gli aggiornamenti delle policy. Al termine di questo intervallo, AWS IoT Core richiama la funzione Lambda per consentire gli aggiornamenti delle policy. Il valore minimo è 300 secondi e il valore massimo è 86400 secondi.

### Funzione Lambda di esempio
<a name="custom-auth-509cert-js-example"></a>

Di seguito è riportato un esempio di funzione Lambda di Node.js. La funzione esamina il certificato X.509 del client ed estrae le informazioni pertinenti come il numero di serie, l'impronta digitale e il nome del soggetto. Se le informazioni estratte corrispondono ai valori previsti, al client viene concesso l'accesso per la connessione. Questo meccanismo garantisce che solo i client autorizzati con certificati validi possano stabilire una connessione.

```
const crypto = require('crypto');

exports.handler = async (event) => {
    
    // Extract the certificate PEM from the event
    const certPem = event.protocolData.tls.x509CertificatePem;
    
    // Parse the certificate using Node's crypto module
    const cert = new crypto.X509Certificate(certPem);
    
    var effect = "Deny";
    // Allow permissions only for a particular certificate serial, fingerprint, and subject
    if (cert.serialNumber === "7F8D2E4B9C1A5036DE8F7C4B2A91E5D80463BC9A1257" // This is a random serial
       && cert.fingerprint === "F2:9A:C4:1D:B5:E7:08:3F:6B:D0:4E:92:A7:C1:5B:8D:16:0F:E3:7A" // This is a random fingerprint
       && cert.subject === "allow.example.com") {
      effect = "Allow";
    }
    
    return generateAuthResponse(event.protocolData.tls.principalId, effect);
};


// Helper function to generate the authorization response.
function generateAuthResponse(principalId, effect) {
    const authResponse = {
        isAuthenticated: true,
        principalId,
        disconnectAfterInSeconds: 3600,
        refreshAfterInSeconds: 300,
        policyDocuments: [
          {
            Version: "2012-10-17",		 	 	 
            Statement: [
              {
                Action: ["iot:Connect"],
                Effect: effect,
                Resource: [
                  "arn:aws:iot:us-east-1:123456789012:client/myClientName"
                ]
              },
              {
                Action: ["iot:Publish"],
                Effect: effect,
                Resource: [
                  "arn:aws:iot:us-east-1:123456789012:topic/telemetry/myClientName"
                ]
              },
              {
                Action: ["iot:Subscribe"],
                Effect: effect,
                Resource: [
                   "arn:aws:iot:us-east-1:123456789012:topicfilter/telemetry/myClientName"
                ]
              },
              {
                Action: ["iot:Receive"],
                Effect: effect,
                Resource: [
                   "arn:aws:iot:us-east-1:123456789012:topic/telemetry/myClientName"
                ]
              }
            ]
          }
        ]
      };

  return authResponse;
}
```

La precedente funzione Lambda restituisce il seguente codice JSON quando riceve un certificato con il numero di serie, l'impronta digitale e l'oggetto previsti. Il valore di `x509CertificatePem` sarà il certificato client fornito nell'handshake TLS. Per ulteriori informazioni, consulta [Definizione della funzione Lambda](https://docs.aws.amazon.com//iot/latest/developerguide/config-custom-auth.html#custom-auth-lambda).

```
{
	"isAuthenticated": true,
	"principalId": "principalId in the event JSON object",
	"policyDocuments": [
		{
			"Version": "2012-10-17",		 	 	 
			"Statement": [
				{
					"Action": "iot:Connect",
					"Effect": "Allow",
					"Resource": "arn:aws:iot:us-east-1:123456789012:client/myClientName"
				},
				{
					"Action": "iot:Publish",
					"Effect": "Allow",
					"Resource": "arn:aws:iot:us-east-1:123456789012:topic/telemetry/myClientName"
				},
				{
					"Action": "iot:Subscribe",
					"Effect": "Allow",
					"Resource": "arn:aws:iot:us-east-1:123456789012:topicfilter/telemetry/myClientName"
				},
				{
					"Action": "iot:Receive",
					"Effect": "Allow",
					"Resource": "arn:aws:iot:us-east-1:123456789012:topic/telemetry/myClientName"
				}
			]
		}
	],
	"disconnectAfterInSeconds": 3600,
	"refreshAfterInSeconds": 300
}
```

## Fase 3: Creare un autorizzatore personalizzato
<a name="custom-auth-509cert-authorizer"></a>

Dopo [aver definito la funzione Lambda](#custom-auth-509cert-lambda), crea un autorizzatore personalizzato per gestire la logica di autenticazione e autorizzazione del client. Puoi seguire le istruzioni dettagliate nella [Fase 3: Creare una risorsa di autorizzazione del cliente e la relativa autorizzazione](https://docs.aws.amazon.com//iot/latest/developerguide/custom-auth-tutorial.html#custom-auth-tutorial-authorizer). Per ulteriori informazioni, consulta [Creazione di un autorizzatore](https://docs.aws.amazon.com//iot/latest/developerguide/config-custom-auth.html). 

Nel processo di creazione dell'autorizzatore personalizzato, è necessario concedere l' AWS IoT autorizzazione a richiamare la funzione Lambda dopo la sua creazione. Per istruzioni dettagliate, consulta [Autorizzazione AWS IoT a richiamare la funzione Lambda](custom-auth-authorize.md).

## Fase 4: Impostare il tipo di autenticazione e il protocollo applicativo in una configurazione di dominio
<a name="custom-auth-509cert-domainconfig"></a>

Per autenticare i dispositivi utilizzando l'autenticazione personalizzata con certificati client X.509, è necessario impostare il tipo di autenticazione e il protocollo applicativo in una configurazione di dominio e inviare l'estensione SNI. Il valore di `authenticationType` deve essere e `CUSTOM_AUTH_X509` il valore di `applicationProtocol` può essere o. `SECURE_MQTT` `HTTPS`

### Imposta il tipo di autenticazione e il protocollo dell'applicazione nella configurazione del dominio (CLI)
<a name="custom-auth-509cert-cli"></a>

Se non disponi di una configurazione di dominio, usa il [https://docs.aws.amazon.com//cli/latest/reference/iot/create-domain-configuration.html](https://docs.aws.amazon.com//cli/latest/reference/iot/create-domain-configuration.html)comando per crearne una. Il valore di `authenticationType` deve essere `CUSTOM_AUTH_X509` e il valore di `applicationProtocol` può essere `SECURE_MQTT` o`HTTPS`.

```
aws iot create-domain-configuration \
    --domain-configuration-name domainConfigurationName \
    --authentication-type CUSTOM_AUTH_X509 \  
    --application-protocol SECURE_MQTT \ 
    --authorizer-config '{
        "defaultAuthorizerName": my-custom-authorizer
    }'
```

Se hai già una configurazione di dominio, usa il [https://docs.aws.amazon.com//cli/latest/reference/iot/update-domain-configuration.html](https://docs.aws.amazon.com//cli/latest/reference/iot/update-domain-configuration.html)comando update `authenticationType` e `applicationProtocol` se necessario. Tieni presente che non puoi modificare il tipo o il protocollo di autenticazione sull'endpoint predefinito (`iot:Data-ATS`).

```
aws iot update-domain-configuration \
    --domain-configuration-name domainConfigurationName \
    --authentication-type CUSTOM_AUTH_X509 \  
    --application-protocol SECURE_MQTT \
    --authorizer-config '{
        "defaultAuthorizerName": my-custom-authorizer
    }'
```

`domain-configuration-name`  
Il nome della configurazione di dominio.

`authentication-type`  
Il tipo di autenticazione della configurazione del dominio. Per ulteriori informazioni, vedi [Scelta del tipo di autenticazione](protocols.md#connection-protocol-auth-mode).

`application-protocol`  
Il protocollo applicativo con cui i dispositivi comunicano AWS IoT Core. Per ulteriori informazioni, vedere [Scelta di un protocollo applicativo](protocols.md#protocol-selection).

`--authorizer-config`  
Un oggetto che specifica la configurazione dell'autorizzatore in una configurazione di dominio.

`defaultAuthorizerName`  
Il nome dell'autorizzatore per una configurazione di dominio.

Per ulteriori informazioni, consulta [CreateDomainConfiguration](https://docs.aws.amazon.com//iot/latest/apireference/API_CreateDomainConfiguration.html)e [UpdateDomainConfiguration](https://docs.aws.amazon.com//iot/latest/apireference/API_UpdateDomainConfiguration.html)consulta l'*AWS IoT API Reference.* Per ulteriori informazioni sulla configurazione del dominio, consulta [Configurazioni del dominio](https://docs.aws.amazon.com//iot/latest/developerguide/iot-custom-endpoints-configurable.html).

# Connessione a AWS IoT Core tramite autenticazione personalizzata
<a name="custom-auth"></a>

 I dispositivi possono connettersi AWS IoT Core utilizzando l'autenticazione personalizzata con qualsiasi protocollo che AWS IoT Core supporti la messaggistica dei dispositivi. Per ulteriori informazioni sui protocolli di comunicazione supportati, consulta [Protocolli di dispositivo di comunicazione](protocols.md).  I dati di connessione che passi all'autorizzatore della funzione Lambda dipendono dal protocollo utilizzato. Per ulteriori informazioni sulla creazione dell'autorizzatore della funzione Lambda, consulta [Scrittura della funzione Lambda](custom-auth-lambda.md). Nelle sezioni seguenti viene illustrato come connettersi per l'autenticazione utilizzando ogni protocollo supportato.

## HTTPS
<a name="custom-auth-http"></a>

I dispositivi che inviano dati AWS IoT Core tramite l'[API HTTP Publish](https://docs.aws.amazon.com/iot/latest/apireference/API_iotdata_Publish.html) possono passare le credenziali tramite le intestazioni di richiesta o i parametri di query nelle richieste HTTP POST. I dispositivi possono specificare un'autorizzatore da richiamare utilizzando l'intestazione `x-amz-customauthorizer-name` o i parametri di query. Se nella tua autorizzazione è abilitata la firma dei token, devi passare `token-key-name` e `x-amz-customauthorizer-signature` nelle intestazioni di richiesta o nei parametri di query. Tieni presente che il `token-signature` valore deve essere codificato come URL quando viene utilizzato JavaScript dall'interno del browser.

**Nota**  
La funzione delle autorizzazioni del cliente per il protocollo HTTPS supporta solo le operazioni di pubblicazione. Per ulteriori informazioni sul protocollo HTTP, consultare [Protocolli di dispositivo di comunicazione](protocols.md).

Le seguenti richieste di esempio mostrano come passare questi parametri sia nelle intestazioni di richiesta che nei parametri di query. 

```
//Passing credentials via headers
POST /topics/topic?qos=qos HTTP/1.1
Host: your-endpoint 
x-amz-customauthorizer-signature: token-signature
token-key-name: token-value 
x-amz-customauthorizer-name: authorizer-name

//Passing credentials via query parameters
POST /topics/topic?qos=qos&x-amz-customauthorizer-signature=token-signature&token-key-name=token-value HTTP/1.1
```

## MQTT
<a name="custom-auth-mqtt"></a>

 I dispositivi a cui si connettono AWS IoT Core tramite una connessione MQTT possono trasmettere le credenziali attraverso i campi `username` e `password` dei messaggi MQTT. Il valore `username` può facoltativamente contenere una stringa di query che invia valori aggiuntivi (tra cui un token, una firma e il nome di un autorizzatore) al tuo autorizzatore. Puoi utilizzare questa stringa di query se desideri utilizzare uno schema di autenticazione basato su token anziché i valori `username` e `password`.  

**Nota**  
 I dati nel campo della password sono codificati in base64 da. AWS IoT Core Devono essere decodificati dalla funzione Lambda. 

 L'esempio seguente contiene una stringa `username` che contiene parametri aggiuntivi che specificano un token e una firma.  

```
username?x-amz-customauthorizer-name=authorizer-name&x-amz-customauthorizer-signature=token-signature&token-key-name=token-value
```

Per richiamare un autorizzatore, i dispositivi che si connettono tramite MQTT e l' AWS IoT Core autenticazione personalizzata devono connettersi alla porta 443. Devono inoltre passare l'estensione TLS Application Layer Protocol Negotiation (ALPN) con un valore di `mqtt` e l'estensione Server Name Indication (SNI) con il nome host del loro endpoint di dati. AWS IoT Core Per evitare potenziali errori, il valore per `x-amz-customauthorizer-signature` deve essere codificato in formato URL. Inoltre, è raccomandabile che anche i valori di `x-amz-customauthorizer-name` e `token-key-name` siano codificati nello stesso formato. Per ulteriori informazioni su questi valori, consulta [Protocolli di dispositivo di comunicazione](protocols.md). [AWS IoT Client per dispositivi SDKs SDKs, dispositivi mobili e AWS IoT dispositivi mobili](iot-sdks.md) V2 può configurare entrambe queste estensioni. 

## MQTT over WebSockets
<a name="custom-auth-websockets"></a>

 I dispositivi che si connettono AWS IoT Core tramite MQTT over WebSockets possono passare le credenziali in uno dei due modi seguenti. 
+ Tramite le intestazioni di richiesta o i parametri di query nella richiesta HTTP UPGRADE per stabilire la connessione. WebSockets 
+ Attraverso i campi `username` e `password` nel messaggio MQTT CONNECT.

 Se si passano le credenziali tramite il messaggio di connessione MQTT, sono necessarie le estensioni ALPN e SNI TLS. Per ulteriori informazioni su queste estensioni, consulta [MQTT](#custom-auth-mqtt). Nell'esempio seguente viene illustrato come trasferire le credenziali tramite la richiesta di aggiornamento HTTP. 

```
GET /mqtt HTTP/1.1
Host: your-endpoint 
Upgrade: WebSocket 
Connection: Upgrade 
x-amz-customauthorizer-signature: token-signature
token-key-name: token-value 
sec-WebSocket-Key: any random base64 value 
sec-websocket-protocol: mqtt 
sec-WebSocket-Version: websocket version
```

## Firma del token
<a name="custom-auth-token-signature"></a>

Devi firmare il token con la chiave privata della coppia di chiavi pubblica-privata che hai utilizzato nella chiamata `create-authorizer`. Gli esempi seguenti mostrano come creare la firma del token utilizzando un comando simile a Unix e. JavaScript Utilizzano l'algoritmo hash SHA-256 per codificare la firma.

------
#### [ Command line ]

```
echo -n TOKEN_VALUE | openssl dgst -sha256 -sign PEM encoded RSA private key | openssl base64
```

------
#### [ JavaScript ]

```
const crypto = require('crypto')

const key = "PEM encoded RSA private key"

const k = crypto.createPrivateKey(key)
let sign = crypto.createSign('SHA256')
sign.write(t)
sign.end()
const s = sign.sign(k, 'base64')
```

------

# Risoluzione dei problemi relativi agli autorizzatori
<a name="custom-auth-troubleshooting"></a>

 In questo argomento vengono illustrati i problemi comuni che possono causare problemi nei flussi di lavoro di autenticazione personalizzata e i passaggi per risolverli. **Per risolvere i problemi nel modo più efficace, abilita CloudWatch i log per AWS IoT Core e imposta il livello di registro su DEBUG.** È possibile abilitare CloudWatch i log nella console (). AWS IoT Core [https://console.aws.amazon.com/iot/](https://console.aws.amazon.com/iot/) Per ulteriori informazioni sull'attivazione e l'utilizzo dei registri per AWS IoT Core, consulta [Configurare la registrazione AWS IoT](configure-logging.md). 

**Nota**  
Se si lascia il livello di registro su **DEBUG** per lunghi periodi di tempo, CloudWatch potrebbe memorizzare grandi quantità di dati di registrazione. Ciò può aumentare i costi. CloudWatch Prendi in considerazione l'utilizzo della registrazione basata sulle risorse per aumentare la verbosità solo per i dispositivi di un particolare gruppo di oggetti. Per ulteriori informazioni sulle registrazioni basate sulle risorse, consulta [Configurare la registrazione AWS IoT](configure-logging.md). Inoltre, al termine della risoluzione dei problemi, ridurre il livello di registro a un livello meno verboso.

Prima di iniziare la risoluzione dei problemi, consulta [Informazioni sul flusso di lavoro di autenticazione personalizzato](custom-authorizer.md) per una visualizzazione generale del processo di autenticazione personalizzata. Questo ti aiuta a capire dove cercare la fonte di un problema.

In questo argomento vengono illustrate le due seguenti aree da esaminare.
+ Problemi relativi alla funzione Lambda dell’autorizzatore.
+ Problemi relativi al tuo dispositivo.

## Controllo della presenza di problemi nella funzione Lambda dell'autorizzatore
<a name="custom-auth-troubleshooting-lambda"></a>

Esegui la procedura seguente per assicurarti che i tentativi di connessione dei dispositivi richiamino la funzione Lambda.

1. Verifica quale funzione Lambda è associata al tuo autorizzatore.

   Puoi farlo chiamando l'[DescribeAuthorizer](https://docs.aws.amazon.com/iot/latest/apireference/API_DescribeAuthorizer.html)API o facendo clic sull'autorizzatore desiderato nella sezione **Secure** della AWS IoT Core console.

1. Controlla i parametri di chiamata per la funzione Lambda. Esegui i seguenti passaggi.

   1. Apri la AWS Lambda console ([https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/)) e seleziona la funzione associata al tuo autorizzatore.

   1. Scegli la scheda **Monitor (Monitorare)** e visualizza i parametri relativi al periodo di tempo rilevante per il problema.

1. Se non vedi alcuna chiamata, verifica di AWS IoT Core avere il permesso di richiamare la tua funzione Lambda. Se visualizzi i richiami, vai al passaggio successivo. Esegui la procedura seguente per verificare che la funzione Lambda disponga delle autorizzazioni richieste.

   1. Scegli la scheda **Autorizzazioni** per la tua funzione nella console. AWS Lambda 

   1. Trova la sezione **Resource-based Policy (Policy basata su risorse)** nella parte inferiore della pagina. Se la funzione Lambda dispone delle autorizzazioni richieste, la policy sarà simile all'esempio seguente.  
****  

      ```
      {
        "Version":"2012-10-17",		 	 	 
        "Id": "default",
        "Statement": [
          {
            "Sid": "Id123",
            "Effect": "Allow",
            "Principal": {
              "Service": "iot.amazonaws.com"
            },
            "Action": "lambda:InvokeFunction",
            "Resource": "arn:aws:lambda:us-east-1:111111111111:function:FunctionName",
            "Condition": {
              "ArnLike": {
                "AWS:SourceArn": "arn:aws:iot:us-east-1:111111111111:authorizer/AuthorizerName"
              },
              "StringEquals": {
                "AWS:SourceAccount": "111111111111"
              }
            }
          }
        ]
      }
      ```

   1. Questa politica concede l'`InvokeFunction`autorizzazione sulla tua funzione al AWS IoT Core preside. Se non la vedi, dovrai aggiungerla utilizzando l'[AddPermission](https://docs.aws.amazon.com/lambda/latest/dg/API_AddPermission.html)API. Nell'esempio seguente viene illustrato come eseguire questa operazione utilizzando l' AWS CLI.

      ```
      aws lambda add-permission --function-name FunctionName --principal iot.amazonaws.com --source-arn AuthorizerARn --statement-id Id-123 --action "lambda:InvokeFunction"
      ```

1. Se visualizzi i richiami, verifica che non vi siano errori. Un errore potrebbe indicare che la funzione Lambda non gestisce correttamente l'evento di connessione che la AWS IoT Core invia.

   Per informazioni sulla gestione dell'evento nella funzione Lambda, consulta [Scrittura della funzione Lambda](custom-auth-lambda.md). È possibile utilizzare la funzionalità test nella AWS Lambda console ([https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/)) per codificare i valori di test della funzione per assicurarsi che la funzione gestisca gli eventi correttamente.

1. Se visualizzi i richiami senza errori, ma i tuoi dispositivi non sono in grado di connettersi (o pubblicare, sottoscrivere e ricevere messaggi), il problema potrebbe essere che la policy restituita dalla funzione Lambda non fornisce autorizzazioni per le operazioni che i tuoi dispositivi stanno tentando di eseguire. Eseguire la procedura seguente per determinare se qualcosa non è corretto nella policy restituita dalla funzione.

   1. Utilizza una query Amazon CloudWatch Logs Insights per scansionare i log in un breve periodo di tempo per verificare eventuali errori. La seguente query di esempio ordina gli eventi in base al timestamp e cerca errori.

      ```
      display clientId, eventType, status, @timestamp | sort @timestamp desc | filter status = "Failure"    
      ```

   1. Aggiorna la tua funzione Lambda per registrare i dati a cui ritorna AWS IoT Core e l'evento che attiva la funzione. È possibile utilizzare questi registri per esaminare le policy create dalla funzione.

1. Se visualizzi invocazioni senza errori ma i tuoi dispositivi non sono in grado di connettersi (o pubblicare, sottoscrivere e ricevere messaggi), un altro motivo potrebbe essere che la funzione Lambda supera il limite di timeout. Il limite di timeout della funzione Lambda per l'autorizzatore personalizzato è di 5 secondi. Puoi controllare la durata della funzione nei CloudWatch log o nelle metriche. 

## Analisi dei problemi relativi ai dispositivi
<a name="custom-auth-troubleshooting-investigate"></a>

Se non riscontri problemi con il richiamo della funzione Lambda o con la policy restituita dalla funzione, cerca i problemi con la connessione dei tuoi dispositivi. Le richieste di connessione AWS IoT Core non corrette possono impedire l'attivazione dell'autorizzatore. I problemi di connessione possono verificarsi sia a livello TLS che a livello di applicazione.

**Possibili problemi di livello TLS:**
+ I clienti devono inserire un'intestazione del nome host (HTTP, MQTT over WebSockets) o l'estensione TLS Server Name Indication (HTTP, MQTT over WebSockets, MQTT) in tutte le richieste di autenticazione personalizzate. In entrambi i casi, il valore passato deve corrispondere a uno degli endpoint di dati del tuo account. AWS IoT Core Questi sono gli endpoint restituiti quando si eseguono i seguenti comandi CLI.
  + `aws iot describe-endpoint --endpoint-type iot:Data-ATS`
  + `aws iot describe-endpoint --endpoint-type iot:Data`(per gli VeriSign endpoint precedenti)
+ I dispositivi che utilizzano l'autenticazione personalizzata nelle connessioni MQTT devono anche inviare l'estensione TLS Application Layer Protocol Negotiation (ALPN) con un valore pari a `mqtt`.
+ L'autenticazione personalizzata è attualmente disponibile solo sulla porta 443.

**Possibili problemi relativi al livello dell'applicazione:**
+ Se la firma è abilitata (il campo `signingDisabled` è false nel tuo autorizzatore), cerca i seguenti problemi di firma.
  + Assicurati di passare la firma del token nell'intestazione`x-amz-customauthorizer-signature` o in un parametro di stringa di query.
  + Assicurati che il servizio non firmi un valore diverso dal token.
  + Assicurati di passare il token nel parametro di intestazione o query specificato nel campo `token-key-name` dell'autorizzatore.
+ Assicurati che il nome dell'autorizzatore che si passa nell'intestazione `x-amz-customauthorizer-name` o nel parametro della stringa di query sia valido o che disponga di un autorizzatore predefinito definito per il proprio account.

# Autorizzazione
<a name="iot-authorization"></a>

L'autorizzazione è il processo di concessione delle autorizzazioni a un'identità autenticata. Concedi le autorizzazioni per AWS IoT Core l'utilizzo AWS IoT Core delle politiche IAM. In questo argomento vengono illustrate le policy AWS IoT Core . Per ulteriori informazioni sulla creazione di policy IAM, consulta [Gestione delle identità e degli accessi per AWS IoT](security-iam.md) e [Come AWS IoT funziona con IAM](security_iam_service-with-iam.md).

AWS IoT Core le politiche determinano cosa può fare un'identità autenticata. Un'identità autenticata viene usata da dispositivi, applicazioni per dispositivi mobili, applicazioni Web e applicazioni desktop. Un'identità autenticata può anche essere un utente che digita i comandi CLI AWS IoT Core . Un'identità può eseguire AWS IoT Core operazioni solo se dispone di una politica che le concede l'autorizzazione per tali operazioni.

Sia AWS IoT Core le policy che le policy IAM vengono utilizzate AWS IoT Core per controllare le operazioni che un'identità (chiamata anche *principale*) può eseguire. Il tipo di policy utilizzato dipende dal tipo di identità con AWS IoT Core cui si effettua l'autenticazione. 

AWS IoT Core le operazioni sono suddivise in due gruppi: 
+ L'API control-plane ti permette di eseguire attività di amministrazione come la creazione o l'aggiornamento di certificati, oggetti, regole e così via.
+ L'API Data Plane consente di inviare e ricevere dati da AWS IoT Core. 

Il tipo di policy usato dipende dall'API in uso, control-plane o data-plane.

La tabella seguente mostra i tipi di identità, i protocolli usati da ciascuno e i tipi di policy che possono essere usati per l'autorizzazione.


**AWS IoT Core API del piano dati e tipi di policy**  
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/iot/latest/developerguide/iot-authorization.html)


**AWS IoT Core API e tipi di policy del piano di controllo**  
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/iot/latest/developerguide/iot-authorization.html)

AWS IoT Core le politiche sono allegate ai certificati X.509, alle identità di Amazon Cognito o ai gruppi di oggetti. Le policy IAM sono collegate a un utente, un gruppo o un ruolo IAM. Se utilizzi la AWS IoT console o la AWS IoT Core CLI per allegare la policy (a un certificato, Amazon Cognito Identity o Thing Group), utilizzi una policy. AWS IoT Core Altrimenti, utilizzi una policy IAM. AWS IoT Core le politiche allegate a un gruppo di cose si applicano a qualsiasi cosa all'interno di quel gruppo di cose. Affinché la AWS IoT Core policy abbia effetto, il nome `clientId` e il nome dell'oggetto devono corrispondere.

L'autorizzazione basata sulle policy è uno strumento potente Ti offre il controllo completo sulle operazioni che dispositivi, utenti o applicazioni possono eseguire in AWS IoT Core. Ad esempio, si consideri un dispositivo a cui si AWS IoT Core connette un certificato. Puoi permettere al dispositivo di accedere a tutti gli argomenti MQTT oppure puoi limitarne l'accesso a un singolo argomento. In un altro esempio supponi che un utente digiti comandi nella riga di comando. Utilizzando una policy, è possibile consentire o negare l'accesso a qualsiasi comando o AWS IoT Core risorsa per l'utente. Puoi inoltre controllare l'accesso di un'applicazione alle risorse AWS IoT Core .

Le modifiche apportate a una policy possono richiedere alcuni minuti per diventare effettive a causa della modalità in cui AWS IoT memorizza nella cache i documenti delle policy. In particolare, potrebbero essere necessari alcuni minuti per accedere a una risorsa a cui è stato concesso l'accesso di recente e una risorsa potrebbe essere accessibile per alcuni minuti dopo la revoca dell'accesso.

## AWS formazione e certificazione
<a name="iot-authorization-training"></a>

Per informazioni sull'autorizzazione AWS IoT Core, segui il corso [Deep Dive into AWS IoT Core Authentication and Authorization](https://www.aws.training/Details/Curriculum?id=42335) sul sito web di AWS Training and Certification.

# AWS IoT Core politiche
<a name="iot-policies"></a>

AWS IoT Core le politiche sono documenti JSON. Seguono le stesse convenzioni delle politiche IAM. AWS IoT Core supporta politiche denominate in modo che molte identità possano fare riferimento allo stesso documento di policy. Le policy denominate hanno più versioni in modo da semplificarne il rollback.

AWS IoT Core le politiche consentono di controllare l'accesso al piano AWS IoT Core dati. Il piano dati AWS IoT Core è costituito dalle operazioni che ti permettono di connetterti al broker di messaggi AWS IoT Core , inviare e ricevere messaggi MQTT e ottenere o aggiornare il Device Shadow di un oggetto.

Una AWS IoT Core policy è un documento JSON che contiene una o più dichiarazioni di policy. Ogni dichiarazione contiene:
+ `Effect`, specifica se l'operazione sarà permessa o negata.
+ `Action`, specifica l'operazione permessa o negata dalla policy.
+ `Resource`, specifica la risorsa o le risorse in cui l'operazione è permessa o negata.

Le modifiche apportate a una policy possono richiedere dai 6 agli 8 minuti per diventare effettive, a causa del modo in cui i documenti relativi alle policy vengono AWS IoT memorizzati nella cache. In particolare, potrebbero essere necessari alcuni minuti per accedere a una risorsa a cui è stato concesso l'accesso di recente e una risorsa potrebbe essere accessibile per alcuni minuti dopo la revoca dell'accesso.

AWS IoT Core le politiche possono essere allegate ai certificati X.509, alle identità di Amazon Cognito e ai gruppi di oggetti. Le policy associate a un gruppo di oggetti si applicano a qualsiasi elemento all'interno di quel gruppo. Affinché la policy diventi effettiva, il `clientId` e il nome dell'oggetto devono corrispondere. Le policy  AWS IoT Core  seguono la stessa logica di valutazione delle policy IAM. Per impostazione predefinita, tutte le policy vengono negate implicitamente. Un'autorizzazione esplicita in una policy basata su identità o su risorse sostituisce questo comportamento predefinito. Un rifiuto esplicito in una policy sostituisce qualsiasi permesso. Per ulteriori informazioni, consulta [Logica di valutazione delle policy](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html#policy-eval-denyallow) nella *AWS Identity and Access Management Guida per l'utente*.

**Topics**
+ [AWS IoT Core azioni politiche](iot-policy-actions.md)
+ [AWS IoT Core risorse d'azione](iot-action-resources.md)
+ [AWS IoT Core variabili politiche](iot-policy-variables.md)
+ [Prevenzione del confused deputy tra servizi](cross-service-confused-deputy-prevention.md)
+ [AWS IoT Core esempi di politiche](example-iot-policies.md)
+ [Autorizzazione con identità Amazon Cognito](cog-iot-policies.md)

# AWS IoT Core azioni politiche
<a name="iot-policy-actions"></a>

Le operazioni di policy seguenti sono definite da AWS IoT Core:Operazioni di policy MQTT

`iot:Connect`  
Rappresenta l'autorizzazione a connettersi al broker di AWS IoT Core messaggi. L'autorizzazione `iot:Connect` viene controllata ogni volta che viene inviata una richiesta `CONNECT` al broker. Il broker di messaggi non permette a due client con lo stesso ID client di restare connessi contemporaneamente. Dopo la connessione del secondo client, il broker chiude la connessione esistente. L'autorizzazione `iot:Connect` può essere usata per garantire che solo i client autorizzati possano connettersi usando un ID client specifico.

`iot:DeleteConnection`  
Rappresenta l'autorizzazione a disconnettere un client MQTT connesso da. AWS IoT Core L'`iot:DeleteConnection`autorizzazione viene verificata ogni volta che viene effettuata una richiesta di disconnessione forzata di un client. Quando si disconnette un client, AWS IoT Core chiude la connessione di rete del client e, facoltativamente, pulisce lo stato della sessione.

`iot:GetRetainedMessage`  
Rappresenta l'autorizzazione per ottenere il contenuto di un singolo messaggio conservato. I messaggi conservati sono i messaggi che sono stati pubblicati con il flag RETAIN impostato e archiviati da. AWS IoT Core Per ottenere un elenco di tutti i messaggi conservati dell'account, consulta [iot:ListRetainedMessages](#action_listretainedmessages).

`iot:ListRetainedMessages`  
Rappresenta l'autorizzazione per recuperare informazioni di riepilogo sui messaggi conservati dell'account, ma non sul contenuto dei messaggi. I messaggi conservati sono i messaggi che sono stati pubblicati con il flag RETAIN impostato e archiviati da. AWS IoT Core La risorsa ARN specificata per questa azione deve essere `*`. Per ottenere l'autorizzazione per ottenere il contenuto di un singolo messaggio conservato, consulta [iot:GetRetainedMessage](#action_getretainpublish).

`iot:Publish`  
Rappresenta l'autorizzazione per pubblicare in un argomento MQTT. Questa autorizzazione viene controllata ogni volta che viene inviata una richiesta PUBLISH al broker. Questa può essere usata per permettere ai client di pubblicare in modelli di argomento specifici.  
Per concedere l'autorizzazione `iot:Publish`, devi concedere anche l'autorizzazione `iot:Connect`.

`iot:Receive`  
Rappresenta l'autorizzazione a ricevere un messaggio da AWS IoT Core. L'autorizzazione `iot:Receive` viene confermata ogni volta che viene recapitato un messaggio a un client. Poiché questa autorizzazione viene controllata a ogni recapito, può essere usata per revocare le autorizzazioni ai client che hanno attualmente sottoscritto un argomento.

`iot:RetainPublish`  
Rappresenta l'autorizzazione per pubblicare un messaggio MQTT con il set di flag RETAIN.  
Per concedere l'autorizzazione `iot:RetainPublish`, devi concedere anche l'autorizzazione `iot:Publish`.

`iot:Subscribe`  
Rappresenta l'autorizzazione a sottoscrivere un filtro di argomenti. Questa autorizzazione viene controllata ogni volta che viene inviata una richiesta SUBSCRIBE al broker. Questa può essere usata per permettere ai client di sottoscrivere argomenti corrispondenti a modelli di argomento specifici.  
Per concedere l'autorizzazione `iot:Subscribe`, devi concedere anche l'autorizzazione `iot:Connect`.Operazioni di policy per Device Shadow

`iot:DeleteThingShadow`  
Rappresenta l'autorizzazione a eliminare il Device Shadow di un oggetto. L'autorizzazione `iot:DeleteThingShadow` viene controllata ogni volta che viene effettuata una richiesta di eliminazione dei contenuti di un Device Shadow di un oggetto.

`iot:GetThingShadow`  
Rappresenta l'autorizzazione a recuperare un Device Shadow di un oggetto. L'autorizzazione `iot:GetThingShadow` viene controllata ogni volta che viene effettuata una richiesta di recupero dei contenuti di un Device Shadow di un oggetto.

`iot:ListNamedShadowsForThing`  
Rappresenta l'autorizzazione per elencare le copie shadow di un oggetto. L'autorizzazione `iot:ListNamedShadowsForThing` viene controllata ogni volta che viene effettuata una richiesta per elencare la copia shadow di un oggetto.

`iot:UpdateThingShadow`  
Rappresenta l'autorizzazione ad aggiornare una copia shadow di un dispositivo. L'autorizzazione `iot:UpdateThingShadow` viene controllata ogni volta che viene effettuata una richiesta di aggiornamento dei contenuti del Device Shadow di un oggetto.

**Nota**  
La policy sull'esecuzione delle operazioni si applica solo all'endpoint TLS HTTP. Se utilizzi l'endpoint MQTT devi utilizzare le operazioni di policy MQTT definite in questo argomento.  
Per un esempio di criterio di policy di esecuzione dei processi che dimostra ciò, consulta [Esempi di policy di processo base](basic-jobs-example.md) che funziona con il protocollo MQTT.Azioni AWS IoT Core politiche sulle esecuzioni di Job Executions

`iotjobsdata:DescribeJobExecution`  
Rappresenta l'autorizzazione a recuperare l'esecuzione di un processo per un dato oggetto. L'autorizzazione `iotjobsdata:DescribeJobExecution` viene controllata ogni volta che viene richiesto di ottenere l'esecuzione di un processo.

`iotjobsdata:GetPendingJobExecutions`  
Rappresenta l'autorizzazione a recuperare l'elenco dei processi che non si trovano in uno stato terminale per un oggetto. L'autorizzazione `iotjobsdata:GetPendingJobExecutions` viene controllata ogni volta che viene effettuata una richiesta di recupero dell'elenco. 

`iotjobsdata:UpdateJobExecution`  
Rappresenta l'autorizzazione ad aggiornare l'esecuzione di un processo. L'autorizzazione `iotjobsdata:UpdateJobExecution` viene controllata ogni volta che viene effettuata una richiesta di aggiornamento dell'esecuzione di un processo.

`iotjobsdata:StartNextPendingJobExecution`  
Rappresenta l'autorizzazione a ottenere e avviare la successiva esecuzione in sospeso di un processo per un oggetto (ossia, per aggiornare l'esecuzione di un processo con stato da QUEUED a IN\$1PROGRESS). L'autorizzazione `iotjobsdata:StartNextPendingJobExecution` viene controllata ogni volta che viene effettuata una richiesta di avvio della successiva esecuzione in sospeso di un processo.AWS IoT Core Azione politica per i fornitori di credenziali

`iot:AssumeRoleWithCertificate`  
Rappresenta l'autorizzazione a chiamare il provider di AWS IoT Core credenziali per assumere un ruolo IAM con l'autenticazione basata su certificati. L'`iot:AssumeRoleWithCertificate`autorizzazione viene verificata ogni volta che viene effettuata una richiesta al provider di AWS IoT Core credenziali per assumere un ruolo.

# AWS IoT Core risorse d'azione
<a name="iot-action-resources"></a>

Per specificare una risorsa per un'azione AWS IoT Core politica, utilizza l'Amazon Resource Name (ARN) della risorsa. Tutte le risorse ARNs seguono il seguente formato:

```
arn:partition:iot:region:AWS-account-ID:Resource-type/Resource-name
```

La tabella seguente mostra la risorsa da specificare per ogni tipo di azione. Gli esempi ARN riguardano l'ID dell'account`123456789012`, nella partizione `aws` e sono specifici della regione. `us-east-1` Per ulteriori informazioni sui formati per ARNs, consulta [Amazon Resource Names (ARNs)](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference-arns.html) dalla AWS Identity and Access Management User Guide.


| Azione | Tipo di risorsa | Nome risorsa | Esempio di ARN | 
| --- | --- | --- | --- | 
| iot:Connect | client |  ID client del client  | arn:aws:iot:us-east-1:123456789012:client/myClientId | 
| iot:DeleteConnection | client |  ID client del client  | arn:aws:iot:us-east-1:123456789012:client/myClientId | 
| iot:DeleteThingShadow | thing |  Il nome dell’oggetto e il nome della copia shadow, se applicabile  |  arn:aws:iot:us-east-1:123456789012:thing/thingOne arn:aws:iot:us-east-1:123456789012:thing/thingOne/shadowOne  | 
| iotjobsdata:DescribeJobExecution | thing |  Nome dell'oggetto  |  arn:aws:iot:us-east-1:123456789012:thing/thingOne  | 
| iotjobsdata:GetPendingJobExecutions | thing |  Nome dell'oggetto  |  arn:aws:iot:us-east-1:123456789012:thing/thingOne  | 
| iot:GetRetainedMessage | topic |  Un argomento del messaggio conservato  |  arn:aws:iot:us-east-1:123456789012:topic/myTopicName  | 
| iot:GetThingShadow | thing |  Il nome dell'oggetto e il nome della copia shadow, se applicabile  |  arn:aws:iot:us-east-1:123456789012:thing/thingOne arn:aws:iot:us-east-1:123456789012:thing/thingOne/shadowOne  | 
| iot:ListNamedShadowsForThing | Tutti | Tutti |  \$1 | 
| iot:ListRetainedMessages | Tutti | Tutti |  \$1 | 
| iot:Publish | topic |  Una stringa di argomenti  | arn:aws:iot:us-east-1:123456789012:topic/myTopicName | 
| iot:Receive | topic |  Una stringa di argomenti  | arn:aws:iot:us-east-1:123456789012:topic/myTopicName | 
| iot:RetainPublish | topic |  Argomento da pubblicare con il set di flag RETAIN  |  arn:aws:iot:us-east-1:123456789012:topic/myTopicName  | 
| iotjobsdata:StartNextPendingJobExecution | thing |  Nome dell'oggetto  |  arn:aws:iot:us-east-1:123456789012:thing/thingOne  | 
| iot:Subscribe | topicfilter | Una stringa di filtro dell'argomento | arn:aws:iot:us-east-1:123456789012:topicfilter/myTopicFilter | 
| iotjobsdata:UpdateJobExecution | thing |  Nome dell'oggetto  |  arn:aws:iot:us-east-1:123456789012:thing/thingOne  | 
| iot:UpdateThingShadow | thing |  Il nome dell'oggetto e il nome della copia shadow, se applicabile  |  arn:aws:iot:us-east-1:123456789012:thing/thingOne arn:aws:iot:us-east-1:123456789012:thing/thingOne/shadowOne  | 
| iot:AssumeRoleWithCertificate | rolealias |  Un alias del ruolo che punta a un ARN di ruolo  |  arn:aws:iot:us-east-1:123456789012:rolealias/CredentialProviderRole\$1alias | 

# AWS IoT Core variabili politiche
<a name="iot-policy-variables"></a>

AWS IoT Core definisce le variabili di policy che possono essere utilizzate nelle AWS IoT Core politiche del `Condition` blocco `Resource` or. Quando una policy viene valutata, le variabili vengono sostituite dai valori effettivi. Ad esempio, se un dispositivo è connesso al broker di AWS IoT Core messaggi con un ID client di 100-234-3456, la variabile di policy viene sostituita nel documento di `iot:ClientId` policy da 100-234-3456.

AWS IoT Core le policy possono utilizzare caratteri jolly e seguire una convenzione simile alle policy IAM. L'inserimento di un `*` (asterisco) nella stringa può essere considerato come carattere jolly corrispondente a qualsiasi carattere. Puoi ad esempio usare `*` per descrivere più nomi di argomenti MQTT nell'attributo `Resource` di una policy. I caratteri `+` e `#` sono trattati come stringhe letterali in una policy. Per una policy di esempio che illustra come utilizzare i caratteri jolly, consulta[Utilizzo di caratteri jolly in MQTT e nelle policy AWS IoT Core](pub-sub-policy.md#pub-sub-policy-cert).

È inoltre possibile utilizzare variabili di policy predefinite con valori fissi per rappresentare caratteri che altrimenti hanno un significato speciale. Questi caratteri speciali sono `$(*)`, `$(?)` e `$($)`. Per ulteriori informazioni sulle variabili di policy e sui caratteri speciali, consulta [Elementi delle policy IAM: variabili e tag](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_variables.html) e [Creazione di una condizione con più chiavi o valori](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_multi-value-conditions.html).

**Topics**
+ [Variabili AWS IoT Core politiche di base](basic-policy-variables.md)
+ [Variabili delle policy di oggetto](thing-policy-variables.md)
+ [Variabili della politica del certificato AWS IoT Core X.509](cert-policy-variables.md)

# Variabili AWS IoT Core politiche di base
<a name="basic-policy-variables"></a>

AWS IoT Core definisce le seguenti variabili politiche di base:
+ `aws:SourceIp`: l'indirizzo IP del client connesso al broker di AWS IoT Core messaggi.
+ `iot:ClientId`: ID client usato per la connessione al broker di messaggi AWS IoT Core .
+ `iot:DomainName`: il nome di dominio del client a cui è connesso AWS IoT Core.

**Topics**
+ [Esempi `ClientId` di variabili `SourceIp` politiche](#basic-policy-variables-example)
+ [Esempi di variabili `iot:DomainName` politiche](#basic-policy-variables-example-domain)

## Esempi `ClientId` di variabili `SourceIp` politiche
<a name="basic-policy-variables-example"></a>

La seguente AWS IoT Core politica mostra una politica che utilizza variabili di politica. `aws:SourceIp`può essere utilizzato nell'elemento Condition della politica per consentire ai responsabili di effettuare richieste API solo all'interno di un intervallo di indirizzi specifico. Per alcuni esempi, consulta [Autorizzazione di utenti e servizi cloud a utilizzare Jobs AWS IoT](iam-policy-users-jobs.md).

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Effect": "Allow",
			"Action": [
				"iot:Connect"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:client/clientid1"
			]
		},
		{
			"Effect": "Allow",
			"Action": [
				"iot:Publish"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:topic/my/topic/${iot:ClientId}"
			],
			"Condition": {
				"IpAddress": {
					"aws:SourceIp": "123.45.167.89"
				}
			}
		}
	]
}
```

In questi esempi, `${iot:ClientId}` viene sostituito dall'ID del client connesso al broker di AWS IoT Core messaggi quando viene valutata la politica. Quando usi variabili delle policy come `${iot:ClientId}`, puoi aprire inavvertitamente l'accesso ad argomenti indesiderati. Ad esempio, se usi una policy che usa `${iot:ClientId}` per specificare un filtro di argomenti:

```
{
	"Effect": "Allow",
	"Action": [
		"iot:Subscribe"
	],
	"Resource": [
		"arn:aws:iot:us-east-1:123456789012:topicfilter/my/${iot:ClientId}/topic"
	]
}
```

Un client può connettersi usando `+` come ID client. Questo permette all'utente di sottoscrivere qualsiasi argomento corrispondente al filtro di argomenti `my/+/topic`. Per proteggerti da tali lacune di sicurezza, utilizza l'azione `iot:Connect` politica per controllare quale client IDs può connettersi. Ad esempio, questa policy permette di connettersi solo a quei client il cui ID client è `clientid1`:

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Effect": "Allow",
			"Action": [
				"iot:Connect"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:client/clientid"
			]
		}
	]
}
```

**Nota**  
L'utilizzo della variabile di policy `${iot:ClientId}` con `Connect` non è consigliato. Non esiste alcun controllo sul valore di `ClientId`, quindi un collegamento con un ID client diverso può superare la convalida ma causare la disconnessione. Poiché qualsiasi `ClientId` è consentito, l'impostazione di un ID client casuale può aggirare le policy del gruppo di oggetti.

## Esempi di variabili `iot:DomainName` politiche
<a name="basic-policy-variables-example-domain"></a>

È possibile aggiungere la variabile di `iot:DomainName` policy per limitare i domini che possono essere utilizzati. L'aggiunta della variabile di `iot:DomainName` policy consente ai dispositivi di connettersi solo a endpoint configurati specifici.

La seguente politica consente ai dispositivi di connettersi al dominio specificato.

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": {
		"Sid": "AllowConnectionsToSpecifiedDomain",
		"Effect": "Allow",
		"Action": [
			"iot:Connect"
		],
		"Resource": "arn:aws:iot:us-east-1:123456789012:client/clientid",
		"Condition": {
			"StringEquals": {
				"iot:DomainName": "d1234567890abcdefghij-ats.iot.us-east-1.amazonaws.com"
			}
		}
	}
}
```

La seguente politica impedisce ai dispositivi di connettersi al dominio specificato.

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": {
		"Sid": "DenyConnectionsToSpecifiedDomain",
		"Effect": "Deny",
		"Action": [
			"iot:Connect"
		],
		"Resource": "arn:aws:iot:us-east-1:123456789012:client/clientid",
		"Condition": {
			"StringEquals": {
				"iot:DomainName": "d1234567890abcdefghij-ats.iot.us-east-1.amazonaws.com"
			}
		}
	}
}
```

Per ulteriori informazioni sull'operatore condizionale della policy, consulta [IAM JSON Policy elements:](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_elements_condition_operators.html) Condition operators. Per ulteriori informazioni sulle configurazioni dei domini, consulta [Cos'è una](https://docs.aws.amazon.com//iot/latest/developerguide/iot-custom-endpoints-configurable.html) configurazione di dominio? .

# Variabili delle policy di oggetto
<a name="thing-policy-variables"></a>

Le variabili Thing Policy consentono AWS IoT Core di scrivere policy che concedono o negano le autorizzazioni in base alle proprietà degli oggetti, come i nomi degli oggetti, i tipi di oggetti e i valori degli attributi degli oggetti. È possibile utilizzare le variabili Thing Policy per applicare la stessa policy per controllare più dispositivi. AWS IoT Core Per ulteriori informazioni sul provisioning dei dispositivi, consulta [Provisioning dei dispositivi](iot-provision.html).

Se si utilizza un'associazione di oggetti non esclusiva, è possibile allegare lo stesso certificato a più elementi. Per mantenere un'associazione chiara ed evitare potenziali conflitti, è necessario abbinare l'ID cliente al nome dell'oggetto. In questo caso, si ottiene il nome dell'oggetto dall'ID client nel `Connect` messaggio MQTT inviato quando un oggetto si connette a AWS IoT Core.

Tenere presente quanto segue quando si utilizzano le variabili delle policy dell'oggetto nelle policy AWS IoT Core .
+ Usa l'[AttachThingPrincipal](https://docs.aws.amazon.com/iot/latest/apireference/API_AttachThingPrincipal.html)API per allegare certificati o principali (identità autenticate di Amazon Cognito) a un oggetto.
+ Se è attiva un'associazione di oggetti non esclusiva, quando sostituisci i nomi degli oggetti con variabili di policy degli oggetti, il valore di contenuto nel messaggio di connessione MQTT o `clientId` nella connessione TLS deve corrispondere esattamente al nome dell'oggetto.

Sono disponibili le variabili delle policy di oggetto seguenti:
+ `iot:Connection.Thing.ThingName`

  Si risolve nel nome dell'elemento nel AWS IoT Core registro per il quale viene valutata la policy. AWS IoT Core utilizza il certificato che il dispositivo presenta al momento dell'autenticazione per determinare quale elemento utilizzare per verificare la connessione. Questa variabile di policy è disponibile solo quando un dispositivo si connette tramite MQTT o MQTT tramite il protocollo. WebSocket 
+ `iot:Connection.Thing.ThingTypeName`

  Questa variabile restituisce il tipo di oggetto associato all'oggetto per cui viene valutata la policy. L'ID client della WebSocket connessione MQTT/ deve essere lo stesso del nome dell'oggetto. Questa variabile di policy è disponibile solo quando ci si connette tramite MQTT o MQTT tramite il protocollo. WebSocket
+ `iot:Connection.Thing.Attributes[attributeName]`

  Questa variabile restituisce il valore dell'attributo specificato associato all'oggetto per cui viene valutata la policy. A un oggetto possono essere associati fino a 50 attributi. Ogni attributo è disponibile come variabile di politica: `iot:Connection.Thing.Attributes[attributeName]` dove *attributeName* è il nome dell'attributo. L'ID client della MQTT/WebSocket connessione deve essere lo stesso del nome dell'oggetto. Questa variabile di policy è disponibile solo quando ci si connette tramite MQTT o MQTT tramite il WebSocket protocollo.
+ `iot:Connection.Thing.IsAttached`

  `iot:Connection.Thing.IsAttached: ["true"]`impone che solo i dispositivi registrati AWS IoT e collegati al principale possano accedere alle autorizzazioni previste dalla policy. Puoi utilizzare questa variabile per impedire la connessione a un dispositivo AWS IoT Core se presenta un certificato che non è collegato a un elemento IoT nel AWS IoT Core registro. Questa variabile ha dei valori `true` o `false` indica che l'elemento di connessione è collegato al certificato o all'identità di Amazon Cognito nel registro utilizzando l'API. [AttachThingPrincipal](https://docs.aws.amazon.com/iot/latest/apireference/API_AttachThingPrincipal.html) Il nome dell'oggetto è preso come ID client. 

Se l'ID client corrisponde al nome dell'oggetto o se alleghi il certificato esclusivamente a un oggetto, l'utilizzo di variabili di policy nella definizione della policy può semplificare la gestione delle policy. Invece di creare policy individuali per ogni elemento IoT, puoi definire una singola policy utilizzando le variabili della policy del thing. Questa policy può essere applicata a tutti i dispositivi in modo dinamico. Di seguito è riportato un esempio di policy per mostrarne il funzionamento. Per ulteriori informazioni, consulta [Associazione di qualsiasi AWS IoT cosa a una connessione client MQTT](exclusive-thing.md).

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Condition": {
				"StringLike": {
					"iot:ClientId": "*${iot:Connection.Thing.Attributes[envType]}"
				}
			},
			"Effect": "Allow",
			"Action": "iot:Connect",
			"Resource": "arn:aws:iot:us-east-1:123456789012:client/*"
		}
	]
}
```

Questo esempio di policy consente agli elementi a cui connettersi AWS IoT Core se il loro ID client termina con il valore del loro `envType` attributo. Potranno connettersi solo gli elementi con un modello di ID client corrispondente.

# Variabili della politica del certificato AWS IoT Core X.509
<a name="cert-policy-variables"></a>

Le variabili delle politiche dei certificati X.509 aiutano a scrivere le politiche. AWS IoT Core Queste politiche concedono autorizzazioni basate sugli attributi del certificato X.509. Le seguenti sezioni descrivono come utilizzare queste variabili della politica dei certificati.

**Importante**  
Se il certificato X.509 non include un particolare attributo di certificato ma nel documento di policy viene utilizzata la corrispondente variabile di politica del certificato, la valutazione della politica potrebbe portare a un comportamento imprevisto.

## CertificateId
<a name="cert-policy-variables-certid"></a>

Nell'[RegisterCertificate](https://docs.aws.amazon.com/iot/latest/apireference/API_RegisterCertificate.html)API, `certificateId` viene visualizzato nel corpo della risposta. Per ottenere informazioni sul certificato, utilizza il comando `certificateId` in [DescribeCertificate](https://docs.aws.amazon.com/iot/latest/apireference/API_DescribeCertificate.html).

## Attributi dell'autorità emittente
<a name="issuer-attributes"></a>

Le seguenti variabili di AWS IoT Core policy supportano l'autorizzazione o la negazione delle autorizzazioni, in base agli attributi del certificato impostati dall'emittente del certificato.
+ `iot:Certificate.Issuer.DistinguishedNameQualifier`
+ `iot:Certificate.Issuer.Country`
+ `iot:Certificate.Issuer.Organization`
+ `iot:Certificate.Issuer.OrganizationalUnit`
+ `iot:Certificate.Issuer.State`
+ `iot:Certificate.Issuer.CommonName`
+ `iot:Certificate.Issuer.SerialNumber`
+ `iot:Certificate.Issuer.Title`
+ `iot:Certificate.Issuer.Surname`
+ `iot:Certificate.Issuer.GivenName`
+ `iot:Certificate.Issuer.Initials`
+ `iot:Certificate.Issuer.Pseudonym`
+ `iot:Certificate.Issuer.GenerationQualifier` 

## Attributi soggetto
<a name="subject-attributes"></a>

Le seguenti variabili di AWS IoT Core policy supportano la concessione o la negazione delle autorizzazioni, in base agli attributi dell'oggetto del certificato impostati dall'emittente del certificato.
+ `iot:Certificate.Subject.DistinguishedNameQualifier`
+ `iot:Certificate.Subject.Country`
+ `iot:Certificate.Subject.Organization`
+ `iot:Certificate.Subject.OrganizationalUnit`
+ `iot:Certificate.Subject.State`
+ `iot:Certificate.Subject.CommonName`
+ `iot:Certificate.Subject.SerialNumber`
+ `iot:Certificate.Subject.Title`
+ `iot:Certificate.Subject.Surname`
+ `iot:Certificate.Subject.GivenName`
+ `iot:Certificate.Subject.Initials`
+ `iot:Certificate.Subject.Pseudonym`
+ `iot:Certificate.Subject.GenerationQualifier` 

I certificati X.509 offrono a questi attributi la possibilità di contenere uno o più valori. Per impostazione predefinita, le variabili delle policy per ogni attributo con più valori restituiscono il primo valore. Ad esempio, l'attributo `Certificate.Subject.Country` potrebbe contenere un elenco di nomi di paese, ma quando viene valutato in una policy, `iot:Certificate.Subject.Country` viene sostituito con il nome del primo paese.

Puoi richiedere un valore di attributo specifico diverso dal primo usando un indice a base uno. Ad esempio, `iot:Certificate.Subject.Country.1` viene sostituito dal secondo nome di paese nell'attributo `Certificate.Subject.Country`. Se specifichi un valore di indice che non esiste, ad esempio se richiedi un terzo valore quando all'attributo ne sono assegnati solo due, non viene eseguita alcuna sostituzione e l'autorizzazione non riesce. Puoi anche usare il suffisso `.List` nel nome di variabile della policy per specificare tutti i valori dell'attributo.

## Attributi dei nomi alternativi dell'autorità emittente
<a name="issuer-alternate-name-attributes"></a>

Le seguenti variabili di AWS IoT Core policy supportano la concessione o la negazione delle autorizzazioni, in base agli attributi alternativi del nome dell'emittente impostati dall'emittente del certificato.
+ `iot:Certificate.Issuer.AlternativeName.RFC822Name`
+ `iot:Certificate.Issuer.AlternativeName.DNSName`
+ `iot:Certificate.Issuer.AlternativeName.DirectoryName`
+ `iot:Certificate.Issuer.AlternativeName.UniformResourceIdentifier`
+ `iot:Certificate.Issuer.AlternativeName.IPAddress`

## Attributi dei nomi alternativi di oggetto
<a name="subject-alternate-name-attributes"></a>

Le seguenti variabili di AWS IoT Core policy supportano la concessione o la negazione delle autorizzazioni, in base agli attributi del nome alternativo del soggetto impostati dall'emittente del certificato.
+ `iot:Certificate.Subject.AlternativeName.RFC822Name`
+ `iot:Certificate.Subject.AlternativeName.DNSName`
+ `iot:Certificate.Subject.AlternativeName.DirectoryName`
+ `iot:Certificate.Subject.AlternativeName.UniformResourceIdentifier`
+ `iot:Certificate.Subject.AlternativeName.IPAddress`

## Altri attributi
<a name="other-attributes"></a>

È possibile utilizzare `iot:Certificate.SerialNumber` per consentire o negare l'accesso alle AWS IoT Core risorse, in base al numero di serie di un certificato. La variabile di policy `iot:Certificate.AvailableKeys` contiene il nome di tutte le variabili delle policy di certificato che contengono valori.

# Utilizzo delle variabili di policy dei certificati X.509
<a name="use-policy-variables"></a>

Questo argomento fornisce dettagli su come utilizzare le variabili delle politiche dei certificati. Le variabili delle politiche di certificato X.509 sono essenziali quando si creano AWS IoT Core politiche che forniscono autorizzazioni basate sugli attributi del certificato X.509. Se il certificato X.509 non include un particolare attributo di certificato ma nel documento di policy viene utilizzata la corrispondente variabile di politica del certificato, la valutazione della politica potrebbe portare a un comportamento imprevisto. Questo perché la variabile di policy mancante non viene valutata nella dichiarazione politica.

**Topics**
+ [Esempio di certificato X.509](#certificate-example)
+ [Utilizzo degli attributi dell'emittente del certificato come variabili della politica del certificato](#issuer-attributes-policy)
+ [Utilizzo degli attributi dell'oggetto del certificato come variabili della politica del certificato](#subject-attributes-policy)
+ [Utilizzo degli attributi di nome alternativi dell'emittente del certificato come variabili della politica del certificato](#issuer-alternate-name-attributes-policy)
+ [Utilizzo degli attributi del nome alternativo del soggetto del certificato come variabili della politica del certificato](#subject-alternate-name-attributes-policy)
+ [Utilizzo di un altro attributo di certificato come variabile di politica del certificato](#other-attributes-policy)
+ [Limitazioni per le variabili delle policy di certificato X.509](#policy-limits)
+ [Politiche di esempio che utilizzano variabili di policy relative ai certificati](#example-attributes-policy)

## Esempio di certificato X.509
<a name="certificate-example"></a>

Un tipico certificato X.509 potrebbe apparire come segue. Questo certificato di esempio include gli attributi del certificato. Durante la valutazione delle AWS IoT Core politiche, i seguenti attributi del certificato verranno compilati come variabili dei criteri di certificazione:`Serial Number`,`Issuer`, `Subject``X509v3 Issuer Alternative Name`, e`X509v3 Subject Alternative Name`.

```
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            92:12:85:cb:b7:a5:e0:86
    Signature Algorithm: sha256WithRSAEncryption
        Issuer: C=US, O=IoT Devices, OU=SmartHome, ST=WA, CN=IoT Devices Primary CA, 
				GN=Primary CA1/initials=XY/dnQualifier=Example corp,
				SN=SmartHome/ title=CA1/pseudonym=Primary_CA/generationQualifier=2/serialNumber=987		
        Validity
            Not Before: Mar 26 03:25:40 2024 GMT
            Not After : Apr 28 03:25:40 2025 GMT
        Subject: C=US, O=IoT Devices, OU=LightBulb, ST=NY, CN=LightBulb Device Cert, 
				GN=Bulb/initials=ZZ/dnQualifier=Bulb001, 
				SN=Multi Color/title=RGB/pseudonym=RGB Device/generationQualifier=4/serialNumber=123
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                RSA Public-Key: (2048 bit)
                Modulus:
                    << REDACTED >>
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Basic Constraints: 
                CA:FALSE
            X509v3 Key Usage: 
                Digital Signature, Non Repudiation, Key Encipherment
            X509v3 Subject Alternative Name: 
                DNS:example.com, IP Address:1.2.3.4, URI:ResourceIdentifier001, email:device1@example.com, DirName:/C=US/O=IoT/OU=SmartHome/CN=LightBulbCert
            X509v3 Issuer Alternative Name: 
                DNS:issuer.com, IP Address:5.6.7.8, URI:PrimarySignerCA, email:primary@issuer.com, DirName:/C=US/O=Issuer/OU=IoT Devices/CN=Primary Issuer CA
    Signature Algorithm: sha256WithRSAEncryption
         << REDACTED >>
```

## Utilizzo degli attributi dell'emittente del certificato come variabili della politica del certificato
<a name="issuer-attributes-policy"></a>

La tabella seguente fornisce dettagli su come gli attributi dell'emittente del certificato verranno inseriti in una politica. AWS IoT Core 


**Attributi dell'emittente da inserire in una politica**  

| Attributi dell'emittente del certificato | Variabili della politica dei certificati | 
| --- | --- | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/iot/latest/developerguide/use-policy-variables.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/iot/latest/developerguide/use-policy-variables.html)  | 

## Utilizzo degli attributi dell'oggetto del certificato come variabili della politica del certificato
<a name="subject-attributes-policy"></a>

La tabella seguente fornisce dettagli su come gli attributi dell'oggetto del certificato verranno inseriti in una AWS IoT Core politica.


**Attributi del soggetto da inserire in una politica**  

| Attributi dell'oggetto del certificato | Variabili della politica dei certificati | 
| --- | --- | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/iot/latest/developerguide/use-policy-variables.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/iot/latest/developerguide/use-policy-variables.html)  | 

## Utilizzo degli attributi di nome alternativi dell'emittente del certificato come variabili della politica del certificato
<a name="issuer-alternate-name-attributes-policy"></a>

La tabella seguente fornisce dettagli su come gli attributi dei nomi alternativi dell'emittente del certificato verranno inseriti in una politica. AWS IoT Core 


**Attributi del nome alternativi dell'emittente da inserire in una policy**  

| Nome alternativo dell'emittente X509v3 | Attributo in una politica | 
| --- | --- | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/iot/latest/developerguide/use-policy-variables.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/iot/latest/developerguide/use-policy-variables.html)  | 

## Utilizzo degli attributi del nome alternativo del soggetto del certificato come variabili della politica del certificato
<a name="subject-alternate-name-attributes-policy"></a>

La tabella seguente fornisce dettagli su come gli attributi del nome alternativo del soggetto del certificato verranno inseriti in una politica. AWS IoT Core 


**Attributi del nome alternativo del soggetto da inserire in una policy**  

| Nome alternativo del soggetto X509v3 | Attributo in una politica | 
| --- | --- | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/iot/latest/developerguide/use-policy-variables.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/iot/latest/developerguide/use-policy-variables.html)  | 

## Utilizzo di un altro attributo di certificato come variabile di politica del certificato
<a name="other-attributes-policy"></a>

La tabella seguente fornisce dettagli su come gli altri attributi del certificato verranno inseriti in una AWS IoT Core politica.


**Altri attributi da inserire in una policy**  

| Altro attributo del certificato | Variabile di politica del certificato | 
| --- | --- | 
|  `Serial Number: 92:12:85:cb:b7:a5:e0:86`  |  `iot:Certificate.SerialNumber = 10525622389124227206`  | 

## Limitazioni per le variabili delle policy di certificato X.509
<a name="policy-limits"></a>

Alle variabili delle policy di certificato X.509 si applicano le limitazioni seguenti:

Variabili di policy mancanti  
Se il certificato X.509 non include un particolare attributo di certificato ma nel documento di policy viene utilizzata la corrispondente variabile di policy del certificato, la valutazione della policy potrebbe portare a un comportamento imprevisto. Questo perché la variabile di policy mancante non viene valutata nella dichiarazione politica.

Formato del certificato SerialNumber   
AWS IoT Core considera il numero di serie del certificato come la rappresentazione in formato stringa di un numero intero decimale. Ad esempio, se una policy consente solo connessioni con ID client corrispondente al numero di serie del certificato, l'ID client deve essere il numero di serie in formato decimale.

Caratteri jolly  
Se negli attributi del certificato sono presenti caratteri jolly, la variabile policy non viene sostituita dal valore dell'attributo certificate. Questo lascerà il `${policy-variable}` testo nel documento di policy. Questo comportamento può provocare un errore di autenticazione. È possibile utilizzare i seguenti caratteri jolly: `*`, `$`, `+`, `?` e `#`.

Campi di matrice  
Gli attributi di certificato che contengono matrici sono limitati a cinque elementi. Gli elementi aggiuntivi vengono ignorati.

Lunghezza delle stringhe  
Tutti i valori di stringa sono limitati a 1024 caratteri. Se un attributo di certificato contiene una stringa più lunga di 1024 caratteri, la variabile policy non viene sostituita dal valore dell'attributo certificate. Questo lascerà il nome `${policy-variable}` nel documento relativo alla policy. Questo comportamento può provocare un errore di autenticazione.

Caratteri speciali  
Qualsiasi carattere speciale, ad esempio `,`, `"`, `\`, `+`, `=`, `<`, `>` e `;` deve essere preceduto da una barra rovesciata (`\`) quando viene utilizzato in una variabile di policy. Ad esempio `Amazon Web Services O=Amazon.com Inc. L=Seattle ST=Washington C=US` diventa `Amazon Web Service O\=Amazon.com Inc. L\=Seattle ST\=Washington C\=US`.

## Politiche di esempio che utilizzano variabili di policy relative ai certificati
<a name="example-attributes-policy"></a>

Il seguente documento di policy consente le connessioni con un ID client che corrisponde al numero di serie del certificato e la pubblicazione sull'argomento che corrisponde al modello:`${iot:Certificate.Subject.Organization}/device-stats/${iot:ClientId}/*`. 

**Importante**  
Se il certificato X.509 non include un particolare attributo di certificato ma nel documento di policy viene utilizzata la corrispondente variabile di policy del certificato, la valutazione della policy potrebbe portare a un comportamento imprevisto. Questo perché la variabile di policy mancante non viene valutata nella dichiarazione politica. Ad esempio, se alleghi il seguente documento di policy a un certificato che non contiene l'`iot:Certificate.Subject.Organization`attributo, le variabili di policy del `iot:Certificate.Subject.Organization` certificato non verranno compilate durante la valutazione della policy.

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Effect": "Allow",
			"Action": [
				"iot:Connect"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:client/${iot:Certificate.SerialNumber}"
			]
		},
		{
			"Effect": "Allow",
			"Action": [
				"iot:Publish"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:topic/${iot:Certificate.Subject.Organization}/device-stats/${iot:ClientId}/*"
			]
		}
	]
}
```

È inoltre possibile utilizzare l'[operatore di condizione Null](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_Null) per garantire che le variabili della politica dei certificati utilizzate in una politica vengano compilate durante la valutazione della politica. Il seguente documento di policy consente l'utilizzo `iot:Connect` di certificati solo quando sono presenti gli attributi Certificate Serial Number e Certificate Subject Common name.

Tutte le variabili della politica del certificato hanno valori String, quindi tutti [gli operatori di condizione String](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_String) sono supportati.

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Effect": "Allow",
			"Action": [
				"iot:Connect"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:client/*"
			],
			"Condition": {
				"Null": {
					"iot:Certificate.SerialNumber": "false",
					"iot:Certificate.Subject.CommonName": "false"
				}
			}
		}
	]
}
```

# Prevenzione del confused deputy tra servizi
<a name="cross-service-confused-deputy-prevention"></a>

Il *problema confused deputy* è un problema di sicurezza in cui un’entità che non dispone dell’autorizzazione per eseguire un’azione può costringere un’entità maggiormente privilegiata a eseguire l’azione. Inoltre AWS, l'impersonificazione tra servizi può causare il confuso problema del vicesceriffo. La rappresentazione tra servizi può verificarsi quando un servizio (il *servizio chiamante*) effettua una chiamata a un altro servizio (il *servizio chiamato*). Il servizio chiamante può essere manipolato per utilizzare le proprie autorizzazioni e agire sulle risorse di un altro cliente, a cui normalmente non avrebbe accesso. Per evitare ciò, AWS fornisce alcuni strumenti che consentono di proteggere i dati per tutti i servizi che dispongono di principali del servizio a cui è stato consentito l’accesso alle risorse del tuo account. 

Per limitare le autorizzazioni che AWS IoT assegnano un altro servizio alla risorsa, consigliamo di utilizzare le chiavi di contesto [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn)e le chiavi di contesto della condizione [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount)globale nelle politiche delle risorse. Se si utilizzano entrambe le chiavi di contesto delle condizioni globali, il valore `aws:SourceAccount` e l’account nel valore `aws:SourceArn` devono utilizzare lo stesso ID account nella stessa istruzione di policy.

Il modo più efficace per proteggersi dal problema "confused deputy" è quello di usare la chiave di contesto della condizione globale `aws:SourceArn` con l'Amazon Resource Name (ARN) completo della risorsa. Perché AWS IoT, è `aws:SourceArn` necessario rispettare il formato: `arn:aws:iot:region:account-id:resource-type/resource-id` per le autorizzazioni specifiche delle risorse o. `arn:aws:iot:region:account-id:*` Il resource-id può essere il nome o l'ID della risorsa consentita o una dichiarazione con caratteri jolly della risorsa consentita. IDs Assicurati che corrisponda alla tua AWS IoT regione e che *region* corrisponda all'ID del *account-id* tuo account cliente. 

L'esempio seguente mostra come prevenire il problema confuso del vicesceriffo utilizzando le chiavi del contesto `aws:SourceArn` e della condizione `aws:SourceAccount` globale nella politica di fiducia dei AWS IoT ruoli. Per ulteriori esempi, consulta [Esempi dettagliati di prevenzione confusa](#cross-service-confused-deputy-prevention-examples).

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Effect":"Allow",
         "Principal":{
            "Service":"iot.amazonaws.com"
         },
         "Action":"sts:AssumeRole",
         "Condition":{
            "StringEquals":{
               "aws:SourceAccount":"123456789012"
        },
            "ArnLike":{
               "aws:SourceArn":"arn:aws:iot:us-east-1:123456789012:*"
        }
         }
      }
   ]
}
```

**Nota**  
Se si verificano errori di negazione dell'accesso, può essere dovuto al fatto che l'integrazione del servizio con AWS Security Token Service (STS) non supporta le chiavi `aws:SourceArn` e di `aws:SourceAccount` contesto.

## Esempi dettagliati di prevenzione confusa
<a name="cross-service-confused-deputy-prevention-examples"></a>

**Questa sezione fornisce esempi dettagliati di come prevenire il problema confuso dei vicesceriffi utilizzando `aws:SourceArn` le chiavi relative al contesto della condizione `aws:SourceAccount` globale nella politica di fiducia nei AWS IoT ruoli.**
+ [Provisioning del parco istanze](#cross-service-confused-deputy-prevention-fleet-provision)
+ [JITP](#cross-service-confused-deputy-prevention-JITP)
+ [Fornitore di credenziali](#cross-service-confused-deputy-prevention-credential-provider)

### Provisioning del parco istanze
<a name="cross-service-confused-deputy-prevention-fleet-provision"></a>

È possibile configurare il [provisioning della flotta](https://docs.aws.amazon.com/iot/latest/developerguide/iot-provision.html) utilizzando una risorsa modello di provisioning. Quando un modello di provisioning fa riferimento a un ruolo di provisioning, la policy di attendibilità di quel ruolo può includere le `aws:SourceArn` chiavi e condition. `aws:SourceAccount` Queste chiavi limitano le risorse per le quali la configurazione può richiamare la richiesta. `sts:AssumeRole`

Il ruolo con la seguente policy di trust può essere assunto solo dal principale IoT (`iot.amazonaws.com`) per il modello di provisioning specificato in. `SourceArn`

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Effect":"Allow",
         "Principal":{
            "Service":"iot.amazonaws.com"
         },
         "Action":"sts:AssumeRole",
         "Condition":{
            "StringEquals":{
               "aws:SourceAccount":"123456789012"
        },
            "ArnLike":{
               "aws:SourceArn":"arn:aws:iot:us-east-1:123456789012:provisioningtemplate/example_template"
        }
         }
      }
   ]
}
```

### JITP
<a name="cross-service-confused-deputy-prevention-JITP"></a>

Nel [just-in-time provisioning (JITP)](https://docs.aws.amazon.com//iot/latest/developerguide/jit-provisioning.html), è possibile utilizzare il modello di provisioning come risorsa separata dalla CA o definire il corpo del modello e il ruolo come parte della configurazione del certificato CA. Il valore della policy di `aws:SourceArn` attendibilità del AWS IoT ruolo dipende da come si definisce il modello di provisioning.

#### Definizione del modello di provisioning come risorsa separata
<a name="cross-service-confused-deputy-prevention-JITP-template"></a>

Se si definisce il modello di provisioning come risorsa separata, il valore di `aws:SourceArn` può essere. `"arn:aws:iot:region:account-id:provisioningtemplate/example_template"` È possibile utilizzare lo stesso esempio di policy in[Provisioning del parco istanze](#cross-service-confused-deputy-prevention-fleet-provision).

#### Definizione di un modello di provisioning in un certificato CA
<a name="cross-service-confused-deputy-prevention-JITP-CA"></a>

Se si definisce il modello di provisioning all'interno di una risorsa di certificato CA, il valore di `aws:SourceArn` può essere `"arn:aws:iot:region:account-id:cacert/cert_id"` o. `"arn:aws:iot:region:account-id:cacert/*"` È possibile utilizzare un carattere jolly quando l'identificatore della risorsa, ad esempio l'ID di un certificato CA, è sconosciuto al momento della creazione.

Il ruolo con la seguente policy di fiducia può essere assunto solo dal principale IoT (`iot.amazonaws.com`) per il certificato CA specificato in`SourceArn`.

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Effect":"Allow",
         "Principal":{
            "Service":"iot.amazonaws.com"
         },
         "Action":"sts:AssumeRole",
         "Condition":{
            "StringEquals":{
               "aws:SourceAccount":"123456789012"
        },
            "ArnLike":{
               "aws:SourceArn":"arn:aws:iot:us-east-1:123456789012:cacert/8ecde6884f3d87b1125ba31ac3fcb13d7016de7f57cc904fe1cb97c6ae98196e"
        }
         }
      }
   ]
}
```

Quando si crea un certificato CA, è possibile fare riferimento a un ruolo di provisioning nella configurazione di registrazione. La politica di fiducia del ruolo di provisioning può essere utilizzata `aws:SourceArn` per limitare le risorse per cui il ruolo può essere assunto. [Tuttavia, durante la CACertificate chiamata iniziale di Register per registrare il certificato CA, non avresti l'ARN del certificato CA da specificare nella `aws:SourceArn` condizione.](https://docs.aws.amazon.com/iot/latest/apireference/API_RegisterCACertificate.html)

Per ovviare a questo problema, ad esempio per specificare la policy di attendibilità del ruolo di provisioning per lo specifico certificato CA con cui è registrato AWS IoT Core, puoi fare quanto segue:
+ Innanzitutto, chiama [Register CACertificate](https://docs.aws.amazon.com/iot/latest/apireference/API_RegisterCACertificate.html) senza fornire il `RegistrationConfig` parametro.
+ Dopo aver registrato il certificato CA AWS IoT Core, chiama [Update CACertificate](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdateCACertificate.html) su di esso.

  Nella CACertificate chiamata Update, fornisci una policy `RegistrationConfig` che includa la policy di attendibilità del ruolo di provisioning `aws:SourceArn` impostata sull'ARN del certificato CA appena registrato.

### Fornitore di credenziali
<a name="cross-service-confused-deputy-prevention-credential-provider"></a>

Per il [provider di AWS IoT Core credenziali](https://docs.aws.amazon.com//iot/latest/developerguide/authorizing-direct-aws.html), usa lo stesso Account AWS che usi per creare l'alias del ruolo in `aws:SourceAccount` e specifica un'istruzione che corrisponda all'ARN della risorsa del tipo di risorsa rolealias in. `aws:SourceArn` Quando crei un ruolo IAM da utilizzare con il provider di AWS IoT Core credenziali, devi includere nella `aws:SourceArn` condizione gli alias ARNs di ruolo che potrebbero dover assumere il ruolo, autorizzando così la richiesta interservizio. `sts:AssumeRole`

Il ruolo con la seguente politica di fiducia può essere assunto solo dal principale fornitore di AWS IoT Core credenziali (`credentials.iot.amazonaws.com`) per il RoleAlias specificato in. `SourceArn` Se un principale tenta di recuperare le credenziali per un alias di ruolo diverso da quello specificato nella `aws:SourceArn` condizione, la richiesta verrà rifiutata, anche se l'altro alias del ruolo fa riferimento allo stesso ruolo IAM.

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "credentials.iot.amazonaws.com"
      },
      "Action": "sts:AssumeRole",
      "Condition": {
        "StringEquals": {
          "aws:SourceAccount": "123456789012"
        },
        "ArnLike": {
          "aws:SourceArn": "arn:aws:iot:us-east-1:123456789012:rolealias/example_rolealias"
        }
      }
    }
  ]
}
```

# AWS IoT Core esempi di politiche
<a name="example-iot-policies"></a>

I criteri di esempio in questa sezione illustrano i documenti della policy utilizzati per completare le attività comuni in AWS IoT Core. È possibile utilizzarli come esempi per iniziare dalla creazione delle policy per le tue soluzioni.<a name="example-iot-policies-elements"></a>

Gli esempi in questa sezione utilizzano questi elementi di policy:
+ [AWS IoT Core azioni politiche](iot-policy-actions.md)
+ [AWS IoT Core risorse d'azione](iot-action-resources.md)
+ [AWS IoT esempi di politiche basate sull'identità](security_iam_id-based-policy-examples.md)
+ [Variabili AWS IoT Core politiche di base](basic-policy-variables.md)
+ [Variabili della politica del certificato AWS IoT Core X.509](cert-policy-variables.md)

**Topics**
+ [Esempi di policy di connessione](connect-policy.md)
+ [Esempi di policy di pubblicazione/sottoscrizione](pub-sub-policy.md)
+ [Esempi di policy di connessione e pubblicazione](connect-and-pub.md)
+ [Esempi di policy per i messaggi conservati](retained-message-policy-examples.md)
+ [Esempi di policy di certificato](certificate-policy-examples.md)
+ [Esempi di policy di oggetto](thing-policy-examples.md)
+ [Esempi di policy di processo base](basic-jobs-example.md)

# Esempi di policy di connessione
<a name="connect-policy"></a>

La seguente politica nega l'autorizzazione al client IDs `client1` e `client2` a cui connettersi AWS IoT Core, mentre consente ai dispositivi di connettersi utilizzando un ID client. L'ID client corrisponde al nome di un elemento registrato nel AWS IoT Core registro e allegato al principale utilizzato per la connessione:

**Nota**  
Per i dispositivi registrati, è consigliabile utilizzare [variabili delle policy di oggetto](thing-policy-variables.md) per azioni `Connect` e collegare l'oggetto al principale utilizzato per la connessione.

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Effect": "Deny",
			"Action": [
				"iot:Connect"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:client/client1",
				"arn:aws:iot:us-east-1:123456789012:client/client2"
			]
		},
		{
			"Effect": "Allow",
			"Action": [
				"iot:Connect"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:client/${iot:Connection.Thing.ThingName}"
			],
			"Condition": {
				"Bool": {
					"iot:Connection.Thing.IsAttached": "true"
				}
			}
		}
	]
}
```

La seguente politica concede l'autorizzazione alla connessione AWS IoT Core con l'ID client. `client1` Questo esempio di policy è relativa a dispositivi non registrati.

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Effect": "Allow",
			"Action": [
				"iot:Connect"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:client/client1"
			]
		}
	]
}
```

## Esempi di policy di sessioni persistenti MQTT
<a name="persistent-sessions-examples"></a>

`connectAttributes` consente di specificare quali attributi si desidera utilizzare nel messaggio di connessione nelle policy IAM, ad esempio `PersistentConnect` e `LastWill`. Per ulteriori informazioni, consulta [Utilizzo degli Attributi Connect](mqtt.md#connect-attribute).

La seguente policy permette di connettersi con la funzionalità `PersistentConnect`:

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Effect": "Allow",
			"Action": [
				"iot:Connect"
			],
			"Resource": "arn:aws:iot:us-east-1:123456789012:client/client1",
			"Condition": {
				"ForAllValues:StringEquals": {
					"iot:ConnectAttributes": [
						"PersistentConnect"
					]
				}
			}
		}
	]
}
```

La seguente policy non consente `PersistentConnect`, sono consentite altre funzionalità:

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Effect": "Allow",
			"Action": [
				"iot:Connect"
			],
			"Resource": "arn:aws:iot:us-east-1:123456789012:client/client1",
			"Condition": {
				"ForAllValues:StringNotEquals": {
					"iot:ConnectAttributes": [
						"PersistentConnect"
					]
				}
			}
		}
	]
}
```

La policy di cui sopra può essere espressa anche utilizzando `StringEquals`, è consentita qualsiasi altra funzionalità, inclusa la nuova funzionalità:

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": "arn:aws:iot:us-east-1:123456789012:client/client1"
        },
        {
            "Effect": "Deny",
            "Action": [
                "iot:Connect"
            ],
            "Resource": "*",
            "Condition": {
                "ForAnyValue:StringEquals": {
                    "iot:ConnectAttributes": [
                        "PersistentConnect"
                    ]
            }
        }
        }
    ]
}
```

La seguente policy permette la connessione sia tramite `PersistentConnect` che `LastWill`, qualsiasi altra nuova funzionalità non è consentita:

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Effect": "Allow",
			"Action": [
				"iot:Connect"
			],
			"Resource": "arn:aws:iot:us-east-1:123456789012:client/client1",
			"Condition": {
				"ForAllValues:StringEquals": {
					"iot:ConnectAttributes": [
						"PersistentConnect",
						"LastWill"
					]
				}
			}
		}
	]
}
```

La seguente policy consente la connessione pulita da parte dei client con o senza `LastWill`, non saranno consentite altre funzionalità:

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
        "Effect": "Allow",
        "Action": [
            "iot:Connect"
        ],
        "Resource": "arn:aws:iot:us-east-1:123456789012:client/client1",
        "Condition": {
            "StringEquals": {
                "iot:ConnectAttributes": "LastWill"
        }
        }
    }]
}
```

La seguente policy consente la connessione solo utilizzando le funzionalità predefinite:

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Effect": "Allow",
			"Action": [
				"iot:Connect"
			],
			"Resource": "arn:aws:iot:us-east-1:123456789012:client/client1",
			"Condition": {
				"ForAllValues:StringEquals": {
					"iot:ConnectAttributes": []
				}
			}
		}
	]
}
```

La seguente policy permette di connettersi solo a `PersistentConnect`, qualsiasi nuova funzionalità è consentita fintanto che la connessione utilizza `PersistentConnect`:

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": "arn:aws:iot:us-east-1:123456789012:client/client1",
            "Condition": {
                "ForAnyValue:StringEquals": {
                    "iot:ConnectAttributes": [
                        "PersistentConnect"
                    ]
            }
        }
        }
    ]
}
```

La seguente policy indica che la connessione deve avere sia `PersistentConnect` che `LastWill`, non è consentita alcuna nuova funzionalità:

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Effect": "Allow",
			"Action": [
				"iot:Connect"
			],
			"Resource": "arn:aws:iot:us-east-1:123456789012:client/client1",
			"Condition": {
				"ForAllValues:StringEquals": {
					"iot:ConnectAttributes": [
						"PersistentConnect",
						"LastWill"
					]
				}
			}
		},
		{
			"Effect": "Deny",
			"Action": [
				"iot:Connect"
			],
			"Resource": "*",
			"Condition": {
				"ForAllValues:StringEquals": {
					"iot:ConnectAttributes": [
						"PersistentConnect"
					]
				}
			}
		},
		{
			"Effect": "Deny",
			"Action": [
				"iot:Connect"
			],
			"Resource": "*",
			"Condition": {
				"ForAllValues:StringEquals": {
					"iot:ConnectAttributes": [
						"LastWill"
					]
				}
			}
		},
		{
			"Effect": "Deny",
			"Action": [
				"iot:Connect"
			],
			"Resource": "*",
			"Condition": {
				"ForAllValues:StringEquals": {
					"iot:ConnectAttributes": []
				}
			}
		}
	]
}
```

La seguente policy non deve avere `PersistentConnect` ma può avere `LastWill`, qualsiasi altra nuova funzionalità non è consentita:

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Deny",
            "Action": [
                "iot:Connect"
            ],
            "Resource": "*",
            "Condition": {
                "ForAnyValue:StringEquals": {
                    "iot:ConnectAttributes": [
                        "PersistentConnect"
                    ]
            }
        }
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": "arn:aws:iot:us-east-1:123456789012:client/client1",
            "Condition": {
                "ForAllValues:StringEquals": {
                    "iot:ConnectAttributes": [
                        "LastWill"
                    ]
            }
        }
        }
    ]
}
```

La seguente policy consente la connessione solo da client che dispongono di un `LastWill` con argomento `"my/lastwill/topicName"`, qualsiasi funzionalità è consentita purché utilizzi l'argomento `LastWill`:

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": "arn:aws:iot:us-east-1:123456789012:client/client1",
            "Condition": {
                "ArnEquals": {
                "iot:LastWillTopic": "arn:aws:iot:us-east-1:123456789012:topic/my/lastwill/topicName"
            }
        }
        }
    ]
}
```

La seguente policy consente solo la connessione pulita utilizzando un `LastWillTopic`, qualsiasi funzionalità è consentita purché utilizzi `LastWillTopic`:

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": "arn:aws:iot:us-east-1:123456789012:client/client1",
            "Condition": {
                "ArnEquals": {
                "iot:LastWillTopic": "arn:aws:iot:us-east-1:123456789012:topic/my/lastwill/topicName"
            }
        }
        },
        {
            "Effect": "Deny",
            "Action": [
                "iot:Connect"
            ],
            "Resource": "*",
            "Condition": {
                "ForAnyValue:StringEquals": {
                    "iot:ConnectAttributes": [
                        "PersistentConnect"
                    ]
            }
        }
        }
    ]
}
```

# Esempi di policy di pubblicazione/sottoscrizione
<a name="pub-sub-policy"></a>

La politica che usi dipende dal modo in cui ti connetti. AWS IoT CoreÈ possibile connettersi AWS IoT Core utilizzando un client MQTT, HTTP o WebSocket. Quando ti connetti con un client MQTT, l'autenticazione viene eseguita con un certificato X.509. Quando ti connetti tramite HTTP o il WebSocket protocollo, ti autentichi con Signature Version 4 e Amazon Cognito. 

**Nota**  
Per i dispositivi registrati, è consigliabile utilizzare [variabili delle policy di oggetto](thing-policy-variables.md) per azioni `Connect` e collegare l'oggetto al principale utilizzato per la connessione. 

**Topics**
+ [Utilizzo di caratteri jolly in MQTT e nelle policy AWS IoT Core](#pub-sub-policy-cert)
+ [Politiche per la pubblicazione, la sottoscrizione e la ricezione di messaggi (argomenti to/from specifici)](#pub-sub-specific-topic)
+ [Politiche per la pubblicazione, la sottoscrizione e la ricezione di messaggi, argomenti con un prefisso specifico to/from](#pub-sub-policy-specific-topic-prefix)
+ [Politiche per la pubblicazione, la sottoscrizione e la ricezione di messaggi (argomenti specifici per ogni dispositivo) to/from](#pub-sub-specific-topic-device)
+ [Politiche per la pubblicazione, la sottoscrizione e la ricezione di messaggi ( to/from argomenti con l'attributo thing nel nome dell'argomento)](#pub-sub-topic-attribute)
+ [Policy per rifiutare la pubblicazione di messaggi in argomenti secondari di un nome di argomento](#pub-sub-deny-publish)
+ [Policy per rifiutare la ricezione di messaggi da argomenti secondari di un nome di argomento](#pub-sub-deny-receive)
+ [Policy per effettuare la sottoscrizione agli argomenti utilizzando caratteri jolly MQTT](#pub-sub-topic-wildcard)
+ [WebSocket Politiche per HTTP e client](#pub-sub-policy-cognito)

## Utilizzo di caratteri jolly in MQTT e nelle policy AWS IoT Core
<a name="pub-sub-policy-cert"></a>

MQTT e AWS IoT Core le policy hanno caratteri jolly diversi e dovreste sceglierli dopo un'attenta valutazione. In MQTT, i caratteri `+` jolly `#` vengono utilizzati nei [filtri degli argomenti MQTT per sottoscrivere più nomi di argomenti](https://docs.aws.amazon.com/iot/latest/developerguide/topics.html#topicfilters). AWS IoT Core [le politiche utilizzano `*` e `?` come caratteri jolly e seguono le convenzioni delle politiche IAM.](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_grammar.html#policies-grammar-json) In un documento di policy, `*` rappresenta qualsiasi combinazione di caratteri e il punto interrogativo `?` rappresenta qualsiasi singolo carattere. Nei documenti delle policy, i caratteri jolly MQTT, `+` e `#` sono trattati come caratteri senza alcun significato speciale. Per descrivere più nomi e filtri di argomenti nell'attributo `resource` di una policy, utilizza i caratteri jolly `*` e `?` al posto dei caratteri jolly MQTT.

Quando scegliete i caratteri jolly da utilizzare in un documento di policy, tenete presente che il `*` carattere non è limitato a un singolo livello di argomento. Il `+` carattere è limitato a un singolo livello di argomento in un filtro per argomenti MQTT. Per contribuire a vincolare una specifica di carattere jolly a un singolo livello di filtro di argomento MQTT, considera l'utilizzo di più caratteri `?`. Per ulteriori informazioni sull'uso dei caratteri jolly in una risorsa politica e altri esempi di ciò che corrispondono, consultate [Using jolly](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_elements_resource.html#reference_policies_elements_resource_wildcards) in resource. ARNs

La tabella seguente mostra i diversi caratteri jolly utilizzati in MQTT e le policy AWS IoT Core per client MQTT.


| Carattere jolly. | È un carattere jolly MQTT | Esempio in MQTT | È un carattere jolly AWS IoT Core di policy | Esempio AWS IoT Core di policy per i client MQTT | 
| --- | --- | --- | --- | --- | 
| \$1 | Sì | some/\$1 | No | N/D | 
| \$1 | Sì | some/\$1/topic | No | N/D | 
| \$1 | No | N/D | Sì | `topicfilter/some/*/topic` `topicfilter/some/sensor*/topic`  | 
| ? | No | N/D | Sì |  `topic/some/?????/topic` `topicfilter/some/sensor???/topic`  | 

## Politiche per la pubblicazione, la sottoscrizione e la ricezione di messaggi (argomenti to/from specifici)
<a name="pub-sub-specific-topic"></a>

Di seguito sono riportati esempi di dispositivi registrati e non registrati per pubblicare, sottoscrivere e ricevere messaggi to/from sull'argomento denominato «some\$1specific\$1topic». Gli esempi evidenziano anche che `Publish` e `Receive` utilizzano "topic" come la risorsa e che `Subscribe` utilizza "topicfilter" come la risorsa.

------
#### [ Registered devices ]

Per i dispositivi registrati nel AWS IoT Core registro, la seguente politica consente ai dispositivi di connettersi con ClientID che corrisponde al nome di un elemento nel registro. Inoltre, fornisce le autorizzazioni `Publish`, `Subscribe` e `Receive` per l'argomento denominato "some\$1specific\$1topic".

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Effect": "Allow",
			"Action": [
				"iot:Connect"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:client/${iot:Connection.Thing.ThingName}"
			],
			"Condition": {
				"Bool": {
					"iot:Connection.Thing.IsAttached": "true"
				}
			}
		},
		{
			"Effect": "Allow",
			"Action": [
				"iot:Publish"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:topic/some_specific_topic"
			]
		},
		{
			"Effect": "Allow",
			"Action": [
				"iot:Subscribe"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:topicfilter/some_specific_topic"
			]
		},
		{
			"Effect": "Allow",
			"Action": [
				"iot:Receive"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:topic/some_specific_topic"
			]
		}
	]
}
```

------
#### [ Unregistered devices ]

Per i dispositivi non registrati nel AWS IoT Core registro, la seguente politica consente ai dispositivi di connettersi utilizzando ClientID1, ClientID2 o ClientID3. Inoltre, fornisce le autorizzazioni `Publish`, `Subscribe` e `Receive` per l'argomento denominato "some\$1specific\$1topic".

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:client/clientId1",
                "arn:aws:iot:us-east-1:123456789012:client/clientId2",
                "arn:aws:iot:us-east-1:123456789012:client/clientId3"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Publish"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:topic/some_specific_topic"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Subscribe"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:topicfilter/some_specific_topic"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Receive"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:topic/some_specific_topic"
            ]
        }
    ]
}
```

------

## Politiche per la pubblicazione, la sottoscrizione e la ricezione di messaggi, argomenti con un prefisso specifico to/from
<a name="pub-sub-policy-specific-topic-prefix"></a>

Di seguito sono riportati esempi di dispositivi registrati e non registrati per pubblicare, sottoscrivere e ricevere messaggi to/from su argomenti con il prefisso «topic\$1prefix».

**Nota**  
Nota l'uso del carattere jolly in questo esempio. `*` Sebbene `*` sia utile fornire le autorizzazioni per più nomi di argomenti in un'unica istruzione, può portare a conseguenze indesiderate fornendo ai dispositivi più privilegi del necessario. Si consiglia quindi di utilizzare il carattere `*` jolly solo dopo un'attenta valutazione.

------
#### [ Registered devices ]

Per i dispositivi registrati nel AWS IoT Core registro, la seguente politica consente ai dispositivi di connettersi con ClientID che corrisponde al nome di un elemento nel registro. Inoltre, fornisce le autorizzazioni `Publish`, `Subscribe` e `Receive` per gli argomenti preceduti dal prefisso "topic\$1prefix".

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Effect": "Allow",
			"Action": [
				"iot:Connect"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:client/${iot:Connection.Thing.ThingName}"
			],
			"Condition": {
				"Bool": {
					"iot:Connection.Thing.IsAttached": "true"
				}
			}
		},
		{
			"Effect": "Allow",
			"Action": [
				"iot:Publish",
				"iot:Receive"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:topic/topic_prefix*"
			]
		},
		{
			"Effect": "Allow",
			"Action": [
				"iot:Subscribe"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:topicfilter/topic_prefix*"
			]
		}
	]
}
```

------
#### [ Unregistered devices ]

Per i dispositivi non registrati nel AWS IoT Core registro, la seguente politica consente ai dispositivi di connettersi utilizzando ClientID1, ClientID2 o ClientID3. Inoltre, fornisce le autorizzazioni `Publish`, `Subscribe` e `Receive` per gli argomenti preceduti dal prefisso "topic\$1prefix".

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:client/clientId1",
                "arn:aws:iot:us-east-1:123456789012:client/clientId2",
                "arn:aws:iot:us-east-1:123456789012:client/clientId3"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Publish",
                "iot:Receive"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:topic/topic_prefix*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Subscribe"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:topicfilter/topic_prefix*"
            ]
        }
    ]
}
```

------

## Politiche per la pubblicazione, la sottoscrizione e la ricezione di messaggi (argomenti specifici per ogni dispositivo) to/from
<a name="pub-sub-specific-topic-device"></a>

Di seguito sono riportati esempi di dispositivi registrati e non registrati per la pubblicazione, la sottoscrizione e la ricezione di messaggi to/from su argomenti specifici per un determinato dispositivo.

------
#### [ Registered devices ]

Per i dispositivi registrati nel AWS IoT Core registro, la seguente politica consente ai dispositivi di connettersi con ClientID che corrisponde al nome di un elemento nel registro. Fornisce l'autorizzazione per pubblicare nell'argomento specifico dell'oggetto (`sensor/device/${iot:Connection.Thing.ThingName}`), nonché effettuare la sottoscrizione e ricevere messaggi dall'argomento specifico dell'oggetto (`command/device/${iot:Connection.Thing.ThingName}`). Se il nome dell'oggetto nel registro è «thing1", il dispositivo sarà in grado di pubblicare sull'argomento" 1". sensor/device/thing1". The device will also be able to subscribe to and receive from the topic "command/device/thing

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Effect": "Allow",
			"Action": [
				"iot:Connect"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:client/${iot:Connection.Thing.ThingName}"
			],
			"Condition": {
				"Bool": {
					"iot:Connection.Thing.IsAttached": "true"
				}
			}
		},
		{
			"Effect": "Allow",
			"Action": [
				"iot:Publish"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:topic/sensor/device/${iot:Connection.Thing.ThingName}"
			]
		},
		{
			"Effect": "Allow",
			"Action": [
				"iot:Subscribe"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:topicfilter/command/device/${iot:Connection.Thing.ThingName}"
			]
		},
		{
			"Effect": "Allow",
			"Action": [
				"iot:Receive"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:topic/command/device/${iot:Connection.Thing.ThingName}"
			]
		}
	]
}
```

------
#### [ Unregistered devices ]

Per i dispositivi non registrati nel AWS IoT Core registro, la seguente politica consente ai dispositivi di connettersi utilizzando ClientID1, ClientID2 o ClientID3. Fornisce l'autorizzazione per pubblicare nell'argomento specifico del client (`sensor/device/${iot:ClientId}`), nonché effettuare la sottoscrizione e ricevere messaggi dall'argomento specifico del client (`command/device/${iot:ClientId}`). Se il dispositivo si connette con ClientID come ClientID1, sarà in grado di pubblicare sull'argomento "1". sensor/device/clientId Il dispositivo sarà inoltre in grado di abbonarsi e ricevere messaggi dall'argomento. `device/clientId1/command`

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:client/clientId1",
                "arn:aws:iot:us-east-1:123456789012:client/clientId2",
                "arn:aws:iot:us-east-1:123456789012:client/clientId3"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Publish"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:topic/sensor/device/${iot:Connection.Thing.ThingName}"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Subscribe"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:topicfilter/command/device/${iot:Connection.Thing.ThingName}"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Receive"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:topic/command/device/${iot:Connection.Thing.ThingName}"
            ]
        }
    ]
}
```

------

## Politiche per la pubblicazione, la sottoscrizione e la ricezione di messaggi ( to/from argomenti con l'attributo thing nel nome dell'argomento)
<a name="pub-sub-topic-attribute"></a>

Di seguito viene illustrato un esempio di dispositivi registrati per la pubblicazione, la sottoscrizione e la ricezione di to/from argomenti di messaggi i cui nomi includono attributi di oggetto.

**Nota**  
Gli attributi degli oggetti esistono solo per i dispositivi registrati nel AWS IoT Core Registro di sistema. Non esiste un esempio corrispondente per dispositivi non registrati.

------
#### [ Registered devices ]

Per i dispositivi registrati nel AWS IoT Core registro, la seguente politica consente ai dispositivi di connettersi con ClientID che corrisponde al nome di un elemento nel registro. Fornisce l'autorizzazione per pubblicare nell'argomento (`sensor/${iot:Connection.Thing.Attributes[version]}`), nonché effettuare la sottoscrizione e ricevere messaggi dall'argomento (`command/${iot:Connection.Thing.Attributes[location]}`) dove il nome di argomento include gli attributi dell'oggetto. Se il nome dell'oggetto nel registro è impostato su `version=v1` and`location=Seattle`, il dispositivo sarà in grado di pubblicare nell'argomento "sensor/v1", and subscribe to and receive from the topic "command/Seattle».

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Effect": "Allow",
			"Action": [
				"iot:Connect"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:client/${iot:Connection.Thing.ThingName}"
			],
			"Condition": {
				"Bool": {
					"iot:Connection.Thing.IsAttached": "true"
				}
			}
		},
		{
			"Effect": "Allow",
			"Action": [
				"iot:Publish"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:topic/sensor/${iot:Connection.Thing.Attributes[version]}"
			]
		},
		{
			"Effect": "Allow",
			"Action": [
				"iot:Subscribe"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:topicfilter/command/${iot:Connection.Thing.Attributes[location]}"
			]
		},
		{
			"Effect": "Allow",
			"Action": [
				"iot:Receive"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:topic/command/${iot:Connection.Thing.Attributes[location]}"
			]
		}
	]
}
```

------
#### [ Unregistered devices ]

Poiché gli attributi dell'oggetto esistono solo per i dispositivi registrati nel AWS IoT Core registro, non esiste un esempio corrispondente per gli elementi non registrati.

------

## Policy per rifiutare la pubblicazione di messaggi in argomenti secondari di un nome di argomento
<a name="pub-sub-deny-publish"></a>

Di seguito vengono illustrati esempi di dispositivi registrati e non registrati per pubblicare messaggi in tutti gli argomenti tranne determinati argomenti secondari.

------
#### [ Registered devices ]

Per i dispositivi registrati nel AWS IoT Core registro, la seguente politica consente ai dispositivi di connettersi con ClientID che corrisponde al nome di un elemento nel registro. Fornisce l'autorizzazione per pubblicare in tutti gli argomenti preceduti dal prefisso "department/" ma non nell'argomento secondario "department/admins".

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Effect": "Allow",
			"Action": [
				"iot:Connect"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:client/${iot:Connection.Thing.ThingName}"
			],
			"Condition": {
				"Bool": {
					"iot:Connection.Thing.IsAttached": "true"
				}
			}
		},
		{
			"Effect": "Allow",
			"Action": [
				"iot:Publish"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:topic/department/*"
			]
		},
		{
			"Effect": "Deny",
			"Action": [
				"iot:Publish"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:topic/department/admins"
			]
		}
	]
}
```

------
#### [ Unregistered devices ]

Per i dispositivi non registrati nel AWS IoT Core registro, la seguente politica consente ai dispositivi di connettersi utilizzando ClientID1, ClientID2 o ClientID3. Fornisce l'autorizzazione per pubblicare in tutti gli argomenti preceduti dal prefisso "department/" ma non nell'argomento secondario "department/admins".

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:client/clientId1",
                "arn:aws:iot:us-east-1:123456789012:client/clientId2",
                "arn:aws:iot:us-east-1:123456789012:client/clientId3"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Publish"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:topic/department/*"
            ]
        },
        {
            "Effect": "Deny",
            "Action": [
                "iot:Publish"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:topic/department/admins"
            ]
        }
    ]
}
```

------

## Policy per rifiutare la ricezione di messaggi da argomenti secondari di un nome di argomento
<a name="pub-sub-deny-receive"></a>

Di seguito vengono illustrati esempi di dispositivi registrati e non registrati per effettuare la sottoscrizione e ricevere messaggi da argomenti con prefissi specifici tranne determinati argomenti secondari.

------
#### [ Registered devices ]

Per i dispositivi registrati nel AWS IoT Core registro, la seguente politica consente ai dispositivi di connettersi con ClientID che corrisponde al nome di un elemento nel registro. La policy consente ai dispositivi di effettuare la sottoscrizione a qualsiasi argomento preceduto dal prefisso "topic\$1prefix". Utilizzando `NotResource` nell'istruzione for`iot:Receive`, consentiamo al dispositivo di ricevere messaggi da tutti gli argomenti a cui il dispositivo è abbonato, ad eccezione degli argomenti con il prefisso «topic\$1». prefix/restricted". For example, with this policy, devices can subscribe to "topic\$1prefix/topic1" and even "topic\$1prefix/restricted", however, they will only receive messages from the topic "topic\$1prefix/topic1" and no messages from the topic "topic\$1prefix/restricted

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Effect": "Allow",
			"Action": [
				"iot:Connect"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:client/${iot:Connection.Thing.ThingName}"
			],
			"Condition": {
				"Bool": {
					"iot:Connection.Thing.IsAttached": "true"
				}
			}
		},
		{
			"Effect": "Allow",
			"Action": "iot:Subscribe",
			"Resource": "arn:aws:iot:us-east-1:123456789012:topicfilter/topic_prefix/*"
		},
		{
			"Effect": "Allow",
			"Action": "iot:Receive",
			"NotResource": "arn:aws:iot:us-east-1:123456789012:topic/topic_prefix/restricted/*"
		}
	]
}
```

------
#### [ Unregistered devices ]

Per i dispositivi non registrati nel AWS IoT Core registro, la seguente politica consente ai dispositivi di connettersi utilizzando ClientID1, ClientID2 o ClientID3. La policy consente ai dispositivi di effettuare la sottoscrizione a qualsiasi argomento preceduto dal prefisso "topic\$1prefix". Utilizzando `NotResource` nell'istruzione for`iot:Receive`, consentiamo al dispositivo di ricevere messaggi da tutti gli argomenti a cui il dispositivo è abbonato, ad eccezione degli argomenti con il prefisso «topic\$1». prefix/restricted". For example, with this policy, devices can subscribe to "topic\$1prefix/topic1" and even "topic\$1prefix/restricted". However, they will only receive messages from the topic "topic\$1prefix/topic1" and no messages from the topic "topic\$1prefix/restricted

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:client/clientId1",
                "arn:aws:iot:us-east-1:123456789012:client/clientId2",
                "arn:aws:iot:us-east-1:123456789012:client/clientId3"
            ]
        },
        {
            "Effect": "Allow",
            "Action": "iot:Subscribe",
            "Resource": "arn:aws:iot:us-east-1:123456789012:topicfilter/topic_prefix/*"
        },
        {
            "Effect": "Allow",
            "Action": "iot:Receive",
            "NotResource": "arn:aws:iot:us-east-1:123456789012:topic/topic_prefix/restricted/*"
        }
    ]
}
```

------

## Policy per effettuare la sottoscrizione agli argomenti utilizzando caratteri jolly MQTT
<a name="pub-sub-topic-wildcard"></a>

I caratteri jolly MQTT \$1 e \$1 vengono trattati come stringhe letterali, ma non vengono trattati come caratteri jolly quando vengono utilizzati nelle policy. AWS IoT Core In MQTT, i caratteri \$1 e \$1 vengono trattati come caratteri jolly solo quando si effettua la sottoscrizione a un filtro di argomenti, ma come una stringa letterale in tutti gli altri contesti. Si consiglia di utilizzare questi caratteri jolly MQTT come parte delle policy solo dopo un'attenta valutazione. AWS IoT Core 

Di seguito sono riportati esempi di elementi registrati e non registrati che utilizzano i caratteri jolly MQTT nelle politiche. AWS IoT Core Questi caratteri jolly vengono trattati come stringhe letterali.

------
#### [ Registered devices ]

Per i dispositivi registrati nel AWS IoT Core registro, la seguente politica consente ai dispositivi di connettersi con ClientID che corrisponde al nome di un elemento nel registro. La policy consente ai dispositivi di effettuare la sottoscrizione agli argomenti "department/\$1/employees" e "location/\$1". Poiché \$1 e \$1 sono considerati stringhe letterali nelle AWS IoT Core policy, i dispositivi possono sottoscrivere l'argomento «reparto/\$1/employees» ma non anche l'argomento "". department/engineering/employees". Similarly, devices can subscribe to the topic "location/\$1" but not to the topic "location/Seattle". However, once the device subscribes to the topic "department/\$1/employees", the policy will allow them to receive messages from the topic "department/engineering/employees". Similarly, once the device subscribes to the topic "location/\$1", they will receive messages from the topic "location/Seattle

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Effect": "Allow",
			"Action": [
				"iot:Connect"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:client/${iot:Connection.Thing.ThingName}"
			],
			"Condition": {
				"Bool": {
					"iot:Connection.Thing.IsAttached": "true"
				}
			}
		},
		{
			"Effect": "Allow",
			"Action": "iot:Subscribe",
			"Resource": "arn:aws:iot:us-east-1:123456789012:topicfilter/department/+/employees"
		},
		{
			"Effect": "Allow",
			"Action": "iot:Subscribe",
			"Resource": "arn:aws:iot:us-east-1:123456789012:topicfilter/location/#"
		},
		{
			"Effect": "Allow",
			"Action": "iot:Receive",
			"Resource": "arn:aws:iot:us-east-1:123456789012:topic/*"
		}
	]
}
```

------
#### [ Unregistered devices ]

Per i dispositivi non registrati nel AWS IoT Core registro, la seguente politica consente ai dispositivi di connettersi utilizzando ClientID1, ClientID2 o ClientID3. La policy consente ai dispositivi di effettuare la sottoscrizione agli argomenti "department/\$1/employees" e "location/\$1". Poiché \$1 e \$1 sono considerati stringhe letterali nelle AWS IoT Core politiche, i dispositivi possono sottoscrivere l'argomento «reparto/\$1/dipendenti» ma non anche l'argomento "". department/engineering/employees". Similarly, devices can subscribe to the topic "location/\$1" but not "location/Seattle". However, once the device subscribes to the topic "department/\$1/employees", the policy will allow them to receive messages from the topic "department/engineering/employees". Similarly, once the device subscribes to the topic "location/\$1", they will receive messages from the topic "location/Seattle

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:client/clientId1",
                "arn:aws:iot:us-east-1:123456789012:client/clientId2",
                "arn:aws:iot:us-east-1:123456789012:client/clientId3"
            ]
        },
        {
            "Effect": "Allow",
            "Action": "iot:Subscribe",
            "Resource": "arn:aws:iot:us-east-1:123456789012:topicfilter/department/+/employees"
        },
        {
            "Effect": "Allow",
            "Action": "iot:Subscribe",
            "Resource": "arn:aws:iot:us-east-1:123456789012:topicfilter/location/#"
        },
        {
            "Effect": "Allow",
            "Action": "iot:Receive",
            "Resource": "arn:aws:iot:us-east-1:123456789012:topic/*"
        }
    ]
}
```

------

## WebSocket Politiche per HTTP e client
<a name="pub-sub-policy-cognito"></a>

Quando ti connetti tramite HTTP o il WebSocket protocollo, ti autentichi con Signature Version 4 e Amazon Cognito. Idenitità di Amazon Cognito possono essere autenticate e non autenticate. Le identità autenticate appartengono agli utenti autenticati da qualsiasi provider di identità supportato. Solitamente le identità non autenticate appartengono in genere agli utenti guest che non sono in grado di effettuare l'autenticazione con un provider di identità. Amazon Cognito fornisce un identificatore e AWS credenziali univoci per supportare identità non autenticate. Per ulteriori informazioni, consulta [Autorizzazione con identità Amazon Cognito](cog-iot-policies.md).

Per le seguenti operazioni, AWS IoT Core utilizza AWS IoT Core le policy collegate alle identità di Amazon Cognito tramite l'API. `AttachPolicy` In questo modo vengono ridotte le autorizzazioni associate al pool di identità di Amazon Cognito con identità autenticate.
+ `iot:Connect`
+ `iot:Publish`
+ `iot:Subscribe`
+ `iot:Receive`
+ `iot:GetThingShadow`
+ `iot:UpdateThingShadow`
+ `iot:DeleteThingShadow`

Ciò significa che un'identità di Amazon Cognito necessita dell'autorizzazione della policy del ruolo IAM e della AWS IoT Core policy. Puoi collegare la policy del ruolo IAM al pool e la AWS IoT Core policy all'identità di Amazon Cognito tramite l' AWS IoT Core `AttachPolicy`API.

Gli utenti autenticati e non autenticati sono diversi tipi di identità. Se non alleghi una AWS IoT policy all'identità di Amazon Cognito, un utente autenticato non ottiene l'autorizzazione AWS IoT e non ha accesso a AWS IoT risorse e azioni.

**Nota**  
Per altre AWS IoT Core operazioni o per identità non autenticate, AWS IoT Core non limita le autorizzazioni associate al ruolo del pool di identità di Amazon Cognito. Per le identità autenticate e non autenticate, questa è la policy più permissiva che consigliamo di collegare al ruolo del pool di Amazon Cognito.

**HTTP**

Per permettere alle identità non autenticate di Amazon Cognito di pubblicare messaggi tramite HTTP in un argomento specifico di Amazon Cognito Identity, collega la seguente policy IAM al ruolo del pool di identità di Amazon Cognito:

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Publish"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:topic/${cognito-identity.amazonaws.com:sub}"
            ]
        }
    ]
}
```

Per consentire l'autenticazione degli utenti, collega la policy precedente al ruolo del pool di Amazon Cognito Identity e all'Amazon Cognito Identity utilizzando l'API. AWS IoT Core [AttachPolicy](https://docs.aws.amazon.com//iot/latest/apireference/API_AttachPolicy.html)

**Nota**  
Quando autorizzi le identità di Amazon Cognito AWS IoT Core , considera entrambe le politiche e concede i privilegi minimi specificati. Un'operazione è consentita solo se entrambe le policy consentono l'operazione richiesta. Se una policy non consente un'operazione, quest'ultima non è autorizzata.

**MQTT**

Per consentire alle identità di Amazon Cognito non autenticate di pubblicare messaggi MQTT WebSocket su un argomento specifico di Amazon Cognito Identity nel tuo account, collega la seguente policy IAM al ruolo del pool di Amazon Cognito Identity:

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Publish"
            ],
            "Resource": ["arn:aws:iot:us-east-1:123456789012:topic/${cognito-identity.amazonaws.com:sub}"]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": ["arn:aws:iot:us-east-1:123456789012:client/${cognito-identity.amazonaws.com:sub}"]
        }
    ]
}
```

Per consentire l'autenticazione degli utenti, collega la policy precedente al ruolo del pool di Amazon Cognito Identity e all'Amazon Cognito Identity utilizzando l'API. AWS IoT Core [AttachPolicy](https://docs.aws.amazon.com//iot/latest/apireference/API_AttachPolicy.html)

**Nota**  
Quando autorizzi le identità di Amazon Cognito AWS IoT Core , considera entrambe e concede i privilegi minimi specificati. Un'operazione è consentita solo se entrambe le policy consentono l'operazione richiesta. Se una policy non consente un'operazione, quest'ultima non è autorizzata.

# Esempi di policy di connessione e pubblicazione
<a name="connect-and-pub"></a>

Per i dispositivi registrati come oggetti nel AWS IoT Core registro, la seguente politica concede l'autorizzazione a connettersi AWS IoT Core con un ID client che corrisponde al nome dell'oggetto e limita la pubblicazione del dispositivo su un argomento MQTT specifico dell'ID client o del nome dell'oggetto. Affinché una connessione abbia esito positivo, il nome dell'oggetto deve essere registrato nel AWS IoT Core registro ed essere autenticato utilizzando un'identità o un principale associato all'oggetto:

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "iot:Publish"
      ],
      "Resource": [
        "arn:aws:iot:us-east-1:123456789012:topic/${iot:Connection.Thing.ThingName}"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "iot:Connect"
      ],
      "Resource": [
        "arn:aws:iot:us-east-1:123456789012:client/${iot:Connection.Thing.ThingName}"
      ]
    }
  ]
}
```

Per i dispositivi non registrati come elementi nel AWS IoT Core registro, la seguente politica concede l'autorizzazione alla connessione AWS IoT Core con l'ID client `client1` e limita il dispositivo alla pubblicazione su un argomento MQTT specifico per ClientID:

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "iot:Publish"
      ],
      "Resource": [
        "arn:aws:iot:us-east-1:123456789012:topic/${iot:ClientId}"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "iot:Connect"
      ],
      "Resource": [
        "arn:aws:iot:us-east-1:123456789012:client/client1"
      ]
    }
  ]
}
```

# Esempi di policy per i messaggi conservati
<a name="retained-message-policy-examples"></a>

L'utilizzo di [messaggi conservati](mqtt.md#mqtt-retain) richiede politiche specifiche. I messaggi conservati sono messaggi MQTT pubblicati con il flag RETAIN impostato e archiviati da. AWS IoT Core Questa sezione presenta esempi di policy che consentono l'uso comune dei messaggi conservati.

**Topics**
+ [Policy per la connessione e la pubblicazione di messaggi conservati](#retained-message-policy-examples-publish)
+ [Criteri per connettere e pubblicare i messaggi Will conservati](#retained-message-policy-examples-publish-lwt)
+ [Policy per elencare e ricevere messaggi conservati](#retained-message-policy-examples-list-get)

## Policy per la connessione e la pubblicazione di messaggi conservati
<a name="retained-message-policy-examples-publish"></a>

Affinché un dispositivo pubblichi i messaggi conservati, il dispositivo deve essere in grado di connettersi, pubblicare (qualsiasi messaggio MQTT) e pubblicare messaggi conservati MQTT. Il seguente criterio concede queste autorizzazioni per l'argomento: `device/sample/configuration` al client **device1**. Per un altro esempio che concede l'autorizzazione per connettersi, consulta[Esempi di policy di connessione e pubblicazione](connect-and-pub.md).

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Effect": "Allow",
			"Action": [
				"iot:Connect"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:client/device1"
			]
		},
		{
			"Effect": "Allow",
			"Action": [
				"iot:Publish",
				"iot:RetainPublish"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:topic/device/sample/configuration"
			]
		}
	]
}
```

## Criteri per connettere e pubblicare i messaggi Will conservati
<a name="retained-message-policy-examples-publish-lwt"></a>

I client possono configurare un messaggio che AWS IoT Core verrà pubblicato quando il client si disconnette inaspettatamente. MQTT chiama un messaggio di tipo [messaggio *Will*](http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/errata01/os/mqtt-v3.1.1-errata01-os-complete.html#_Will_Flag). Un client deve disporre di una condizione aggiuntiva aggiunta all'autorizzazione di connessione per includerli. 

Il seguente documento di policy concede a tutti i client l'autorizzazione per connettersi e pubblicare un messaggio Will, identificato dal relativo argomento, `will`, di cui AWS IoT Core lo manterrà.

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Effect": "Allow",
			"Action": [
				"iot:Connect"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:client/device1"
			],
			"Condition": {
				"ForAllValues:StringEquals": {
					"iot:ConnectAttributes": [
						"LastWill"
					]
				}
			}
		},
		{
			"Effect": "Allow",
			"Action": [
				"iot:Publish",
				"iot:RetainPublish"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:topic/will"
			]
		}
	]
}
```

## Policy per elencare e ricevere messaggi conservati
<a name="retained-message-policy-examples-list-get"></a>

Servizi e applicazioni possono accedere ai messaggi conservati senza la necessità di supportare un client MQTT chiamando [https://docs.aws.amazon.com//iot/latest/apireference/API_iotdata_ListRetainedMessages.html](https://docs.aws.amazon.com//iot/latest/apireference/API_iotdata_ListRetainedMessages.html) e [https://docs.aws.amazon.com//iot/latest/apireference/API_iotdata_GetRetainedMessage.html](https://docs.aws.amazon.com//iot/latest/apireference/API_iotdata_GetRetainedMessage.html). I servizi e le applicazioni che chiamano queste azioni devono essere autorizzati utilizzando una policy come l'esempio seguente.

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:ListRetainedMessages"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:client/device1"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:GetRetainedMessage"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:topic/foo"
            ]
        }
    ]
}
```

# Esempi di policy di certificato
<a name="certificate-policy-examples"></a>

Per i dispositivi registrati nel AWS IoT Core registro, la seguente politica concede l'autorizzazione a connettersi a AWS IoT Core un ID client che corrisponde al nome di un oggetto e a pubblicare su un argomento il cui nome è uguale al certificato utilizzato dal `certificateId` dispositivo per autenticarsi:

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Publish"
            ],
            "Resource": ["arn:aws:iot:us-east-1:123456789012:topic/${iot:CertificateId}"]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": ["arn:aws:iot:us-east-1:123456789012:client/${iot:Connection.Thing.ThingName}"]
        }
    ]
}
```

Per i dispositivi non registrati nel AWS IoT Core registro, la seguente politica concede l'autorizzazione alla connessione AWS IoT Core con il client IDs `client3` e alla pubblicazione su un argomento il cui nome è uguale al `certificateId` certificato utilizzato dal dispositivo per l'autenticazione: `client1` `client2`

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Publish"
            ],
            "Resource": ["arn:aws:iot:us-east-1:123456789012:topic/${iot:CertificateId}"]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:client/client1",
                "arn:aws:iot:us-east-1:123456789012:client/client2",
                "arn:aws:iot:us-east-1:123456789012:client/client3"
            ]
        }
    ]
}
```

Per i dispositivi registrati nel AWS IoT Core registro, la seguente politica concede l'autorizzazione a AWS IoT Core connettersi a un ID client che corrisponde al nome dell'oggetto e a pubblicare su un argomento il cui nome è uguale al `CommonName` campo dell'oggetto del certificato utilizzato dal dispositivo per l'autenticazione:

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Publish"
            ],
            "Resource": ["arn:aws:iot:us-east-1:123456789012:topic/${iot:Certificate.Subject.CommonName}"]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": ["arn:aws:iot:us-east-1:123456789012:client/${iot:Connection.Thing.ThingName}"]
        }
    ]
}
```

**Nota**  
In questo esempio, il nome comune dell'oggetto del certificato viene utilizzato come identificatore dell'argomento, presumendo che il nome comune dell'oggetto sia univoco per ogni certificato registrato. Se i certificati sono condivisi tra più dispositivi, il nome comune dell'oggetto è identico per tutti i dispositivi che condividono il certificato, concedendo quindi privilegi di pubblicazione nello stesso argomento da più dispositivi (opzione non consigliata).

Per i dispositivi non registrati nel AWS IoT Core registro, la seguente politica concede l'autorizzazione alla connessione AWS IoT Core con il client IDs `client3` e alla pubblicazione su un argomento il cui nome è uguale al `CommonName` campo dell'oggetto del certificato utilizzato dal dispositivo per l'autenticazione: `client1` `client2`

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Publish"
            ],
            "Resource": ["arn:aws:iot:us-east-1:123456789012:topic/${iot:Certificate.Subject.CommonName}"]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:client/client1",
                "arn:aws:iot:us-east-1:123456789012:client/client2",
                "arn:aws:iot:us-east-1:123456789012:client/client3"
            ]
        }
    ]
}
```

**Nota**  
In questo esempio, il nome comune dell'oggetto del certificato viene utilizzato come identificatore dell'argomento, presumendo che il nome comune dell'oggetto sia univoco per ogni certificato registrato. Se i certificati sono condivisi tra più dispositivi, il nome comune dell'oggetto è identico per tutti i dispositivi che condividono il certificato, concedendo quindi privilegi di pubblicazione nello stesso argomento da più dispositivi (opzione non consigliata).

Per i dispositivi registrati nel AWS IoT Core registro, la seguente politica concede l'autorizzazione a connettersi a AWS IoT Core un ID client che corrisponde al nome dell'oggetto e a pubblicare su un argomento il cui nome ha il prefisso `admin/` quando il certificato utilizzato per l'autenticazione del dispositivo ha il `Subject.CommonName.2` campo impostato su`Administrator`:

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": ["arn:aws:iot:us-east-1:123456789012:client/${iot:Connection.Thing.ThingName}"]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Publish"
            ],
            "Resource": ["arn:aws:iot:us-east-1:123456789012:topic/admin/*"],
            "Condition": {
                "StringEquals": {
                    "iot:Certificate.Subject.CommonName.2": "Administrator"
            }
        }
        }
    ]
}
```

Per i dispositivi non registrati nel AWS IoT Core registro, la seguente politica concede l'autorizzazione alla connessione AWS IoT Core con il client IDs `client1` `client3` e alla pubblicazione su un argomento il cui nome è preceduto da `admin/` quando il certificato utilizzato per l'autenticazione del dispositivo ha il `Subject.CommonName.2` campo impostato su`Administrator`: `client2`

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:client/client1",
                "arn:aws:iot:us-east-1:123456789012:client/client2",
                "arn:aws:iot:us-east-1:123456789012:client/client3"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Publish"
            ],
            "Resource": ["arn:aws:iot:us-east-1:123456789012:topic/admin/*"],
            "Condition": {
                "StringEquals": {
                    "iot:Certificate.Subject.CommonName.2": "Administrator"
            }
        }
        }
    ]
}
```

Per i dispositivi registrati nel AWS IoT Core registro, la seguente politica consente a un dispositivo di utilizzare il proprio nome oggetto per pubblicare su un argomento specifico, `admin/` seguito da `ThingName` quando il certificato utilizzato per l'autenticazione del dispositivo ha uno dei suoi `Subject.CommonName` campi impostato su`Administrator`:

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": ["arn:aws:iot:us-east-1:123456789012:client/${iot:Connection.Thing.ThingName}"]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Publish"
            ],
            "Resource": ["arn:aws:iot:us-east-1:123456789012:topic/admin/${iot:Connection.Thing.ThingName}"],
            "Condition": {
                "ForAnyValue:StringEquals": {
                    "iot:Certificate.Subject.CommonName.List": "Administrator"
            }
        }
        }
    ]
}
```

Per i dispositivi non registrati nel AWS IoT Core registro, la seguente politica concede l'autorizzazione AWS IoT Core alla connessione al client IDs `client1` `client3` e alla pubblicazione sull'argomento `admin` quando uno dei `Subject.CommonName` campi del certificato utilizzato per l'autenticazione del dispositivo è impostato su: `client2` `Administrator`

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:client/client1",
                "arn:aws:iot:us-east-1:123456789012:client/client2",
                "arn:aws:iot:us-east-1:123456789012:client/client3"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Publish"
            ],
            "Resource": ["arn:aws:iot:us-east-1:123456789012:topic/admin"],
            "Condition": {
                "ForAnyValue:StringEquals": {
                    "iot:Certificate.Subject.CommonName.List": "Administrator"
            }
        }
        }
    ]
}
```

# Esempi di policy di oggetto
<a name="thing-policy-examples"></a>

La seguente politica consente a un dispositivo di connettersi se il certificato utilizzato per l'autenticazione AWS IoT Core è allegato all'oggetto per cui viene valutata la politica:

****  

```
{  
    "Version":"2012-10-17",		 	 	 
    "Statement":[
        {  
            "Effect":"Allow",
            "Action":["iot:Connect"],
            "Resource":[ "*" ],
            "Condition": {
                "Bool": {
                    "iot:Connection.Thing.IsAttached": ["true"]
            }
        }
        }
    ]
}
```

La seguente policy consente a un dispositivo di pubblicare se il certificato è collegato a un oggetto con un particolare tipo di oggetto e se l'oggetto ha un attributo di `attributeName` con valore `attributeValue`. Per ulteriori informazioni sulle variabili delle policy di oggetto, consulta [Variabili delle policy di oggetto](thing-policy-variables.md).

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "iot:Publish"
      ],
      "Resource": "arn:aws:iot:us-east-1:123456789012:topic/device/stats",
      "Condition": {
        "StringEquals": {
          "iot:Connection.Thing.Attributes[attributeName]": "attributeValue",
          "iot:Connection.Thing.ThingTypeName": "Thing_Type_Name"
        },
        "Bool": {
          "iot:Connection.Thing.IsAttached": "true"
        }
      }
    }
  ]
}
```

La seguente policy consente a un dispositivo di pubblicare su un argomento che inizia con un attributo dell'oggetto. Se il certificato del dispositivo non è associato all'oggetto, questa variabile non verrà risolta e genererà un errore di accesso negato. Per ulteriori informazioni sulle variabili delle policy di oggetto, consulta [Variabili delle policy di oggetto](thing-policy-variables.md).

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "iot:Publish"
      ],
      "Resource": "arn:aws:iot:us-east-1:123456789012:topic/${iot:Connection.Thing.Attributes[attributeName]}/*"
    }
  ]
}
```

# Esempi di policy di processo base
<a name="basic-jobs-example"></a>

Questo esempio mostra le dichiarazioni delle policy richieste per un obiettivo di processo che è un singolo dispositivo per ricevere una richiesta di processo e comunicare lo stato di esecuzione del processo con AWS IoT.

Sostituisci *us-west-2:57EXAMPLE833* con i tuoi Regione AWS, un carattere con i due punti (:) e il tuo Account AWS numero a 12 cifre, quindi sostituiscilo *uniqueThingName* con il nome della risorsa oggetto che rappresenta il dispositivo in. AWS IoT

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": [
                "arn:aws:iot:us-west-2:123456789012:client/uniqueThingName"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Publish"
            ],
            "Resource": [
                "arn:aws:iot:us-west-2:123456789012:topic/test/dc/pubtopic",
                "arn:aws:iot:us-west-2:123456789012:topic/$aws/events/job/*",
                "arn:aws:iot:us-west-2:123456789012:topic/$aws/events/jobExecution/*",
                "arn:aws:iot:us-west-2:123456789012:topic/$aws/things/uniqueThingName/jobs/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Subscribe"
            ],
            "Resource": [
                "arn:aws:iot:us-west-2:123456789012:topicfilter/test/dc/subtopic",
                "arn:aws:iot:us-west-2:123456789012:topicfilter/$aws/events/jobExecution/*",
                "arn:aws:iot:us-west-2:123456789012:topicfilter/$aws/things/uniqueThingName/jobs/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Receive"
            ],
            "Resource": [
                "arn:aws:iot:us-west-2:123456789012:topic/test/dc/subtopic",
                "arn:aws:iot:us-west-2:123456789012:topic/$aws/things/uniqueThingName/jobs/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iotjobsdata:DescribeJobExecution",
                "iotjobsdata:GetPendingJobExecutions",
                "iotjobsdata:StartNextPendingJobExecution",
                "iotjobsdata:UpdateJobExecution"
            ],
            "Resource": [
                "arn:aws:iot:us-west-2:123456789012:topic/$aws/things/uniqueThingName"
            ]
        }
    ]
}
```

# Autorizzazione con identità Amazon Cognito
<a name="cog-iot-policies"></a>

Esistono due tipi di identità di Amazon Cognito: non autenticate e autenticate. Se l'app supporta identità Amazon Cognito non autenticate, non viene eseguita alcuna autenticazione in modo da non sapere chi è l'utente. 

**Identità non autenticate:** per le identità Amazon Cognito non autenticate, viene concessa l'autorizzazione collegando un ruolo IAM a un pool di identità non autenticato. Consigliamo di concedere l'accesso solo alle risorse che si desidera rendere disponibili agli utenti sconosciuti.

**Importante**  
Per gli utenti non autenticati che si connettono AWS IoT Core ad Amazon Cognito, consigliamo di concedere l'accesso a risorse molto limitate nelle policy IAM.

**Identità autenticate:** per le identità Amazon Cognito autenticate, è necessario specificare autorizzazioni in due posizioni: 
+ Collega una policy IAM al pool di identità di Amazon Cognito autenticato e
+ Allega una AWS IoT Core policy all'identità di Amazon Cognito (utente autenticato).

## Esempi di policy per utenti Amazon Cognito non autenticati e autenticati che si connettono a AWS IoT Core
<a name="cog-iot-policies-auth-unauth-examples"></a>

Nell'esempio seguente vengono illustrate le autorizzazioni nella policy IAM e nella policy IoT di un'identità Amazon Cognito. L'utente autenticato desidera pubblicare su un argomento specifico del dispositivo (ad esempio). device/DEVICE\$1ID/status

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:client/Client_ID"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Publish"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:topic/device/Device_ID/status"
            ]
        }
    ]
}
```

L'esempio seguente mostra le autorizzazioni in una policy IAM di un ruolo non autenticato di Amazon Cognito. L'utente non autenticato desidera pubblicare in argomenti non specifici del dispositivo che non richiedono l'autenticazione.

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:client/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Publish"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:topic/non_device_specific_topic"
            ]
        }
    ]
}
```

## GitHub esempi
<a name="cog-iot-policies-github"></a>

I seguenti esempi di applicazioni web GitHub mostrano come incorporare l'allegato delle policy agli utenti autenticati nel processo di registrazione e autenticazione degli utenti.
+ [Applicazione web MQTT publish/subscribe React che utilizza e AWS AmplifySDK per dispositivi AWS IoT per JavaScript](https://github.com/aws-samples/aws-amplify-react-iot-pub-sub-using-cp)
+ [Applicazione web MQTT publish/subscribe React che utilizza AWS AmplifySDK per dispositivi AWS IoT per JavaScript, la e una funzione Lambda](https://github.com/aws-samples/aws-amplify-react-iot-pub-sub-using-lambda)

Amplify è un insieme di strumenti e servizi che ti aiuta a creare applicazioni web e mobili che si integrano con i servizi. AWS Per ulteriori informazioni su Amplify, consulta [Amplify Framework Documentation (Documentazione Amplify Framework)](https://docs.amplify.aws/).

Entrambi gli esempi eseguono la seguente procedura.

1. Quando un utente si registra per un account, l'applicazione crea un bacino d'utenza e un'identità di Amazon Cognito.

1. Quando un utente si autentica, l'applicazione crea e allega una policy all'identità. Ciò consente all'utente di pubblicare e sottoscrivere le autorizzazioni.

1. L'utente può utilizzare l'applicazione per pubblicare e iscriversi ad argomenti MQTT.

Il primo esempio utilizza l'operazione API `AttachPolicy` direttamente all'interno dell'operazione di autenticazione. Nell'esempio seguente viene illustrato come implementare questa chiamata API all'interno di un'applicazione Web React che utilizza Amplify e SDK per dispositivi AWS IoT per JavaScript.

```
function attachPolicy(id, policyName) {
    var Iot = new AWS.Iot({region: AWSConfiguration.region, apiVersion: AWSConfiguration.apiVersion, endpoint: AWSConfiguration.endpoint});
    var params = {policyName: policyName, target: id};

    console.log("Attach IoT Policy: " + policyName + " with cognito identity id: " + id);
    Iot.attachPolicy(params, function(err, data) {
         if (err) {
               if (err.code !== 'ResourceAlreadyExistsException') {
                  console.log(err);
               }
          }
         else  {
            console.log("Successfully attached policy with the identity", data);
         }
     });
}
```

Questo codice viene visualizzato nel [AuthDisplayfile.js.](https://github.com/aws-samples/aws-amplify-react-iot-pub-sub-using-cp/blob/d1c307b36357be934db9dda020140fa337709cd9/src/AuthDisplay.js#L45)

Il secondo esempio implementa l'operazione API `AttachPolicy` in una funzione Lambda. Nell'esempio seguente viene illustrato in che modo Lambda utilizza questa chiamata API.

```
iot.attachPolicy(params, function(err, data) {
     if (err) {
           if (err.code !== 'ResourceAlreadyExistsException') {
              console.log(err);
              res.json({error: err, url: req.url, body: req.body});
           }
      }
     else  {
        console.log(data);
        res.json({success: 'Create and attach policy call succeed!', url: req.url, body: req.body});
     }
 });
```

Questo codice viene visualizzato all'interno della funzione `iot.GetPolicy` nel file[app.js](https://github.com/aws-samples/aws-amplify-react-iot-pub-sub-using-lambda/blob/e493039581d2aff0faa3949086deead20a2c5385/amplify/backend/function/amplifyiotlambda/src/app.js#L50).

**Nota**  
Quando chiami la funzione con AWS le credenziali ottenute tramite i pool di identità di Amazon Cognito, l'oggetto di contesto nella funzione Lambda contiene un valore per. `context.cognito_identity_id` Per ulteriori informazioni, consulta gli argomenti seguenti.   
[AWS Lambda oggetto di contesto in Node.js](https://docs.aws.amazon.com/lambda/latest/dg/nodejs-context.html)
[AWS Lambda oggetto di contesto in Python](https://docs.aws.amazon.com/lambda/latest/dg/python-context.html)
[AWS Lambda oggetto di contesto in Ruby](https://docs.aws.amazon.com/lambda/latest/dg/ruby-context.html)
[AWS Lambda oggetto di contesto in Java](https://docs.aws.amazon.com/lambda/latest/dg/java-context.html)
[AWS Lambda oggetto contestuale in Go](https://docs.aws.amazon.com/lambda/latest/dg/golang-context.html)
[AWS Lambda oggetto di contesto in C\$1](https://docs.aws.amazon.com/lambda/latest/dg/csharp-context.html)
[AWS Lambda oggetto di contesto in PowerShell](https://docs.aws.amazon.com/lambda/latest/dg/powershell-context.html)

# Autorizzazione di chiamate dirette ai AWS servizi utilizzando il provider di AWS IoT Core credenziali
<a name="authorizing-direct-aws"></a>

I dispositivi possono utilizzare i certificati X.509 a cui connettersi AWS IoT Core utilizzando i protocolli di autenticazione reciproca TLS. [Altri AWS servizi non supportano l'autenticazione basata su certificati, ma possono essere richiamati utilizzando AWS credenziali in formato Signature Version 4.AWS](https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html) L'[algoritmo Signature Version 4](https://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-authenticating-requests.html) richiede normalmente che il chiamante disponga di un ID di chiave di accesso e di una chiave di accesso segreta. AWS IoT Core dispone di un provider di credenziali che consente di utilizzare il [certificato X.509](x509-client-certs.html) integrato come identità univoca del dispositivo per autenticare le richieste. AWS Ciò elimina la necessità di archiviare un ID chiave di accesso e la chiave di accesso segreta sul dispositivo.

Il fornitore di credenziali autentica un intermediario usando un certificato X.509 ed emette un token temporaneo di sicurezza con privilegi limitati. Il token può essere utilizzato per firmare e autenticare qualsiasi richiesta. AWS Questo metodo di autenticazione delle AWS richieste richiede la creazione e la configurazione di un ruolo [AWS Identity and Access Management (IAM) e l'associazione di politiche IAM appropriate al ruolo](https://docs.aws.amazon.com/service-authorization/latest/reference/id_roles.html) in modo che il fornitore delle credenziali possa assumere il ruolo per conto dell'utente. Per ulteriori informazioni su AWS IoT Core e IAM, consulta [Gestione delle identità e degli accessi per AWS IoT](security-iam.md).

 AWS IoT richiede che i dispositivi inviino l'[estensione SNI (Server Name Indication)](https://www.rfc-editor.org/rfc/rfc3546#section-3.1) al protocollo Transport Layer Security (TLS) e forniscano l'indirizzo completo dell'endpoint sul campo. `host_name` Il campo `host_name` deve contenere l'endpoint che si sta chiamando e deve essere:
+ Il `endpointAddress` restituito da `aws iot [describe-endpoint](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-endpoint.html) --endpoint-type iot:CredentialProvider`.

Le connessioni tentate dai dispositivi senza il valore `host_name` corretto non andranno a buon fine.

Lo schema seguente illustra il flusso di lavoro del fornitore di credenziali.

![\[AWS IoT Core flusso di lavoro del provider di credenziali.\]](http://docs.aws.amazon.com/it_it/iot/latest/developerguide/images/credentials-provider-diagram.png)


1. Il AWS IoT Core dispositivo invia una richiesta HTTPS al provider di credenziali per un token di sicurezza. La richiesta include il certificato X.509 del dispositivo per l'autenticazione.

1. Il provider di credenziali inoltra la richiesta al modulo di AWS IoT Core autenticazione e autorizzazione per convalidare il certificato e verificare che il dispositivo sia autorizzato a richiedere il token di sicurezza.

1. Se il certificato è valido e dispone dell'autorizzazione per richiedere un token di sicurezza, il modulo di AWS IoT Core autenticazione e autorizzazione restituisce l'esito positivo. In caso contrario, invia un'eccezione al dispositivo.

1. Una volta completata la convalida del certificato, il fornitore di credenziali richiama il [AWS Security Token Service (AWS STS)](https://docs.aws.amazon.com/STS/latest/APIReference/Welcome.html) per usare il ruolo IAM creato.

1. AWS STS restituisce un token di sicurezza temporaneo con privilegi limitati al fornitore delle credenziali.

1. Il fornitore di credenziali restituisce il token di sicurezza al dispositivo.

1. Il dispositivo utilizza il token di sicurezza per firmare una AWS richiesta con AWS Signature Version 4.

1. Il servizio richiesto richiama IAM per convalidare la firma e autorizzare la richiesta in base alle policy di accesso collegate al ruolo IAM creato per il fornitore di credenziali.

1. Se IAM convalida la firma correttamente e autorizza la richiesta, questa va a buon fine. In caso contrario, IAM invia un'eccezione.

La sezione seguente descrive come utilizzare un certificato per ottenere un token di sicurezza. Si basa su presupposto che tu abbia già [registrato un dispositivo](register-device.html) e [creato e attivato il relativo certificato](device-certs-your-own.html).

## Come utilizzare un certificato per ottenere un token di sicurezza
<a name="authorizing-direct-aws.walkthrough"></a>

1. Configura il ruolo IAM che il fornitore di credenziali assume per conto del tuo dispositivo. Collega la seguente policy di attendibilità al ruolo.   
****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": {
           "Effect": "Allow",
           "Principal": {"Service": "credentials.iot.amazonaws.com"},
           "Action": "sts:AssumeRole"
       }
   }
   ```

   Per ogni AWS servizio che desideri chiamare, allega una politica di accesso al ruolo. Il fornitore di credenziali supporta le seguenti variabili di policy:
   + `credentials-iot:ThingName`
   + `credentials-iot:ThingTypeName`
   + `credentials-iot:AwsCertificateId`

   Quando il dispositivo fornisce il nome dell'oggetto nella richiesta di un servizio AWS , il fornitore di credenziali aggiunge `credentials-iot:ThingName` e `credentials-iot:ThingTypeName` come variabili di contesto al token di sicurezza. Il fornitore di credenziali fornisce `credentials-iot:AwsCertificateId` come variabile di contesto, anche se il dispositivo non fornisce il nome dell'oggetto nella richiesta. Il nome dell'oggetto viene passato come valore dell'intestazione di richiesta HTTP `x-amzn-iot-thingname`.

   Queste tre variabili funzionano solo con le policy IAM, non con le policy AWS IoT Core .

1. Assicurati che l'utente che esegue la fase successiva (creando un alias del ruolo) disponga dell'autorizzazione per trasferire questo ruolo appena creato a AWS IoT Core. La seguente politica fornisce entrambe `iam:GetRole` le `iam:PassRole` autorizzazioni a un AWS utente. L'autorizzazione `iam:GetRole` consente all'utente di ottenere informazioni sul ruolo appena creato. L'`iam:PassRole`autorizzazione consente all'utente di passare il ruolo a un altro AWS servizio.  
****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": {
           "Effect": "Allow",
           "Action": [
               "iam:GetRole",
               "iam:PassRole"
           ],
           "Resource": "arn:aws:iam::123456789012:role/your role name"
       }
   }
   ```

1. Crea un alias di AWS IoT Core ruolo. Il dispositivo che effettuerà chiamate dirette ai AWS servizi deve sapere a quale ruolo ARN utilizzare durante la connessione. AWS IoT Core L'impostazione hardcoded dell'ARN del ruolo non è una buona soluzione, perché richiede di aggiornare il dispositivo ogni volta che l'ARN del ruolo cambia. Una soluzione migliore consiste nell'utilizzare l'API `CreateRoleAlias` per creare un alias del ruolo che punti all'ARN del ruolo. Se l'ARN del ruolo viene modificato, è sufficiente aggiornare l'alias del ruolo. Non è richiesta alcuna modifica sul dispositivo. Questa API accetta i parametri seguenti:  
`roleAlias`  
Obbligatorio. Stringa arbitraria che identifica l'alias del ruolo. Opera come chiave primaria nel modello di dati dell'alias del ruolo. Contiene da 1 a 128 caratteri e deve includere solo caratteri alfanumerici e i simboli =, @ e -. Sono consentite le lettere maiuscole e minuscole. Gli alias dei ruoli fanno distinzione tra maiuscole e minuscole.  
`roleArn`  
Obbligatorio. ARN del ruolo cui fa riferimento l'alias del ruolo.  
`credentialDurationSeconds`  
Opzionale. Tempo di validità (in secondi) della credenziale. Il valore minimo è di 900 secondi (15 minuti). Il valore massimo è di 43.200 secondi (12 ore). Il valore predefinito è 3.600 secondi (1 ora).   
Il AWS IoT Core Credential Provider può emettere una credenziale con una durata massima di 43.200 secondi (12 ore). La validità della credenziale fino a 12 ore può aiutare a ridurre il numero di chiamate verso il provider di credenziali memorizzando nella cache più a lungo la credenziale.  
Il valore `credentialDurationSeconds` deve essere minore di o uguale alla durata massima della sessione del ruolo IAM a cui fa riferimento l'alias del ruolo. Per ulteriori informazioni, vedere [Modifica della durata massima della sessione (AWS API) di un ruolo nella](https://docs.aws.amazon.com//IAM/latest/UserGuide/roles-managingrole-editing-api.html#roles-modify_max-session-duration-api) AWS Identity and Access Management User Guide.

   Per ulteriori informazioni sull'API, consulta [CreateRoleAlias](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateRoleAlias.html). 

1. Collega una policy al certificato del dispositivo. La policy collegata al certificato del dispositivo deve concedere al dispositivo l'autorizzazione necessaria per assumere il ruolo. A questo scopo, devi concedere l'autorizzazione per l'operazione `iot:AssumeRoleWithCertificate` sull'alias del ruolo, come indicato nel seguente esempio.  
****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": "iot:AssumeRoleWithCertificate",
               "Resource": "arn:aws:iot:us-east-1:123456789012:rolealias/your role alias"
           }
       ]
   }
   ```

1. Effettuare una richiesta HTTPS al fornitore di credenziali per ottenere un token di sicurezza. Fornire le seguenti informazioni:
   + *Certificato*: trattandosi di una richiesta HTTP tramite autenticazione reciproca TLS, fornisci il certificato e la chiave privata per il client durante la richiesta. Usa lo stesso certificato e la stessa chiave privata che hai usato quando hai registrato il certificato con AWS IoT Core.

     Per assicurarti che il tuo dispositivo stia comunicando con AWS IoT Core (e non un servizio che lo impersona), consulta [Autenticazione del server](x509-client-certs.html#server-authentication), segui i collegamenti per scaricare i certificati CA appropriati, quindi copiali sul tuo dispositivo.
   + *RoleAlias*: il nome dell'alias di ruolo che hai creato per il provider di credenziali. I nomi degli alias dei ruoli fanno distinzione tra maiuscole e minuscole e devono corrispondere all'alias di ruolo creato in. AWS IoT Core
   + *ThingName*: Il nome dell'oggetto che hai creato quando l'hai AWS IoT Core registrato. Viene trasferito come valore dell'intestazione HTTP `x-amzn-iot-thingname`. Questo valore è richiesto solo se si utilizzano gli attributi degli oggetti come variabili di policy nelle AWS IoT Core o nelle policy IAM.
**Nota**  
L'*ThingName*input fornito `x-amzn-iot-thingname` deve corrispondere al nome della risorsa AWS IoT Thing assegnata a un certificato. Se non corrisponde, viene restituito un errore 403.

   Esegui il comando seguente in AWS CLI per ottenere l'endpoint del provider di credenziali per il tuo. Account AWS Per ulteriori informazioni sull'API, consulta [DescribeEndpoint](https://docs.aws.amazon.com/iot/latest/apireference/API_DescribeEndpoint.html). Per gli endpoint compatibili con FIPS, vedere. [AWS IoT Core- endpoint del fornitore di credenziali](iot-connect-fips.md#iot-connect-fips-credential)

   ```
   aws iot describe-endpoint --endpoint-type iot:CredentialProvider
   ```

   Il seguente oggetto JSON è l'output di esempio del comando **describe-endpoint**. Contiene il valore `endpointAddress` utilizzato per richiedere un token di sicurezza.

   ```
   {
       "endpointAddress": "your_aws_account_specific_prefix.credentials.iot.your region.amazonaws.com"
   }
   ```

   Utilizza l'endpoint per effettuare una richiesta HTTPS al fornitore di credenziali per restituire un token di sicurezza. Il comando di esempio seguente utilizza `curl`, ma è possibile utilizzare qualsiasi client HTTP.
**Nota**  
Il nome *RoleAlias* fa distinzione tra maiuscole e minuscole e deve corrispondere all'alias del ruolo creato in. AWS IoT

   ```
   curl --cert your certificate --key your private key -H "x-amzn-iot-thingname: your thing name" --cacert AmazonRootCA1.pem https://your endpoint /role-aliases/your role alias/credentials
   ```

   Questo comando restituisce un oggetto token di sicurezza che contiene `accessKeyId`, `secretAccessKey`, `sessionToken` e una scadenza. Il seguente oggetto JSON è l'output di esempio del comando `curl`.

   ```
       {"credentials":{"accessKeyId":"access key","secretAccessKey":"secret access key","sessionToken":"session token","expiration":"2018-01-18T09:18:06Z"}}
   ```

   È quindi possibile utilizzare i `sessionToken` valori `accessKeyId``secretAccessKey`, e per firmare le richieste ai servizi. AWS *Per una end-to-end dimostrazione, vedi [Come eliminare la necessità di AWS credenziali codificate nei dispositivi utilizzando il post di blog AWS IoT Credential Provider](https://aws.amazon.com/blogs/security/how-to-eliminate-the-need-for-hardcoded-aws-credentials-in-devices-by-using-the-aws-iot-credentials-provider/) sul Security Blog.AWS *

# Accesso tra account con IAM
<a name="cross-account-access"></a>

AWS IoT Core consente di consentire a un principale di pubblicare o sottoscrivere un argomento definito in un Account AWS argomento che non è di proprietà del principale. Per configurare l'accesso tra account, devi creare una policy IAM; e un ruolo IAM; e quindi collegare la policy al ruolo.

Innanzitutto, crea una policy IAM gestita del cliente come descritto in [Creazione di policy IAM](https://docs.aws.amazon.com//IAM/latest/UserGuide/access_policies_create.html), come faresti per altri utenti e certificati nell'account Account AWS. 

Per i dispositivi registrati nel AWS IoT Core registro, la seguente politica concede l'autorizzazione ai dispositivi a cui si connette AWS IoT Core utilizzando un ID client che corrisponde al nome dell'oggetto del dispositivo e a pubblicare con il nome dell'oggetto `my/topic/thing-name ` dove *thing-name* è il nome dell'oggetto del dispositivo:

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:client/${iot:Connection.Thing.ThingName}"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Publish"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:topic/my/topic/${iot:Connection.Thing.ThingName}"
            ]
        }
    ]
}
```

Per i dispositivi non registrati nel AWS IoT Core registro, la seguente politica concede l'autorizzazione a un dispositivo a utilizzare il nome oggetto `client1` registrato nel AWS IoT Core registro dell'account (123456789012) per connettersi AWS IoT Core e pubblicare su un argomento specifico dell'ID client il cui nome è preceduto da: `my/topic/`

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:client/client1"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Publish"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:topic/my/topic/${iot:ClientId}"
            ]
        }
    ]
}
```

Quindi, segui le fasi nella pagina [Creazione di un ruolo per delegare le autorizzazioni a un utente IAM](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-user.html). Immetti l'ID dell'account Account AWS con cui desideri condividere l'accesso. Quindi, nella fase finale, collega la policy appena creata al ruolo. Se in un secondo momento devi modificare l'ID account AWS cui desideri concedere l'accesso, potrai usare il seguente formato di policy di trust: 

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": { 
                "AWS": "arn:aws:iam::567890123456:user/MyUser"
        },
            "Action": "sts:AssumeRole"
        }
    ]
}
```

# Protezione dei dati in AWS IoT Core
<a name="data-protection"></a>

Il modello di [responsabilità AWS condivisa modello](https://aws.amazon.com/compliance/shared-responsibility-model/) di di si applica alla protezione dei dati in AWS IoT Core. Come descritto in questo modello, AWS è responsabile della protezione dell'infrastruttura globale che gestisce tutti i Cloud AWS. L’utente è responsabile del controllo dei contenuti ospitati su questa infrastruttura. L’utente è inoltre responsabile della configurazione della protezione e delle attività di gestione per i Servizi AWS utilizzati. Per maggiori informazioni sulla privacy dei dati, consulta le [Domande frequenti sulla privacy dei dati](https://aws.amazon.com/compliance/data-privacy-faq/). Per informazioni sulla protezione dei dati in Europa, consulta il post del blog relativo al [AWS Modello di responsabilità condivisa e GDPR](https://aws.amazon.com/blogs/security/the-aws-shared-responsibility-model-and-gdpr/) nel *AWS Blog sulla sicurezza*.

Ai fini della protezione dei dati, consigliamo di proteggere Account AWS le credenziali e configurare i singoli utenti con AWS IAM Identity Center or AWS Identity and Access Management (IAM). In tal modo, a ogni utente verranno assegnate solo le autorizzazioni necessarie per svolgere i suoi compiti. Suggeriamo, inoltre, di proteggere i dati nei seguenti modi:
+ Utilizza l’autenticazione a più fattori (MFA) con ogni account.
+  SSL/TLS Da utilizzare per comunicare con AWS le risorse. È richiesto TLS 1.2 ed è consigliato TLS 1.3.
+ Configura l'API e la registrazione delle attività degli utenti con AWS CloudTrail. Per informazioni sull'utilizzo dei CloudTrail percorsi per acquisire AWS le attività, consulta [Lavorare con i CloudTrail percorsi](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-trails.html) nella *Guida per l'AWS CloudTrail utente*.
+ Utilizza soluzioni di AWS crittografia, insieme a tutti i controlli di sicurezza predefiniti all'interno Servizi AWS.
+ Utilizza i servizi di sicurezza gestiti avanzati, come Amazon Macie, che aiutano a individuare e proteggere i dati sensibili archiviati in Amazon S3.
+ Se hai bisogno di moduli crittografici convalidati FIPS 140-3 per accedere AWS tramite un'interfaccia a riga di comando o un'API, usa un endpoint FIPS. Per ulteriori informazioni sugli endpoint FIPS disponibili, consulta il [Federal Information Processing Standard (FIPS) 140-3](https://aws.amazon.com/compliance/fips/).

Ti consigliamo di non inserire mai informazioni riservate o sensibili, ad esempio gli indirizzi e-mail dei clienti, nei tag o nei campi di testo in formato libero, ad esempio nel campo **Nome**. Ciò include quando lavori AWS IoT o Servizi AWS utilizzi la console, l'API o. AWS CLI AWS SDKs I dati inseriti nei tag o nei campi di testo in formato libero utilizzati per i nomi possono essere utilizzati per i la fatturazione o i log di diagnostica. Quando si fornisce un URL a un server esterno, suggeriamo vivamente di non includere informazioni sulle credenziali nell’URL per convalidare la richiesta al server.

Per ulteriori informazioni sulla protezione dei dati, consulta il post del blog [AWS Modello di responsabilità condivisa e GDPR](https://aws.amazon.com/blogs/security/the-aws-shared-responsibility-model-and-gdpr/) su *AWS Security Blog*.

AWS IoT i dispositivi raccolgono dati, eseguono alcune manipolazioni su tali dati e quindi li inviano a un altro servizio Web. Potresti scegliere di archiviare alcuni dati sul tuo dispositivo per un breve periodo di tempo. L'utente è responsabile di fornire qualsiasi protezione dei dati su tali dati a riposo. Quando il dispositivo invia dati a AWS IoT, lo fa tramite una connessione TLS, come illustrato più avanti in questa sezione. AWS IoT i dispositivi possono inviare dati a qualsiasi AWS servizio. Per ulteriori informazioni sulla sicurezza dei dati di ciascun servizio, consulta la documentazione relativa al servizio. AWS IoT può essere configurato per scrivere log su CloudWatch Logs e registrare chiamate AWS IoT API su. AWS CloudTrail Per ulteriori informazioni sulla sicurezza dei dati per questi servizi, consulta [Authentication and Access Control for Amazon CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/auth-and-access-control-cw.html) e [Encrypting CloudTrail Log Files with AWS KMS managed keys](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/encrypting-cloudtrail-log-files-with-aws-kms.html).

## Crittografia dei dati in AWS IoT
<a name="data-protection-encrypt"></a>

Per impostazione predefinita, tutti i AWS IoT dati in transito e a riposo sono crittografati. [I dati in transito vengono crittografati tramite TLS](transport-security.md) e i dati inattivi vengono crittografati utilizzando chiavi AWS proprietarie. AWS IoT supporta la gestione dei clienti AWS KMS keys (chiavi KMS) da AWS Key Management Service (AWS KMS). Tuttavia, Device Advisor e AWS IoT Wireless utilizzano solo un Chiave di proprietà di AWS per crittografare i dati dei clienti.

 

# Sicurezza dei trasporti in AWS IoT Core
<a name="transport-security"></a>

TLS (Transport Layer Security) è un protocollo di crittografia progettato per comunicazioni sicure su una rete di computer. Il AWS IoT Core Device Gateway richiede ai clienti di crittografare tutte le comunicazioni in transito utilizzando TLS per le connessioni dai dispositivi al Gateway. TLS viene utilizzato per garantire la riservatezza dei protocolli applicativi (MQTT, HTTP e) supportati da. WebSocket AWS IoT Core Il supporto TLS è disponibile in diversi linguaggi di programmazione e sistemi operativi. I dati all'interno AWS sono crittografati dal servizio specifico AWS . Per ulteriori informazioni sulla crittografia dei dati su altri AWS servizi, consulta la documentazione sulla sicurezza relativa a tale servizio.

**Topics**
+ [Protocolli TLS](#tls-ssl-policy)
+ [Policy di sicurezza](#tls-policy-table)
+ [Note importanti per la sicurezza dei trasporti in AWS IoT Core](#tls-ssl-core)
+ [Sicurezza del trasporto per dispositivi wireless LoRa WAN](#tls-lorawan)

## Protocolli TLS
<a name="tls-ssl-policy"></a>

AWS IoT Core supporta le seguenti versioni del protocollo TLS:
+ TLS 1.3 
+ TLS 1.2

Con AWS IoT Core, puoi configurare le impostazioni TLS (per TLS [1.2 e TLS](https://en.wikipedia.org/wiki/Transport_Layer_Security#TLS_1.2) [1.3](https://en.wikipedia.org/wiki/Transport_Layer_Security#TLS_1.3)) nelle configurazioni di dominio. Per ulteriori informazioni, consulta [Configurazione delle impostazioni TLS nelle configurazioni di dominio](iot-endpoints-tls-config.md).

## Policy di sicurezza
<a name="tls-policy-table"></a>

Una policy di sicurezza è una combinazione di protocolli TLS e delle relative crittografie che determinano quali protocolli e crittografie sono supportati durante le negoziazioni TLS tra un client e un server. È possibile configurare i dispositivi per utilizzare policy di sicurezza predefinite in base alle esigenze. Tieni presente che AWS IoT Core non supporta politiche di sicurezza personalizzate.

Puoi scegliere una delle politiche di sicurezza predefinite per i tuoi dispositivi al momento della connessione a AWS IoT Core. I nomi delle politiche di sicurezza predefinite più recenti AWS IoT Core includono informazioni sulla versione basate sull'anno e sul mese in cui sono state rilasciate. La policy di sicurezza predefinita di default è `IoTSecurityPolicy_TLS13_1_2_2022_10`. Per specificare una politica di sicurezza, è possibile utilizzare la AWS IoT console o il AWS CLI. Per ulteriori informazioni, consulta [Configurazione delle impostazioni TLS nelle configurazioni di dominio](iot-endpoints-tls-config.md).

Nella seguente tabella vengono descritte le policy di sicurezza predefinite più recenti supportate da AWS IoT Core . `IotSecurityPolicy_` è stato rimosso dai nomi di policy nella riga dell'intestazione ai fini dell'adattamento.


| **Policy di sicurezza** | TLS13\$11\$13\$12022\$110 | TLS13\$11\$12\$12022\$110 | TLS12\$11\$12\$12022\$110 | TLS12\$11\$10\$12016\$101\$1 | TLS12\$11\$10\$12015\$101\$1 | 
| --- | --- | --- | --- | --- | --- | 
| Porta TCP |  443/8443/8883  |  443/8443/8883  |  443/8443/8883  | 443 | 8443/8883 | 443 | 8443/8883 | 
| Protocolli TLS | 
| TLS 1.2 |  | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 
| TLS 1.3 | ✓ | ✓ |  |  |  |  |  | 
| Crittografie TLS | 
| TLS\$1AES\$1128\$1GCM\$1 SHA256 | ✓ | ✓ |  |  |  |  |  | 
| TLS\$1AES\$1256\$1GCM\$1 SHA384 | ✓ | ✓ |  |  |  |  |  | 
| TLS\$1 \$1 CHACHA20 POLY1305 SHA256 | ✓ | ✓ |  |  |  |  |  | 
| ECDHE-RSA- -GCM- AES128 SHA256 |  | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 
| ECDH-RSA- AES128 - SHA256 |  | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 
| ECDHE-RSA- AES128 -SHA |  | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 
| ECDHE-RSA- AES256 -GCM- SHA384 |  | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 
| ECDH-RSA- AES256 - SHA384 |  | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 
| ECDHE-RSA- AES256 -SHA |  | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 
| AES128-GCM- SHA256 |  | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 
| AES128-SHA256 |  | ✓ | ✓ | ✓ |  | ✓ | ✓ | 
| AES128-SHA |  | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 
| AES256-GCM- SHA384 |  | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 
| AES256-SHA256 |  | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 
| AES256-SHA |  | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 
| SHE-RSA- -SHA AES256 |  |  |  |  |  | ✓ | ✓ | 
| ECDHE-ECDSA- AES128 -GCM- SHA256 |  | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 
| ECDHE-ECSA- - AES128 SHA256 |  | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 
| ECDHE-ECDSA- -SHA AES128 |  | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 
| ECDHE-ECDSA- -GCM- AES256 SHA384 |  | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 
| ECDHE-ECSA- - AES256 SHA384 |  | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 
| ECDHE-ECDSA- -SHA AES256 |  | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 

**Nota**  
`TLS12_1_0_2016_01`è disponibile solo nelle seguenti versioni Regioni AWS: ap-east-1, ap-northeast-2, ap-south-1, ap-southeast-2, ca-central-1, cn-north-1, cn-northwest-1, eu-north-1, eu-west-2, eu-west-3, me-3 -sud-1, sa-est-1, us-est-2, -1, -2, us-west-1. us-gov-west us-gov-west  
`TLS12_1_0_2015_01`è disponibile solo nelle seguenti versioni Regioni AWS: ap-northeast-1, ap-southeast-1, eu-central-1, eu-west-1, us-east-1, us-west-2.

## Note importanti per la sicurezza dei trasporti in AWS IoT Core
<a name="tls-ssl-core"></a>

Per i dispositivi che si connettono AWS IoT Core tramite [MQTT](https://docs.aws.amazon.com//iot/latest/developerguide/mqtt.html), TLS crittografa la connessione tra i dispositivi e il broker e AWS IoT Core utilizza l'autenticazione del client TLS per identificare i dispositivi. Per ulteriori informazioni, consultare [Autenticazione client](https://docs.aws.amazon.com//iot/latest/developerguide/client-authentication.html). Per i dispositivi che si connettono AWS IoT Core tramite [HTTP](https://docs.aws.amazon.com//iot/latest/developerguide/http.html), TLS crittografa la connessione tra i dispositivi e il broker e l'autenticazione è delegata alla versione 4 di Signature. AWS Per ulteriori informazioni, consultare [Firma delle richieste con Signature Version 4](https://docs.aws.amazon.com//general/latest/gr/create-signed-request.html) nella *documentazione generale di riferimento di AWS *.

Quando si connettono dispositivi a AWS IoT Core, l'invio dell'[estensione Server Name Indication (SNI)](https://tools.ietf.org/html/rfc3546#section-3.1) non è necessario, ma è altamente consigliato. Per utilizzare funzionalità come la [registrazione di più account](https://docs.aws.amazon.com//iot/latest/developerguide/x509-client-certs.html#multiple-account-cert), i [domini personalizzati](https://docs.aws.amazon.com//iot/latest/developerguide/iot-custom-endpoints-configurable-custom.html), gli [endpoint VPC](https://docs.aws.amazon.com//iot/latest/developerguide/IoTCore-VPC.html) e [le politiche TLS configurate](https://docs.aws.amazon.com//iot/latest/developerguide/iot-endpoints-tls-config.html), è necessario utilizzare l'estensione SNI e fornire l'indirizzo completo dell'endpoint sul campo. `host_name` Il campo `host_name` deve contenere l'endpoint che si sta chiamando. Tale endpoint deve essere uno dei seguenti:
+ Il valore `endpointAddress` restituito da `aws iot [describe-endpoint](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-endpoint.html) --endpoint-type iot:Data-ATS`
+ Il valore `domainName` restituito da `aws iot [describe-domain-configuration](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot/describe-domain-configuration.html) –-domain-configuration-name "domain_configuration_name"`

I tentativi di connessione effettuati da dispositivi con un valore errato o non valido falliranno. `host_name` AWS IoT Core [registrerà gli errori utilizzando il tipo CloudWatch di autenticazione Custom Authentication.](https://docs.aws.amazon.com//iot/latest/developerguide/custom-authentication.html)

AWS IoT Core non supporta l'estensione [SessionTicket TLS.](https://www.ietf.org/rfc/rfc5077.txt)

## Sicurezza del trasporto per dispositivi wireless LoRa WAN
<a name="tls-lorawan"></a>

LoRaI dispositivi WAN seguono le pratiche di sicurezza descritte in [LoRaWAN™ SECURITY: A White Paper Prepared for the LoRa Alliance™ di Gemalto, Actility e Semtech](https://lora-alliance.org/sites/default/files/2019-05/lorawan_security_whitepaper.pdf). 

Per ulteriori informazioni sulla sicurezza del trasporto con i dispositivi LoRa WAN, consulta Sicurezza [dei dati e del trasporto LoRa WAN](https://docs.aws.amazon.com/iot-wireless/latest/developerguide/iot-lorawan-security.html).

# Crittografia dei dati in AWS IoT
<a name="data-encryption"></a>

La protezione dei dati si riferisce alla protezione dei dati durante il transito (mentre viaggiano da e verso AWS IoT Core) e quando sono inattivi (mentre sono archiviati su dispositivi o da altri AWS servizi). Tutti i dati inviati AWS IoT Core vengono inviati tramite una connessione TLS utilizzando MQTT, HTTPS e WebSocket protocolli, rendendoli sicuri per impostazione predefinita durante il transito. AWS IoT Core raccoglie i dati dai dispositivi e li invia ad altri AWS servizi per un'ulteriore elaborazione. Per ulteriori informazioni sulla crittografia dei dati su altri servizi AWS , consultare la documentazione di sicurezza per tale servizio. Per ulteriori informazioni, consulta [Data encryption at rest](encryption-at-rest.md).

FreeRTOS fornisce una libreria PKCS \$111 che riassume l'archiviazione delle chiavi, accedendo agli oggetti crittografici e gestendo le sessioni. È responsabilità dell'utente utilizzare questa libreria per crittografare i dati inattivi sui dispositivi. Per ulteriori informazioni, consulta [ FreeRTOS Libreria Public Key Cryptography Standard (PKCS) \$111](https://docs.aws.amazon.com/freertos/latest/userguide/security-pkcs.html).

# Crittografia dei dati a riposo in AWS IoT Core
<a name="encryption-at-rest"></a>

Per impostazione predefinita, tutti i AWS IoT Core dati inattivi vengono crittografati utilizzando chiavi AWS proprietarie. AWS IoT Core supporta anche chiavi simmetriche gestite dai clienti di AWS Key Management Service ()AWS KMS. Con le chiavi gestite dai clienti, puoi creare, possedere e gestire le AWS KMS chiavi del tuo AWS account. AWS IoT Core utilizzerà le tue chiavi KMS per crittografare i tuoi dati inattivi. Hai il pieno controllo su queste chiavi KMS, inclusa la creazione e la manutenzione delle relative politiche chiave. Puoi anche configurare le politiche IAM per i ruoli che accedono per AWS KMS controllare le autorizzazioni relative a queste chiavi.

## AWS chiavi possedute
<a name="aws-owned-keys"></a>

AWS le chiavi di proprietà sono una raccolta di chiavi KMS possedute e gestite da un AWS servizio per l'utilizzo in più AWS account. AWS i servizi possono utilizzare chiavi AWS di proprietà per proteggere i dati. Per impostazione predefinita, AWS IoT Core crittografa i dati inattivi utilizzando chiavi AWS proprietarie. Queste chiavi sono gestite dal servizio. Non è possibile visualizzare, gestire o utilizzare chiavi AWS di proprietà. Tuttavia, non è necessario intraprendere alcuna azione per proteggere queste chiavi.

Per ulteriori informazioni sulle chiavi AWS possedute, consulta [le chiavi AWS possedute](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-key) nella *Guida per gli AWS Key Management Service sviluppatori*.

## Chiavi gestite dal cliente
<a name="customer-managed-keys"></a>

Le chiavi gestite dal cliente sono chiavi KMS del tuo AWS account che crei, possiedi e gestisci. Hai il pieno controllo su queste AWS KMS chiavi, inclusa la creazione e la manutenzione delle relative politiche chiave. Puoi anche configurare le policy IAM per i ruoli che accedono per AWS KMS controllare le autorizzazioni relative a queste chiavi. Puoi configurare l'utilizzo AWS IoT Core di chiavi KMS gestite dal cliente per crittografare i tuoi dati.

Per ulteriori informazioni sulle chiavi gestite dal cliente, consulta [Chiavi gestite dal cliente](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk) nella *Guida per gli sviluppatori di AWS Key Management Service *.

Per attivare le chiavi gestite dal cliente AWS IoT Core, procedi nel seguente modo:

**Topics**
+ [Fase 1: creare una chiave gestita dal cliente](#encryption-at-rest-cmk-create)
+ [Passaggio 2: crea un ruolo IAM per concedere AWS IoT Core le autorizzazioni all'uso della chiave KMS](#create-an-iam-role)
+ [Passaggio 3: Attiva le chiavi gestite dal cliente AWS IoT Core](#opt-in-customer-managed-keys)
+ [Fase 4: Sono necessarie autorizzazioni aggiuntive per le operazioni AWS IoT Core del piano di controllo](#cmk-control-plane-permissions)
+ [Fase 5: Gestione delle chiavi](#understanding-key-health)
+ [Fase 6: Monitoraggio dello stato delle chiavi](#health-status-monitoring)

### Fase 1: creare una chiave gestita dal cliente
<a name="encryption-at-rest-cmk-create"></a>

È possibile creare una chiave simmetrica gestita dal cliente utilizzando la AWS KMS console o i comandi CLI AWS KMS . Il `keySpec` deve essere `SYMMETRIC_DEFAULT` e il `keyUsage` deve essere. `ENCRYPT_DECRYPT`

**Nota**  
AWS IoT Core supporta solo AWS KMS chiavi con specifiche `SYMMETRIC_DEFAULT` chiave e `ENCRYPT_DECRYPT` utilizzo delle chiavi per le chiavi gestite dal cliente.

Di seguito è riportato un AWS CLI comando di esempio per creare una chiave KMS che può essere utilizzata con AWS IoT Core le chiavi gestite dai clienti.

```
aws kms create-key --key-spec SYMMETRIC_DEFAULT --key-usage ENCRYPT_DECRYPT --region us-west-2
```

Di seguito è riportato un esempio di output del comando.

```
{
    "KeyMetadata": {
        "AWSAccountId": "111122223333",
        "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab",
        "Arn": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
        "CreationDate": "2024-09-19T11:45:23.982000-07:00",
        "Enabled": true,
        "Description": "",
        "KeyUsage": "ENCRYPT_DECRYPT",
        "KeyState": "Enabled",
        "Origin": "AWS_KMS",
        "KeyManager": "CUSTOMER",
        "CustomerMasterKeySpec": "SYMMETRIC_DEFAULT",
        "KeySpec": "SYMMETRIC_DEFAULT",
        "EncryptionAlgorithms": [
            "SYMMETRIC_DEFAULT"
        ],
        "MultiRegion": false
    }
}
```

Per ulteriori informazioni, consulta [Creazione di una chiave simmetrica gestita dal cliente nella Guida per](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html#create-symmetric-cmk) gli *AWS Key Management Service sviluppatori*.

#### Policy della chiave
<a name="key-policy"></a>

Quando si crea una chiave gestita dal cliente, è possibile specificare una politica chiave. Le policy della chiave controllano l’accesso alla chiave gestita dal cliente. Ogni chiave gestita dal cliente deve avere esattamente una policy della chiave, che contiene istruzioni che determinano chi può usare la chiave e come la possono usare. Per ulteriori informazioni, consulta [le politiche chiave](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html) nella *Guida per gli AWS Key Management Service sviluppatori*.

AWS IoT Core utilizza un ruolo IAM nel tuo account per accedere alla tua chiave gestita dal cliente. Se utilizzi una policy di chiave personalizzata, assicurati che il ruolo IAM creato su questa chiave disponga delle seguenti autorizzazioni:
+ `kms:DescribeKey`
+ `kms:Decrypt`
+ `kms:Encrypt`
+ `kms:GenerateDataKeyWithoutPlaintext`
+ `kms:ReEncryptTo`
+ `kms:ReEncryptFrom`

### Passaggio 2: crea un ruolo IAM per concedere AWS IoT Core le autorizzazioni all'uso della chiave KMS
<a name="create-an-iam-role"></a>

 AWS IoT Core Per utilizzare la chiave KMS che hai creato per crittografare i tuoi dati inattivi, devi anche creare un ruolo IAM nel tuo account, che AWS IoT Core può presupporre di accedere alla chiave KMS.

Il ruolo deve avere la seguente politica di fiducia per consentire AWS IoT Core l'assunzione del ruolo.

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": {
        "Effect": "Allow",
        "Principal": {
            "Service": "iot.amazonaws.com"
        },
        "Action": "sts:AssumeRole",
        "Condition": {
            "StringEquals": {
                "aws:SourceAccount": "111122223333"
            },
            "ArnLike": {
                "aws:SourceArn": "arn:aws:iot:us-west-2:111122223333:*"
            }
        }
    }
}
```

Assicurati che le policy IAM allegate al ruolo IAM abbiano le seguenti autorizzazioni sulla chiave KMS:
+ `kms:DescribeKey`
+ `kms:Decrypt`
+ `kms:Encrypt`
+ `kms:GenerateDataKeyWithoutPlaintext`
+ `kms:ReEncryptTo`
+ `kms:ReEncryptFrom`

Di seguito è riportato un esempio di policy IAM con le autorizzazioni richieste per le chiavi gestite dai clienti.

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowIoTToAccessKMSResource",
            "Effect": "Allow",
            "Action": [
                "kms:DescribeKey",
                "kms:Decrypt",
                "kms:Encrypt",
                "kms:ReEncryptTo",
                "kms:ReEncryptFrom",
                "kms:GenerateDataKeyWithoutPlaintext"
            ],
            "Resource": [
                "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"
            ],
            "Condition": {
                "StringEquals": {
                    "kms:EncryptionContext:aws-crypto-ec:vendor": "iot.amazonaws.com"
                }
            }
        }
    ]
}
```

*Per ulteriori informazioni, consulta [Creare un ruolo per delegare le autorizzazioni a un utente IAM nella Guida per l'utente](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html).AWS Identity and Access Management *

### Passaggio 3: Attiva le chiavi gestite dal cliente AWS IoT Core
<a name="opt-in-customer-managed-keys"></a>

Dopo aver completato tutti i passaggi precedenti, esegui il comando `update-encryption-configuration` CLI per attivare l'utilizzo delle chiavi gestite dal cliente. AWS IoT Core Quando attivi le chiavi gestite dal cliente, tutte le AWS IoT Core risorse del tuo AWS account verranno crittografate utilizzando la AWS KMS chiave specificata.

1. Per attivare l' AWS IoT Core utilizzo delle chiavi gestite dal cliente AWS CLI, esegui il comando `update-encryption-configuration` CLI.

   ```
   aws iot update-encryption-configuration --encryption-type "CUSTOMER_MANAGED_KMS_KEY" \
   --kms-access-role-arn "arn:aws:iam::111122223333:role/myrole" \
   --kms-key-arn "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" --region us-west-2
   ```

1. Per verificare l' AWS IoT Core utilizzo delle chiavi gestite dal cliente AWS CLI, esegui il comando `describe-encryption-configuration` CLI:

   ```
   aws iot describe-encryption-configuration --region us-west-2
   ```

   Se hai abilitato le chiavi gestite dal cliente AWS IoT Core, l'output può essere simile al seguente:

   ```
   {
       "encryptionType": "CUSTOMER_MANAGED_KMS_KEY",
       "kmsKeyArn": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
       "kmsAccessRoleArn": "arn:aws:iam::111122223333:role/myrole",
       "configurationDetails": {
           "configurationStatus": "HEALTHY"
       },
       "lastModifiedDate": "2024-09-26T22:01:02.365000-07:00"
   }
   ```

   Il `lastModifiedDate` campo indica la data dell'ultimo aggiornamento della configurazione di crittografia.

   Se non hai abilitato le chiavi gestite dal cliente, l'output può essere simile al seguente:

   ```
   {
       "encryptionType": "AWS_OWNED_KMS_KEY",
       "lastModifiedDate": "2024-09-26T22:01:02.365000-07:00"
   }
   ```

### Fase 4: Sono necessarie autorizzazioni aggiuntive per le operazioni AWS IoT Core del piano di controllo
<a name="cmk-control-plane-permissions"></a>

Dopo aver attivato le chiavi gestite dal cliente, tutte le AWS IoT Core risorse appartenenti al tuo AWS account vengono crittografate con la chiave KMS fornita. Tutte le operazioni del piano di controllo ora richiedono che il chiamante `kms:Decrypt` disponga delle autorizzazioni sulla chiave KMS oltre alle autorizzazioni richieste per l'operazione specifica sulla risorsa. AWS IoT Core Se il chiamante non dispone dell'`kms:Decrypt`autorizzazione ed effettua una chiamata API che richiede la crittografia o la decrittografia dei dati (ad esempio,), `GetPolicy` riceverà un. `UnauthorizedException`

Ad esempio, quando si chiama`GetPolicy`, sono necessari entrambi `iot:GetPolicy` e le `kms:Decrypt` autorizzazioni sulla chiave KMS gestita dal cliente affinché la chiamata API abbia esito positivo.

**Nota**  
Quando aggiorni utenti o ruoli IAM per concedere AWS KMS le autorizzazioni sulla chiave utilizzata per la configurazione di crittografia, assicurati che la policy delle chiavi KMS conceda anche le autorizzazioni richieste ai rispettivi utenti o ruoli IAM.

#### AWS KMS autorizzazioni per `UpdateEncryptionConfiguration`
<a name="kms-permissions-update-encryption-configuration"></a>

La chiamata `UpdateEncryptionConfiguration` API richiede le seguenti AWS KMS autorizzazioni sulla chiave KMS per poter attivare le chiavi gestite dal cliente o modificare la configurazione delle chiavi:
+ `kms:DescribeKey`
+ `kms:Decrypt`
+ `kms:Encrypt`
+ `kms:GenerateDataKeyWithoutPlaintext`
+ `kms:ReEncryptTo`
+ `kms:ReEncryptFrom`

#### AWS KMS autorizzazioni per tutti gli altri piani di controllo APIs
<a name="kms-permissions-control-plane-apis"></a>

La maggior parte dei piani di controllo APIs richiede `kms:Decrypt` le autorizzazioni quando le chiavi gestite dal cliente sono abilitate. Tuttavia, alcuni APIs non richiedono queste autorizzazioni aggiuntive:

APIs che non richiedono AWS KMS autorizzazioni  
Le `List*` mani `Delete*` APIs non cadono in questo secchio. I clienti possono sempre richiamare qualsiasi API `List*` o `Delete*` Control Plane e tali chiamate API avrebbero esito positivo anche se il chiamante non dispone dell'autorizzazione. `kms:Decrypt` Queste chiamate API avranno esito positivo anche se la chiave gestita dal cliente non è integra `List*` e `Delete*` APIs non esegue alcuna decrittografia.  
+ **Lista\$1 APIs**: tutte le operazioni di inserzione (ad esempio,,) `ListThings` `ListPolicies` `ListCertificates`
+ **Elimina\$1 APIs**: tutte le operazioni di eliminazione (ad esempio,,`DeleteThing`) `DeletePolicy` `DeleteCertificate`

### Fase 5: Gestione delle chiavi
<a name="understanding-key-health"></a>

AWS IoT Core esegue controlli periodici sulla configurazione delle chiavi gestite dal cliente per garantire che le operazioni di crittografia e decrittografia non siano influenzate. Questi controlli di integrità vengono eseguiti una volta al minuto e verificano la capacità AWS IoT Core di accedere e utilizzare sia la AWS KMS chiave che il ruolo IAM associato per le operazioni di crittografia e decrittografia.

HEALTHY  
AWS IoT Core può accedere con successo alla AWS KMS chiave tramite il ruolo IAM specificato ed eseguire operazioni. encryption/decryption Tutti i componenti funzionano correttamente.

UNHEALTHY  
AWS IoT Core non può accedere o utilizzare la AWS KMS chiave. Ciò impedisce nuove operazioni di crittografia e può influire sulla funzionalità del servizio. Il `errorCode` campo indica se il problema riguarda la chiave o il ruolo IAM.

#### Azioni dei clienti che possono influire sulla salute dei clienti
<a name="customer-actions-affecting-health"></a>

Diverse azioni dei clienti possono far sì che lo stato di salute chiave cambi `HEALTHY` da`UNHEALTHY`:

Azioni relative alle chiavi  
+ **Eliminazione di una AWS KMS chiave**: quando pianifichi l'eliminazione di una chiave, questa è in uno `Pending deletion` stato e non può essere utilizzata
+ **Disabilitazione di una AWS KMS chiave**: quando disabiliti una chiave KMS, questa non può più essere utilizzata per operazioni di crittografia/decrittografia
+ **Chiave di pianificazione per l'eliminazione: la chiave diventa inutilizzabile al termine dell'eliminazione**
+ **Modifica della politica delle chiavi**: rimozione delle autorizzazioni necessarie per l'accesso AWS IoT Core 
+ **Modifica delle autorizzazioni di utilizzo delle chiavi: limitazione delle azioni richieste** AWS KMS 

Azioni relative al ruolo IAM  
+ **Eliminazione del ruolo IAM**: non è AWS IoT Core possibile assumere il ruolo di accesso alla chiave
+ **Modifica delle autorizzazioni dei ruoli: rimozione delle autorizzazioni** richieste dalla AWS KMS politica del ruolo
+ **Modifica della politica di fiducia**: impedire al AWS IoT Core servizio di assumere il ruolo
+ **Aggiungere condizioni restrittive: condizioni** che AWS IoT Core impediscono l'utilizzo del ruolo

Azioni a livello di account  
+ Modifiche di **accesso alle chiavi tra account: modifica** delle autorizzazioni per le chiavi in diversi account
+ **Policy di controllo dei servizi (SCPs): politiche** a livello di organizzazione che limitano l'accesso AWS KMS 
+ Policy **IAM a livello di account: politiche** che hanno la precedenza o sono in conflitto con l'accesso chiave

**Importante**  
Qualsiasi modifica alle AWS KMS chiavi, ai ruoli IAM o alle policy utilizzate da AWS IoT Core deve essere prima testata negli ambienti di sviluppo. Monitora attentamente lo stato di integrità delle chiavi dopo aver apportato modifiche per garantire che AWS IoT Core le funzionalità non ne risentano.

#### Aggiornamento della configurazione di crittografia
<a name="key-transition"></a>

Aggiorna la configurazione di crittografia AWS IoT Core per passare da una chiave gestita dal cliente a un'altra o tra chiavi AWS di proprietà e chiavi gestite dal cliente.

Per modificare la configurazione con una chiave gestita dal cliente diversa:

1. Crea una nuova chiave gestita dal cliente seguendo i passaggi seguenti[Fase 1: creare una chiave gestita dal cliente](#encryption-at-rest-cmk-create).

1. Aggiorna la tua policy sui ruoli IAM per includere le autorizzazioni sia per la vecchia che per la nuova chiave durante il periodo di aggiornamento.

1. Aggiorna la configurazione di crittografia per utilizzare la nuova chiave:

   ```
   aws iot update-encryption-configuration --encryption-type "CUSTOMER_MANAGED_KMS_KEY" \
   --kms-access-role-arn "arn:aws:iam::111122223333:role/myrole" \
   --kms-key-arn "arn:aws:kms:us-west-2:111122223333:key/new-key-id"
   ```

Per modificare la configurazione da chiavi gestite dal cliente a chiavi AWS di proprietà:

```
aws iot update-encryption-configuration --encryption-type "AWS_OWNED_KMS_KEY"
```

**Nota**  
Quando aggiorni la configurazione di crittografia per le nuove chiavi gestite dal cliente, assicurati che sia la vecchia che la nuova chiave rimangano accessibili affinché l'operazione abbia successo.

##### Scenari di errore e impatti comuni
<a name="failure-scenarios"></a>

La tabella seguente descrive gli scenari di errore più comuni quando le chiavi vengono eliminate o disattivate:


| Scenario | Impatto immediato | Le conseguenze a lungo termine | 
| --- | --- | --- | 
|  Chiave disattivata  |  Tutte le nuove encryption/decryption operazioni falliscono immediatamente  |  Interruzione del servizio fino alla riattivazione o alla sostituzione della chiave  | 
|  Chiave pianificata per l'eliminazione  |  Lo stato della chiave viene modificato in In attesa di eliminazione e tutte le encryption/decryption operazioni avranno esito negativo  |  Errore automatico del servizio al termine dell'eliminazione  | 
|  Chiave eliminata definitivamente  |  Fallimento immediato e permanente di tutte le operazioni  |  Perdita permanente dei dati e impossibilità di recuperare i dati crittografati  | 
|  Politica chiave modificata in modo errato  |  AWS IoT Core perde i permessi di accesso alla chiave  |  Guasti del servizio fino alla correzione della politica  | 
|  Ruolo IAM eliminato  |  AWS IoT Core non può assumere il ruolo di chiave di accesso  |  Errore completo del servizio di crittografia  | 
|  Il ruolo IAM è stato modificato in modo errato  |  AWS IoT Core non può assumere il ruolo o utilizzare il ruolo per accedere alla chiave  |   Guasti del servizio fino alla correzione del ruolo IAM  | 

##### Prevenzione e best practice
<a name="prevention-best-practices"></a>

Per prevenire l'eliminazione o la disattivazione accidentale delle chiavi e ridurre al minimo il rischio di guasti del servizio:

Implementa le politiche chiave relative al ciclo di vita  
Stabilisci procedure chiare per la creazione, la rotazione e il ritiro delle chiavi. Documenta quali chiavi vengono utilizzate da quali AWS IoT Core risorse e mantieni un inventario delle chiavi attive.

Utilizza le policy IAM per limitare l'eliminazione delle chiavi  
Crea policy IAM che impediscano agli utenti non autorizzati di eliminare o disabilitare le chiavi di crittografia critiche. Utilizza le condizioni per richiedere un'ulteriore approvazione per le operazioni di eliminazione delle chiavi.

Abilita la CloudTrail registrazione  
Monitora tutte le operazioni AWS KMS chiave CloudTrail per rilevare attività di gestione delle chiavi non autorizzate o accidentali. Imposta avvisi per l'eliminazione, la disabilitazione o la modifica delle politiche delle chiavi.

Prova le procedure di sostituzione delle chiavi  
Verifica regolarmente le tue procedure di sostituzione delle chiavi in ambienti non di produzione per assicurarti di poter ripristinare rapidamente i guasti relativi alle chiavi.

Mantenete i backup chiave  
Sebbene non sia possibile esportare il materiale AWS KMS chiave, conservate registrazioni dettagliate delle chiavi ARNs, delle politiche e delle AWS IoT Core configurazioni associate per facilitare la sostituzione rapida delle chiavi, se necessario.

Monitora lo stato delle chiavi  
Monitora continuamente la `CMK.Health` metrica e imposta avvisi automatici per le principali modifiche dello stato di salute. Implementa risposte automatiche per risolvere rapidamente i problemi principali.

**Importante**  
Verifica sempre le procedure di aggiornamento chiave negli ambienti di sviluppo prima di implementarle in produzione. Predisponi di un piano di rollback documentato e assicurati che le procedure di sostituzione delle chiavi possano essere eseguite rapidamente in caso di emergenza.

### Fase 6: Monitoraggio dello stato delle chiavi
<a name="health-status-monitoring"></a>

Nell'ambito dei controlli periodici, AWS IoT Core vengono emessi CloudWatch parametri e registri per fornire visibilità sullo stato di integrità della configurazione chiave gestita dal cliente

AWS IoT Core emette la `CMK.Health` metrica almeno una volta al minuto. CloudWatch La metrica fornisce informazioni sullo stato di integrità delle chiavi gestite dal cliente utilizzate AWS IoT Core per crittografare e decrittografare i dati.

La `CMK.Health` metrica può avere i seguenti valori:
+ Il valore è`1`: AWS IoT Core è in grado di utilizzare correttamente le chiavi di crittografia per crittografare e decrittografare i dati.
+ Il valore è`0`: non AWS IoT Core è in grado di utilizzare le chiavi di crittografia per crittografare e decrittografare i dati.

AWS IoT Core emette anche i log AWS IoT V2 quando cambia lo stato di integrità delle chiavi di crittografia. Questi registri forniscono ulteriori dettagli sull'aggiornamento dello stato di salute. Per visualizzare questi registri, è necessario abilitare i registri AWS IoT V2. I `HEALTHY` log vengono emessi a `INFO` livello e i `UNHEALTHY` log vengono emessi a livello. `ERROR` [Per ulteriori informazioni sui livelli di registro, vedere Livelli di registro.](https://docs.aws.amazon.com/iot/latest/developerguide/configure-logging.html#log-level)

Gli esempi seguenti sono voci di CloudWatch registro emesse da AWS IoT Core per indicare l'aggiornamento dello stato di integrità delle chiavi gestite dal cliente.

Per monitorare e rispondere efficacemente ai principali cambiamenti dello stato di salute:

1. **Imposta gli CloudWatch allarmi** per la `CMK.Health` metrica:

   ```
   aws cloudwatch put-metric-alarm --region us-west-2 \
     --alarm-name "IoTCore-CMK-Health-Alert" \
     --alarm-description "Alert when IoT Core CMK health is unhealthy" \
     --metric-name "CMK.Health" \
     --namespace "AWS/IoT" \
     --statistic "Minimum" \
     --period 300 \
     --evaluation-periods 1 \
     --threshold 1 \
     --comparison-operator "LessThanThreshold" \
     --alarm-actions "arn:aws:sns:us-west-2:111122223333:iot-alerts"
   ```

1. **Abilita la registrazione AWS IoT V2 per acquisire** eventi dettagliati di modifica dello stato di salute con codici e messaggi di errore.

1. **Controlla lo stato della configurazione** per la risoluzione dei problemi:

   ```
   aws iot describe-encryption-configuration --region us-west-2
   ```

1. **Analizza lo stato NON SANO** esaminando il `errorCode` campo:
   + `KMS_KEY_VALIDATION_ERROR`— Problema con la AWS KMS chiave (disattivata, eliminata o problemi relativi alle policy)
   + `ROLE_VALIDATION_ERROR`— Problema relativo al ruolo IAM (eliminazione, problemi relativi alle policy o problemi di fiducia)

#### Da MALSANO a SANO
<a name="unhealthy-to-healthy"></a>

Quando lo stato delle chiavi di crittografia viene aggiornato da `UNHEALTHY` a`HEALTHY`, AWS IoT Core emetterà un messaggio di registro AWS IoT V2 nel seguente formato.

```
{
    "timestamp": "2017-08-10 15:37:23.476",
    "logLevel": "INFO",
    "traceId": "8421693b-f4f0-4e4a-9235-0cff8bab897d",
    "accountId": "111122223333",
    "status": "SUCCESS",
    "cmkStatus": "HEALTHY",
    "kmsKeyArn": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
    "kmsAccessRoleArn": "arn:aws:iam::111122223333:role/myrole",
    "eventType": "CmkHealthCheck"
}
```

#### Da HEALTHY a UNHEALTHY
<a name="healthy-to-unhealthy"></a>

Quando lo stato delle chiavi di crittografia viene aggiornato da `HEALTHY` a`UNHEALTHY`, AWS IoT Core emetterà un messaggio di registro AWS IoT V2 nel seguente formato.

```
{
    "timestamp": "2017-08-10 15:37:23.476",
    "logLevel": "ERROR",
    "traceId": "8421693b-f4f0-4e4a-9235-0cff8bab897d",
    "accountId": "111122223333",
    "status": "FAILURE",
    "cmkStatus": "UNHEALTHY",
    "errorCode": "KMS_KEY_VALIDATION_ERROR / ROLE_VALIDATION_ERROR",
    "errorMessage": "Error message on why there was a failure",
    "kmsKeyArn": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
    "kmsAccessRoleArn": "arn:aws:iam::111122223333:role/myrole",
    "eventType": "CmkHealthCheck"
}
```

**avvertimento**  
Quando la chiave diventa integra`UNHEALTHY`, AWS IoT Core le operazioni falliscono immediatamente. In tal caso, esamina le configurazioni chiave, le autorizzazioni dei ruoli IAM e le policy. Monitora la `CMK.Health` metrica per le modifiche allo stato. Se le operazioni continuano a fallire dopo aver esaminato le configurazioni, contatta il tuo account manager o il [AWS Support Center](https://console.aws.amazon.com/support/home#/) per ulteriore assistenza.

#### AWS CloudTrail eventi
<a name="aws-cloudtrail-events"></a>

È inoltre possibile monitorare l'utilizzo AWS IoT Core della chiave KMS per le operazioni di crittografia e decrittografia. AWS IoT Core `DescribeKey`effettuerà e eseguirà `GenerateDataKeyWithoutPlaintext` operazioni sulla tua chiave KMS per crittografare/decrittografare i dati che appartengono al tuo account archiviati in archivio. `Decrypt` `ReEncrypt` AWS 

Ci sono CloudTrail eventi per`DescribeKey`,, e`Decrypt`. `ReEncrypt` `GenerateDataKeyWithoutPlaintext` Questi eventi monitorano AWS KMS le operazioni chiamate AWS IoT Core ad accedere ai dati crittografati dalla chiave gestita dal cliente.

##### `Decrypt` Esempio
<a name="decrypt"></a>

```
{
    "eventVersion": "1.09",
    "userIdentity": {
        "type": "AssumedRole",
        "principalId": "AROAIGDTESTANDEXAMPLE:Sampleuser01",
        "arn": "arn:aws:sts::111122223333:assumed-role/Admin/Sampleuser01",
        "accountId": "111122223333",
        "accessKeyId": "*********************",
        "sessionContext": {
            "sessionIssuer": {
                "type": "Role",
                "principalId": "AROAIGDTESTANDEXAMPLE:Sampleuser01",
                "arn": "arn:aws:sts::111122223333:assumed-role/Admin/Sampleuser01",
                "accountId": "111122223333",
                "userName": "*****"
            },
            "attributes": {
                "creationDate": "2024-09-16T20:23:39Z",
                "mfaAuthenticated": "false"
            }
        },
        "invokedBy": "iot.amazonaws.com"
    },
    "eventTime": "2024-09-16T20:32:48Z",
    "eventSource": "kms.amazonaws.com",
    "eventName": "Decrypt",
    "awsRegion": "us-west-2",
    "sourceIPAddress": "iot.amazonaws.com",
    "userAgent": "iot.amazonaws.com",
    "requestParameters": {
        "encryptionContext": {
            "kms-arn": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
            "aws-crypto-ec:vendor": "iot.amazonaws.com",
            "branch-key-id": "111122223333",
            "type": "branch:ACTIVE"
        },
        "encryptionAlgorithm": "SYMMETRIC_DEFAULT",
        "keyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"
    },
    "responseElements": null,
    "requestID": "1afb6d98-8388-455d-8b48-e62c9e0cf7f4",
    "eventID": "b59a5f16-0d98-46d8-a590-0e040a48b39b",
    "readOnly": true,
    "resources": [
        {
            "accountId": "111122223333",
            "type": "AWS::KMS::Key",
            "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"
        }
    ],
    "eventType": "AwsApiCall",
    "managementEvent": true,
    "recipientAccountId": "111122223333",
    "eventCategory": "Management"
}
```

# Gestione delle identità e degli accessi per AWS IoT
<a name="security-iam"></a>

AWS Identity and Access Management (IAM) è uno strumento Servizio AWS che aiuta un amministratore a controllare in modo sicuro l'accesso alle AWS risorse. Gli amministratori IAM controllano chi può essere *autenticato* (effettuato l'accesso) e *autorizzato* (disporre delle autorizzazioni) a utilizzare le risorse. AWS IoT IAM è uno Servizio AWS strumento che puoi utilizzare senza costi aggiuntivi.

**Topics**
+ [Destinatari](#security_iam_audience)
+ [Autenticazione con identità IAM](#security_iam_authentication)
+ [Gestione dell’accesso tramite policy](#security_iam_access-manage)
+ [Come AWS IoT funziona con IAM](security_iam_service-with-iam.md)
+ [AWS IoT esempi di politiche basate sull'identità](security_iam_id-based-policy-examples.md)
+ [AWS politiche gestite per AWS IoT](security-iam-awsmanpol.md)
+ [Risoluzione dei problemi di AWS IoT identità e accesso](security_iam_troubleshoot.md)

## Destinatari
<a name="security_iam_audience"></a>

Il modo in cui utilizzi AWS Identity and Access Management (IAM) varia in base al tuo ruolo:
+ **Utente del servizio**: richiedi le autorizzazioni all’amministratore se non riesci ad accedere alle funzionalità (consulta [Risoluzione dei problemi di AWS IoT identità e accesso](security_iam_troubleshoot.md))
+ **Amministratore del servizio**: determina l’accesso degli utenti e invia le richieste di autorizzazione (consulta [Come AWS IoT funziona con IAM](security_iam_service-with-iam.md))
+ **Amministratore IAM**: scrivi policy per gestire l’accesso (consulta [AWS IoT esempi di politiche basate sull'identità](security_iam_id-based-policy-examples.md))

## Autenticazione con identità IAM
<a name="security_iam_authentication"></a>

 AWS IoT Le identità possono essere certificati del dispositivo (X.509), identità Amazon Cognito o utenti o gruppi IAM. In questo argomento vengono illustrate solo le identità IAM. Per ulteriori informazioni sulle altre identità supportate, consulta. AWS IoT [Autenticazione client](client-authentication.md)

L'autenticazione è il modo in cui accedi AWS utilizzando le tue credenziali di identità. Devi autenticarti come utente IAM o assumendo un ruolo IAM. Utente root dell'account AWS

Puoi accedere come identità federata utilizzando credenziali provenienti da una fonte di identità come AWS IAM Identity Center (IAM Identity Center), autenticazione Single Sign-On o credenziali. Google/Facebook Per ulteriori informazioni sull’accesso, consulta [Come accedere all’ Account AWS](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) nella *Guida per l’utente di Accedi ad AWS *.

Per l'accesso programmatico, AWS fornisce un SDK e una CLI per firmare crittograficamente le richieste. Per ulteriori informazioni, consulta [AWS Signature Version 4 per le richieste API](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_sigv.html) nella *Guida per l’utente di IAM*.

### Account AWS utente root
<a name="security_iam_authentication-rootuser"></a>

 Quando si crea un Account AWS, si inizia con un'identità di accesso denominata *utente Account AWS root* che ha accesso completo a tutte Servizi AWS le risorse. Consigliamo vivamente di non utilizzare l’utente root per le attività quotidiane. Per le attività che richiedono le credenziali come utente root, consulta [Attività che richiedono le credenziali dell’utente root](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html#root-user-tasks) nella *Guida per l’utente di IAM*. 

### Utenti e gruppi IAM
<a name="security_iam_authentication-iamuser"></a>

Un *[utente IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users.html)* è una identità che dispone di autorizzazioni specifiche per una singola persona o applicazione. Ti consigliamo di utilizzare credenziali temporanee invece di utenti IAM con credenziali a lungo termine. Per ulteriori informazioni, consulta [Richiedere agli utenti umani di utilizzare la federazione con un provider di identità per accedere AWS utilizzando credenziali temporanee nella Guida](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#bp-users-federation-idp) per l'*utente IAM*.

Un [https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html) specifica una raccolta di utenti IAM e semplifica la gestione delle autorizzazioni per gestire gruppi di utenti di grandi dimensioni. Per ulteriori informazioni, consulta [Casi d’uso per utenti IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/gs-identities-iam-users.html) nella *Guida per l’utente di IAM*.

### Ruoli IAM
<a name="security_iam_authentication-iamrole"></a>

Un *[ruolo IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)* è un’identità con autorizzazioni specifiche che fornisce credenziali temporanee. Puoi assumere un ruolo [passando da un ruolo utente a un ruolo IAM (console)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-console.html) o chiamando un'operazione AWS CLI o AWS API. Per ulteriori informazioni, consulta [Metodi per assumere un ruolo](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_manage-assume.html) nella *Guida per l’utente di IAM*.

I ruoli IAM sono utili per l’accesso degli utenti federati, le autorizzazioni utente IAM temporanee, l’accesso multi-account, l’accesso multi-servizio e le applicazioni in esecuzione su Amazon EC2. Per maggiori informazioni, consultare [Accesso a risorse multi-account in IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-cross-account-resource-access.html) nella *Guida per l’utente IAM*.

## Gestione dell’accesso tramite policy
<a name="security_iam_access-manage"></a>

Puoi controllare l'accesso AWS creando policy e associandole a AWS identità o risorse. Una policy definisce le autorizzazioni quando è associata a un'identità o a una risorsa. AWS valuta queste politiche quando un preside effettua una richiesta. La maggior parte delle politiche viene archiviata AWS come documenti JSON. Per maggiori informazioni sui documenti delle policy JSON, consulta [Panoramica delle policy JSON](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#access_policies-json) nella *Guida per l’utente IAM*.

Utilizzando le policy, gli amministratori specificano chi ha accesso a cosa definendo quale **principale** può eseguire **azioni** su quali **risorse** e in quali **condizioni**.

Per impostazione predefinita, utenti e ruoli non dispongono di autorizzazioni. Un amministratore IAM crea le policy IAM e le aggiunge ai ruoli, che gli utenti possono quindi assumere. Le policy IAM definiscono le autorizzazioni indipendentemente dal metodo utilizzato per eseguirle.

### Policy basate sull’identità
<a name="security_iam_access-manage-id-based-policies"></a>

Le policy basate su identità sono documenti di policy di autorizzazione JSON che è possibile collegare a un’identità (utente, gruppo o ruolo). Tali policy controllano le operazioni autorizzate per l’identità, nonché le risorse e le condizioni in cui possono essere eseguite. Per informazioni su come creare una policy basata su identità, consultare [Definizione di autorizzazioni personalizzate IAM con policy gestite dal cliente](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html) nella *Guida per l’utente IAM*.

Le policy basate su identità possono essere *policy in linea* (con embedding direttamente in una singola identità) o *policy gestite* (policy autonome collegate a più identità). Per informazioni su come scegliere tra una policy gestita o una policy inline, consulta [Scegliere tra policy gestite e policy in linea](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-choosing-managed-or-inline.html) nella *Guida per l’utente di IAM*.

### Policy basate sulle risorse
<a name="security_iam_access-manage-resource-based-policies"></a>

Le policy basate su risorse sono documenti di policy JSON che è possibile collegare a una risorsa. Gli esempi includono le *policy di trust dei ruoli* IAM e le *policy dei bucket* di Amazon S3. Nei servizi che supportano policy basate sulle risorse, gli amministratori dei servizi possono utilizzarli per controllare l’accesso a una risorsa specifica. In una policy basata sulle risorse è obbligatorio [specificare un’entità principale](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html).

Le policy basate sulle risorse sono policy inline che si trovano in tale servizio. Non è possibile utilizzare le policy AWS gestite di IAM in una policy basata sulle risorse.

### Elenchi di controllo degli accessi () ACLs
<a name="security_iam_access-manage-acl"></a>

Le liste di controllo degli accessi (ACLs) controllano quali principali (membri dell'account, utenti o ruoli) dispongono delle autorizzazioni per accedere a una risorsa. ACLs sono simili alle politiche basate sulle risorse, sebbene non utilizzino il formato del documento di policy JSON.

Amazon S3 e Amazon VPC sono esempi di servizi che supportano. AWS WAF ACLs Per ulteriori informazioni ACLs, consulta la [panoramica della lista di controllo degli accessi (ACL)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/acl-overview.html) nella *Amazon Simple Storage Service Developer Guide*.

### Altri tipi di policy
<a name="security_iam_access-manage-other-policies"></a>

AWS supporta tipi di policy aggiuntivi che possono impostare le autorizzazioni massime concesse dai tipi di policy più comuni:
+ **Limiti delle autorizzazioni**: imposta il numero massimo di autorizzazioni che una policy basata su identità ha la possibilità di concedere a un’entità IAM. Per ulteriori informazioni, consulta [Limiti delle autorizzazioni per le entità IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html) nella *Guida per l’utente di IAM*.
+ **Politiche di controllo del servizio (SCPs)**: specificano le autorizzazioni massime per un'organizzazione o un'unità organizzativa in. AWS Organizations Per ulteriori informazioni, consultare [Policy di controllo dei servizi](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html) nella *Guida per l’utente di AWS Organizations *.
+ **Politiche di controllo delle risorse (RCPs)**: imposta le autorizzazioni massime disponibili per le risorse nei tuoi account. Per ulteriori informazioni, consulta [Politiche di controllo delle risorse (RCPs)](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_rcps.html) nella *Guida per l'AWS Organizations utente*.
+ **Policy di sessione**: policy avanzate passate come parametro quando si crea una sessione temporanea per un ruolo o un utente federato. Per maggiori informazioni, consultare [Policy di sessione](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session) nella *Guida per l’utente IAM*.

### Più tipi di policy
<a name="security_iam_access-manage-multiple-policies"></a>

Quando a una richiesta si applicano più tipi di policy, le autorizzazioni risultanti sono più complicate da comprendere. Per scoprire come si AWS determina se consentire o meno una richiesta quando sono coinvolti più tipi di policy, consulta [Logica di valutazione delle policy](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html) nella *IAM User Guide*.

# Come AWS IoT funziona con IAM
<a name="security_iam_service-with-iam"></a>

Prima di utilizzare IAM per gestire l'accesso a AWS IoT, è necessario comprendere con quali funzionalità IAM è disponibile l'uso AWS IoT. Per avere una visione di alto livello di come AWS IoT e altri AWS servizi funzionano con IAM, consulta [AWS Services That Work with IAM nella IAM](https://docs.aws.amazon.com/service-authorization/latest/reference/reference_aws-services-that-work-with-iam.html) *User Guide*.

**Topics**
+ [AWS IoT politiche basate sull'identità](#security_iam_service-with-iam-id-based-policies)
+ [AWS IoT politiche basate sulle risorse](#security_iam_service-with-iam-resource-based-policies)
+ [Autorizzazione basata su tag AWS IoT](#security_iam_service-with-iam-tags)
+ [AWS IoT Ruoli IAM](#security_iam_service-with-iam-roles)

## AWS IoT politiche basate sull'identità
<a name="security_iam_service-with-iam-id-based-policies"></a>

Con le policy basate su identità IAM, puoi specificare operazioni e risorse consentite o rifiutate, nonché le condizioni in base alle quali le operazioni sono consentite o rifiutate. AWS IoT supporta operazioni, risorse e chiavi di condizione specifiche. Per informazioni su tutti gli elementi utilizzati in una policy JSON, consulta [Documentazione di riferimento degli elementi delle policy JSON IAM](https://docs.aws.amazon.com/service-authorization/latest/reference/reference_policies_elements.html) nella *Guida per l'utente IAM*.

### Azioni
<a name="security_iam_service-with-iam-id-based-policies-actions"></a>

Gli amministratori possono utilizzare le policy AWS JSON per specificare chi ha accesso a cosa. In altre parole, quale **entità principale** può eseguire **operazioni** su quali **risorse** e in quali **condizioni**.

L'elemento `Action` di una policy JSON descrive le operazioni che è possibile utilizzare per consentire o negare l'accesso in una policy. Includere le operazioni in una policy per concedere le autorizzazioni a eseguire l’operazione associata.

La tabella seguente elenca le azioni IAM IoT, l' AWS IoT API associata e la risorsa manipolata dall'azione.


****  

| Operazioni di policy | AWS IoT API | Resources | 
| --- | --- | --- | 
| IoT: AcceptCertificateTransfer | AcceptCertificateTransfer |  `arn:aws:iot:region:account-id:cert/cert-id`  Il Account AWS valore specificato nell'ARN deve essere l'account su cui viene trasferito il certificato.   | 
| IoT: AddThingToThingGroup | AddThingToThingGroup |  `arn:aws:iot:region:account-id:thinggroup/thing-group-name` `arn:aws:iot:region:account-id:thing/thing-name`  | 
| IoT: AssociateTargetsWithJob | AssociateTargetsWithJob | nessuno  | 
| IoT: AttachPolicy | AttachPolicy |  `arn:aws:iot:region:account-id:thinggroup/thing-group-name` or `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT: AttachPrincipalPolicy | AttachPrincipalPolicy |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT: AttachSecurityProfile | AttachSecurityProfile |  `arn:aws:iot:region:account-id:securityprofile/security-profile-name` `arn:aws:iot:region:account-id:dimension/dimension-name`  | 
| IoT: AttachThingPrincipal | AttachThingPrincipal |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT: CancelCertificateTransfer | CancelCertificateTransfer |  `arn:aws:iot:region:account-id:cert/cert-id`  Il Account AWS valore specificato nell'ARN deve essere l'account su cui viene trasferito il certificato.   | 
| IoT: CancelJob | CancelJob |  `arn:aws:iot:region:account-id:job/job-id`  | 
| IoT: CancelJobExecution | CancelJobExecution |  `arn:aws:iot:region:account-id:job/job-id` `arn:aws:iot:region:account-id:thing/thing-name`  | 
| IoT: ClearDefaultAuthorizer | ClearDefaultAuthorizer | Nessuno | 
| IoT: CreateAuthorizer | CreateAuthorizer |  `arn:aws:iot:region:account-id:authorizer/authorizer-function-name`  | 
| IoT: CreateCertificateFromCsr | CreateCertificateFromCsr | \$1 | 
| IoT: CreateDimension | CreateDimension | `arn:aws:iot:region:account-id:dimension/dimension-name` | 
| IoT: CreateJob | CreateJob |  `arn:aws:iot:region:account-id:job/job-id` `arn:aws:iot:region:account-id:thinggroup/thing-group-name` `arn:aws:iot:region:account-id:thing/thing-name` `arn:aws:iot:region:account-id:jobtemplate/job-template-id`  | 
| IoT: CreateJobTemplate | CreateJobTemplate |  `arn:aws:iot:region:account-id:job/job-id` `arn:aws:iot:region:account-id:jobtemplate/job-template-id`  | 
| IoT: CreateKeysAndCertificate | CreateKeysAndCertificate | \$1 | 
| IoT: CreatePolicy | CreatePolicy | `arn:aws:iot:region:account-id:policy/policy-name` | 
| IoT: CreatePolicyVersion | CreatePolicyVersion |  `arn:aws:iot:region:account-id:policy/policy-name`  Questa deve essere una AWS IoT politica, non una politica IAM.   | 
| IoT: CreateRoleAlias | CreateRoleAlias |  (parametro: roleAlias) `arn:aws:iot:region:account-id:rolealias/role-alias-name`  | 
| IoT: CreateSecurityProfile | CreateSecurityProfile |  `arn:aws:iot:region:account-id:securityprofile/security-profile-name` `arn:aws:iot:region:account-id:dimension/dimension-name`  | 
| IoT: CreateThing | CreateThing |  `arn:aws:iot:region:account-id:thing/thing-name`  | 
| IoT: CreateThingGroup | CreateThingGroup |  `arn:aws:iot:region:account-id:thinggroup/thing-group-name` Per il gruppo in fase di creazione e per il gruppo padre, se usato  | 
| IoT: CreateThingType | CreateThingType |  `arn:aws:iot:region:account-id:thingtype/thing-type-name`  | 
| IoT: CreateTopicRule | CreateTopicRule |  `arn:aws:iot:region:account-id:rule/rule-name`  | 
| IoT: DeleteAuthorizer | DeleteAuthorizer |  `arn:aws:iot:region:account-id:authorizer/authorizer-name`  | 
| IoT: elimina CACertificate | Eliminare CACertificate |  `arn:aws:iot:region:account-id:cacert/cert-id`  | 
| IoT: DeleteCertificate | DeleteCertificate |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT: DeleteDimension | DeleteDimension |  `arn:aws:iot:region:account-id:dimension/dimension-name`  | 
| IoT: DeleteJob | DeleteJob |  `arn:aws:iot:region:account-id:job/job-id`  | 
| IoT: DeleteJobTemplate | DeleteJobTemplate |  `arn:aws:iot:region:account-id:job/job-template-id`  | 
| IoT: DeleteJobExecution | DeleteJobExecution |  `arn:aws:iot:region:account-id:job/job-id` `arn:aws:iot:region:account-id:thing/thing-name`  | 
| IoT: DeletePolicy | DeletePolicy |  `arn:aws:iot:region:account-id:policy/policy-name`  | 
| IoT: DeletePolicyVersion | DeletePolicyVersion |  `arn:aws:iot:region:account-id:policy/policy-name`  | 
| IoT: DeleteRegistrationCode | DeleteRegistrationCode | \$1 | 
| IoT: DeleteRoleAlias | DeleteRoleAlias |  `arn:aws:iot:region:account-id:rolealias/role-alias-name`  | 
| IoT: DeleteSecurityProfile | DeleteSecurityProfile |  `arn:aws:iot:region:account-id:securityprofile/security-profile-name` `arn:aws:iot:region:account-id:dimension/dimension-name`  | 
| IoT: DeleteThing | DeleteThing |  `arn:aws:iot:region:account-id:thing/thing-name`  | 
| IoT: DeleteThingGroup | DeleteThingGroup |  `arn:aws:iot:region:account-id:thinggroup/thing-group-name`  | 
| IoT: DeleteThingType | DeleteThingType |  `arn:aws:iot:region:account-id:thingtype/thing-type-name`  | 
| IoT: DeleteTopicRule | DeleteTopicRule |  `arn:aws:iot:region:account-id:rule/rule-name`  | 
| IoT: elimina V2 LoggingLevel | Elimina V2 LoggingLevel |  `arn:aws:iot:region:account-id:thinggroup/thing-group-name`  | 
| IoT: DeprecateThingType | DeprecateThingType |  `arn:aws:iot:region:account-id:thingtype/thing-type-name`  | 
| IoT: DescribeAuthorizer | DescribeAuthorizer |  `arn:aws:iot:region:account-id:authorizer/authorizer-function-name` (parametro: authorizerName) nessuno  | 
| IoT: descrivi CACertificate | Descriva CACertificate |  `arn:aws:iot:region:account-id:cacert/cert-id`  | 
| IoT: DescribeCertificate | DescribeCertificate |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT: DescribeDefaultAuthorizer | DescribeDefaultAuthorizer | Nessuno  | 
| IoT: DescribeEndpoint | DescribeEndpoint | \$1 | 
| IoT: DescribeEventConfigurations | DescribeEventConfigurations | nessuno  | 
| IoT: DescribeIndex | DescribeIndex |  `arn:aws:iot:region:account-id:index/index-name`  | 
| IoT: DescribeJob | DescribeJob |  `arn:aws:iot:region:account-id:job/job-id`  | 
| IoT: DescribeJobExecution | DescribeJobExecution | Nessuno | 
| IoT: DescribeJobTemplate | DescribeJobTemplate |  `arn:aws:iot:region:account-id:job/job-template-id`  | 
| IoT: DescribeRoleAlias | DescribeRoleAlias |  `arn:aws:iot:region:account-id:rolealias/role-alias-name`  | 
| IoT: DescribeThing | DescribeThing |  `arn:aws:iot:region:account-id:thing/thing-name`  | 
| IoT: DescribeThingGroup | DescribeThingGroup |  `arn:aws:iot:region:account-id:thinggroup/thing-group-name`  | 
| IoT: DescribeThingRegistrationTask | DescribeThingRegistrationTask | Nessuno | 
| IoT: DescribeThingType | DescribeThingType |  `arn:aws:iot:region:account-id:thingtype/thing-type-name`  | 
| IoT: DetachPolicy | DetachPolicy |  `arn:aws:iot:region:account-id:cert/cert-id` or `arn:aws:iot:region:account-id:thinggroup/thing-group-name`  | 
| IoT: DetachPrincipalPolicy | DetachPrincipalPolicy |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT: DetachSecurityProfile | DetachSecurityProfile |  `arn:aws:iot:region:account-id:securityprofile/security-profile-name` `arn:aws:iot:region:account-id:dimension/dimension-name`  | 
| IoT: DetachThingPrincipal | DetachThingPrincipal |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT: DisableTopicRule | DisableTopicRule |  `arn:aws:iot:region:account-id:rule/rule-name`  | 
| IoT: EnableTopicRule | EnableTopicRule |  `arn:aws:iot:region:account-id:rule/rule-name`  | 
| IoT: GetEffectivePolicies | GetEffectivePolicies |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT: GetIndexingConfiguration | GetIndexingConfiguration | Nessuno | 
| IoT: GetJobDocument | GetJobDocument |  `arn:aws:iot:region:account-id:job/job-id`  | 
| IoT: GetLoggingOptions | GetLoggingOptions | \$1 | 
| IoT: GetPolicy | GetPolicy |  `arn:aws:iot:region:account-id:policy/policy-name`  | 
| IoT: GetPolicyVersion | GetPolicyVersion |  `arn:aws:iot:region:account-id:policy/policy-name`  | 
| IoT: GetRegistrationCode | GetRegistrationCode | \$1 | 
| IoT: GetTopicRule | GetTopicRule |  `arn:aws:iot:region:account-id:rule/rule-name`  | 
| IoT: ListAttachedPolicies | ListAttachedPolicies |  `arn:aws:iot:region:account-id:thinggroup/thing-group-name` or `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT: ListAuthorizers | ListAuthorizers | Nessuno | 
| IoT: elenco CACertificates | Elenco CACertificates | \$1 | 
| IoT: ListCertificates | ListCertificates | \$1 | 
| iot: ListCertificatesBy CA | ListCertificatesByCA | \$1 | 
| IoT: ListIndices | ListIndices | Nessuno | 
| IoT: ListJobExecutionsForJob | ListJobExecutionsForJob | Nessuno | 
| IoT: ListJobExecutionsForThing | ListJobExecutionsForThing | Nessuno | 
| IoT: ListJobs | ListJobs |  `arn:aws:iot:region:account-id:thinggroup/thing-group-name` se il thingGroupName parametro è usato  | 
| iot: ListJobTemplates | ListJobs | Nessuno | 
| IoT: ListOutgoingCertificates | ListOutgoingCertificates | \$1 | 
| IoT: ListPolicies | ListPolicies | \$1 | 
| IoT: ListPolicyPrincipals | ListPolicyPrincipals | \$1 | 
| IoT: ListPolicyVersions | ListPolicyVersions |  `arn:aws:iot:region:account-id:policy/policy-name`  | 
| IoT: ListPrincipalPolicies | ListPrincipalPolicies |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT: ListPrincipalThings | ListPrincipalThings |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT: ListRoleAliases | ListRoleAliases | Nessuno | 
| IoT: ListTargetsForPolicy | ListTargetsForPolicy |  `arn:aws:iot:region:account-id:policy/policy-name`  | 
| IoT: ListThingGroups | ListThingGroups | Nessuno | 
| IoT: ListThingGroupsForThing | ListThingGroupsForThing |  `arn:aws:iot:region:account-id:thing/thing-name`  | 
| IoT: ListThingPrincipals | ListThingPrincipals |  `arn:aws:iot:region:account-id:thing/thing-name`  | 
| IoT: ListThingRegistrationTaskReports | ListThingRegistrationTaskReports | Nessuno | 
| IoT: ListThingRegistrationTasks | ListThingRegistrationTasks | Nessuno | 
| IoT: ListThingTypes | ListThingTypes | \$1 | 
| IoT: ListThings | ListThings | \$1 | 
| IoT: ListThingsInThingGroup | ListThingsInThingGroup |  `arn:aws:iot:region:account-id:thinggroup/thing-group-name`  | 
| IoT: ListTopicRules | ListTopicRules | \$1 | 
| IoT: listv2 LoggingLevels | Elenco V2 LoggingLevels | Nessuno | 
| IoT: registrazione CACertificate | Registrati CACertificate | \$1 | 
| IoT: RegisterCertificate | RegisterCertificate | \$1 | 
| IoT: RegisterThing | RegisterThing | Nessuno | 
| IoT: RejectCertificateTransfer | RejectCertificateTransfer |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT: RemoveThingFromThingGroup | RemoveThingFromThingGroup |  `arn:aws:iot:region:account-id:thinggroup/thing-group-name` `arn:aws:iot:region:account-id:thing/thing-name`  | 
| IoT: ReplaceTopicRule | ReplaceTopicRule |  `arn:aws:iot:region:account-id:rule/rule-name`  | 
| IoT: SearchIndex | SearchIndex |  `arn:aws:iot:region:account-id:index/index-id`  | 
| IoT: SetDefaultAuthorizer | SetDefaultAuthorizer |  `arn:aws:iot:region:account-id:authorizer/authorizer-function-name`  | 
| IoT: SetDefaultPolicyVersion | SetDefaultPolicyVersion |  `arn:aws:iot:region:account-id:policy/policy-name`  | 
| IoT: SetLoggingOptions | SetLoggingOptions |  `arn:aws:iot:region:account-id:role/role-name`  | 
| IoT: setV2 LoggingLevel | Impostare V2 LoggingLevel |  `arn:aws:iot:region:account-id:thinggroup/thing-group-name`  | 
| IoT: setV2 LoggingOptions | Impostare V2 LoggingOptions |  `arn:aws:iot:region:account-id:role/role-name`  | 
| IoT: StartThingRegistrationTask | StartThingRegistrationTask | Nessuno | 
| IoT: StopThingRegistrationTask | StopThingRegistrationTask | Nessuno | 
| IoT: TestAuthorization | TestAuthorization |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT: TestInvokeAuthorizer | TestInvokeAuthorizer | Nessuno | 
| IoT: TransferCertificate | TransferCertificate |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT: UpdateAuthorizer | UpdateAuthorizer |  `arn:aws:iot:region:account-id:authorizerfunction/authorizer-function-name`  | 
| IoT: aggiornamento CACertificate | Aggiorna CACertificate |  `arn:aws:iot:region:account-id:cacert/cert-id`  | 
| IoT: UpdateCertificate | UpdateCertificate |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT: UpdateDimension | UpdateDimension |  `arn:aws:iot:region:account-id:dimension/dimension-name`  | 
| IoT: UpdateEventConfigurations | UpdateEventConfigurations | Nessuno | 
| IoT: UpdateIndexingConfiguration | UpdateIndexingConfiguration | Nessuno | 
| IoT: UpdateRoleAlias | UpdateRoleAlias |  `arn:aws:iot:region:account-id:rolealias/role-alias-name`  | 
| IoT: UpdateSecurityProfile | UpdateSecurityProfile |  `arn:aws:iot:region:account-id:securityprofile/security-profile-name` `arn:aws:iot:region:account-id:dimension/dimension-name`  | 
| IoT: UpdateThing | UpdateThing |  `arn:aws:iot:region:account-id:thing/thing-name`  | 
| IoT: UpdateThingGroup | UpdateThingGroup |  `arn:aws:iot:region:account-id:thinggroup/thing-group-name`  | 
| IoT: UpdateThingGroupsForThing | UpdateThingGroupsForThing |  `arn:aws:iot:region:account-id:thing/thing-name` `arn:aws:iot:region:account-id:thinggroup/thing-group-name`  | 

Le azioni politiche AWS IoT utilizzano il seguente prefisso prima dell'azione:`iot:`. Ad esempio, per concedere a qualcuno l'autorizzazione a elencare tutti gli oggetti IoT registrati nell'`ListThings`API, includi l'`iot:ListThings`azione nella sua policy. Account AWS Le dichiarazioni politiche devono includere un `NotAction` elemento `Action` or. AWS IoT definisce il proprio set di azioni che descrivono le attività che è possibile eseguire con questo servizio.

Per specificare più azioni in una sola istruzione, separa ciascuna di esse con una virgola come mostrato di seguito:

```
"Action": [
      "ec2:action1",
      "ec2:action2"
```

È possibile specificare più azioni tramite caratteri jolly (\$1). Ad esempio, per specificare tutte le azioni che iniziano con la parola `Describe`, includi la seguente azione:

```
"Action": "iot:Describe*"
```

Per visualizzare un elenco di AWS IoT azioni, consulta [Actions Defined by AWS IoT](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiot.html#awsiot-actions-as-permissions) nella *IAM User Guide*.

#### Operazioni di Device Advisor
<a name="security_iam_service-actions-device-advisor"></a>

Nella tabella seguente sono elencate le operazioni di IAM IoT Device Advisor, ovvero l'API AWS IoT Device Advisor associata e la risorsa manipolata dall'operazione.


****  

| Operazioni di policy | AWS IoT API | Resources | 
| --- | --- | --- | 
| consulente per dispositivi IoT: CreateSuiteDefinition | CreateSuiteDefinition |  Nessuno  | 
| consulente per dispositivi IoT: DeleteSuiteDefinition | DeleteSuiteDefinition |  `arn:aws:iotdeviceadvisor:region:account-id:suitedefinition/suite-definition-id`  | 
| consulente per dispositivi IoT: GetSuiteDefinition | GetSuiteDefinition |  `arn:aws:iotdeviceadvisor:region:account-id:suitedefinition/suite-definition-id`  | 
| consulente per dispositivi IoT: GetSuiteRun | GetSuiteRun |  `arn:aws:iotdeviceadvisor:region:account-id:suitedefinition/suite-run-id`  | 
| consulente per dispositivi IoT: GetSuiteRunReport | GetSuiteRunReport |  `arn:aws:iotdeviceadvisor:region:account-id:suiterun/suite-definition-id/suite-run-id`  | 
| consulente per dispositivi IoT: ListSuiteDefinitions | ListSuiteDefinitions | Nessuno | 
| consulente per dispositivi IoT: ListSuiteRuns | ListSuiteRuns |  `arn:aws:iotdeviceadvisor:region:account-id:suitedefinition/suite-definition-id`  | 
| consulente per dispositivi IoT: ListTagsForResource | ListTagsForResource |  `arn:aws:iotdeviceadvisor:region:account-id:suitedefinition/suite-definition-id` `arn:aws:iotdeviceadvisor:region:account-id:suiterun/suite-definition-id/suite-run-id`  | 
| consulente per dispositivi IoT: StartSuiteRun | StartSuiteRun |  `arn:aws:iotdeviceadvisor:region:account-id:suitedefinition/suite-definition-id`  | 
| consulente per dispositivi IoT: TagResource | TagResource |  `arn:aws:iotdeviceadvisor:region:account-id:suitedefinition/suite-definition-id` `arn:aws:iotdeviceadvisor:region:account-id:suiterun/suite-definition-id/suite-run-id`  | 
| consulente per dispositivi IoT: UntagResource | UntagResource |  `arn:aws:iotdeviceadvisor:region:account-id:suitedefinition/suite-definition-id` `arn:aws:iotdeviceadvisor:region:account-id:suiterun/suite-definition-id/suite-run-id`  | 
| consulente per dispositivi IoT: UpdateSuiteDefinition | UpdateSuiteDefinition |  `arn:aws:iotdeviceadvisor:region:account-id:suitedefinition/suite-definition-id`  | 
| consulente per dispositivi IoT: StopSuiteRun | StopSuiteRun |  `arn:aws:iotdeviceadvisor:region:account-id:suiterun/suite-definition-id/suite-run-id`  | 

Le azioni politiche in AWS IoT Device Advisor utilizzano il seguente prefisso prima dell'azione:. `iotdeviceadvisor:` Ad esempio, per concedere a qualcuno il permesso di elencare tutte le definizioni di suite registrate nella sua Account AWS ListSuiteDefinitions API, includi l'`iotdeviceadvisor:ListSuiteDefinitions`azione nella sua politica.

### Resources
<a name="security_iam_service-with-iam-id-based-policies-resources"></a>

Gli amministratori possono utilizzare le policy AWS JSON per specificare chi ha accesso a cosa. In altre parole, quale **entità principale** può eseguire **operazioni** su quali **risorse** e in quali **condizioni**.

L’elemento JSON `Resource` della policy specifica l’oggetto o gli oggetti ai quali si applica l’operazione. Come best practice, specifica una risorsa utilizzando il suo [nome della risorsa Amazon (ARN)](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html). Per le azioni che non supportano le autorizzazioni a livello di risorsa, si utilizza un carattere jolly (\$1) per indicare che l’istruzione si applica a tutte le risorse.

```
"Resource": "*"
```


**AWS IoT risorse**  

| Operazioni di policy | AWS IoT API | Resources | 
| --- | --- | --- | 
| IoT: AcceptCertificateTransfer | AcceptCertificateTransfer |  `arn:aws:iot:region:account-id:cert/cert-id`  Il Account AWS valore specificato nell'ARN deve essere l'account su cui viene trasferito il certificato.   | 
| IoT: AddThingToThingGroup | AddThingToThingGroup |  `arn:aws:iot:region:account-id:thinggroup/thing-group-name` `arn:aws:iot:region:account-id:thing/thing-name`  | 
| IoT: AssociateTargetsWithJob | AssociateTargetsWithJob | Nessuno  | 
| IoT: AttachPolicy | AttachPolicy | `arn:aws:iot:region:account-id:thinggroup/thing-group-name` or `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT: AttachPrincipalPolicy | AttachPrincipalPolicy |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT: AttachThingPrincipal | AttachThingPrincipal |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT: CancelCertificateTransfer | CancelCertificateTransfer |  `arn:aws:iot:region:account-id:cert/cert-id`  Il Account AWS valore specificato nell'ARN deve essere l'account su cui viene trasferito il certificato.   | 
| IoT: CancelJob | CancelJob |  `arn:aws:iot:region:account-id:job/job-id`  | 
| IoT: CancelJobExecution | CancelJobExecution |  `arn:aws:iot:region:account-id:job/job-id` `arn:aws:iot:region:account-id:thing/thing-name`  | 
| IoT: ClearDefaultAuthorizer | ClearDefaultAuthorizer | Nessuno | 
| IoT: CreateAuthorizer | CreateAuthorizer |  `arn:aws:iot:region:account-id:authorizer/authorizer-function-name`  | 
| IoT: CreateCertificateFromCsr | CreateCertificateFromCsr | \$1 | 
| IoT: CreateJob | CreateJob |  `arn:aws:iot:region:account-id:job/job-id` `arn:aws:iot:region:account-id:thinggroup/thing-group-name` `arn:aws:iot:region:account-id:thing/thing-name` `arn:aws:iot:region:account-id:jobtemplate/job-template-id`  | 
| IoT: CreateJobTemplate | CreateJobTemplate |  `arn:aws:iot:region:account-id:job/job-id` `arn:aws:iot:region:account-id:jobtemplate/job-template-id`  | 
| IoT: CreateKeysAndCertificate | CreateKeysAndCertificate | \$1 | 
| IoT: CreatePolicy | CreatePolicy | `arn:aws:iot:region:account-id:policy/policy-name` | 
| CreatePolicyVersion | IoT: CreatePolicyVersion |  `arn:aws:iot:region:account-id:policy/policy-name`  Questa deve essere una AWS IoT politica, non una politica IAM.   | 
| IoT: CreateRoleAlias | CreateRoleAlias |  (parametro: roleAlias) `arn:aws:iot:region:account-id:rolealias/role-alias-name`  | 
| IoT: CreateThing | CreateThing |  `arn:aws:iot:region:account-id:thing/thing-name`  | 
| IoT: CreateThingGroup | CreateThingGroup |  `arn:aws:iot:region:account-id:thinggroup/thing-group-name` Per il gruppo in fase di creazione e per il gruppo padre, se usato  | 
| IoT: CreateThingType | CreateThingType |  `arn:aws:iot:region:account-id:thingtype/thing-type-name`  | 
| IoT: CreateTopicRule | CreateTopicRule |  `arn:aws:iot:region:account-id:rule/rule-name`  | 
| IoT: DeleteAuthorizer | DeleteAuthorizer |  `arn:aws:iot:region:account-id:authorizer/authorizer-name`  | 
| IoT: elimina CACertificate | Eliminare CACertificate |  `arn:aws:iot:region:account-id:cacert/cert-id`  | 
| IoT: DeleteCertificate | DeleteCertificate |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT: DeleteJob | DeleteJob |  `arn:aws:iot:region:account-id:job/job-id`  | 
| IoT: DeleteJobExecution | DeleteJobExecution |  `arn:aws:iot:region:account-id:job/job-id` `arn:aws:iot:region:account-id:thing/thing-name`  | 
| IoT: DeleteJobTemplate | DeleteJobTemplate |  `arn:aws:iot:region:account-id:jobtemplate/job-template-id`  | 
| IoT: DeletePolicy | DeletePolicy |  `arn:aws:iot:region:account-id:policy/policy-name`  | 
| IoT: DeletePolicyVersion | DeletePolicyVersion |  `arn:aws:iot:region:account-id:policy/policy-name`  | 
| IoT: DeleteRegistrationCode | DeleteRegistrationCode | \$1 | 
| IoT: DeleteRoleAlias | DeleteRoleAlias |  `arn:aws:iot:region:account-id:rolealias/role-alias-name`  | 
| IoT: DeleteThing | DeleteThing |  `arn:aws:iot:region:account-id:thing/thing-name`  | 
| IoT: DeleteThingGroup | DeleteThingGroup |  `arn:aws:iot:region:account-id:thinggroup/thing-group-name`  | 
| IoT: DeleteThingType | DeleteThingType |  `arn:aws:iot:region:account-id:thingtype/thing-type-name`  | 
| IoT: DeleteTopicRule | DeleteTopicRule |  `arn:aws:iot:region:account-id:rule/rule-name`  | 
| IoT: elimina V2 LoggingLevel | Elimina V2 LoggingLevel |  `arn:aws:iot:region:account-id:thinggroup/thing-group-name`  | 
| IoT: DeprecateThingType | DeprecateThingType |  `arn:aws:iot:region:account-id:thingtype/thing-type-name`  | 
| IoT: DescribeAuthorizer | DescribeAuthorizer |  `arn:aws:iot:region:account-id:authorizer/authorizer-function-name` (parametro: authorizerName) nessuno  | 
| IoT: descrivi CACertificate | Descriva CACertificate |  `arn:aws:iot:region:account-id:cacert/cert-id`  | 
| IoT: DescribeCertificate | DescribeCertificate |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT: DescribeDefaultAuthorizer | DescribeDefaultAuthorizer | Nessuno  | 
| IoT: DescribeEndpoint | DescribeEndpoint | \$1 | 
| IoT: DescribeEventConfigurations | DescribeEventConfigurations | nessuno  | 
| IoT: DescribeIndex | DescribeIndex |  `arn:aws:iot:region:account-id:index/index-name`  | 
| IoT: DescribeJob | DescribeJob |  `arn:aws:iot:region:account-id:job/job-id`  | 
| IoT: DescribeJobExecution | DescribeJobExecution | Nessuno | 
| IoT: DescribeJobTemplate | DescribeJobTemplate |  `arn:aws:iot:region:account-id:jobtemplate/job-template-id`  | 
| IoT: DescribeRoleAlias | DescribeRoleAlias |  `arn:aws:iot:region:account-id:rolealias/role-alias-name`  | 
| IoT: DescribeThing | DescribeThing |  `arn:aws:iot:region:account-id:thing/thing-name`  | 
| IoT: DescribeThingGroup | DescribeThingGroup |  `arn:aws:iot:region:account-id:thinggroup/thing-group-name`  | 
| IoT: DescribeThingRegistrationTask | DescribeThingRegistrationTask | Nessuno | 
| IoT: DescribeThingType | DescribeThingType |  `arn:aws:iot:region:account-id:thingtype/thing-type-name`  | 
| IoT: DetachPolicy | DetachPolicy |  `arn:aws:iot:region:account-id:cert/cert-id` or `arn:aws:iot:region:account-id:thinggroup/thing-group-name`  | 
| IoT: DetachPrincipalPolicy | DetachPrincipalPolicy |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT: DetachThingPrincipal | DetachThingPrincipal |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT: DisableTopicRule | DisableTopicRule |  `arn:aws:iot:region:account-id:rule/rule-name`  | 
| IoT: EnableTopicRule | EnableTopicRule |  `arn:aws:iot:region:account-id:rule/rule-name`  | 
| IoT: GetEffectivePolicies | GetEffectivePolicies |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT: GetIndexingConfiguration | GetIndexingConfiguration | Nessuno | 
| IoT: GetJobDocument | GetJobDocument |  `arn:aws:iot:region:account-id:job/job-id`  | 
| IoT: GetLoggingOptions | GetLoggingOptions | \$1 | 
| IoT: GetPolicy | GetPolicy |  `arn:aws:iot:region:account-id:policy/policy-name`  | 
| IoT: GetPolicyVersion | GetPolicyVersion |  `arn:aws:iot:region:account-id:policy/policy-name`  | 
| IoT: GetRegistrationCode | GetRegistrationCode | \$1 | 
| IoT: GetTopicRule | GetTopicRule |  `arn:aws:iot:region:account-id:rule/rule-name`  | 
| IoT: ListAttachedPolicies | ListAttachedPolicies |  `arn:aws:iot:region:account-id:thinggroup/thing-group-name` or `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT: ListAuthorizers | ListAuthorizers | Nessuno | 
| IoT: elenco CACertificates | Elenco CACertificates | \$1 | 
| IoT: ListCertificates | ListCertificates | \$1 | 
| iot: ListCertificatesBy CA | ListCertificatesByCA | \$1 | 
| IoT: ListIndices | ListIndices | Nessuno | 
| IoT: ListJobExecutionsForJob | ListJobExecutionsForJob | Nessuno | 
| IoT: ListJobExecutionsForThing | ListJobExecutionsForThing | Nessuno | 
| IoT: ListJobs | ListJobs |  `arn:aws:iot:region:account-id:thinggroup/thing-group-name` se il thingGroupName parametro è usato  | 
| iot: ListJobTemplates | ListJobTemplates | Nessuno | 
| IoT: ListOutgoingCertificates | ListOutgoingCertificates | \$1 | 
| IoT: ListPolicies | ListPolicies | \$1 | 
| IoT: ListPolicyPrincipals | ListPolicyPrincipals |  `arn:aws:iot:region:account-id:policy/policy-name`  | 
| IoT: ListPolicyVersions | ListPolicyVersions |  `arn:aws:iot:region:account-id:policy/policy-name`  | 
| IoT: ListPrincipalPolicies | ListPrincipalPolicies |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT: ListPrincipalThings | ListPrincipalThings |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT: ListRoleAliases | ListRoleAliases | Nessuno | 
| IoT: ListTargetsForPolicy | ListTargetsForPolicy |  `arn:aws:iot:region:account-id:policy/policy-name`  | 
| IoT: ListThingGroups | ListThingGroups | Nessuno | 
| IoT: ListThingGroupsForThing | ListThingGroupsForThing |  `arn:aws:iot:region:account-id:thing/thing-name`  | 
| IoT: ListThingPrincipals | ListThingPrincipals |  `arn:aws:iot:region:account-id:thing/thing-name`  | 
| IoT: ListThingRegistrationTaskReports | ListThingRegistrationTaskReports | Nessuno | 
| IoT: ListThingRegistrationTasks | ListThingRegistrationTasks | Nessuno | 
| IoT: ListThingTypes | ListThingTypes | \$1 | 
| IoT: ListThings | ListThings | \$1 | 
| IoT: ListThingsInThingGroup | ListThingsInThingGroup |  `arn:aws:iot:region:account-id:thinggroup/thing-group-name`  | 
| IoT: ListTopicRules | ListTopicRules | \$1 | 
| IoT: listv2 LoggingLevels | Elenco V2 LoggingLevels | Nessuno | 
| IoT: registrazione CACertificate | Registrati CACertificate | \$1 | 
| IoT: RegisterCertificate | RegisterCertificate | \$1 | 
| IoT: RegisterThing | RegisterThing | Nessuno | 
| IoT: RejectCertificateTransfer | RejectCertificateTransfer |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT: RemoveThingFromThingGroup | RemoveThingFromThingGroup |  `arn:aws:iot:region:account-id:thinggroup/thing-group-name` `arn:aws:iot:region:account-id:thing/thing-name`  | 
| IoT: ReplaceTopicRule | ReplaceTopicRule |  `arn:aws:iot:region:account-id:rule/rule-name`  | 
| IoT: SearchIndex | SearchIndex |  `arn:aws:iot:region:account-id:index/index-id`  | 
| IoT: SetDefaultAuthorizer | SetDefaultAuthorizer |  `arn:aws:iot:region:account-id:authorizer/authorizer-function-name`  | 
| IoT: SetDefaultPolicyVersion | SetDefaultPolicyVersion |  `arn:aws:iot:region:account-id:policy/policy-name`  | 
| IoT: SetLoggingOptions | SetLoggingOptions | \$1 | 
| IoT: setV2 LoggingLevel | Impostare V2 LoggingLevel | \$1 | 
| IoT: setV2 LoggingOptions | Impostare V2 LoggingOptions | \$1 | 
| IoT: StartThingRegistrationTask | StartThingRegistrationTask | Nessuno | 
| IoT: StopThingRegistrationTask | StopThingRegistrationTask | Nessuno | 
| IoT: TestAuthorization | TestAuthorization |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT: TestInvokeAuthorizer | TestInvokeAuthorizer | Nessuno | 
| IoT: TransferCertificate | TransferCertificate |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT: UpdateAuthorizer | UpdateAuthorizer |  `arn:aws:iot:region:account-id:authorizerfunction/authorizer-function-name`  | 
| IoT: aggiornamento CACertificate | Aggiorna CACertificate |  `arn:aws:iot:region:account-id:cacert/cert-id`  | 
| IoT: UpdateCertificate | UpdateCertificate |  `arn:aws:iot:region:account-id:cert/cert-id`  | 
| IoT: UpdateEventConfigurations | UpdateEventConfigurations | Nessuno | 
| IoT: UpdateIndexingConfiguration | UpdateIndexingConfiguration | Nessuno | 
| IoT: UpdateRoleAlias | UpdateRoleAlias |  `arn:aws:iot:region:account-id:rolealias/role-alias-name`  | 
| IoT: UpdateThing | UpdateThing |  `arn:aws:iot:region:account-id:thing/thing-name`  | 
| IoT: UpdateThingGroup | UpdateThingGroup |  `arn:aws:iot:region:account-id:thinggroup/thing-group-name`  | 
| IoT: UpdateThingGroupsForThing | UpdateThingGroupsForThing |  `arn:aws:iot:region:account-id:thing/thing-name`  | 

Per ulteriori informazioni sul formato di ARNs, consulta [Amazon Resource Names (ARNs) e AWS Service Namespaces](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html).

Alcune AWS IoT azioni, come quelle per la creazione di risorse, non possono essere eseguite su una risorsa specifica. In questi casi, è necessario utilizzare il carattere jolly (\$1).

```
"Resource": "*"
```

Per visualizzare un elenco dei tipi di AWS IoT risorse e relativi ARNs, consulta [Resources Defined by AWS IoT](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiot.html#awsiot-resources-for-iam-policies) nella *IAM User Guide*. Per informazioni sulle operazioni con cui è possibile specificare l'ARN di ogni risorsa, consulta [Operazioni definite da AWS IoT](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiot.html#awsiot-actions-as-permissions).

#### Risorse di Device Advisor
<a name="security_iam_service-device-advisor-resources"></a>

Per definire le restrizioni a livello di risorsa per le politiche IAM di AWS IoT Device Advisor, utilizza i seguenti formati ARN di risorse per le definizioni e le esecuzioni delle suite.

Formato dell'ARN della risorsa di definizione della suite  
`arn:aws:iotdeviceadvisor:region:account-id:suitedefinition/suite-definition-id`

Formato dell'ARN della risorsa di esecuzione della suite  
`arn:aws:iotdeviceadvisor:region:account-id:suiterun/suite-definition-id/suite-run-id`

### Chiavi di condizione
<a name="security_iam_service-with-iam-id-based-policies-conditionkeys"></a>

Gli amministratori possono utilizzare le policy AWS JSON per specificare chi ha accesso a cosa. In altre parole, quale **entità principale** può eseguire **operazioni** su quali **risorse** e in quali **condizioni**.

L’elemento `Condition` specifica quando le istruzioni vengono eseguite in base a criteri definiti. È possibile compilare espressioni condizionali che utilizzano [operatori di condizione](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html), ad esempio uguale a o minore di, per soddisfare la condizione nella policy con i valori nella richiesta. Per visualizzare tutte le chiavi di condizione AWS globali, consulta le chiavi di [contesto delle condizioni AWS globali nella Guida](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html) per l'*utente IAM*.

AWS IoT definisce il proprio set di chiavi di condizione e supporta anche l'utilizzo di alcune chiavi di condizione globali. Per visualizzare tutte le chiavi di condizione AWS globali, consulta [AWS Global Condition Context Keys](https://docs.aws.amazon.com/service-authorization/latest/reference/reference_policies_condition-keys.html) nella *IAM User Guide*. 


**AWS IoT chiavi di condizione**  

| AWS IoT chiavi di condizione | Descrizione | Tipo | 
| --- | --- | --- | 
| aws:RequestTag/\$1\$1tag-key\$1 | Una chiave del tag che è presente nella richiesta effettuata dall'utente verso AWS IoT. | Stringa | 
| aws:ResourceTag/\$1\$1tag-key\$1 | Il componente chiave del tag di un tag allegato a una AWS IoT risorsa. | Stringa | 
| aws:TagKeys | L'elenco di tutti i nomi delle chiavi di tag associati alla risorsa nella richiesta. | Stringa | 

Per visualizzare un elenco di chiavi di AWS IoT condizione, consulta [Condition Keys for AWS IoT](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiot.html#awsiot-policy-keys) nella *IAM User Guide*. Per sapere con quali azioni e risorse puoi utilizzare una chiave di condizione, consulta [Azioni definite da AWS IoT](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiot.html#awsiot-actions-as-permissions).

### Esempi
<a name="security_iam_service-with-iam-id-based-policies-examples"></a>



Per visualizzare esempi di politiche AWS IoT basate sull'identità, vedere. [AWS IoT esempi di politiche basate sull'identità](security_iam_id-based-policy-examples.md)

## AWS IoT politiche basate sulle risorse
<a name="security_iam_service-with-iam-resource-based-policies"></a>

Le politiche basate sulle risorse sono documenti di policy JSON che specificano quali azioni uno specifico principale può eseguire sulla risorsa e in quali condizioni. AWS IoT 

AWS IoT non supporta le politiche basate sulle risorse IAM. Tuttavia, supporta politiche basate sulle risorse. AWS IoT Per ulteriori informazioni, consulta [AWS IoT Core politiche](iot-policies.md).

## Autorizzazione basata su tag AWS IoT
<a name="security_iam_service-with-iam-tags"></a>

È possibile allegare tag alle AWS IoT risorse o passare tag in una richiesta a AWS IoT. Per controllare l’accesso basato su tag, fornire informazioni sui tag nell’[elemento condizione](https://docs.aws.amazon.com/service-authorization/latest/reference/reference_policies_elements_condition.html) di una policy utilizzando le chiavi di condizione `iot:ResourceTag/key-name`, `aws:RequestTag/key-name` o `aws:TagKeys`. Per ulteriori informazioni, consulta [Utilizzo dei tag con policy IAM](tagging-iot-iam.md). Per ulteriori informazioni sull'etichettatura AWS IoT delle risorse, consulta[Taggare le tue risorse AWS IoT](tagging-iot.md).

Per visualizzare un esempio di policy basata su identità per limitare l'accesso a una risorsa in base ai tag di tale risorsa, consulta [Visualizzazione delle AWS IoT risorse in base ai tag](security_iam_id-based-policy-examples.md#security_iam_id-based-policy-examples-view-thing-tags).

## AWS IoT Ruoli IAM
<a name="security_iam_service-with-iam-roles"></a>

Un [ruolo IAM](https://docs.aws.amazon.com/service-authorization/latest/reference/id_roles.html) è un'entità interna all'utente Account AWS che dispone di autorizzazioni specifiche.

### Utilizzo di credenziali temporanee con AWS IoT
<a name="security_iam_service-with-iam-roles-tempcreds"></a>

È possibile utilizzare credenziali temporanee per effettuare l'accesso con la federazione, assumere un ruolo IAM o un ruolo multi-account. È possibile ottenere credenziali di sicurezza temporanee chiamando operazioni AWS STS API come [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)o. [GetFederationToken](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetFederationToken.html) 

AWS IoT supporta l'utilizzo di credenziali temporanee. 

### Ruoli collegati ai servizi
<a name="security_iam_service-with-iam-roles-service-linked"></a>

[I ruoli collegati ai](https://docs.aws.amazon.com/service-authorization/latest/reference/id_roles_terms-and-concepts.html#iam-term-service-linked-role) AWS servizi consentono ai servizi di accedere alle risorse di altri servizi per completare un'azione per conto dell'utente. I ruoli collegati ai servizi sono visualizzati nell'account IAM e sono di proprietà del servizio. Un amministratore IAM può visualizzare le autorizzazioni per i ruoli collegati ai servizi, ma non può modificarle.

AWS IoT non supporta ruoli collegati ai servizi.

### Ruoli dei servizi
<a name="security_iam_service-with-iam-roles-service"></a>

Questa funzionalità consente a un servizio di assumere un [ruolo di servizio](https://docs.aws.amazon.com/service-authorization/latest/reference/id_roles_terms-and-concepts.html#iam-term-service-role) per conto dell'utente. Questo ruolo consente al servizio di accedere alle risorse in altri servizi per completare un'azione per conto dell'utente. I ruoli dei servizi sono visualizzati nell'account IAM e sono di proprietà dell'account. Ciò significa che un amministratore IAM può modificare le autorizzazioni per questo ruolo. Tuttavia, questo potrebbe pregiudicare la funzionalità del servizio.

# AWS IoT esempi di politiche basate sull'identità
<a name="security_iam_id-based-policy-examples"></a>

Per impostazione predefinita, gli utenti e i ruoli IAM non dispongono dell'autorizzazione per creare o modificare risorse AWS IoT . Inoltre, non possono eseguire attività utilizzando l'API Console di gestione AWS AWS CLI, o. AWS Un amministratore IAM deve creare policy IAM che concedono a utenti e ruoli l'autorizzazione per eseguire operazioni API specifiche sulle risorse specificate di cui hanno bisogno. L'amministratore devi quindi collegare queste policy a utenti o gruppi che richiedono tali autorizzazioni.

Per informazioni su come creare una policy basata su identità IAM utilizzando questi documenti di policy JSON di esempio, consulta [Creazione di policy nella scheda JSON](https://docs.aws.amazon.com/service-authorization/latest/reference/access_policies_create.html#access_policies_create-json-editor) nella *Guida per l'utente IAM*.

**Topics**
+ [Best practice delle policy](#security_iam_service-with-iam-policy-best-practices)
+ [Utilizzo della console AWS IoT](#security_iam_id-based-policy-examples-console)
+ [Consentire agli utenti di visualizzare le loro autorizzazioni](#security_iam_id-based-policy-examples-view-own-permissions)
+ [Visualizzazione delle AWS IoT risorse in base ai tag](#security_iam_id-based-policy-examples-view-thing-tags)
+ [Visualizzazione delle risorse di AWS IoT Device Advisor in base ai tag](#security_iam-device-advisor-tags)

## Best practice delle policy
<a name="security_iam_service-with-iam-policy-best-practices"></a>

Le politiche basate sull'identità determinano se qualcuno può creare, accedere o eliminare AWS IoT risorse nel tuo account. Queste azioni possono comportare costi aggiuntivi per l’ Account AWS. Quando si creano o modificano policy basate sull’identità, seguire queste linee guida e raccomandazioni:
+ **Inizia con le policy AWS gestite e passa alle autorizzazioni con privilegi minimi: per iniziare a concedere autorizzazioni** *a utenti e carichi di lavoro, utilizza le politiche gestite che concedono le autorizzazioni per molti casi d'uso comuni.AWS * Sono disponibili nel tuo. Account AWS Ti consigliamo di ridurre ulteriormente le autorizzazioni definendo politiche gestite dai AWS clienti specifiche per i tuoi casi d'uso. Per maggiori informazioni, consulta [Policy gestite da AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies) o [Policy gestite da AWS per le funzioni dei processi](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_job-functions.html) nella *Guida per l’utente di IAM*.
+ **Applicazione delle autorizzazioni con privilegio minimo** - Quando si impostano le autorizzazioni con le policy IAM, concedere solo le autorizzazioni richieste per eseguire un’attività. È possibile farlo definendo le azioni che possono essere intraprese su risorse specifiche in condizioni specifiche, note anche come *autorizzazioni con privilegio minimo*. Per maggiori informazioni sull’utilizzo di IAM per applicare le autorizzazioni, consulta [Policy e autorizzazioni in IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html) nella *Guida per l’utente di IAM*.
+ **Condizioni d’uso nelle policy IAM per limitare ulteriormente l’accesso** - Per limitare l’accesso ad azioni e risorse è possibile aggiungere una condizione alle policy. Ad esempio, è possibile scrivere una condizione di policy per specificare che tutte le richieste devono essere inviate utilizzando SSL. Puoi anche utilizzare le condizioni per concedere l'accesso alle azioni del servizio se vengono utilizzate tramite uno specifico Servizio AWS, ad esempio CloudFormation. Per maggiori informazioni, consultare la sezione [Elementi delle policy JSON di IAM: condizione](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html) nella *Guida per l’utente di IAM*.
+ **Utilizzo dello strumento di analisi degli accessi IAM per convalidare le policy IAM e garantire autorizzazioni sicure e funzionali** - Lo strumento di analisi degli accessi IAM convalida le policy nuove ed esistenti in modo che aderiscano al linguaggio (JSON) della policy IAM e alle best practice di IAM. Lo strumento di analisi degli accessi IAM offre oltre 100 controlli delle policy e consigli utili per creare policy sicure e funzionali. Per maggiori informazioni, consultare [Convalida delle policy per il Sistema di analisi degli accessi IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-policy-validation.html) nella *Guida per l’utente di IAM*.
+ **Richiedi l'autenticazione a più fattori (MFA**): se hai uno scenario che richiede utenti IAM o un utente root nel Account AWS tuo, attiva l'MFA per una maggiore sicurezza. Per richiedere la MFA quando vengono chiamate le operazioni API, aggiungere le condizioni MFA alle policy. Per maggiori informazioni, consultare [Protezione dell’accesso API con MFA](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa_configure-api-require.html) nella *Guida per l’utente di IAM*.

Per maggiori informazioni sulle best practice in IAM, consulta [Best practice di sicurezza in IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) nella *Guida per l’utente di IAM*.

## Utilizzo della console AWS IoT
<a name="security_iam_id-based-policy-examples-console"></a>

Per accedere alla AWS IoT console, è necessario disporre di un set minimo di autorizzazioni. Queste autorizzazioni devono consentirti di elencare e visualizzare i dettagli sulle AWS IoT risorse del tuo. Account AWS Se crei una policy basata sull’identità più restrittiva rispetto alle autorizzazioni minime richieste, la console non funzionerà nel modo previsto per le entità (utenti o ruoli) associate a tale policy.

Per garantire che tali entità possano ancora utilizzare la AWS IoT console, allega anche la seguente politica AWS gestita alle entità:`AWSIoTFullAccess`. Per ulteriori informazioni, consulta [Aggiunta di autorizzazioni a un utente](https://docs.aws.amazon.com/service-authorization/latest/reference/id_users_change-permissions.html#users_change_permissions-add-console) nella *Guida per l'utente IAM*.

Non è necessario consentire le autorizzazioni minime della console per gli utenti che effettuano chiamate solo verso AWS CLI o l' AWS API. Al contrario, è possibile accedere solo alle operazioni che soddisfano l'operazione API che stai cercando di eseguire.

## Consentire agli utenti di visualizzare le loro autorizzazioni
<a name="security_iam_id-based-policy-examples-view-own-permissions"></a>

Questo esempio mostra in che modo è possibile creare una policy che consente agli utenti IAM di visualizzare le policy inline e gestite che sono collegate alla relativa identità utente. Questa politica include le autorizzazioni per completare questa azione sulla console o utilizzando l'API o a livello di codice. AWS CLI AWS 

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ViewOwnUserInfo",
            "Effect": "Allow",
            "Action": [
                "iam:GetUserPolicy",
                "iam:ListGroupsForUser",
                "iam:ListAttachedUserPolicies",
                "iam:ListUserPolicies",
                "iam:GetUser"
            ],
            "Resource": ["arn:aws:iam::*:user/${aws:username}"]
        },
        {
            "Sid": "NavigateInConsole",
            "Effect": "Allow",
            "Action": [
                "iam:GetGroupPolicy",
                "iam:GetPolicyVersion",
                "iam:GetPolicy",
                "iam:ListAttachedGroupPolicies",
                "iam:ListGroupPolicies",
                "iam:ListPolicyVersions",
                "iam:ListPolicies",
                "iam:ListUsers"
            ],
            "Resource": "*"
        }
    ]
}
```

## Visualizzazione delle AWS IoT risorse in base ai tag
<a name="security_iam_id-based-policy-examples-view-thing-tags"></a>

È possibile utilizzare le condizioni nella policy basata sulle identità per controllare l'accesso alle risorse di AWS IoT in base ai tag. Questo esempio mostra come creare una policy che consente di visualizzare un oggetto. Tuttavia, l'autorizzazione viene concessa solo se il valore del tag dell'oggetto `Owner` corrisponde a quello del nome utente. Questa policy concede anche le autorizzazioni necessarie per completare questa azione nella console.

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ListBillingGroupsInConsole",
            "Effect": "Allow",
            "Action": "iot:ListBillingGroups",
            "Resource": "*"
        },
        {
            "Sid": "ViewBillingGroupsIfOwner",
            "Effect": "Allow",
           "Action": "iot:DescribeBillingGroup",
            "Resource": "arn:aws:iot:*:*:billinggroup/*",
            "Condition": {
                "StringEquals": {"aws:ResourceTag/Owner": "${aws:username}"}
        }
        }
    ]
}
```

Puoi allegare questa policy agli utenti IAM nel tuo account. Se un utente denominato `richard-roe` tenta di visualizzare un gruppo di AWS IoT fatturazione, il gruppo di fatturazione deve essere taggato `Owner=richard-roe` o. `owner=richard-roe` In caso contrario, gli viene negato l'accesso. La chiave di tag di condizione `Owner` corrisponde a `Owner` e `owner` perché i nomi delle chiavi di condizione non effettuano la distinzione tra maiuscole e minuscole. Per ulteriori informazioni, consulta la sezione [Elementi delle policy JSON di IAM: condizione](https://docs.aws.amazon.com/service-authorization/latest/reference/reference_policies_elements_condition.html) nella *Guida per l'utente di IAM*.

## Visualizzazione delle risorse di AWS IoT Device Advisor in base ai tag
<a name="security_iam-device-advisor-tags"></a>

Puoi utilizzare le condizioni nella policy basata sulle identità per controllare l'accesso alle risorse di AWS IoT Device Advisor in base ai tag. Nell'esempio seguente viene illustrato come creare una policy che consente di visualizzare una determinata definizione di suite. Tuttavia, l'autorizzazione viene concessa solo se il tag di definizione della suite `SuiteType` è impostato sul valore di `MQTT`. Questa policy concede anche le autorizzazioni necessarie per completare questa azione nella console.

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ViewSuiteDefinition",
            "Effect": "Allow",
            "Action": "iotdeviceadvisor:GetSuiteDefinition",
            "Resource": "arn:aws:iotdeviceadvisor:*:*:suitedefinition/*",
            "Condition": {
                "StringEquals": {"aws:ResourceTag/SuiteType": "MQTT"}
        }
        }
    ]
}
```

# AWS politiche gestite per AWS IoT
<a name="security-iam-awsmanpol"></a>







Per aggiungere autorizzazioni a utenti, gruppi e ruoli, è più facile utilizzare le politiche AWS gestite che scrivere le politiche da soli. La [creazione di policy gestite dai clienti IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create-console.html) che forniscono al team solo le autorizzazioni di cui ha bisogno richiede tempo e competenza. Per iniziare rapidamente, puoi utilizzare le nostre politiche AWS gestite. Queste policy coprono i casi d’uso comuni e sono disponibili nell’account Account AWS. Per ulteriori informazioni sulle policy AWS gestite, consulta le [policy AWS gestite](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies) nella *IAM User Guide*.

AWS i servizi mantengono e aggiornano le politiche AWS gestite. Non è possibile modificare le autorizzazioni nelle politiche AWS gestite. I servizi occasionalmente aggiungono altre autorizzazioni a una policy gestita da AWS per supportare nuove funzionalità. Questo tipo di aggiornamento interessa tutte le identità (utenti, gruppi e ruoli) a cui è collegata la policy. È più probabile che i servizi aggiornino una policy gestita da AWS quando viene avviata una nuova funzionalità o quando diventano disponibili nuove operazioni. I servizi non rimuovono le autorizzazioni da una policy AWS gestita, quindi gli aggiornamenti delle policy non comprometteranno le autorizzazioni esistenti.

Inoltre, AWS supporta politiche gestite per le funzioni lavorative che si estendono su più servizi. Ad esempio, la policy **ReadOnlyAccess** AWS gestita fornisce l'accesso in sola lettura a tutti i AWS servizi e le risorse. Quando un servizio avvia una nuova funzionalità, AWS aggiunge autorizzazioni di sola lettura per nuove operazioni e risorse. Per l’elenco e la descrizione delle policy di funzione dei processi, consultare la sezione [Policy gestite da AWS per funzioni di processi](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_job-functions.html) nella *Guida per l’utente di IAM*.

**Nota**  
AWS IoT funziona sia con le politiche IAM che con quelle AWS IoT di IAM. Questo argomento è dedicato solo alle policy IAM, che definiscono un'operazione di policy per operazioni API piano di controllo (control-plane) e del piano dati. Consulta anche [AWS IoT Core politiche](iot-policies.md).









## AWS politica gestita: AWSIo TConfig accesso
<a name="security-iam-awsmanpol-AWSIoTConfigAccess"></a>





È possibile allegare la policy `AWSIoTConfigAccess` alle identità IAM.



Questa policy concede all'identità associata le autorizzazioni per l'accesso a tutte le operazioni di configurazione AWS IoT . Questa policy può influenzare l'elaborazione e lo storage dei dati. Per visualizzare questa politica in Console di gestione AWS, vedere [AWSIoTConfigAccess](https://console.aws.amazon.com//iam/home#/policies/arn:aws:iam::aws:policy/AWSIoTConfigAccess$jsonEditor?section=permissions).



**Dettagli delle autorizzazioni**

Questa policy include le seguenti autorizzazioni:




+ `iot`— Recupera AWS IoT dati ed esegui azioni di configurazione IoT.



****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:AcceptCertificateTransfer",
                "iot:AddThingToThingGroup",
                "iot:AssociateTargetsWithJob",
                "iot:AttachPolicy",
                "iot:AttachPrincipalPolicy",
                "iot:AttachThingPrincipal",
                "iot:CancelCertificateTransfer",
                "iot:CancelJob",
                "iot:CancelJobExecution",
                "iot:ClearDefaultAuthorizer",
                "iot:CreateAuthorizer",
                "iot:CreateCertificateFromCsr",
                "iot:CreateJob",
                "iot:CreateKeysAndCertificate",
                "iot:CreateOTAUpdate",
                "iot:CreatePolicy",
                "iot:CreatePolicyVersion",
                "iot:CreateRoleAlias",
                "iot:CreateStream",
                "iot:CreateThing",
                "iot:CreateThingGroup",
                "iot:CreateThingType",
                "iot:CreateTopicRule",
                "iot:DeleteAuthorizer",
                "iot:DeleteCACertificate",
                "iot:DeleteCertificate",
                "iot:DeleteJob",
                "iot:DeleteJobExecution",
                "iot:DeleteOTAUpdate",
                "iot:DeletePolicy",
                "iot:DeletePolicyVersion",
                "iot:DeleteRegistrationCode",
                "iot:DeleteRoleAlias",
                "iot:DeleteStream",
                "iot:DeleteThing",
                "iot:DeleteThingGroup",
                "iot:DeleteThingType",
                "iot:DeleteTopicRule",
                "iot:DeleteV2LoggingLevel",
                "iot:DeprecateThingType",
                "iot:DescribeAuthorizer",
                "iot:DescribeCACertificate",
                "iot:DescribeCertificate",
                "iot:DescribeDefaultAuthorizer",
                "iot:DescribeEndpoint",
                "iot:DescribeEventConfigurations",
                "iot:DescribeIndex",
                "iot:DescribeJob",
                "iot:DescribeJobExecution",
                "iot:DescribeRoleAlias",
                "iot:DescribeStream",
                "iot:DescribeThing",
                "iot:DescribeThingGroup",
                "iot:DescribeThingRegistrationTask",
                "iot:DescribeThingType",
                "iot:DetachPolicy",
                "iot:DetachPrincipalPolicy",
                "iot:DetachThingPrincipal",
                "iot:DisableTopicRule",
                "iot:EnableTopicRule",
                "iot:GetEffectivePolicies",
                "iot:GetIndexingConfiguration",
                "iot:GetJobDocument",
                "iot:GetLoggingOptions",
                "iot:GetOTAUpdate",
                "iot:GetPolicy",
                "iot:GetPolicyVersion",
                "iot:GetRegistrationCode",
                "iot:GetTopicRule",
                "iot:GetV2LoggingOptions",
                "iot:ListAttachedPolicies",
                "iot:ListAuthorizers",
                "iot:ListCACertificates",
                "iot:ListCertificates",
                "iot:ListCertificatesByCA",
                "iot:ListIndices",
                "iot:ListJobExecutionsForJob",
                "iot:ListJobExecutionsForThing",
                "iot:ListJobs",
                "iot:ListOTAUpdates",
                "iot:ListOutgoingCertificates",
                "iot:ListPolicies",
                "iot:ListPolicyPrincipals",
                "iot:ListPolicyVersions",
                "iot:ListPrincipalPolicies",
                "iot:ListPrincipalThings",
                "iot:ListRoleAliases",
                "iot:ListStreams",
                "iot:ListTargetsForPolicy",
                "iot:ListThingGroups",
                "iot:ListThingGroupsForThing",
                "iot:ListThingPrincipals",
                "iot:ListThingRegistrationTaskReports",
                "iot:ListThingRegistrationTasks",
                "iot:ListThings",
                "iot:ListThingsInThingGroup",
                "iot:ListThingTypes",
                "iot:ListTopicRules",
                "iot:ListV2LoggingLevels",
                "iot:RegisterCACertificate",
                "iot:RegisterCertificate",
                "iot:RegisterThing",
                "iot:RejectCertificateTransfer",
                "iot:RemoveThingFromThingGroup",
                "iot:ReplaceTopicRule",
                "iot:SearchIndex",
                "iot:SetDefaultAuthorizer",
                "iot:SetDefaultPolicyVersion",
                "iot:SetLoggingOptions",
                "iot:SetV2LoggingLevel",
                "iot:SetV2LoggingOptions",
                "iot:StartThingRegistrationTask",
                "iot:StopThingRegistrationTask",
                "iot:TestAuthorization",
                "iot:TestInvokeAuthorizer",
                "iot:TransferCertificate",
                "iot:UpdateAuthorizer",
                "iot:UpdateCACertificate",
                "iot:UpdateCertificate",
                "iot:UpdateEventConfigurations",
                "iot:UpdateIndexingConfiguration",
                "iot:UpdateRoleAlias",
                "iot:UpdateStream",
                "iot:UpdateThing",
                "iot:UpdateThingGroup",
                "iot:UpdateThingGroupsForThing",
                "iot:UpdateAccountAuditConfiguration",
                "iot:DescribeAccountAuditConfiguration",
                "iot:DeleteAccountAuditConfiguration",
                "iot:StartOnDemandAuditTask",
                "iot:CancelAuditTask",
                "iot:DescribeAuditTask",
                "iot:ListAuditTasks",
                "iot:CreateScheduledAudit",
                "iot:UpdateScheduledAudit",
                "iot:DeleteScheduledAudit",
                "iot:DescribeScheduledAudit",
                "iot:ListScheduledAudits",
                "iot:ListAuditFindings",
                "iot:CreateSecurityProfile",
                "iot:DescribeSecurityProfile",
                "iot:UpdateSecurityProfile",
                "iot:DeleteSecurityProfile",
                "iot:AttachSecurityProfile",
                "iot:DetachSecurityProfile",
                "iot:ListSecurityProfiles",
                "iot:ListSecurityProfilesForTarget",
                "iot:ListTargetsForSecurityProfile",
                "iot:ListActiveViolations",
                "iot:ListViolationEvents",
                "iot:ValidateSecurityProfileBehaviors"
            ],
            "Resource": "*"
        }
    ]
}
```

## AWS politica gestita: AWSIo TConfig ReadOnlyAccess
<a name="security-iam-awsmanpol-AWSIoTConfigReadOnlyAccess"></a>





È possibile allegare la policy `AWSIoTConfigReadOnlyAccess` alle identità IAM.



Questa policy concede all'identità associata le autorizzazioni per l'accesso in sola lettura a tutte le operazioni di configurazione AWS IoT . Per visualizzare questa politica in Console di gestione AWS, vedere [AWSIoTConfigReadOnlyAccess](https://console.aws.amazon.com//iam/home#/policies/arn:aws:iam::aws:policy/AWSIoTConfigReadOnlyAccess$jsonEditor?section=permissions).



**Dettagli delle autorizzazioni**

Questa policy include le seguenti autorizzazioni:




+ `iot`: esegue operazioni di sola lettura di configurazione IoT.



****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:DescribeAuthorizer",
                "iot:DescribeCACertificate",
                "iot:DescribeCertificate",
                "iot:DescribeDefaultAuthorizer",
                "iot:DescribeEndpoint",
                "iot:DescribeEventConfigurations",
                "iot:DescribeIndex",
                "iot:DescribeJob",
                "iot:DescribeJobExecution",
                "iot:DescribeRoleAlias",
                "iot:DescribeStream",
                "iot:DescribeThing",
                "iot:DescribeThingGroup",
                "iot:DescribeThingRegistrationTask",
                "iot:DescribeThingType",
                "iot:GetEffectivePolicies",
                "iot:GetIndexingConfiguration",
                "iot:GetJobDocument",
                "iot:GetLoggingOptions",
                "iot:GetOTAUpdate",
                "iot:GetPolicy",
                "iot:GetPolicyVersion",
                "iot:GetRegistrationCode",
                "iot:GetTopicRule",
                "iot:GetV2LoggingOptions",
                "iot:ListAttachedPolicies",
                "iot:ListAuthorizers",
                "iot:ListCACertificates",
                "iot:ListCertificates",
                "iot:ListCertificatesByCA",
                "iot:ListIndices",
                "iot:ListJobExecutionsForJob",
                "iot:ListJobExecutionsForThing",
                "iot:ListJobs",
                "iot:ListOTAUpdates",
                "iot:ListOutgoingCertificates",
                "iot:ListPolicies",
                "iot:ListPolicyPrincipals",
                "iot:ListPolicyVersions",
                "iot:ListPrincipalPolicies",
                "iot:ListPrincipalThings",
                "iot:ListRoleAliases",
                "iot:ListStreams",
                "iot:ListTargetsForPolicy",
                "iot:ListThingGroups",
                "iot:ListThingGroupsForThing",
                "iot:ListThingPrincipals",
                "iot:ListThingRegistrationTaskReports",
                "iot:ListThingRegistrationTasks",
                "iot:ListThings",
                "iot:ListThingsInThingGroup",
                "iot:ListThingTypes",
                "iot:ListTopicRules",
                "iot:ListV2LoggingLevels",
                "iot:SearchIndex",
                "iot:TestAuthorization",
                "iot:TestInvokeAuthorizer",
                "iot:DescribeAccountAuditConfiguration",
                "iot:DescribeAuditTask",
                "iot:ListAuditTasks",
                "iot:DescribeScheduledAudit",
                "iot:ListScheduledAudits",
                "iot:ListAuditFindings",
                "iot:DescribeSecurityProfile",
                "iot:ListSecurityProfiles",
                "iot:ListSecurityProfilesForTarget",
                "iot:ListTargetsForSecurityProfile",
                "iot:ListActiveViolations",
                "iot:ListViolationEvents",
                "iot:ValidateSecurityProfileBehaviors"
            ],
            "Resource": "*"
        }
    ]
}
```

## AWS politica gestita: AWSIo TData Accesso
<a name="security-iam-awsmanpol-AWSIoTDataAccess"></a>





È possibile allegare la policy `AWSIoTDataAccess` alle identità IAM.



Questa politica concede le autorizzazioni di identità associate che consentono l'accesso a tutte le operazioni AWS IoT sui dati. Le operazioni sui dati inviano dati tramite il protocollo MQTT o HTTP. Per visualizzare questa policy nella Console di gestione AWS, consulta [https://console.aws.amazon.com//iam/home#/policies/arn:aws:iam::aws:policy/AWSIoTDataAccess?section=permissions](https://console.aws.amazon.com//iam/home#/policies/arn:aws:iam::aws:policy/AWSIoTDataAccess?section=permissions).



**Dettagli delle autorizzazioni**

Questa policy include le seguenti autorizzazioni:




+ `iot`— Recupera AWS IoT i dati e consenti l'accesso completo alle AWS IoT azioni di messaggistica.



****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect",
                "iot:Publish",
                "iot:Subscribe",
                "iot:Receive",
                "iot:GetThingShadow",
                "iot:UpdateThingShadow",
                "iot:DeleteThingShadow",
                "iot:ListNamedShadowsForThing"
            ],
            "Resource": "*"
        }
    ]
}
```

## AWS politica gestita: accesso AWSIo TFull
<a name="security-iam-awsmanpol-AWSIoTFullAccess"></a>





È possibile allegare la policy `AWSIoTFullAccess` alle identità IAM.



Questa policy concede all'identità associata le autorizzazioni per l'accesso a tutte le operazioni di configurazione e messaggistica AWS IoT . Per visualizzare questa politica in Console di gestione AWS, vedere [https://console.aws.amazon.com//iam/home#/policies/arn:aws:iam::aws:policy/AWSIoTFullAccess?section=permissions](https://console.aws.amazon.com//iam/home#/policies/arn:aws:iam::aws:policy/AWSIoTFullAccess?section=permissions).



**Dettagli delle autorizzazioni**

Questa policy include le seguenti autorizzazioni:




+ `iot`— Recupera AWS IoT i dati e consenti l'accesso completo alle azioni AWS IoT di configurazione e messaggistica.
+ `iotjobsdata`— Recupera i dati AWS IoT di Jobs e consenti l'accesso completo alle operazioni dell'API del piano dati AWS IoT di Jobs.



****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:*",
                "iotjobsdata:*"
            ],
            "Resource": "*"
        }
    ]
}
```

## AWS politica gestita: AWSIo TLogging
<a name="security-iam-awsmanpol-AWSIoTLogging"></a>





È possibile allegare la policy `AWSIoTLogging` alle identità IAM.



Questa politica concede le autorizzazioni di identità associate che consentono l'accesso alla creazione di gruppi Amazon CloudWatch Logs e ai log di streaming verso i gruppi. Questa politica è allegata al tuo ruolo di registrazione. CloudWatch Per visualizzare questa politica in Console di gestione AWS, vedere [https://console.aws.amazon.com//iam/home#/policies/arn:aws:iam::aws:policy/AWSIoTLogging?section=permissions](https://console.aws.amazon.com//iam/home#/policies/arn:aws:iam::aws:policy/AWSIoTLogging?section=permissions).



**Dettagli delle autorizzazioni**

Questa policy include le seguenti autorizzazioni:




+ `logs`— Recupera i CloudWatch log. Consente inoltre la creazione di gruppi di CloudWatch log e di log di streaming verso i gruppi.



****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "logs:CreateLogGroup",
                "logs:CreateLogStream",
                "logs:PutLogEvents",
                "logs:PutMetricFilter",
                "logs:PutRetentionPolicy",
                "logs:GetLogEvents",
                "logs:DeleteLogStream"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}
```

## AWS politica gestita: AWSIo TOTAUpdate
<a name="security-iam-awsmanpol-AWSIoTOTAUpdate"></a>





È possibile allegare la policy `AWSIoTOTAUpdate` alle identità IAM.



Questa politica concede le autorizzazioni di identità associate che consentono l'accesso alla creazione di AWS IoT lavori, ai lavori di firma AWS IoT del codice e alla descrizione dei lavori di firma AWS del codice. [Per visualizzare questa politica in, vedere. Console di gestione AWS`AWSIoTOTAUpdate`](https://console.aws.amazon.com//iam/home#/policies/arn:aws:iam::aws:policy/AWSIoTOTAUpdate?section=permissions)



**Dettagli delle autorizzazioni**

Questa policy include le seguenti autorizzazioni:




+ `iot`— Crea AWS IoT offerte di lavoro e lavori di firma del codice.
+ `signer`— Esegui la creazione di lavori di firma del AWS codice.



****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
        "Effect": "Allow",
        "Action": [
            "iot:CreateJob",
            "signer:DescribeSigningJob"
        ],
        "Resource": "*"
    }
}
```

## AWS politica gestita: AWSIo TRule azioni
<a name="security-iam-awsmanpol-AWSIoTRuleActions"></a>





È possibile allegare la policy `AWSIoTRuleActions` alle identità IAM.



Questa politica concede le autorizzazioni di identità associate che consentono l'accesso a tutti Servizio AWS i messaggi supportati nelle azioni delle AWS IoT regole. Per visualizzare questa politica in Console di gestione AWS, vedere. [https://console.aws.amazon.com//iam/home#/policies/arn:aws:iam::aws:policy/AWSIoTRuleActions?section=permissions](https://console.aws.amazon.com//iam/home#/policies/arn:aws:iam::aws:policy/AWSIoTRuleActions?section=permissions)



**Dettagli delle autorizzazioni**

Questa policy include le seguenti autorizzazioni:




+ `iot`: esegue operazioni per la pubblicazione di messaggi delle operazioni delle regole.
+ `dynamodb`: inserisce un messaggio in una tabella DynamoDB o suddivide un messaggio in più colonne di una tabella DynamoDB.
+ `s3`: archivia un oggetto in un bucket Amazon S3.
+ `kinesis`: invia un messaggio a un oggetto di flusso Amazon Kinesis.
+ `firehose`- Inserire un record in un oggetto stream Firehose.
+ `cloudwatch`- Modifica lo stato CloudWatch dell'allarme o invia i dati del messaggio a CloudWatch metric.
+ `sns`: esegue l'operazione di pubblicazione di una notifica con Amazon SNS. Questa operazione è limitata agli argomenti AWS IoT SNS.
+ `sqs`: inserisce un messaggio da aggiungere alla coda SQS.
+ `es`- Invia un messaggio al OpenSearch servizio di assistenza.



****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
        "Effect": "Allow",
        "Action": [
            "dynamodb:PutItem",
            "kinesis:PutRecord",
            "iot:Publish",
            "s3:PutObject",
            "sns:Publish",
            "sqs:SendMessage*",
            "cloudwatch:SetAlarmState",
            "cloudwatch:PutMetricData",
            "es:ESHttpPut",
            "firehose:PutRecord"
        ],
        "Resource": "*"
    }
}
```

## AWS politica gestita: AWSIo TThings registrazione
<a name="security-iam-awsmanpol-AWSIoTThingsRegistration"></a>





È possibile allegare la policy `AWSIoTThingsRegistration` alle identità IAM.



Questa policy concede all'identità associata le autorizzazioni per l'accesso per registrare oggetti in blocco usando l'API `StartThingRegistrationTask`. Questa policy può influenzare l'elaborazione e lo storage dei dati. Per visualizzare questa politica nel Console di gestione AWS, vedere [https://console.aws.amazon.com//iam/home#/policies/arn:aws:iam::aws:policy/AWSIoTThingsRegistration?section=permissions](https://console.aws.amazon.com//iam/home#/policies/arn:aws:iam::aws:policy/AWSIoTThingsRegistration?section=permissions).



**Dettagli delle autorizzazioni**

Questa policy include le seguenti autorizzazioni:




+ `iot`: esegue operazioni per la creazione di oggetti e il collegamento di policy e certificati durante la registrazione in blocco.



****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:AddThingToThingGroup",
                "iot:AttachPolicy",
                "iot:AttachPrincipalPolicy",
                "iot:AttachThingPrincipal",
                "iot:CreateCertificateFromCsr",
                "iot:CreatePolicy",
                "iot:CreateThing",
                "iot:DescribeCertificate",
                "iot:DescribeThing",
                "iot:DescribeThingGroup",
                "iot:DescribeThingType",
                "iot:DetachPolicy",
                "iot:DetachThingPrincipal",
                "iot:GetPolicy",
                "iot:ListAttachedPolicies",
                "iot:ListPolicyPrincipals",
                "iot:ListPrincipalPolicies",
                "iot:ListPrincipalThings",
                "iot:ListTargetsForPolicy",
                "iot:ListThingGroupsForThing",
                "iot:ListThingPrincipals",
                "iot:RegisterCertificate",
                "iot:RegisterThing",
                "iot:RemoveThingFromThingGroup",
                "iot:UpdateCertificate",
                "iot:UpdateThing",
                "iot:UpdateThingGroupsForThing",
                "iot:AddThingToBillingGroup",
                "iot:DescribeBillingGroup",
                "iot:RemoveThingFromBillingGroup"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}
```





## AWS IoT aggiornamenti alle politiche AWS gestite
<a name="security-iam-awsmanpol-updates"></a>



Visualizza i dettagli sugli aggiornamenti delle politiche AWS gestite AWS IoT da quando questo servizio ha iniziato a tenere traccia di queste modifiche. Per ricevere avvisi automatici sulle modifiche a questa pagina, iscriviti al feed RSS nella pagina della cronologia dei AWS IoT documenti.




| Modifica | Descrizione | Data | 
| --- | --- | --- | 
|  [AWSIoTFullAccesso](#security-iam-awsmanpol-AWSIoTFullAccess): aggiornamento a una politica esistente  |  AWS IoT ha aggiunto nuove autorizzazioni per consentire agli utenti di accedere alle operazioni dell'API del piano dati di AWS IoT Jobs utilizzando il protocollo HTTP. Un nuovo prefisso della policy IAM,`iotjobsdata:`, offre un controllo di accesso più dettagliato per accedere agli endpoint del piano dati di AWS IoT Jobs. Per le operazioni API piano di controllo (control-plane), viene usato ancora il prefisso `iot:`. Per ulteriori informazioni, consulta [AWS IoT Core politiche per il protocollo HTTPS](iot-data-plane-jobs.md#iot-jobs-data-http).  | 11 maggio 2022 | 
|  AWS IoT ha iniziato a tenere traccia delle modifiche  |  AWS IoT ha iniziato a tenere traccia delle modifiche per le sue politiche AWS gestite.  | 11 maggio 2022 | 

# Risoluzione dei problemi di AWS IoT identità e accesso
<a name="security_iam_troubleshoot"></a>

Utilizza le seguenti informazioni per aiutarti a diagnosticare e risolvere i problemi più comuni che potresti riscontrare quando lavori con un AWS IoT IAM.

**Topics**
+ [Non sono autorizzato a eseguire alcuna azione in AWS IoT](#security_iam_troubleshoot-no-permissions)
+ [Non sono autorizzato a eseguire iam: PassRole](#security_iam_troubleshoot-passrole)
+ [Voglio consentire a persone esterne a me di accedere Account AWS alle mie AWS IoT risorse](#security_iam_troubleshoot-cross-account-access)

## Non sono autorizzato a eseguire alcuna azione in AWS IoT
<a name="security_iam_troubleshoot-no-permissions"></a>

Se ricevi un errore che indica che non sei autorizzato a eseguire un’operazione, le tue policy devono essere aggiornate per poter eseguire l’operazione.

L'errore di esempio seguente si verifica quando l'utente IAM, `mateojackson`, tenta di utilizzare la console per visualizzare i dettagli relativi a una risorsa oggetto, ma non dispone delle autorizzazioni `iot:DescribeThing`.

```
User: arn:aws:iam::123456789012:user/mateojackson is not authorized to perform: iot:DescribeThing on resource: MyIoTThing
```

In questo caso, la policy per l'utente `mateojackson` deve essere aggiornata per consentire l'accesso alla risorsa oggetto utilizzando l'azione `iot:DescribeThing`. 

Se hai bisogno di aiuto, contatta il tuo AWS amministratore. L’amministratore è la persona che ti ha fornito le credenziali di accesso.

Utilizzo di AWS IoT Device Advisor  
Se utilizzi AWS IoT Device Advisor, l'errore di esempio seguente si verifica quando l'utente `mateojackson` tenta di utilizzare la console per visualizzare i dettagli sulla definizione di una suite ma non dispone delle `iotdeviceadvisor:GetSuiteDefinition` autorizzazioni.  

```
User: arn:aws:iam::123456789012:user/mateojackson is not authorized to perform: iotdeviceadvisor:GetSuiteDefinition on resource: MySuiteDefinition
```
In questo caso, la policy per l'utente `mateojackson` deve essere aggiornata per consentire l'accesso alla risorsa *`MySuiteDefinition`* utilizzando l'azione `iotdeviceadvisor:GetSuiteDefinition`.

## Non sono autorizzato a eseguire iam: PassRole
<a name="security_iam_troubleshoot-passrole"></a>

Se ricevi un errore che indica che non sei autorizzato a eseguire l'operazione `iam:PassRole`, le tue policy devono essere aggiornate per poter passare un ruolo a AWS IoT.

Alcuni Servizi AWS consentono di passare un ruolo esistente a quel servizio invece di creare un nuovo ruolo di servizio o un ruolo collegato al servizio. Per eseguire questa operazione, è necessario disporre delle autorizzazioni per trasmettere il ruolo al servizio.

L'errore di esempio seguente si verifica quando un utente IAM denominato `marymajor` cerca di utilizzare la console per eseguire un'operazione in AWS IoT. Tuttavia, l'operazione richiede che il servizio disponga delle autorizzazioni concesse da un ruolo di servizio. Mary non dispone delle autorizzazioni per trasmettere il ruolo al servizio.

```
User: arn:aws:iam::123456789012:user/marymajor is not authorized to perform: iam:PassRole
```

In questo caso, le policy di Mary devono essere aggiornate per poter eseguire l’operazione `iam:PassRole`.

Se hai bisogno di aiuto, contatta il tuo AWS amministratore. L’amministratore è la persona che ti ha fornito le credenziali di accesso.

## Voglio consentire a persone esterne a me di accedere Account AWS alle mie AWS IoT risorse
<a name="security_iam_troubleshoot-cross-account-access"></a>

È possibile creare un ruolo con il quale utenti in altri account o persone esterne all’organizzazione possono accedere alle tue risorse. È possibile specificare chi è attendibile per l’assunzione del ruolo. Per i servizi che supportano politiche basate sulle risorse o liste di controllo degli accessi (ACLs), puoi utilizzare tali politiche per concedere alle persone l'accesso alle tue risorse.

Per maggiori informazioni, consulta gli argomenti seguenti:
+ Per sapere se AWS IoT supporta queste funzionalità, consulta. [Come AWS IoT funziona con IAM](security_iam_service-with-iam.md)
+ Per scoprire come fornire l'accesso alle tue risorse attraverso Account AWS le risorse di tua proprietà, consulta [Fornire l'accesso a un utente IAM in un altro Account AWS di tua proprietà](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_aws-accounts.html) nella *IAM User Guide*.
+ Per scoprire come fornire l'accesso alle tue risorse a terze parti Account AWS, consulta [Fornire l'accesso a soggetti Account AWS di proprietà di terze parti](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_third-party.html) nella *Guida per l'utente IAM*.
+ Per informazioni su come fornire l'accesso tramite la federazione delle identità, consulta [Fornire l'accesso a utenti autenticati esternamente (federazione delle identità)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_federated-users.html) nella *Guida per l'utente IAM*.
+ Per informazioni sulle differenze di utilizzo tra ruoli e policy basate su risorse per l’accesso multi-account, consulta [Accesso a risorse multi-account in IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-cross-account-resource-access.html) nella *Guida per l’utente di IAM*.

# Registrazione e monitoraggio
<a name="security-logging"></a>

Il monitoraggio è un elemento importante per mantenere l'affidabilità, la disponibilità e le prestazioni delle AWS IoT vostre AWS soluzioni. È necessario raccogliere i dati di monitoraggio da tutte le parti della AWS soluzione in modo da poter eseguire più facilmente il debug di un errore multipunto, se si verifica. Per informazioni sulle procedure di registrazione e monitoraggio, consulta [Monitoraggio AWS IoT](monitoring_overview.md)

## Strumenti di monitoraggio
<a name="monitoring_automated_manual"></a>

AWS fornisce strumenti che è possibile utilizzare per il monitoraggio AWS IoT. Alcuni di questi strumenti possono essere configurati per il monitoraggio automatico delle applicazioni. Alcuni degli strumenti richiedono l'intervento manuale. Si consiglia di automatizzare il più possibile i processi di monitoraggio.

### Strumenti di monitoraggio automatici
<a name="monitoring_automated_tools"></a>

Puoi utilizzare i seguenti strumenti di monitoraggio automatizzato per osservare AWS IoT e segnalare quando qualcosa non va:
+ **Amazon CloudWatch Alarms**: monitora una singola metrica in un periodo di tempo specificato ed esegui una o più azioni in base al valore della metrica rispetto a una determinata soglia in diversi periodi di tempo. L'azione è una notifica inviata a un argomento di Amazon Simple Notification Service (Amazon SNS) o a una policy di Amazon EC2 Auto Scaling. CloudWatch gli allarmi non richiamano azioni semplicemente perché si trovano in uno stato particolare. Lo stato deve essere cambiato e restare costante per un numero specificato di periodi. Per ulteriori informazioni, consulta [Monitora AWS IoT allarmi e metriche con Amazon CloudWatch](monitoring-cloudwatch.md).
+ **Amazon CloudWatch Logs**: monitora, archivia e accedi ai tuoi file di registro da AWS CloudTrail o altre fonti. Amazon CloudWatch Logs ti consente anche di visualizzare i passaggi critici eseguiti dai test case di AWS IoT Device Advisor, gli eventi generati e i messaggi MQTT inviati dai tuoi dispositivi o AWS IoT Core durante l'esecuzione del test. Questi registri consentono di eseguire il debug e intraprendere operazioni correttive sui dispositivi. Per ulteriori informazioni, consulta [Monitora AWS IoT utilizzando i log CloudWatch](cloud-watch-logs.md) Per ulteriori informazioni sull'uso di Amazon CloudWatch, consulta [Monitoring Log Files](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/WhatIsCloudWatchLogs.html) nella *Amazon CloudWatch User Guide*.
+ **Amazon CloudWatch Events**: abbina gli eventi e li indirizza a una o più funzioni o stream di destinazione per apportare modifiche, acquisire informazioni sullo stato e intraprendere azioni correttive. Per ulteriori informazioni, consulta [What Is Amazon CloudWatch Events](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/WhatIsCloudWatchEvents.html) nella *Amazon CloudWatch User Guide*.
+ **AWS CloudTrail Monitoraggio dei log**: condividi i file di CloudTrail registro tra account, monitora i file di registro in tempo reale inviandoli a CloudWatch Logs, scrivi applicazioni di elaborazione dei log in Java e verifica che i file di registro non siano cambiati dopo la consegna da parte di. CloudTrail Per ulteriori informazioni, vedere [Registrazione delle chiamate AWS IoT API utilizzando AWS CloudTrail](iot-using-cloudtrail.md) e anche [Lavorare con i file di CloudTrail registro nella Guida](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-working-with-log-files.html) per l'*AWS CloudTrail utente*. 

### Strumenti di monitoraggio manuali
<a name="monitoring_manual_tools"></a>

Un'altra parte importante del monitoraggio AWS IoT consiste nel monitorare manualmente gli elementi che gli CloudWatch allarmi non coprono. Le dashboard della console di AWS servizio AWS IoT CloudWatch, e altre, forniscono una at-a-glance panoramica dello stato dell'ambiente AWS . Ti consigliamo di controllare anche i file di registro. AWS IoT
+ AWS IoT il pannello di controllo mostra:
  + Certificati CA
  + Certificati
  + Policy
  + Regole
  + Oggetti
+ CloudWatch la home page mostra:
  + Lo stato e gli allarmi attuali.
  + I grafici degli allarmi e delle risorse.
  + Lo stato dei servizi.

  Puoi usare CloudWatch per fare quanto segue: 
  + Creare [pannelli di controllo personalizzati](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/CloudWatch_Dashboards.html) per monitorare i servizi di interesse.
  + Creare grafici dei dati dei parametri per la risoluzione di problemi e il rilevamento di tendenze.
  + Cerca e sfoglia tutte le metriche AWS delle tue risorse.
  + Crea e modifica gli allarmi per ricevere le notifiche dei problemi.

# Convalida della conformità per Core AWS IoT
<a name="compliance"></a>

Per sapere se un Servizio AWS programma rientra nell'ambito di specifici programmi di conformità, consulta Servizi AWS la sezione [Scope by Compliance Program Servizi AWS](https://aws.amazon.com/compliance/services-in-scope/) e scegli il programma di conformità che ti interessa. Per informazioni generali, consulta Programmi di [AWS conformità Programmi](https://aws.amazon.com/compliance/programs/) di di .

È possibile scaricare report di audit di terze parti utilizzando AWS Artifact. Per ulteriori informazioni, consulta [Scaricamento dei report in AWS Artifact](https://docs.aws.amazon.com/artifact/latest/ug/downloading-documents.html) .

La vostra responsabilità di conformità durante l'utilizzo Servizi AWS è determinata dalla sensibilità dei dati, dagli obiettivi di conformità dell'azienda e dalle leggi e dai regolamenti applicabili. Per ulteriori informazioni sulla responsabilità di conformità durante l'utilizzo Servizi AWS, consulta la [Documentazione AWS sulla sicurezza](https://docs.aws.amazon.com/security/).

# Resilienza in AWS IoT Core
<a name="disaster-recovery-resiliency"></a>

L'infrastruttura AWS globale è costruita attorno a Regione AWS s e alle zone di disponibilità. Regione AWS Le s forniscono più zone di disponibilità fisicamente separate e isolate, collegate con reti a bassa latenza, ad alto throughput e altamente ridondanti. Con le zone di disponibilità, è possibile progettare e gestire applicazioni e database che eseguono il failover automatico tra zone di disponibilità senza interruzioni. Le zone di disponibilità sono più disponibili, tolleranti ai guasti e scalabili rispetto alle infrastrutture tradizionali a data center singolo o multiplo. 

[Per ulteriori informazioni su Regione AWS s e sulle zone di disponibilità, consulta Global Infrastructure.AWS](https://aws.amazon.com/about-aws/global-infrastructure/)

AWS IoT Core memorizza le informazioni sui dispositivi nel registro dei dispositivi. Memorizza inoltre i certificati CA, i certificati dei dispositivi e i dati Device Shadow. In caso di errori hardware o di rete, questi dati vengono replicati automaticamente attraverso le zone di disponibilità ma non attraverso le regioni.

AWS IoT Core pubblica eventi MQTT quando il registro del dispositivo viene aggiornato. È possibile utilizzare questi messaggi per eseguire il backup dei dati del registro di sistema e salvarli in una ubicazione, ad esempio in una tabella Dynamo DB. L'utente è responsabile del salvataggio dei certificati AWS IoT Core creati per sé o di quelli creati dall'utente. Device Shadow memorizza i dati sullo stato dei dispositivi e può essere inviato nuovamente quando un dispositivo torna online. AWS IoT Device Advisor memorizza le informazioni sulla configurazione della suite di test. Questi dati vengono replicati automaticamente in caso di errori hardware o di rete.

AWS IoT Core le risorse sono specifiche della regione e non vengono replicate a Regioni AWS meno che l'utente non lo faccia specificamente.

Per ulteriori informazioni sulle best practice di Sicurezza, consulta [Le migliori pratiche di sicurezza in AWS IoT Core](security-best-practices.md).

# Utilizzo AWS IoT Core con gli endpoint VPC dell'interfaccia
<a name="IoTCore-VPC"></a>

[Con AWS IoT Core, puoi creare endpoint del [piano di controllo IoT e endpoint](https://docs.aws.amazon.com//iot/latest/developerguide/connect-to-iot.html#iot-service-endpoint-intro) di [dati IoT all'interno del tuo cloud privato virtuale (VPC) utilizzando gli endpoint](https://docs.aws.amazon.com//iot/latest/developerguide/iot-connect-devices.html) VPC di interfaccia.](https://docs.aws.amazon.com//vpc/latest/userguide/vpce-interface.html#create-interface-endpoint) Gli endpoint VPC di interfaccia sono alimentati da AWS PrivateLink, una AWS tecnologia che è possibile utilizzare per accedere ai servizi in esecuzione AWS utilizzando indirizzi IP privati. Per ulteriori informazioni, consulta [Amazon Virtual Private Cloud](https://docs.aws.amazon.com//AmazonVPC/latest/UserGuide/VPC_Introduction.html). 

Per connettere dispositivi sul campo su reti remote, ad esempio una rete aziendale, al tuo Amazon VPC, fai riferimento alle opzioni elencate nella matrice di connettività [Network-to-Amazon VPC](https://docs.aws.amazon.com//whitepapers/latest/aws-vpc-connectivity-options/network-to-amazon-vpc-connectivity-options.html). 

**Topics**
+ [Creazione di endpoint VPC per il piano di controllo AWS IoT Core](#Create-VPC-endpoints-CP)
+ [Creazione di endpoint VPC per il piano dati AWS IoT Core](#Create-VPC-endpoints)
+ [Creazione di endpoint VPC per provider di credenziali AWS IoT Core](#Create-VPC-endpoints-credential-provider)
+ [Creazione di un endpoint di interfaccia Amazon VPC](#Create-VPC-endpoints-core-create-vpc)
+ [Configura una zona ospitata privata](#connect-iot-core-create-phz-lns)
+ [Controllo dell'accesso agli AWS IoT Core endpoint tramite VPC](#Control-VPC-access)
+ [Limitazioni](#VPC-limitations)
+ [Scalabilità degli endpoint VPC con AWS IoT Core](#Scaling-VPC-endpoints)
+ [Utilizzo di domini personalizzati con endpoint VPC](#VPC-custom-domains)
+ [Disponibilità di endpoint VPC per AWS IoT Core](#VPC-availability)
+ [Utilizzo del tunneling AWS IoT Device Management sicuro con endpoint VPC di interfaccia](IoTCore-ST-VPC.md)

## Creazione di endpoint VPC per il piano di controllo AWS IoT Core
<a name="Create-VPC-endpoints-CP"></a>

Puoi creare un endpoint VPC per l'API del piano di AWS IoT Core controllo per connettere i tuoi dispositivi a AWS IoT servizi e altri servizi. AWS Per iniziare a usare gli endpoint VPC, [crea un endpoint VPC di interfaccia e selezionalo come servizio](https://docs.aws.amazon.com//vpc/latest/privatelink/vpce-interface.html#create-interface-endpoint). AWS IoT Core AWS Se utilizzi la CLI, chiama innanzitutto [describe-vpc-endpoint-services](https://docs.aws.amazon.com//cli/latest/reference/ec2/describe-vpc-endpoint-services.html)per assicurarti di scegliere una zona di disponibilità in cui AWS IoT Core è presente nel tuo particolare. Regione AWS Ad esempio, in us-east-1, questo comando ha il seguente aspetto:

```
aws ec2 describe-vpc-endpoint-services --service-name com.amazonaws.us-east-1.iot.api
```

Consulta le istruzioni dettagliate riportate di seguito per [creare un endpoint di interfaccia Amazon VPC](#Create-VPC-endpoints-core-create-vpc) per AWS IoT Core il piano di controllo.

## Creazione di endpoint VPC per il piano dati AWS IoT Core
<a name="Create-VPC-endpoints"></a>

Puoi creare un endpoint VPC per l'API del piano AWS IoT Core dati per connettere i tuoi dispositivi a AWS IoT servizi e altri servizi. AWS Per iniziare a usare gli endpoint VPC, [crea un endpoint VPC di interfaccia e selezionalo come servizio](https://docs.aws.amazon.com//vpc/latest/privatelink/vpce-interface.html#create-interface-endpoint). AWS IoT Core AWS Se utilizzi la CLI, chiama innanzitutto [describe-vpc-endpoint-services](https://docs.aws.amazon.com//cli/latest/reference/ec2/describe-vpc-endpoint-services.html)per assicurarti di scegliere una zona di disponibilità in cui AWS IoT Core è presente nel tuo particolare. Regione AWS Ad esempio, in us-east-1, questo comando ha il seguente aspetto:

```
aws ec2 describe-vpc-endpoint-services --service-name com.amazonaws.us-east-1.iot.data
```

**Nota**  
La funzione VPC per la creazione automatica di un record DNS è disattivata. Per unirsi a questi endpoint, è necessario creare manualmente un registro DNS privato. Per ulteriori informazioni sui registri DNS VPC privati, consulta [DNS privato per gli endpoint di interfaccia](https://docs.aws.amazon.com//vpc/latest/privatelink/vpce-interface.html#vpce-private-dns). Per ulteriori informazioni sulle limitazioni del AWS IoT Core VPC, consulta. [Limitazioni](#VPC-limitations)

Per connettere i client MQTT alle interfacce degli endpoint VPC:
+ È necessario creare manualmente i record DNS in una zona ospitata privata collegata al VPC. Per iniziare, consulta [Creazione di una zona ospitata privata](https://docs.aws.amazon.com//Route53/latest/DeveloperGuide/hosted-zone-private-creating.html). 
+ All'interno della tua zona ospitata privata, crea un record di alias per ogni IP di interfaccia di rete elastica per l'endpoint VPC. Se disponi di più interfacce di rete IPs per più endpoint VPC, crea record DNS ponderati con pesi uguali su tutti i record ponderati. Questi indirizzi IP sono disponibili dalla chiamata [DescribeNetworkInterfaces](https://docs.aws.amazon.com//AWSEC2/latest/APIReference/API_DescribeNetworkInterfaces.html)API se filtrati in base all'ID dell'endpoint VPC nel campo della descrizione.

Consulta le istruzioni dettagliate riportate di seguito per [creare un endpoint di interfaccia Amazon VPC](#Create-VPC-endpoints-core-create-vpc) e [configurare una zona ospitata privata](#connect-iot-core-create-phz-lns) per AWS IoT Core il piano dati.

## Creazione di endpoint VPC per provider di credenziali AWS IoT Core
<a name="Create-VPC-endpoints-credential-provider"></a>

[È possibile creare un endpoint VPC per consentire al [provider di AWS IoT Core credenziali](https://docs.aws.amazon.com//iot/latest/developerguide/authorizing-direct-aws.html) di connettere i dispositivi utilizzando l'autenticazione basata su certificati client e ottenere credenziali temporanee AWS in formato Signature Version 4.AWS](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_aws-signing.html) Per iniziare a usare gli endpoint VPC per il provider di AWS IoT Core credenziali, esegui il comando [create-vpc-endpoint](https://docs.aws.amazon.com//cli/latest/reference/ec2/create-vpc-endpoint.html)CLI per creare [un endpoint VPC di interfaccia](https://docs.aws.amazon.com//vpc/latest/privatelink/vpce-interface.html#create-interface-endpoint) e seleziona il provider di credenziali come servizio. AWS IoT Core AWS Per assicurarti di scegliere una zona di disponibilità in cui AWS IoT Core è presente il tuo particolare Regione AWS, esegui prima il comando. [describe-vpc-endpoint-services](https://docs.aws.amazon.com//cli/latest/reference/ec2/describe-vpc-endpoint-services.html) Ad esempio, in us-east-1, questo comando ha il seguente aspetto:

```
aws ec2 describe-vpc-endpoint-services --service-name com.amazonaws.us-east-1.iot.credentials
```

**Nota**  
La funzione VPC per la creazione automatica di un record DNS è disattivata. Per unirsi a questi endpoint, è necessario creare manualmente un registro DNS privato. Per ulteriori informazioni sui registri DNS VPC privati, consulta [DNS privato per gli endpoint di interfaccia](https://docs.aws.amazon.com//vpc/latest/privatelink/vpce-interface.html#vpce-private-dns). Per ulteriori informazioni sulle limitazioni del AWS IoT Core VPC, consulta. [Limitazioni](#VPC-limitations)

Per connettere i client HTTP alle interfacce degli endpoint VPC:
+ È necessario creare manualmente i record DNS in una zona ospitata privata collegata al VPC. Per iniziare, consulta [Creazione di una zona ospitata privata](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/hosted-zone-private-creating.html). 
+ All'interno della tua zona ospitata privata, crea un record di alias per ogni IP di interfaccia di rete elastica per l'endpoint VPC. Se disponi di più interfacce di rete IPs per più endpoint VPC, crea record DNS ponderati con pesi uguali su tutti i record ponderati. Questi indirizzi IP sono disponibili dalla chiamata [DescribeNetworkInterfaces](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeNetworkInterfaces.html)API se filtrati in base all'ID dell'endpoint VPC nel campo della descrizione.

Consulta le istruzioni dettagliate riportate di seguito per [creare un endpoint di interfaccia Amazon VPC](#Create-VPC-endpoints-core-create-vpc) e [configurare una zona ospitata privata](#connect-iot-core-create-phz-lns) per AWS IoT Core il fornitore di credenziali.

## Creazione di un endpoint di interfaccia Amazon VPC
<a name="Create-VPC-endpoints-core-create-vpc"></a>

È possibile creare un endpoint VPC di interfaccia per connettersi ai AWS servizi forniti da. AWS PrivateLink Utilizzare la procedura seguente per creare un endpoint VPC di interfaccia che si connette al piano AWS IoT Core dati o AWS IoT Core al provider di credenziali. Per ulteriori informazioni, consulta [Accedere a un AWS servizio utilizzando un endpoint VPC di interfaccia](https://docs.aws.amazon.com//vpc/latest/privatelink/create-interface-endpoint.html). 

**Nota**  
I processi per creare un endpoint di interfaccia Amazon VPC per il piano AWS IoT Core dati e il provider di AWS IoT Core credenziali sono simili, ma è necessario apportare modifiche specifiche all'endpoint per far funzionare la connessione.

 **[https://console.aws.amazon.com/vpc/home#/endpoints](https://console.aws.amazon.com/vpc/home#/endpoints)** 

1. **Vai alla console [VPC](https://console.aws.amazon.com/vpc/home#/endpoints) **Endpoints**, sotto **Virtual private cloud nel** menu a sinistra, scegli **Endpoints quindi Crea endpoint**.** 

1. Nella pagina **Crea endpoint**, specifica le seguenti informazioni.
   + Scegli **Servizio AWS s** per **Categoria di servizio**. 
   + Per **Service Name (Nome servizio)**, esegui la ricerca inserendo la parola chiave `iot`. Nell'elenco dei `iot` servizi visualizzati, scegli l'endpoint. 

     Se crei un endpoint VPC per il piano di AWS IoT Core controllo, scegli l'endpoint API del piano AWS IoT Core di controllo adatto al tuo. Regione AWS L'endpoint sarà del formato `com.amazonaws.region.iot.api`. 

     Se crei un endpoint VPC per il piano AWS IoT Core dati, scegli l'endpoint API del piano AWS IoT Core dati per la tua regione. L'endpoint sarà del formato `com.amazonaws.region.iot.data`. 

     Se crei un endpoint VPC per un provider di AWS IoT Core credenziali, scegli l'endpoint del provider di AWS IoT Core credenziali per la tua regione. L'endpoint sarà del formato `com.amazonaws.region.iot.credentials`. 

     Se crei un endpoint VPC per le regioni FIPS (Federal Information Processing Standard), scegli l'endpoint API FIPS adatto alle tue esigenze. Regione AWS L'endpoint sarà del formato `com.amazonaws.region.iot-fips.api`. Questo è solo per il piano di controllo.
**Nota**  
Il nome del servizio per il piano AWS IoT Core dati nella regione della Cina sarà nel formato`cn.com.amazonaws.region.iot.data`. Il nome del servizio per l'aereo di AWS IoT Core controllo nella regione della Cina sarà nel formato`com.amazonaws.region.iot.api`. 
   + Per **VPC** e **sottoreti**, scegli il VPC in cui desideri creare l'endpoint e le zone di disponibilità (AZs) in cui desideri creare la rete di endpoint.
   + Per **Abilita il nome DNS**, assicurati che **Enable for this endpoint non sia selezionato per il piano** dati e il provider di credenziali. AWS IoT Core AWS IoT Core Né il piano AWS IoT Core dati né il provider di AWS IoT Core credenziali supportano ancora i nomi DNS privati.

     Per impostazione AWS IoT Core predefinita, per il piano di controllo, è selezionata l'opzione **Abilita nome DNS**. Ciò garantisce che tutte le richieste agli endpoint pubblici del piano di AWS IoT Core controllo vengano indirizzate invece attraverso gli endpoint VPC. Quando questa opzione è abilitata, non è necessario configurare una zona ospitata privata.
   + In **Security group (Gruppo di sicurezza)**, scegli i gruppi di sicurezza da associare alle interfacce di rete dell'endpoint.
   + Facoltativamente, puoi aggiungere o rimuovere i tag. I tag sono coppie nome-valore utilizzate per l'associazione al tuo endpoint. 

1. Per creare l'endpoint VPC, scegli **Create endpoint (Crea endpoint)**. 

Dopo aver creato l' AWS PrivateLink endpoint, nella scheda **Dettagli** dell'endpoint vedrai un elenco di nomi DNS. Puoi utilizzare uno di questi nomi DNS che hai creato in questa sezione per [configurare la tua](#connect-iot-core-create-phz-lns) zona ospitata privata. Se si utilizza AWS IoT Core il piano di controllo, non è necessario configurare una zona ospitata privata.

## Configura una zona ospitata privata
<a name="connect-iot-core-create-phz-lns"></a>

**Nota**  
Se si utilizza AWS IoT Core il piano di controllo e l'opzione **Abilita nome DNS** è selezionata, non è necessario configurare una zona ospitata privata. Se la disabiliti, devi seguire questa procedura per configurare una zona ospitata privata.

Puoi utilizzare uno di questi nomi DNS creati nella sezione precedente per configurare la tua zona ospitata privata.

 **Per il piano AWS IoT Core dati** 

Il nome DNS deve essere il nome di configurazione del dominio o l'`IoT:Data-ATS`endpoint. Un nome DNS di esempio può essere:. ` xxx-ats.data.iot.region.amazonaws.com` 

 **Per fornitore di AWS IoT Core credenziali** 

Il nome DNS deve essere il tuo `iot:CredentialProvider` endpoint. Un nome DNS di esempio può essere:. ` xxxx.credentials.iot.region.amazonaws.com` 

 **Per il piano AWS IoT Core di controllo** 

Il nome DNS deve essere l'endpoint AWS IoT Core del piano di controllo. Un esempio di nome DNS per il piano di AWS IoT Core controllo è. ` xxxx.api.iot.region.amazonaws.com` 

**Nota**  
I processi per configurare la zona ospitata privata per il piano AWS IoT Core dati e il provider di AWS IoT Core credenziali sono simili, ma è necessario apportare modifiche specifiche all'endpoint per far funzionare la connessione.

### Crea una zona ospitata privata
<a name="connect-iot-core-create-phz-lns-private-hosted-zone"></a>

 **Per creare una zona ospitata privata utilizzando la console Route 53** 

1. Passa alla console [Route 53](https://console.aws.amazon.com/route53/v2/hostedzones#/) **Hosted zone (Zone ospitate)** e scegli **Create hosted zone (Crea una zona ospitata)**. 

1. Nella pagina **Create hosted zone (Crea una zona ospitata)**, specifica le informazioni riportate di seguito.
   + Per **Nome di dominio**, inserisci l'indirizzo dell'endpoint del tuo `iot:Data-ATS` o dell'`iot:CredentialProvider`endpoint. Il seguente comando AWS CLI mostra come ottenere l'endpoint tramite una rete pubblica:`aws iot describe-endpoint --endpoint-type iot:Data-ATS`, o. `aws iot describe-endpoint --endpoint-type iot:CredentialProvider` 
**Nota**  
Se utilizzi domini personalizzati, consulta [Utilizzo di domini personalizzati con endpoint VPC.](https://docs.aws.amazon.com/iot/latest/developerguide/IoTCore-VPC.html#VPC-custom-domains) I domini personalizzati non sono supportati per AWS IoT Core il provider di credenziali.
   + Nell'elenco **Type (Tipo)**, scegli **Private Hosted Zone (Zona ospitata privata)**. 
   + Facoltativamente, puoi aggiungere o rimuovere tag da associare alla tua zona ospitata.

1. Per creare la tua zona privata ospitata, scegli **Create hosted zone (Crea una zona ospitata)**. 

Per ulteriori informazioni consulta [Creating a private hosted zone (Creazione di una zona ospitata privata)](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/hosted-zone-private-creating.html). 

### Creazione di un record
<a name="connect-iot-core-create-phz-lns-create-record"></a>

Dopo aver creato una zona ospitata privata, è possibile creare un registro che indica al DNS come si desidera che il traffico venga instradato a quel dominio. 

 **Per creare un record** 

1. Nell'elenco delle zone ospitate visualizzate, scegli la zona ospitata privata creata in precedenza e scegli **Create record (Crea un record)**. 

1. Utilizza il metodo della procedura guidata per creare il record. Se la console presenta il metodo **Quick create (Creazione rapida)**, scegli **Switch to wizard (Passa alla procedura guidata)**. 

1. Scegli **Simple Routing (Instradamento semplice)** per **Routing policy (Policy di instradamento)** e poi **Next (Successivo)**. 

1. Nella pagina **Configure records (Configura record)**, scegli **Define simple record (Definisci record semplice)**. 

1. Nella pagina **Define simple record (Definisci record semplice)**:
   + Per **Nome del record**, inserisci `iot:Data-ATS` endpoint o `iot:CredentialProvider` endpoint. Deve essere lo stesso nome della zona ospitata privata.
   + Per **Tipo di record**, se desideri solo il IPv4 supporto, mantieni il valore uguale. `A - Routes traffic to an IPv4 address and some AWS resources` Se desideri solo IPv6 supporto, mantieni il valore uguale`AAAA - Routes traffic to an IPv6 address and some AWS resources`. Se desideri il supporto dual-stack (entrambi IPv4 e IPv6), crea due record (e `AAAA` nella zona ospitata) con lo stesso **nome del record `A`** e lo stesso **valore/indirizzamento** del traffico verso. 
   + In **Value/Route traffic to (Valore/Instradamento del traffico a)**, seleziona **Alias to VPC endpoint (Alias all’endpoint VPC)**. Scegli la tua **Regione** quindi scegli l'endpoint creato in precedenza, come descritto in [Creazione di un endpoint di interfaccia Amazon VPC](#Create-VPC-endpoints-core-create-vpc) dall'elenco degli endpoint visualizzati.

1. Scegli **Define simple record (Definizione del record semplice)** per creare il record.

## Controllo dell'accesso agli AWS IoT Core endpoint tramite VPC
<a name="Control-VPC-access"></a>

[Puoi limitare l'accesso AWS IoT Core ai dispositivi in modo che sia consentito solo tramite l'endpoint VPC utilizzando le chiavi contestuali delle condizioni VPC.](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_condition-keys.html) AWS IoT Core supporta le seguenti chiavi di contesto relative al VPC:
+  [SourceVpc](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcevpc) 
+  [SourceVpce](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcevpce) 
+  [VPCSourceIp](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-vpcsourceip) 

**Nota**  
AWS IoT Core non supporta [le policy degli endpoint per gli endpoint VPC](https://docs.aws.amazon.com//vpc/latest/privatelink/vpc-endpoints-access.html#vpc-endpoint-policies). 

Ad esempio, la seguente politica concede l'autorizzazione a connettersi AWS IoT Core utilizzando un ID client che corrisponde al nome dell'oggetto e a pubblicare su qualsiasi argomento preceduto dal nome dell'oggetto, a condizione che il dispositivo si connetta a un endpoint VPC con un ID endpoint VPC particolare. Questa policy negherebbe i tentativi di connessione all'endpoint dati IoT pubblico.

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Connect"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:client/${iot:Connection.Thing.ThingName}"
            ],
            "Condition": {
                "StringEquals": {
                    "aws:SourceVpce": "vpce-1a2b3c4d"
            }
        }
            
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Publish"
            ],
            "Resource": [
                "arn:aws:iot:us-east-1:123456789012:topic/${iot:Connection.Thing.ThingName}/*"
            ]
        }
    ]
}
```

## Limitazioni
<a name="VPC-limitations"></a>

[Gli endpoint VPC sono attualmente supportati per gli endpoint del [piano di AWS IoT Core controllo, gli endpoint di AWS IoT Core dati e gli endpoint](https://docs.aws.amazon.com//iot/latest/developerguide/connect-to-iot.html#iot-service-endpoint-intro)[dei fornitori di credenziali](https://docs.aws.amazon.com//iot/latest/developerguide/iot-connect-devices.html#iot-connect-device-endpoints).AWS IoT Core](https://docs.aws.amazon.com//iot/latest/developerguide/authorizing-direct-aws.htm) Gli endpoint VPC sono supportati solo per gli endpoint [FIPS (Federal Information Processing Standard) quando si utilizza il piano di controllo](https://docs.aws.amazon.com//iot/latest/developerguide/iot-connect-fips.html). AWS IoT Core 

### Limitazioni degli endpoint VPC del piano di controllo IoT
<a name="VPC-limitations-iot-control"></a>

Questa sezione copre i limiti degli endpoint VPC del piano di controllo IoT.
+ Gli endpoint VPC serviranno solo certificati ATS.
+ I domini personalizzati non sono supportati per gli endpoint del piano di controllo.
+ Per informazioni sulle politiche di sicurezza FIPS, vedere Politiche di sicurezza [FIPS](https://docs.aws.amazon.com//elasticloadbalancing/latest/application/describe-ssl-policies.html#fips-security-policies). 

### Limitazioni degli endpoint VPC per dati IoT
<a name="VPC-limitations-iot-data"></a>

Questa sezione descrive i limiti degli endpoint VPC di dati IoT.
+ I periodi keep-alive di MQTT i sono limitati a 230 secondi. I periodi di mantenimento in vita più lunghi verranno automaticamente ridotti a 230 secondi.
+ Ogni endpoint VPC supporta un totale di 100.000 dispositivi collegati. Se hai bisogno di più connessioni vedi[Scalabilità degli endpoint VPC con AWS IoT Core](#Scaling-VPC-endpoints).
+ Gli endpoint VPC serviranno solo [Certificati ATS](https://docs.aws.amazon.com//iot/latest/developerguide/server-authentication.html), ad eccezione dei domini personalizzati.
+  Le [policy degli endpoint VPC non sono supportate](https://docs.aws.amazon.com//vpc/latest/privatelink/vpc-endpoints-access.html).
+ Per gli endpoint VPC creati per il piano AWS IoT Core dati, AWS IoT Core non supporta l'utilizzo di record DNS pubblici zonali o regionali.

### Limitazioni degli endpoint dei provider di credenziali
<a name="VPC-limitations-credential-provider"></a>

Questa sezione descrive i limiti degli endpoint VPC del provider di credenziali.
+ Gli endpoint VPC serviranno solo certificati [ATS](https://docs.aws.amazon.com//iot/latest/developerguide/server-authentication.html).
+  Le [policy degli endpoint VPC non sono supportate](https://docs.aws.amazon.com//vpc/latest/privatelink/vpc-endpoints-access.html).
+ I domini personalizzati non sono supportati per gli endpoint dei provider di credenziali.
+ Per gli endpoint VPC creati per il provider di AWS IoT Core credenziali, AWS IoT Core non supporta l'utilizzo di record DNS pubblici zonali o regionali.

## Scalabilità degli endpoint VPC con AWS IoT Core
<a name="Scaling-VPC-endpoints"></a>

AWS IoT Core Gli endpoint VPC di interfaccia sono limitati a 100.000 dispositivi connessi su un singolo endpoint di interfaccia. Se il tuo caso d'uso richiede più connessioni simultanee al broker, ti consigliamo di utilizzare più endpoint VPC e di instradare manualmente i tuoi dispositivi attraverso gli endpoint dell'interfaccia. Quando crei registri DNS privati per instradare il traffico verso gli endpoint VPC, assicurati di creare tutti i registri ponderati quanti sono gli endpoint VPC per distribuire il traffico su più endpoint. 

## Utilizzo di domini personalizzati con endpoint VPC
<a name="VPC-custom-domains"></a>

Se desideri utilizzare domini personalizzati con endpoint VPC, devi creare i record dei nomi di dominio personalizzati in una zona ospitata privata e creare record di routing in Route53. [Per ulteriori informazioni, consulta Creazione di una zona ospitata privata.](https://docs.aws.amazon.com//Route53/latest/DeveloperGuide/hosted-zone-private-creating.html) 

**Nota**  
I domini personalizzati sono supportati solo per gli endpoint di AWS IoT Core dati.

## Disponibilità di endpoint VPC per AWS IoT Core
<a name="VPC-availability"></a>

AWS IoT Core [Gli endpoint VPC dell'interfaccia sono disponibili in tutte AWS IoT Core le regioni supportate.](https://aws.amazon.com//about-aws/global-infrastructure/regional-product-services/) AWS IoT Core Gli endpoint VPC dell'interfaccia per il provider di AWS IoT Core credenziali non sono supportati nella regione Cina e. AWS GovCloud (US) Regions

# Utilizzo del tunneling AWS IoT Device Management sicuro con endpoint VPC di interfaccia
<a name="IoTCore-ST-VPC"></a>

AWS IoT Device Management il tunneling sicuro supporta gli endpoint VPC di interfaccia. Puoi utilizzare gli endpoint VPC per mantenere il traffico tra il tuo VPC e AWS IoT Secure Tunneling all'interno della AWS rete, senza richiedere un gateway Internet, un dispositivo NAT, una connessione VPN o una connessione. AWS Direct Connect 

Gli endpoint VPC di interfaccia sono alimentati da [AWS PrivateLink](https://docs.aws.amazon.com//vpc/latest/privatelink/what-is-privatelink.html), una tecnologia che consente di accedere in modo privato ai servizi utilizzando indirizzi IP privati. Per ulteriori informazioni, consulta [Accedere a un AWS servizio utilizzando un endpoint VPC di interfaccia nella Guida](https://docs.aws.amazon.com//vpc/latest/privatelink/create-interface-endpoint.html). AWS PrivateLink 

**Topics**
+ [Prerequisiti](#Create-ST-VPC-endpoints-prereq)
+ [Ricezione di notifiche del tunnel tramite endpoint VPC](#ST-VPC-Receive-notifications)
+ [Creazione di endpoint VPC per un tunneling sicuro](#Create-ST-VPC-endpoints-Create)
+ [Configurazione delle policy degli endpoint VPC sul server proxy](#Create-ST-VPC-endpoints-Configure)
+ [Fasi successive](#Create-ST-VPC-endpoints-Next)

## Prerequisiti
<a name="Create-ST-VPC-endpoints-prereq"></a>

Prima di creare endpoint VPC per AWS IoT Secure Tunneling, verifica di disporre di quanto segue:
+ Un AWS account con le autorizzazioni necessarie per creare endpoint VPC.
+ Un VPC nel tuo AWS account.
+ Comprensione dei concetti di tunneling AWS IoT Device Management sicuro.
+ Familiarità con le policy AWS Identity and Access Management degli endpoint VPC e (IAM)

## Ricezione di notifiche del tunnel tramite endpoint VPC
<a name="ST-VPC-Receive-notifications"></a>

Per ricevere le notifiche del tunnel tramite un endpoint VPC, i dispositivi possono connettersi al piano AWS IoT Core dati tramite un endpoint VPC e sottoscrivere l'argomento MQTT riservato al tunneling sicuro.

Per istruzioni su come creare e configurare un endpoint VPC nel piano AWS IoT Core dati, consulta Using with [AWS IoT Core interface VPC endpoint](https://docs.aws.amazon.com/iot/latest/developerguide/IoTCore-VPC.html) nella Developer Guide. AWS IoT 

## Creazione di endpoint VPC per un tunneling sicuro
<a name="Create-ST-VPC-endpoints-Create"></a>

È possibile creare endpoint VPC sia per il piano di controllo del tunneling sicuro che per il server proxy.

**Per creare un endpoint VPC per un tunneling sicuro**

1. Segui i passaggi descritti nella sezione [Creazione di un endpoint di interfaccia](https://docs.aws.amazon.com//vpc/latest/privatelink/create-interface-endpoint.html) nella Amazon VPC Developer Guide

1. Per **Service name**, scegli una delle seguenti opzioni in base al tipo di endpoint:

**Piano di controllo**
   + Standard: `com.amazonaws.<region>.iot.tunneling.api` 
   + FIPS (disponibile nelle regioni FIPS): `com.amazonaws.<region>.iot-fips.tunneling.api` 

**Server proxy**
   + Standard: `com.amazonaws.<region>.iot.tunneling.data` 
   + FIPS (disponibile nelle regioni FIPS): `com.amazonaws.<region>.iot-fips.tunneling.data` 

   Sostituisci *<region>* con il tuo. Regione AWS Ad esempio, `us-east-1`. 

1. Completa i passaggi rimanenti del processo di creazione degli endpoint VPC in base ai requisiti di rete.

## Configurazione delle policy degli endpoint VPC sul server proxy
<a name="Create-ST-VPC-endpoints-Configure"></a>

Oltre all'autorizzazione basata su token di accesso client utilizzata per autorizzare le connessioni ai tunnel, puoi utilizzare le policy degli endpoint VPC per limitare ulteriormente il modo in cui i dispositivi possono utilizzare un endpoint VPC per connettersi al Secure Tunneling Proxy Server. Le policy degli endpoint VPC seguono una sintassi simile a quella di IAM e sono configurate sull'endpoint VPC stesso.

Tieni presente che l'unica azione IAM supportata per le policy degli endpoint VPC del server proxy è. `iot:ConnectToTunnel` 

Di seguito sono riportati alcuni esempi di diverse policy per gli endpoint VPC.

### Esempi di policy relative agli endpoint VPC del server proxy
<a name="w2aac17c35c31c15b9"></a>

Gli esempi seguenti mostrano le configurazioni delle policy degli endpoint VPC di Proxy Server per casi d'uso comuni.

**Example - Politica predefinita**  
Questa policy consente ai dispositivi all'interno del tuo VPC di connettersi a qualsiasi tunnel nello stesso punto in Regione AWS cui viene creato l'endpoint, su qualsiasi account. AWS   

```
{
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "*",
            "Resource": "*"
        }
    ]
}
```

**Example - Limita l'accesso a account specifici AWS**  
Questa policy consente all'endpoint VPC di connettersi solo ai tunnel di account specifici. AWS   

```
{
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "iot:ConnectToTunnel",
            "Resource": [
                "arn:aws:iot:us-east-1:111122223333:tunnel/*",
                "arn:aws:iot:us-east-1:444455556666:tunnel/*"
            ]
        }
    ]
}
```

**Example - Limita le connessioni in base all'endpoint del tunnel**  
Puoi limitare l'accesso agli endpoint VPC per consentire solo ai dispositivi di connettersi all'estremità di origine o destinazione di un tunnel.  
Solo origine:  

```
{
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "iot:ConnectToTunnel",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "iot:ClientMode": "source"
                }
            }
        }
    ]
}
```

Solo destinazione:

```
{
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "iot:ConnectToTunnel",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "iot:ClientMode": "destination"
                }
            }
        }
    ]
}
```

**Example - Limita l'accesso in base ai tag delle risorse**  
Questa policy consente all'endpoint VPC di connettersi solo ai tunnel etichettati con una coppia chiave-valore specifica.  

```
{
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "iot:ConnectToTunnel",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "aws:ResourceTag/Environment": "Production"
                }
            }
        }
    ]
}
```

**Example - Condizioni politiche combinate**  
Questa politica dimostra la combinazione di più elementi politici. Consente le connessioni a qualsiasi tunnel in un AWS account specifico, ma solo se il tunnel è etichettato con `AllowConnectionsThroughPrivateLink` set to `true` e il client non si connette all'estremità di destinazione del tunnel.  

```
{
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "iot:ConnectToTunnel",
            "Resource": [
                "arn:aws:iot:us-east-1:111122223333:tunnel/*"
            ],
            "Condition": {
                "StringEquals": {
                    "aws:ResourceTag/AllowConnectionsThroughPrivateLink": "true"
                }
            }
        },
        {
            "Effect": "Deny",
            "Principal": "*",
            "Action": "iot:ConnectToTunnel",
            "Resource": [
                "arn:aws:iot:us-east-1:111122223333:tunnel/*"
            ],
            "Condition": {
                "StringEquals": {
                    "iot:ClientMode": "destination"
                }
            }
        }
    ]
}
```

## Fasi successive
<a name="Create-ST-VPC-endpoints-Next"></a>

Dopo aver creato e configurato gli endpoint VPC per AWS IoT Secure Tunneling, considera quanto segue:
+ Verifica la configurazione dell'endpoint VPC collegando i dispositivi tramite l'endpoint.
+ Monitora l'utilizzo degli endpoint VPC tramite metriche. Amazon CloudWatch 
+ Rivedi e aggiorna le policy degli endpoint VPC in base alle tue esigenze di sicurezza.

Per ulteriori informazioni sul tunneling AWS IoT Device Management sicuro, consulta. [AWS IoT Secure Tunneling](https://docs.aws.amazon.com//iot/latest/developerguide/secure-tunneling.html) 

# Sicurezza dell'infrastruttura in AWS IoT
<a name="infrastructure-security"></a>

Essendo una raccolta di servizi gestiti, AWS IoT è protetto dalle procedure di sicurezza di rete AWS globali descritte nel white paper [Amazon Web Services: Overview of Security Processes](https://d0.awsstatic.com/whitepapers/Security/AWS_Security_Whitepaper.pdf).

Utilizzi chiamate API AWS pubblicate per accedere AWS IoT tramite la rete. I client devono supportare Transport Layer Security (TLS) 1.2 o versioni successive. I client devono, inoltre, supportare le suite di crittografia con PFS (Perfect Forward Secrecy), ad esempio Ephemeral Diffie-Hellman (DHE) o Elliptic Curve Ephemeral Diffie-Hellman (ECDHE). La maggior parte dei sistemi moderni come Java 7 e versioni successive, supporta tali modalità. Per ulteriori informazioni, consulta [Sicurezza dei trasporti in AWS IoT Core](transport-security.md).

Le richieste devono essere firmate utilizzando un ID chiave di accesso e una chiave di accesso segreta che è associata a un IAM principale. In alternativa è possibile utilizzare [AWS Security Token Service](https://docs.aws.amazon.com/STS/latest/APIReference/Welcome.html) (AWS STS) per generare credenziali di sicurezza temporanee per sottoscrivere le richieste.

# Monitoraggio della sicurezza delle flotte o dei dispositivi di produzione con Core AWS IoT
<a name="security-monitoring"></a>

l parchi istanze IoT possono essere costituiti da un numero elevato di dispositivi con funzionalità diverse, usati per lunghi periodi di tempo e distribuiti in varie aree geografiche. Queste caratteristiche rendono la configurazione di un parco istanze complessa e soggetta a errori. E poiché i dispositivi presentano spesso vincoli di potenza di elaborazione, memoria e capacità di storage, ciò limita l'uso della crittografia e di altre forme di sicurezza nei dispositivi stessi. I dispositivi, inoltre, usano spesso software con vulnerabilità note. La combinazione di questi fattori rende i parchi istanze IoT un facile bersaglio per gli hacker e rende difficile la protezione continuativa di un parco istanze di dispositivi.

AWS IoT Device Defender affronta queste sfide fornendo strumenti per identificare i problemi di sicurezza e le deviazioni dalle migliori pratiche. È possibile utilizzare AWS IoT Device Defender per analizzare, controllare e monitorare i dispositivi connessi per rilevare comportamenti anomali e mitigare i rischi per la sicurezza. AWS IoT Device Defender può controllare le flotte di dispositivi per garantire che aderiscano alle migliori pratiche di sicurezza e rilevare comportamenti anomali sui dispositivi. In questo modo è possibile applicare politiche di sicurezza coerenti in tutto il parco AWS IoT dispositivi e rispondere rapidamente quando i dispositivi vengono compromessi. Per ulteriori informazioni, consulta [AWS IoT Device Defender](https://docs.aws.amazon.com/iot-device-defender/latest/devguide/what-is-device-defender.html).

AWS IoT Device Advisor aggiorna e corregge il parco macchine in base alle esigenze. AWS IoT Device Advisor aggiorna automaticamente i casi di test. I test case che selezioni sono sempre con versione più recente. Per ulteriori informazioni, consulta [Device Advisor](device-advisor.md).

# Le migliori pratiche di sicurezza in AWS IoT Core
<a name="security-best-practices"></a>

Questa sezione contiene informazioni sulle migliori pratiche di sicurezza per AWS IoT Core. Per informazioni sulle regole di sicurezza per le soluzioni IoT industriale, consultare [Ten security golden rules for Industrial IoT solutions](https://aws.amazon.com/blogs/iot/ten-security-golden-rules-for-industrial-iot-solutions/).

## Protezione delle connessioni MQTT in AWS IoT
<a name="secure-mqtt"></a>

[AWS IoT Core](https://aws.amazon.com/iot-core/)è un servizio cloud gestito che consente ai dispositivi connessi di interagire con le applicazioni cloud e altri dispositivi in modo semplice e sicuro. AWS IoT Core supporta HTTP e [MQTT [WebSocket](https://en.wikipedia.org/wiki/WebSocket)](https://en.wikipedia.org/wiki/MQTT), un protocollo di comunicazione leggero progettato specificamente per tollerare connessioni intermittenti. Se ci si connette AWS IoT tramite MQTT, ciascuna connessione deve essere associata a un identificatore noto come ID client. Il client MQTT identifica in IDs modo univoco le connessioni MQTT. Se viene stabilita una nuova connessione utilizzando un ID client già richiesto per un'altra connessione, il broker di AWS IoT messaggi interrompe la vecchia connessione per consentire la nuova connessione. Il client IDs deve essere unico all'interno di ciascuno Account AWS di essi Regione AWS. Ciò significa che non è necessario imporre l'unicità globale del cliente al di IDs fuori della vostra regione Account AWS o in tutte le regioni all'interno della vostra. Account AWS

L'impatto e la gravità della chiusura delle connessioni MQTT nel parco istanze di dispositivi dipende da molti fattori. Ciò include:
+ Il tuo caso d'uso (ad esempio, i dati a cui vengono inviati i dispositivi AWS IoT, la quantità di dati e la frequenza di invio dei dati).
+ La configurazione client MQTT, ad esempio le impostazioni di riconnessione automatica, le tempistiche di back-off associate e l'utilizzo di [sessioni persistenti MQTT](mqtt.md#mqtt-persistent-sessions)).
+ Vincoli delle risorse dispositivo.
+ La causa radice delle disconnessioni, la sua aggressività e la sua persistenza.

Per evitare conflitti tra gli ID client e i loro potenziali impatti negativi, assicurati che ogni dispositivo o applicazione mobile disponga di una politica AWS IoT o IAM che limiti il client che IDs può essere utilizzato per le connessioni MQTT al broker di AWS IoT messaggi. Ad esempio, puoi utilizzare una policy IAM per impedire a un dispositivo di chiudere involontariamente la connessione di un altro dispositivo utilizzando un ID client già in uso. Per ulteriori informazioni, consulta [Autorizzazione](iot-authorization.md).

Tutti i dispositivi del parco dispositivi devono disporre di credenziali con privilegi che autorizzano solo le azioni previste, che includono (ma non solo) azioni AWS IoT MQTT come la pubblicazione di messaggi o l'iscrizione ad argomenti con ambito e contesto specifici. Le policy di autorizzazione specifiche possono variare a seconda dei casi d'uso. Identifica le policy di autorizzazione che meglio soddisfano i requisiti aziendali e di sicurezza.

Per creare e gestire più facilmente le policy di autorizzazione, puoi utilizzare [AWS IoT Core variabili politiche](iot-policy-variables.md) e le [variabili delle policy IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_variables.html). Le variabili di policy possono essere inserite in una policy e, nel momento in cui questa viene valutata, vengono sostituite con i valori provenienti dalla richiesta del dispositivo. Con le variabili di policy è possibile creare una singola policy per concedere le autorizzazioni a più dispositivi. È possibile identificare le variabili di policy pertinenti per il proprio caso d'uso in base alla configurazione AWS IoT dell'account, al meccanismo di autenticazione e al protocollo di rete utilizzato per la connessione al broker di messaggi. AWS IoT Per scrivere policy di autorizzazione ottimali, considera gli aspetti specifici del tuo caso d'uso e il tuo [modello di gestione delle minacce](https://en.wikipedia.org/wiki/Threat_model).

Ad esempio, se i dispositivi sono stati registrati nel AWS IoT registro, è possibile utilizzare [le variabili Thing Policy nelle AWS IoT policy](thing-policy-variables.md) per concedere o negare le autorizzazioni in base alle proprietà degli oggetti come i nomi degli oggetti, i tipi di oggetto e i valori degli attributi degli oggetti. Il nome dell'oggetto viene ottenuto dall'ID client nel messaggio di connessione MQTT inviato quando un oggetto si connette a. AWS IoT Le variabili Thing Policy vengono sostituite quando un oggetto si connette AWS IoT tramite MQTT utilizzando l'autenticazione reciproca TLS o MQTT tramite il WebSocket protocollo utilizzando identità Amazon [Cognito](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-identities.html) autenticate. Puoi utilizzare l'[AttachThingPrincipal](https://docs.aws.amazon.com/iot/latest/apireference/API_AttachThingPrincipal.html)API per allegare certificati e identità Amazon Cognito autenticate a un oggetto. `iot:Connection.Thing.ThingName`è una variabile di policy utile per applicare le restrizioni relative agli ID client. La seguente AWS IoT politica di esempio richiede che il nome di un oggetto registrato venga utilizzato come ID client per le connessioni MQTT al broker di AWS IoT messaggi:

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Effect": "Allow",
			"Action": "iot:Connect",
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:client/${iot:Connection.Thing.ThingName}"
			]
		}
	]
}
```

Se si desidera identificare i conflitti di ID client in corso, è possibile abilitare e utilizzare [CloudWatch Logs for. AWS IoT](cloud-watch-logs.md) Per ogni connessione MQTT che il broker di AWS IoT messaggi disconnette a causa di conflitti tra ID client, viene generato un record di registro simile al seguente:

```
{
    "timestamp": "2019-04-28 22:05:30.105",
    "logLevel": "ERROR",
    "traceId": "02a04a93-0b3a-b608-a27c-1ae8ebdb032a",
    "accountId": "123456789012",
    "status": "Failure",
    "eventType": "Disconnect",
    "protocol": "MQTT",
    "clientId": "clientId01",
    "principalId": "1670fcf6de55adc1930169142405c4a2493d9eb5487127cd0091ca0193a3d3f6",
    "sourceIp": "203.0.113.1",
    "sourcePort": 21335,
    "reason": "DUPLICATE_CLIENT_ID",
    "details": "A new connection was established with the same client ID"
}
```

È possibile utilizzare un [filtro CloudWatch Logs](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/MonitoringLogData.html), ad esempio per `{$.reason= "DUPLICATE_CLIENT_ID" }` cercare istanze di conflitti tra ID client o per impostare [filtri CloudWatch metrici](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/MonitoringPolicyExamples.html) e CloudWatch allarmi corrispondenti per il monitoraggio e la segnalazione continui.

Puoi utilizzare [AWS IoT Device Defender](https://aws.amazon.com/iot-device-defender/) per identificare politiche IAM e eccessivamente permissive. AWS IoT AWS IoT Device Defender fornisce anche un controllo di controllo che ti avvisa se più dispositivi del tuo parco dispositivi si connettono al broker di AWS IoT messaggi utilizzando lo stesso ID cliente.

Puoi utilizzare AWS IoT Device Advisor per verificare che i tuoi dispositivi possano connettersi in modo affidabile AWS IoT Core e seguire le migliori pratiche di sicurezza.

### Consulta anche
<a name="mqtt-security-see-also"></a>
+ [AWS IoT Core](https://aws.amazon.com/iot-core/)
+ [Caratteristiche di sicurezza di AWS IoT](authentication.md)
+ [AWS IoT Core variabili politiche](iot-policy-variables.md)
+ [Variabili delle policy IAM](https://docs.aws.amazon.com/service-authorization/latest/reference/reference_policies_variables.html)
+ [Amazon Cognito Identity](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-identities.html)
+ [AWS IoT Device Defender](https://aws.amazon.com/iot-device-defender/)
+ [CloudWatch Registri per AWS IoT](cloud-watch-logs.md)

## Tieni sincronizzato l'orologio del dispositivo
<a name="device-clock"></a>

È importante avere un orario preciso sul dispositivo. I certificati X.509 hanno data e ora di scadenza. L'orologio sul dispositivo viene utilizzato per verificare che un certificato server sia ancora valido. Se costruisci dispositivi IoT commerciali, ricorda che i tuoi prodotti potrebbero essere conservati per periodi prolungati prima di essere venduti. Gli orologi in tempo reale possono fermarsi nel corso del tempo e le batterie possono scaricarsi, quindi impostare il tempo in fabbrica non è sufficiente.

Per la maggior parte dei sistemi, ciò significa che il software del dispositivo deve includere un client NTP (Network Time Protocol). Il dispositivo deve attendere fino a quando si sincronizza con un server NTP prima di tentare di connettersi a AWS IoT Core. Se ciò non è possibile, il sistema dovrebbe fornire agli utenti la possibilità di impostare l'ora del dispositivo in modo che le connessioni successive abbiano esito positivo.

Dopo che il dispositivo è sincronizzato con un server NTP, può aprire una connessione con AWS IoT Core. L'inclinazione del clock consentita dipende dalla finalità della connessione. 

## Convalidare il certificato server
<a name="validate-server-cert"></a>

La prima cosa con cui un dispositivo interagisce AWS IoT è aprire una connessione sicura. Quando colleghi il dispositivo a AWS IoT, assicurati di parlare con un altro server AWS IoT e di non AWS IoT impersonare un altro server. Ciascun AWS IoT server è dotato di un certificato rilasciato per il dominio. `iot.amazonaws.com` Questo certificato è stato rilasciato AWS IoT da un'autorità di certificazione affidabile che ha verificato la nostra identità e la proprietà del dominio.

Una delle prime cose che AWS IoT Core fa quando un dispositivo si connette è inviare al dispositivo un certificato server. I dispositivi possono verificare che aspettino di connettersi a `iot.amazonaws.com` e che il server alla fine di tale connessione disponga di un certificato di un'autorità attendibile per tale dominio.

I certificati TLS sono in formato X.509 e includono una serie di informazioni, ad esempio il nome, la posizione, il nome di dominio e un periodo di validità dell'organizzazione. Il periodo di validità è specificato come una coppia di valori di tempo chiamati `notBefore` e `notAfter`. Servizi come ad esempio AWS IoT Core utilizzano periodi di validità limitati (ad esempio, un anno) per i certificati server e iniziano a fornirne di nuovi prima della scadenza di quelli vecchi.

## Utilizzare una singola identità per dispositivo
<a name="cert-per-device"></a>

Utilizzare una singola identità per client. I dispositivi utilizzano generalmente certificati client X.509. Le applicazioni per il Web e i dispositivi mobili utilizzano Amazon Cognito Identity. In questo modo è possibile applicare le autorizzazioni a grana fine ai dispositivi.

Ad esempio, disponi di un'applicazione costituita da un dispositivo mobile che riceve aggiornamenti di stato da due diversi oggetti smart home, una lampadina e un termostato. La lampadina invia lo stato del suo livello della batteria e un termostato invia messaggi che segnalano la temperatura.

AWS IoT autentica i dispositivi singolarmente e tratta ogni connessione singolarmente. È possibile applicare controlli di accesso a grana fine utilizzando le policy di autorizzazione. È possibile definire una policy per il termostato che consenta la pubblicazione in uno spazio argomento. È possibile definire una policy separata per la lampadina che consenta la pubblicazione su uno spazio argomento diverso. Infine è possibile definire una policy per l'app mobile che consente solo di connettersi e sottoscrivere gli argomenti relativi al termostato e alla lampadina per ricevere messaggi da questi dispositivi.

Applicare il principio del minimo privilegio e definire l'ambito delle autorizzazioni per dispositivo il più possibile. Tutti i dispositivi o gli utenti devono disporre di una AWS IoT politica AWS IoT che consenta loro di connettersi solo con un ID client noto e di pubblicare e sottoscrivere una serie di argomenti identificati e fissi.

## Usa un secondo Regione AWS come backup
<a name="use-second-region"></a>

Prendi in considerazione l'idea di archiviare una copia dei tuoi dati in un secondo Regione AWS come backup. Tieni presente che la AWS soluzione denominata [Disaster Recovery for](https://aws.amazon.com/solutions/implementations/disaster-recovery-for-aws-iot/) non AWS IoTè più disponibile. Sebbene la [GitHublibreria](https://github.com/awslabs/disaster-recovery-for-aws-iot) associata rimanga accessibile, l' AWS ha resa obsoleta nel luglio 2023 e non fornisce più manutenzione o supporto. [Per implementare le tue soluzioni o per esplorare opzioni di supporto aggiuntive, visita Contatti. AWS](https://aws.amazon.com/contact-us/) Se al tuo account è associato un AWS Technical Account Manager, contattalo per ricevere assistenza.

## Utilizzare il provisioning Just In Time
<a name="use-jitp"></a>

La creazione e il provisioning manuali di ogni dispositivo possono richiedere molto tempo. AWS IoT fornisce un modo per definire un modello a cui effettuare il provisioning dei dispositivi quando si connettono per AWS IoT la prima volta. Per ulteriori informazioni, consulta [Just-in-time approvvigionamento](jit-provisioning.md).

## Autorizzazioni per eseguire i test di AWS IoT Device Advisor
<a name="device-advisor-perms"></a>

Il seguente modello di policy mostra le autorizzazioni minime e l'entità IAM necessarie per eseguire i casi di test di AWS IoT Device Advisor. [Dovrai sostituirlo *your-device-role-arn* con il ruolo del dispositivo Amazon Resource Name (ARN) che hai creato in base ai prerequisiti.](https://docs.aws.amazon.com/iot/latest/developerguide/device-advisor-workflow.html#device-advisor-workflow-prereqs)

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": "arn:aws:iot:us-east-1:123456789012:thinggroup/your-thing-group",
            "Condition": {
                "StringEquals": {
                    "iam:PassedToService": "iotdeviceadvisor.amazonaws.com"
            }
        }
        },
        {
            "Sid": "VisualEditor1",
            "Effect": "Allow",
            "Action": [
                "execute-api:Invoke*",
                "iam:ListRoles",
                "iot:Connect",
                "iot:CreateJob",
                "iot:DeleteJob",
                "iot:DescribeCertificate",
                "iot:DescribeEndpoint",
                "iotjobsdata:DescribeJobExecution",
                "iot:DescribeJob",
                "iot:DescribeThing",
                "iotjobsdata:GetPendingJobExecutions",
                "iot:GetPolicy",
                "iot:ListAttachedPolicies",
                "iot:ListCertificates",
                "iot:ListPrincipalPolicies",
                "iot:ListThingPrincipals",
                "iot:ListThings",
                "iot:Publish",
                "iotjobsdata:StartNextPendingJobExecution",
                "iotjobsdata:UpdateJobExecution",
                "iot:UpdateThingShadow",
                "logs:CreateLogGroup",
                "logs:CreateLogStream",
                "logs:DescribeLogGroups",
                "logs:DescribeLogStreams",
                "logs:PutLogEvents",
                "logs:PutRetentionPolicy"
            ],
            "Resource": "*"
        },
        {
            "Sid": "VisualEditor2",
            "Effect": "Allow",
            "Action": "iotdeviceadvisor:*",
            "Resource": "*"
        }
    ]
}
```

## Prevenzione del problema "confused deputy" tra servizi per Device Advisor
<a name="cross-service-confused-deputy-prevention-DA"></a>

Il problema confused deputy è un problema di sicurezza in cui un’entità che non dispone dell’autorizzazione per eseguire un’azione può costringere un’entità maggiormente privilegiata a eseguire l’azione. Nel frattempo AWS, l'impersonificazione tra servizi può portare al confuso problema del vice. La rappresentazione tra servizi può verificarsi quando un servizio (il *servizio chiamante*) effettua una chiamata a un altro servizio (il *servizio chiamato*). Il servizio chiamante può essere manipolato per utilizzare le proprie autorizzazioni e agire sulle risorse di un altro cliente, a cui normalmente non avrebbe accesso. Per evitare che ciò accada, AWS mette a disposizione strumenti che consentono di proteggere i dati relativi a tutti i servizi con responsabili del servizio a cui è stato concesso l'accesso alle risorse del vostro account. 

Consigliamo di utilizzare le chiavi di contesto delle condizioni globali [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn) e [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount) nelle policy delle risorse per limitare le autorizzazioni con cui Device Advisor fornisce un altro servizio alla risorsa. Se si utilizzano entrambe le chiavi di contesto delle condizioni globali, il valore `aws:SourceAccount` e l'account nel valore `aws:SourceArn` devono utilizzare lo stesso ID account nella stessa istruzione di policy.

Il valore di `aws:SourceArn` deve essere l'ARN della risorsa di definizione della suite. La risorsa di definizione della suite fa riferimento alla suite di test creata con Device Advisor.

Il modo più efficace per proteggersi dal problema "confused deputy" è quello di usare la chiave di contesto della condizione globale `aws:SourceArn` con l’ARN completo della risorsa. Se non si conosce l’ARN completo della risorsa o si scelgono più risorse, è necessario utilizzare la chiave di contesto della condizione globale `aws:SourceArn` con caratteri jolly (`*`) per le parti sconosciute dell’ARN. Ad esempio, `arn:aws:iotdeviceadvisor:*:account-id:suitedefinition/*`. 

L'esempio seguente mostra il modo in cui puoi utilizzare le chiavi di contesto delle condizioni globali `aws:SourceArn` e `aws:SourceAccount` in Device Advisor per prevenire il problema "confused deputy".

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
        "Sid": "ConfusedDeputyPreventionExamplePolicy",
        "Effect": "Allow",
        "Principal": {
            "Service": "iotdeviceadvisor.amazonaws.com"
        },
        "Action": "sts:AssumeRole",
        "Condition": {
            "ArnLike": {
                "aws:SourceArn": "arn:aws:iotdeviceadvisor:us-east-1:123456789012:suitedefinition/ygp6rxa3tzvn"
        },
            "StringEquals": {
                "aws:SourceAccount": "123456789012"
        }
        }
    }
}
```

## AWS formazione e certificazione
<a name="iot-security-training"></a>

Segui il seguente corso per conoscere i concetti chiave AWS IoT della sicurezza: [AWS IoT Security Primer](https://www.aws.training/Details/Curriculum?id=42304).