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à.
Ruoli IAM
Durante la creazione di un pool di identità, ti viene chiesto di aggiornare i ruoli IAM che gli utenti assumono. I ruoli IAM funzionano in questo modo: quando un utente accede alla tua app, Amazon Cognito genera credenziali AWS temporanee per l'utente. Queste credenziali temporanee sono associate a un determinato ruolo IAM. Con il ruolo IAM, puoi definire una serie di autorizzazioni per accedere alle tue risorse. AWS
Puoi specificare ruoli IAM predefiniti per utenti autenticati e non autenticati. Inoltre, puoi definire le regole per scegliere il ruolo di ogni utente in base alle richieste nel token ID dell'utente. Per ulteriori informazioni, consulta Utilizzo del controllo degli accessi basato su ruoli.
Di default, la console Amazon Cognito crea ruoli IAM con accesso ad Amazon Cognito Sync e ad Amazon Mobile Analytics. In alternativa puoi scegliere di utilizzare ruoli IAM; esistenti.
Modificare i ruoli IAM per consentire o limitare l'accesso ad altri servizi. Per farlo, accedi alla Console IAM
Nota
È consigliabile definire policy in grado di seguire il principio di concessione di privilegi minimi. In altre parole, le policy includono solo le autorizzazioni che gli utenti richiedono per eseguire le attività. Per ulteriori informazioni, consulta Assegnare il privilegio minimo nella Guida per l'utente di IAM.
Ricorda che le identità non autenticate verranno assunte dagli utenti che non effettuano l'accesso alla tua app. Di solito, le autorizzazioni che assegni per le identità non autenticate devono essere più restrittive rispetto a quelle per le identità autenticate.
Configurazione di una policy di attendibilità
Amazon Cognito usa i ruoli IAM per generare credenziali temporanee per gli utenti della tua applicazione. L'accesso alle autorizzazioni è controllato da una relazione di attendibilità del ruolo. Ulteriori informazioni su Attendibilità del ruolo e autorizzazioni.
Il token presentato AWS STS viene generato da un pool di identità, che traduce un pool di utenti, un token social o di un provider OIDC o un'asserzione SAML nel proprio token. Il token del pool di identità contiene un'attestazione aud
che è l'ID del pool di identità.
L'esempio seguente: la policy di trust dei ruoli consente al responsabile del servizio federato di chiamare l'API. cognito-identity.amazonaws.com
AWS STS AssumeRoleWithWebIdentity
La richiesta andrà a buon fine solo se il token del pool di identità nella richiesta API presenta le seguenti attestazioni.
-
Un'attestazione
aud
dell'ID del pool di identitàus-west-2:abcdefg-1234-5678-910a-0e8443553f95
. -
Un'attestazione
amr
diauthenticated
viene aggiunta quando l'utente ha effettuato l'accesso e non è un utente ospite.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "cognito-identity.amazonaws.com" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "cognito-identity.amazonaws.com:aud": "us-west-2:abcdefg-1234-5678-910a-0e8443553f95" }, "ForAnyValue:StringLike": { "cognito-identity.amazonaws.com:amr": "authenticated" } } } ] }
Politiche di fiducia per i ruoli IAM nell'autenticazione Basic (Classic)
È necessario applicare almeno una condizione che limiti le politiche di fiducia per i ruoli utilizzati con i pool di identità. Quando crei o aggiorni le policy di attendibilità dei ruoli per i pool di identità, IAM restituisce un errore se tenti di salvare le modifiche senza almeno una chiave di condizione che limiti le identità di origine. AWS STS non consente AssumeRoleWithWebIdentityoperazioni su più account, dai pool di identità ai ruoli IAM privi di una condizione di questo tipo.
Questo argomento include diverse condizioni che limitano le identità di origine per i pool di identità. Per un elenco completo, vedi Chiavi disponibili per la federazione delle identità AWS web.
Nell'autenticazione di base o classica con un pool di identità, puoi assumere qualsiasi ruolo IAM con AWS STS la giusta policy di fiducia. I ruoli IAM per i pool di identità di Amazon Cognito si affidano al responsabile del servizio cognito-identity.amazonaws.com
per assumere il ruolo. Questa configurazione non è sufficiente per proteggere i ruoli IAM dall'accesso involontario alle risorse. I ruoli di questo tipo devono applicare una condizione aggiuntiva alla policy di fiducia dei ruoli. Non è possibile creare o modificare i ruoli per i pool di identità senza almeno una delle seguenti condizioni.
cognito-identity.amazonaws.com:aud
-
Limita il ruolo alle operazioni provenienti da uno o più pool di identità. Amazon Cognito indica il pool di identità di origine nel
aud
claim nel token del pool di identità. cognito-identity.amazonaws.com:amr
-
Limita il ruolo a uno
authenticated
o agli utentiunauthenticated
(ospiti). Amazon Cognito indica lo stato di autenticazione nelamr
claim nel token del pool di identità. cognito-identity.amazonaws.com:sub
-
Limita il ruolo a uno o più utenti in base all'UUID. Questo UUID è l'ID di identità dell'utente nel pool di identità. Questo valore non è il
sub
valore del provider di identità originale dell'utente. Amazon Cognito indica questo UUID nelsub
claim del token del pool di identità.
L'autenticazione a flusso avanzato richiede che il ruolo IAM appartenga allo stesso Account AWS pool di identità, ma questo non è il caso dell'autenticazione di base.
Considerazioni aggiuntive si applicano ai pool di identità di Amazon Cognito che presuppongono ruoli IAM su più account. Le politiche di fiducia di tali ruoli devono accettare il principio del cognito-identity.amazonaws.com
servizio e contenere la condizione specifica. cognito-identity.amazonaws.com:aud
Per impedire l'accesso involontario alle AWS risorse, la chiave aud
condizionale limita il ruolo agli utenti dei pool di identità indicati nel valore della condizione.
Il token emesso da un pool di identità per un'identità contiene informazioni sull'origine del pool Account AWS di identità. Quando presenti un token del pool di identità in una richiesta AssumeRoleWithWebIdentityAPI, AWS STS verifica se il pool di identità di origine ha lo stesso Account AWS ruolo di IAM. Se AWS STS determina che la richiesta è interaccount, verifica se la policy di fiducia dei ruoli presenta una aud
condizione. La chiamata assume-role fallisce se non sono presenti tali condizioni nella policy di fiducia dei ruoli. Se la richiesta non è interaccount, AWS STS non applica questa restrizione. Come procedura consigliata, applica sempre una condizione di questo tipo alle politiche di attendibilità dei ruoli del pool di identità.
Condizioni aggiuntive relative alla politica di fiducia
Riutilizzo dei ruoli tra i pool di identità
Per riutilizzare un ruolo tra più pool di identità, poiché condividono un set di autorizzazioni, puoi includere più pool di identità come segue:
"StringEquals": { "cognito-identity.amazonaws.com:aud": [ "us-east-1:12345678-abcd-abcd-abcd-123456790ab", "us-east-1:98765432-dcba-dcba-dcba-123456790ab" ] }
Limitazione dell'accesso a specifiche identità
Per creare una policy limitata a uno specifico set di app utenti, controlla il valore di cognito-identity.amazonaws.com:sub
:
"StringEquals": { "cognito-identity.amazonaws.com:aud": "us-east-1:12345678-abcd-abcd-abcd-123456790ab", "cognito-identity.amazonaws.com:sub": [ "us-east-1:12345678-1234-1234-1234-123456790ab", "us-east-1:98765432-1234-1234-1243-123456790ab" ] }
Limitazione dell'accesso a specifici provider
Per creare una policy limitata agli utenti che hanno eseguito l'accesso con un determinato provider (probabilmente il tuo provider di accesso), controlla il valore di cognito-identity.amazonaws.com:amr
:
"ForAnyValue:StringLike": { "cognito-identity.amazonaws.com:amr": "login.myprovider.myapp" }
Ad esempio, un'applicazione che fa affidamento solo su Facebook avrebbe la seguente clausola amr:
"ForAnyValue:StringLike": { "cognito-identity.amazonaws.com:amr": "graph.facebook.com" }
Policy di accesso
Le autorizzazioni collegate a un ruolo si applicano a tutti gli utenti che assumono tale ruolo. Per eseguire il partizionamento dell'accesso degli utenti, utilizza le condizioni e le variabili di policy. Per ulteriori informazioni, consulta Elementi delle policy IAM: variabili e tag. Puoi utilizzare la condizione sub
per limitare le operazioni agli ID di identità di Amazon Cognito nelle policy di accesso. Utilizza questa opzione con cautela, in particolare per identità non autenticate, prive di un ID utente coerente. Per ulteriori informazioni sulle variabili di policy IAM per la federazione web con Amazon Cognito, consulta IAM and AWS STS condition context keys nella Guida per l'AWS Identity and Access Management utente.
Per una maggiore protezione di sicurezza, Amazon Cognito applica una policy di riduzione dell'ambito alle credenziali assegnate agli utenti non autenticati nel flusso avanzato, utilizzando GetCredentialsForIdentity
. La policy di riduzione dell'ambito aggiunge una Policy di sessione inline e una AWS politica di sessione gestita alle policy IAM applicate al ruolo non autenticato. Poiché è necessario concedere l'accesso in entrambe le policy IAM per le policy del ruolo e di sessione, la policy di riduzione dell'ambito limita l'accesso degli utenti a servizi diversi da quelli contenuti nell'elenco seguente.
Nota
Nel flusso di base (classico), puoi creare la tua richiesta API AssumeRoleWithWebIdentity e applicare queste restrizioni alla richiesta. Come best practice di sicurezza, non assegnare autorizzazioni superiori a questa policy di riduzione dell'ambito a utenti non autenticati.
Amazon Cognito impedisce inoltre agli utenti autenticati e non autenticati di effettuare richieste API ai pool di identità di Amazon Cognito e Amazon Cognito Sync. Altri Servizi AWS potrebbero imporre restrizioni all'accesso ai servizi dalle identità web.
In caso di esito positivo della richiesta con il flusso avanzato, Amazon Cognito effettua una richiesta API AssumeRoleWithWebIdentity
in background. Tra i parametri di questa richiesta, Amazon Cognito include quelli riportati di seguito.
-
L'ID identificativo dell'utente.
-
L'ARN del ruolo IAM che l'utente desidera assumere.
-
Un parametro
policy
che aggiunge una policy di sessione inline. -
Un
PolicyArns.member.N
parametro il cui valore è una politica AWS gestita che concede autorizzazioni aggiuntive in Amazon. CloudWatch
Servizi cui possono accedere gli utenti non autenticati
Quando utilizzi il flusso avanzato, le policy di riduzione dell'ambito applicate da Amazon Cognito alla sessione dell'utente impediscono l'utilizzo di servizi diversi da quelli elencati nella tabella seguente. Per un sottoinsieme di servizi, sono consentite solo azioni specifiche.
Categoria | Servizio |
---|---|
Analisi |
Amazon Data Firehose Servizio gestito da Amazon per Apache Flink |
Integrazione di applicazioni |
Amazon Simple Queue Service |
Realtà aumentata e realtà virtuale |
Amazon Sumerian |
Applicazioni aziendali |
Amazon Mobile Analytics Amazon Simple Email Service |
Calcolo |
AWS Lambda |
Crittografia e PKI |
AWS Key Management Service¹ |
Database |
Amazon DynamoDB Amazon SimpleDB |
Web e dispositivi mobili front-end |
AWS AppSync Servizio di posizione Amazon Amazon Simple Notification Service Amazon Pinpoint |
Sviluppo dei giochi |
Amazon GameLift |
Internet of Things (IoT) |
AWS IoT |
Machine Learning |
Amazon CodeWhisperer Amazon Comprehend Amazon Lex Amazon Machine Learning Amazon Personalize Amazon Polly Amazon Rekognition SageMakerAmazon¹ Amazon Textract¹ Amazon Transcribe Amazon Translate |
Gestione e governance |
Amazon CloudWatch CloudWatch Registri Amazon |
Reti e distribuzione di contenuti |
Amazon API Gateway |
Sicurezza, identità e conformità |
Pool di utenti Amazon Cognito |
Storage |
Amazon Simple Storage Service |
¹ Per quanto riguarda la tabella seguente, la politica Servizi AWS in linea concede un sottoinsieme di azioni. Nella tabella sono visualizzate le azioni disponibili in ciascuno di essi.
Servizio AWS | Autorizzazioni massime per gli utenti non autenticati del flusso avanzato |
---|---|
AWS Key Management Service |
|
Amazon SageMaker |
|
Amazon Textract |
|
Amazon Sumerian |
|
Per concedere l'accesso a un numero Servizi AWS superiore a questo elenco, attiva il flusso di autenticazione di base (classico) nel tuo pool di identità. Se gli utenti visualizzano errori NotAuthorizedException
da Servizi AWS che sono consentiti dalle policy assegnate al ruolo IAM per gli utenti non autenticati, è necessario valutare se è possibile rimuovere tale servizio dal caso d'uso. Se non è possibile, passa al flusso di base.
La policy di sessione inline
La politica di sessione in linea impedisce che le autorizzazioni effettive dell'utente includano l'accesso a persone Servizi AWS esterne a quelle incluse nell'elenco seguente. È inoltre necessario concedere le autorizzazioni a questi soggetti Servizi AWS nelle politiche che si applicano al ruolo IAM dell'utente. Le autorizzazioni effettive di un utente per una sessione del ruolo assunto sono l'intersezione delle policy assegnate al relativo ruolo e policy di sessione. Per ulteriori informazioni, consulta Policy di sessione nella Guida per l'utente di AWS Identity and Access Management .
Amazon Cognito aggiunge la seguente policy inline alle sessioni per gli utenti nelle Regioni AWS abilitate per impostazione predefinita.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cloudwatch:*", "logs:*", "dynamodb:*", "kinesis:*", "mobileanalytics:*", "s3:*", "ses:*", "sns:*", "sqs:*", "lambda:*", "machinelearning:*", "execute-api:*", "iot:*", "gamelift:*", "scs:*", "cognito-identity:*", "cognito-idp:*", "lex:*", "polly:*", "comprehend:*", "translate:*", "transcribe:*", "rekognition:*", "mobiletargeting:*", "firehose:*", "appsync:*", "personalize:*", "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "sagemaker:InvokeEndpoint", "cognito-sync:*", "sumerian:View*", "codewhisperer:*", "textract:DetectDocumentText", "textract:AnalyzeDocument", "sdb:*" ], "Resource": [ "*" ] } ] }
Per tutte le altre regioni, la policy di riduzione dell'ambito inline include tutto ciò che è elencato nelle regioni predefinite ad eccezione delle seguenti istruzioni Action
.
"cognito-sync:*", "sumerian:View*", "codewhisperer:*", "textract:DetectDocumentText", "textract:AnalyzeDocument", "sdb:*"
La politica della sessione AWS gestita
Amazon Cognito limita inoltre l'ambito delle autorizzazioni degli utenti non autenticati con la policy gestita da AWS AmazonCognitoUnAuthedIdentitiesSessionPolicy
ai tuoi utenti non autenticati nel flusso avanzato. Questa autorizzazione deve essere specificata anche nelle policy che colleghi al ruolo IAM non autenticato.
La policy gestita AmazonCognitoUnAuthedIdentitiesSessionPolicy
contiene le seguenti autorizzazioni.
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "rum:PutRumEvents", "polly:*", "comprehend:*", "translate:*", "transcribe:*", "rekognition:*", "mobiletargeting:*", "firehose:*", "personalize:*", "sagemaker:InvokeEndpoint" ], "Resource": "*" }] }
Esempi di policy di accesso
In questa sezione, sono disponibili policy di accesso di Amazon Cognito di esempio che concedono agli utenti le autorizzazioni minime necessarie per eseguire un'operazione specifica. Puoi limitare ulteriormente le autorizzazioni per un determinato ID identità utilizzando variabili di policy, laddove possibile. Ad esempio, utilizzando ${cognito-identity.amazonaws.com:sub}. Per ulteriori informazioni, consulta Informazioni sull'autenticazione di Amazon Cognito parte 3: Ruoli e policy
Nota
Come best practice di sicurezza, le policy devono includere solo le autorizzazioni necessarie agli utenti per eseguire le loro attività. Ciò significa che dovresti cercare sempre di definire, laddove possibile, l'ambito dell'accesso a una singola identità per gli oggetti.
Autorizzazione per l'accesso in lettura di un'identità a un singolo oggetto in Amazon S3
La seguente policy di accesso concede autorizzazioni di lettura a un'identità per recuperare un singolo oggetto da un determinato bucket S3.
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "s3:GetObject" ], "Effect": "Allow", "Resource": ["arn:aws:s3:::mybucket/assets/my_picture.jpg"] } ] }
Autorizzazione per l'accesso in lettura e scrittura di un'identità a percorsi specifici in Amazon S3
La seguente policy di accesso concede le autorizzazioni di lettura e scrittura per accedere a una specifica "cartella" prefisso in un bucket S3 mappando il prefisso alla variabile ${cognito-identity.amazonaws.com:sub}
.
Con questa policy, un'identità come us-east-1:12345678-1234-1234-1234-123456790ab
inserita tramite ${cognito-identity.amazonaws.com:sub}
sarà in grado di ottenere, inserire ed elencare oggetti in arn:aws:s3:::mybucket/us-east-1:12345678-1234-1234-1234-123456790ab
. Tuttavia, all'identità non verrà concesso l'accesso ad altri oggetti in arn:aws:s3:::mybucket
.
{ "Version": "2012-10-17", "Statement": [ { "Action": ["s3:ListBucket"], "Effect": "Allow", "Resource": ["arn:aws:s3:::mybucket"], "Condition": {"StringLike": {"s3:prefix": ["${cognito-identity.amazonaws.com:sub}/*"]}} }, { "Action": [ "s3:GetObject", "s3:PutObject" ], "Effect": "Allow", "Resource": ["arn:aws:s3:::mybucket/${cognito-identity.amazonaws.com:sub}/*"] } ] }
Assegnazione dell'accesso granulare delle identità ad Amazon DynamoDB
La seguente policy di accesso fornisce un controllo granulare dell'accesso alle risorse DynamoDB utilizzando variabili d'ambiente Amazon Cognito. Tali variabili concedono l'accesso agli elementi in DynamoDB attraverso l'ID identità. Per ulteriori informazioni, consulta Utilizzo di condizioni delle policy IAM per il controllo granulare degli accessi nella Guida per lo sviluppatore di Amazon DynamoDB.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "dynamodb:GetItem", "dynamodb:BatchGetItem", "dynamodb:Query", "dynamodb:PutItem", "dynamodb:UpdateItem", "dynamodb:DeleteItem", "dynamodb:BatchWriteItem" ], "Resource": [ "arn:aws:dynamodb:us-west-2:123456789012:table/MyTable" ], "Condition": { "ForAllValues:StringEquals": { "dynamodb:LeadingKeys": ["${cognito-identity.amazonaws.com:sub}"] } } } ] }
Autorizzazione di un'identità a richiamare una funzione Lambda
La seguente policy di accesso concede a un'identità l'autorizzazione per richiamare una funzione Lambda.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "lambda:InvokeFunction", "Resource": [ "arn:aws:lambda:us-west-2:123456789012:function:MyFunction" ] } ] }
Autorizzazione di un'identità a pubblicare record in flussi di dati Kinesis
La policy di accesso seguente consente a un'identità di utilizzare l'operazione PutRecord
con qualsiasi Kinesis Data Streams. Può essere applicata agli utenti che devono aggiungere record di dati a tutti i flussi in un account. Per ulteriori informazioni, consulta Controllo dell'accesso alle risorse Amazon Kinesis Data Streams che utilizzano IAM nella Guida per gli sviluppatori di Amazon Kinesis Data Streams.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "kinesis:PutRecord", "Resource": [ "arn:aws:kinesis:us-east-1:111122223333:stream/stream1" ] } ] }
Autorizzazione di un'identità ad accedere ai propri dati nell'archivio di Amazon Cognito Sync
La seguente policy di accesso concede a un'identità le autorizzazioni solo per i dati nell'archivio di Amazon Cognito Sync.
{ "Version": "2012-10-17", "Statement":[{ "Effect":"Allow", "Action":"cognito-sync:*", "Resource":["arn:aws:cognito-sync:us-east-1:123456789012:identitypool/${cognito-identity.amazonaws.com:aud}/identity/${cognito-identity.amazonaws.com:sub}/*"] }] }