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 di sicurezza per i pool di identità di Amazon Cognito
I pool di identità di Amazon Cognito forniscono AWS credenziali temporanee per la tua applicazione. Account AWS spesso contengono sia le risorse di cui gli utenti dell'applicazione hanno bisogno, sia risorse private di back-end. I IAM ruoli e le politiche che costituiscono le AWS credenziali possono concedere l'accesso a qualsiasi di queste risorse.
La best practice principale per la configurazione del pool di identità consiste nel garantire che l'applicazione possa svolgere il lavoro senza privilegi eccessivi o involontari. Per evitare errori di configurazione della sicurezza, consulta questi consigli prima del lancio di ogni applicazione che desideri rilasciare in produzione.
Argomenti
IAMprocedure consigliate di configurazione
Quando un ospite o un utente autenticato avvia una sessione nell'applicazione che richiede le credenziali del pool di identità, l'applicazione recupera le AWS credenziali temporanee per un ruolo. IAM Le credenziali possono essere per un ruolo predefinito, un ruolo scelto dalle regole nella configurazione del pool di identità o per un ruolo personalizzato scelto dall'app. Con le autorizzazioni assegnate a ciascun ruolo, l'utente ottiene l'accesso alle risorse. AWS
Per ulteriori informazioni sulle IAM best practice generali, consulta le IAMbest practice nella Guida per l' AWS Identity and Access Management utente.
Utilizza le condizioni delle politiche di fiducia nei IAM ruoli
IAMrichiede che i ruoli per i pool di identità abbiano almeno una condizione relativa alla politica di fiducia. Questa condizione può, ad esempio, impostare l'ambito del ruolo solo per gli utenti autenticati. AWS STS richiede inoltre che le richieste di autenticazione di base tra account abbiano due condizioni specifiche: cognito-identity.amazonaws.com:aud
e. cognito-identity.amazonaws.com:amr
Come procedura ottimale, applica entrambe queste condizioni a tutti i IAM ruoli che si affidano al principale cognito-identity.amazonaws.com
del servizio di pool di identità.
-
cognito-identity.amazonaws.com:aud
: L'affermazione aud nel token del pool di identità deve corrispondere a un ID affidabile del pool di identità. -
cognito-identity.amazonaws.com:amr
: L'attestazione amr nel token del pool di identità deve essere autenticata o non autenticata. Con questa condizione, puoi riservare l'accesso a un ruolo solo agli ospiti non autenticati o solo agli utenti autenticati. È possibile rifinire ulteriormente il valore di questa condizione per limitare il ruolo agli utenti di un provider specifico, ad esempio.graph.facebook.com
Il seguente esempio di politica di fiducia dei ruoli concede l'accesso a un ruolo nelle seguenti condizioni:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Federated": "cognito-identity.amazonaws.com" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "cognito-identity.amazonaws.com:aud": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE11111" }, "ForAnyValue:StringLike": { "cognito-identity.amazonaws.com:amr": "authenticated" } } } ] }
Elementi che si riferiscono ai pool di identità
-
"Federated": "cognito-identity.amazonaws.com"
: gli utenti devono provenire da un pool di identità. -
"cognito-identity.amazonaws.com:aud": "us-east-1:a1b2c3d4-5678-90ab-cdef-example11111"
: Gli utenti devono provenire dal pool di identità specificous-east-1:a1b2c3d4-5678-90ab-cdef-example11111
. -
"cognito-identity.amazonaws.com:amr": "authenticated"
: Gli utenti devono essere autenticati. Gli utenti ospiti non possono assumere il ruolo.
Applica le autorizzazioni con privilegi minimi
Quando imposti le autorizzazioni con IAM politiche per l'accesso autenticato o l'accesso come ospite, concedi solo le autorizzazioni specifiche necessarie per eseguire attività specifiche o autorizzazioni con privilegi minimi. La seguente IAM policy di esempio, se applicata a un ruolo, concede l'accesso in sola lettura a un singolo file di immagine in un bucket Amazon S3.
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "s3:GetObject" ], "Effect": "Allow", "Resource": ["arn:aws:s3:::mybucket/assets/my_picture.jpg"] } ] }
Best practice per la configurazione del pool di identità
I pool di identità offrono opzioni flessibili per la generazione di AWS credenziali. Non utilizzare scorciatoie di progettazione quando l'applicazione può funzionare con i metodi più sicuri.
Comprendi gli effetti dell'accesso degli ospiti
L'accesso non autenticato come ospite consente agli utenti di recuperare i dati da te Account AWS prima di effettuare l'accesso. Chiunque conosca l'ID del tuo pool di identità può richiedere credenziali non autenticate. L'ID del tuo pool di identità non è un'informazione riservata. Quando attivi l'accesso come ospite, le AWS autorizzazioni concesse alle sessioni non autenticate sono disponibili per tutti.
Come procedura consigliata, lascia disattivato l'accesso degli ospiti e recupera le risorse necessarie solo dopo l'autenticazione degli utenti. Se l'applicazione richiede l'accesso alle risorse prima dell'accesso, prendi le seguenti precauzioni.
-
Acquisite familiarità con le limitazioni automatiche imposte ai ruoli non autenticati.
-
Monitora e modifica le autorizzazioni dei IAM ruoli non autenticati in base alle esigenze specifiche della tua applicazione.
-
Concedi l'accesso a risorse specifiche.
-
Proteggi la politica di fiducia del tuo ruolo predefinito non autenticatoIAM.
-
Attiva l'accesso come ospite solo quando sei sicuro di poter concedere le autorizzazioni relative al tuo IAM ruolo a chiunque su Internet.
Utilizza l'autenticazione avanzata per impostazione predefinita
Con l'autenticazione di base (classica), Amazon Cognito delega la selezione del IAM ruolo alla tua app. Al contrario, il flusso avanzato utilizza la logica centralizzata del pool di identità per determinare il ruolo. IAM Fornisce inoltre una sicurezza aggiuntiva per le identità non autenticate con una politica riduttiva che stabilisce un limite massimo per le autorizzazioni. IAM Il flusso avanzato è la scelta più sicura con il livello più basso di impegno da parte degli sviluppatori. Per ulteriori informazioni su queste opzioni, consultaFlusso di autenticazione dei pool di identità.
Il flusso di base può esporre la logica lato client che riguarda la selezione dei ruoli e l'assemblaggio della AWS STS API richiesta di credenziali. Il flusso avanzato nasconde sia la logica che la richiesta di assunzione del ruolo alla base dell'automazione del pool di identità.
Quando configuri l'autenticazione di base, applica le IAM migliori pratiche ai tuoi IAM ruoli e alle relative autorizzazioni.
Utilizza i provider di sviluppo in modo sicuro
Le identità autenticate dagli sviluppatori sono una funzionalità dei pool di identità per le applicazioni lato server. L'unica prova di autenticazione richiesta dai pool di identità per l'autenticazione degli sviluppatori sono le AWS credenziali di uno sviluppatore di pool di identità. I pool di identità non impongono alcuna restrizione sulla validità degli identificatori sviluppatore-fornitore presenti in questo flusso di autenticazione.
Come best practice, implementa i provider di sviluppo solo nelle seguenti condizioni:
-
Per creare la responsabilità per l'uso di credenziali autenticate dagli sviluppatori, create il nome e gli identificatori del provider di sviluppo in modo da indicare la fonte di autenticazione. Ad esempio:
"Logins" : {"MyCorp provider" : "
.[provider application ID]
"} -
Evita le credenziali utente di lunga durata. Configura il tuo client lato server per richiedere identità con ruoli collegati ai servizi come EC2profili di istanza e ruoli di esecuzione Lambda.
-
Evita di mescolare fonti di fiducia interne ed esterne nello stesso pool di identità. Aggiungi il tuo provider di sviluppo e i provider Single Sign-on (SSO) in pool di identità separati.