

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

# Best practice
<a name="auth-best-practices"></a>

Questa sezione descrive le best practice per proteggere le applicazioni Amazon Location Service e ottimizzare l'utilizzo dell'autenticazione. Implementando l'isolamento delle credenziali, il monitoraggio e le restrizioni appropriate, puoi ridurre al minimo i rischi per la sicurezza e controllare i costi. Per indicazioni sulla scelta tra le chiavi API, Amazon Cognito e AWS Identity and Access Management, consulta. [Scelta di un metodo di autenticazione](auth-choose-method.md)

## Gestione delle credenziali
<a name="auth-bp-credential-management"></a>

Una corretta gestione delle credenziali riduce i rischi per la sicurezza e semplifica le operazioni quando è necessario ruotare o revocare l'accesso.
+ **Utilizza credenziali separate per applicazione**: crea chiavi API o ruoli IAM distinti per ogni applicazione o ambiente (sviluppo, gestione temporanea, produzione). Ciò limita il raggio di esplosione se una credenziale viene compromessa.
+ **Applica il principio del privilegio minimo**: concedi solo le autorizzazioni minime richieste per ogni caso d'uso. Limita l'accesso a API e risorse specifiche anziché utilizzare caratteri jolly.
+ **Ruota regolarmente le credenziali**: ruota periodicamente le chiavi API e rivedi le politiche IAM. Rimuovi prontamente le credenziali non utilizzate.
+ **Non esporre mai le credenziali nel codice sorgente**: archivia chiavi API, ID del pool di identità di Amazon Cognito e altri valori sensibili in variabili di ambiente, gestori segreti o archivi di configurazione sicuri. Non affidarli al controllo della versione.

## Ottimizzazione delle chiavi API
<a name="auth-bp-apikeys"></a>

Le chiavi API forniscono un modo semplice per concedere l'accesso non autenticato e in sola lettura alle risorse Maps, Places e Routes. Segui queste pratiche per ridurre al minimo i rischi per la sicurezza e ottimizzare l'utilizzo.
+ **Limita azioni e risorse**: quando crei una chiave API, specifica solo le azioni e le risorse necessarie all'applicazione. Ad esempio, un'applicazione che utilizza solo mappe dovrebbe consentire `geo-maps:*` azioni solo sulla risorsa del provider di mappe.
+ **Applica le restrizioni relative ai client**: configura le restrizioni relative ai referenti di dominio per le applicazioni Web o le restrizioni relative agli identificativi delle applicazioni per le app Android e iOS. In questo modo si evita che la chiave venga utilizzata su origini non autorizzate. Per ulteriori informazioni, consulta [Limita l'utilizzo delle chiavi API in base all'origine della richiesta](#restrict-usage-by-origin).
+ **Imposta i tempi di scadenza**: utilizza la scadenza della chiave per imporre una rotazione regolare. Crea una nuova chiave prima della scadenza di quella precedente, aggiorna l'applicazione, quindi disattiva la vecchia chiave.
+ **Monitora l'utilizzo per chiave**: utilizza le CloudWatch metriche con la `ApiKeyName` dimensione per tenere traccia dell'utilizzo di ciascuna chiave singolarmente. Imposta allarmi in caso di picchi imprevisti. `CallCount`
+ **Elimina le chiavi non utilizzate**: controlla regolarmente le tue chiavi API ed elimina quelle che non sono più in uso. Una chiave inattiva che è stata disattivata può essere eliminata dopo 90 giorni.

## Limita l'utilizzo delle chiavi API in base all'origine della richiesta
<a name="restrict-usage-by-origin"></a>

Puoi configurare le chiavi API con restrizioni client che limitano l'accesso a domini o applicazioni mobili specifici. In caso di restrizioni per dominio, il servizio autorizza le richieste solo quando l'intestazione HTTP Referer corrisponde al valore fornito. In caso di restrizioni per applicazione Android o Apple, il servizio autorizza le richieste solo quando i campi di intestazione HTTP dell'identificatore dell'applicazione corrispondono ai valori forniti.

Per ulteriori informazioni sulle restrizioni delle chiavi API, consulta [ApiKeyRestrictions](https://docs.aws.amazon.com/location/latest/APIReference/API_geoapikeys_ApiKeyRestrictions.html)il *riferimento alle API di Amazon Location Service*.

 **Identificatori di applicazioni Android:** 
+ `X-Android-Package`:

  Un identificatore univoco per le applicazioni Android, definito nel `build.gradle` file dell'app, in genere con un formato a dominio inverso.

  Esempio:

   `com.mydomain.appname` 
+ `X-Android-Cert`:

  L' SHA-1 hash del certificato di firma utilizzato per firmare l'APK Android.

  Esempio:

   `BB:0D:AC:74:D3:21:E1:43:67:71:9B:62:91:AF:A1:66:6E:44:5D:75` 

 **Identificatori delle applicazioni Apple:** 
+ `X-Apple-Bundle-Id`:

  Un identificatore univoco per le applicazioni Apple (iOS, macOS, ecc.), definito nelle app, in genere seguendo un `Info.plist` formato a dominio inverso.

  Esempio:

   `com.mydomain.appname` 

## Ottimizzazione di Amazon Cognito
<a name="auth-bp-cognito"></a>

Amazon Cognito offre un controllo degli accessi più granulare rispetto alle chiavi API e supporta utenti autenticati e non autenticati.
+ **Limita i ruoli non autenticati**: quando utilizzi pool di identità per l'accesso anonimo, collega policy IAM che consentono solo le azioni e le risorse specifiche di Amazon Location di cui la tua applicazione ha bisogno.
+ **Usa le chiavi condizionali per il filtraggio degli IP**: aggiungi `aws:SourceIp` condizioni alle tue policy IAM per limitare l'accesso a intervalli di IP noti, se necessario.
+ **Mantieni i pool di identità nella stessa regione**: crea il pool di identità di Amazon Cognito nella stessa AWS regione delle risorse di Amazon Location Service per evitare la latenza tra le regioni e garantire un accesso corretto.
+ **Usa identità autenticate quando possibile**: se la tua applicazione ha un flusso di accesso, usa i pool di utenti o le identità federate di Amazon Cognito per concedere ruoli autenticati con autorizzazioni specifiche anziché fare affidamento su accessi non autenticati.

## Ottimizzazione IAM
<a name="auth-bp-iam"></a>

Per le applicazioni lato server e gli strumenti interni, utilizzali AWS Identity and Access Management per il pieno controllo dell'accesso.
+ **Utilizza i ruoli IAM anziché le credenziali a lungo termine**: per le applicazioni in esecuzione su servizi di AWS elaborazione (come Amazon EC2, Lambda o Amazon ECS), utilizza i ruoli IAM per fornire automaticamente credenziali temporanee.
+ **Applica le autorizzazioni a livello di risorsa: specifica gli ARN** delle risorse nelle tue policy anziché utilizzare caratteri jolly. Ad esempio, limita l'accesso a risorse specifiche di tracker o di raccolta di geofence.
+ **Utilizza le condizioni delle policy**: aggiungi condizioni come la limitazione dell'accesso `aws:RequestedRegion` a regioni specifiche o il controllo degli `aws:PrincipalTag` accessi basato sugli attributi.
+ **Abilita CloudTrail: consente** AWS CloudTrail di registrare tutte le chiamate API di Amazon Location Service per il controllo e la conformità. Controlla regolarmente i log per individuare modelli di accesso imprevisti.