Best practice di sicurezza per i pool di identità di Amazon Cognito - Amazon Cognito

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 ruoli e le policy IAM 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.

Le migliori pratiche di configurazione IAM

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 potrebbero riguardare un ruolo predefinito, un ruolo scelto dalle regole nella configurazione del pool di identità o 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 best practice generali di IAM, consulta le best practice di IAM nella Guida per l' AWS Identity and Access Management utente.

Utilizza le condizioni delle policy di fiducia nei ruoli IAM

IAM richiede che i ruoli per i pool di identità abbiano almeno una condizione di policy 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 best practice, applica entrambe queste condizioni in tutti i ruoli IAM 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 le policy IAM per l'accesso autenticato o l'accesso ospite, concedi solo le autorizzazioni specifiche necessarie per eseguire attività specifiche o le autorizzazioni con privilegi minimi. La seguente policy IAM 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 ruoli IAM non autenticati per soddisfare le esigenze specifiche della tua applicazione.

  • Concedi l'accesso a risorse specifiche.

  • Proteggi la policy di fiducia del tuo ruolo IAM predefinito non autenticato.

  • Attiva l'accesso come ospite solo quando sei sicuro di poter concedere le autorizzazioni nel tuo ruolo IAM a chiunque su Internet.

Utilizza l'autenticazione avanzata per impostazione predefinita

Con l'autenticazione di base (classica), Amazon Cognito delega la selezione del ruolo IAM alla tua app. Al contrario, il flusso avanzato utilizza la logica centralizzata nel pool di identità per determinare il ruolo IAM. Fornisce inoltre una sicurezza aggiuntiva per le identità non autenticate con una politica mirata 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 richiesta di credenziali dell'API AWS STS. Il flusso migliorato 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 migliori pratiche IAM ai tuoi ruoli IAM 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 i profili di istanza EC2 e i 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.