Accedi ad Amazon Cognito utilizzando un endpoint di interfaccia ()AWS PrivateLink - 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à.

Accedi ad Amazon Cognito utilizzando un endpoint di interfaccia ()AWS PrivateLink

Puoi usarlo AWS PrivateLink per creare una connessione privata tra il tuo VPC e Amazon Cognito. Puoi accedere ad Amazon Cognito come se fosse nel tuo VPC, senza l'uso di un gateway Internet, un dispositivo NAT, una connessione VPN o una connessione. Direct Connect Le istanze nel tuo VPC non necessitano di indirizzi IP pubblici per accedere ad Amazon Cognito.

Stabilisci questa connessione privata creando un endpoint di interfaccia attivato da AWS PrivateLink. In ciascuna sottorete viene creata un'interfaccia di rete endpoint da abilitare per l'endpoint di interfaccia. Si tratta di interfacce di rete gestite dai richiedenti che fungono da punto di ingresso per il traffico destinato ad Amazon Cognito.

Per ulteriori informazioni, consulta la sezione Accesso a Servizi AWS tramite AWS PrivateLink nella Guida di AWS PrivateLink .

Importante

I seguenti tipi di autenticazione non sono attualmente supportati tramite: AWS PrivateLink

  1. Autorizzazione da macchina a macchina (M2M) con flusso di credenziali client OAuth 2.0

  2. Accedi con accesso gestito e la classica interfaccia utente ospitata.

La tabella seguente descrive i flussi di autenticazione disponibili per i client e le politiche IAM che è possibile applicare per gestirli. VPCs Le policy che puoi valutare nelle richieste ai pool di utenti sono le policy di controllo delle risorse (RCPs), le policy degli endpoint VPC e le policy basate sull'identità.

Risorsa Flusso di autenticazione Policy valutate quando il client transita su un endpoint VPC Politiche valutate quando l'origine del client è pubblica
Bacino d'utenza Accesso gestito e accesso classico all'interfaccia utente ospitata Nessuno (nessun accesso) 1 Nessuno 2
Bacino d'utenza Machine-to-machine authorization Nessuno (nessun accesso) 1 Nessuno 2
Bacino d'utenza Richieste non autenticate per SDK e API REST RCPs, Politiche degli endpoint VPC 3 RCPs
Bacino d'utenza Richieste autenticate SDK e REST API SigV4 RCPs, Policy per endpoint VPC, policy basate sull'identità 3 RCPs, politiche basate sull'identità
Pool di identità Richieste non autenticate per SDK e API REST (flussi di base e avanzati) RCPs, Politiche degli endpoint VPC RCPs
Pool di identità Richieste autenticate SDK e REST API SigV4 (flusso autenticato dallo sviluppatore) RCPs, politiche basate sull'identità RCPs, politiche basate sull'identità

1 Gli endpoint VPC non accettano richieste per i domini del pool di utenti. Se il client dispone di un percorso verso Internet, viene applicato il NAT, rendendo pubblica l'origine.

2 L'esistenza di un dominio del pool di utenti impedisce il completamento di qualsiasi richiesta del pool di utenti che transita su un endpoint VPC. Qualsiasi client può utilizzare percorsi di transito pubblico solo verso il dominio del pool di utenti e gli endpoint del servizio API, rendendo l'endpoint VPC inutilizzabile per il pool di utenti. I pool di utenti con domini assegnati sono incompatibili con. AWS PrivateLink

3 Al pool di utenti non deve essere assegnato un dominio.

I seguenti modelli di implementazione di esempio sono supportati con AWS PrivateLink Amazon Cognito.

Risorsa Implementazione Azioni
Bacino d'utenza Applicazione SDK o API REST completamente privata
  1. Eliminare il dominio

  2. Creare un endpoint VPC

  3. Configura RCP per Deny tutte le azioni cognito-idp ad eccezione di VPC

Bacino d'utenza IP pubblici e privati
  1. Eliminare il dominio

  2. Creare un endpoint VPC

Bacino d'utenza Server di autorizzazione OAuth 2.0 privato o pubblico
  1. Non disponibile per VPC

Pool di identità Completamente privato
  1. Creare un endpoint VPC

  2. Configura RCP per Deny tutte le azioni di cognito-identità ad eccezione di VPC

Pool di identità IP pubblici e privati
  1. Creare un endpoint VPC

Considerazioni per Amazon Cognito

Prima di configurare un endpoint di interfaccia per Amazon Cognito, consulta le considerazioni nella Guida.AWS PrivateLink Amazon Cognito supporta l'esecuzione di chiamate a tutte le azioni dell'API Amazon Cognito tramite l'endpoint dell'interfaccia. Per ulteriori informazioni su queste operazioni, consulta Amazon Cognito user pools API Reference e Amazon Cognito Federated Identities API Reference.

AWS PrivateLink per Amazon Cognito è disponibile solo nelle regioni commerciali AWS .

pool di utenti e AWS PrivateLink

È possibile effettuare richieste a tutte le operazioni API dei pool di utenti tramite l'endpoint dell'interfaccia, ma non alle operazioni richieste dall'applicazione al server di autorizzazione del pool di utenti OAuth 2.0, ad esempio la concessione delle credenziali del client e l'accesso gestito.

L'API dei pool di cognito-idp utenti presenta operazioni API non autenticate, autenticate e autorizzate tramite token. Puoi concedere le autorizzazioni per le operazioni autenticate nelle politiche di controllo degli endpoint e delle risorse VPC. È inoltre possibile concedere autorizzazioni per operazioni non autenticate e autorizzate tramite token, a differenza delle politiche basate sull'identità. I tipi di policy di controllo degli endpoint e delle risorse VPC sono in grado di valutare e rifiutare o consentire richieste per operazioni altrimenti pubbliche.

Anche le richieste agli endpoint di dominio sono pubbliche, ma non è possibile valutarle nelle policy. Il DNS privato VPC non indirizza le richieste per i domini del pool di utenti all'endpoint VPC. È possibile effettuare richieste di servizi di dominio solo tramite percorsi Internet pubblici. Per ulteriori informazioni, consulta Effetti delle politiche sulle operazioni del pool di utenti.

Operazioni supportate

I sistemi in un VPC possono inviare richieste alle azioni API del pool di utenti ma non agli endpoint del dominio del pool di utenti. I flussi di lavoro OpenID Connect (OIDC) e OAuth 2.0 che utilizzano endpoint di dominio, ad esempio machine-to-machine(M2M), accesso federato e concessioni di codici di autorizzazione, sono inaccessibili tramite gli endpoint VPC. Le policy degli endpoint VPC non hanno alcun effetto su questi flussi di lavoro HTTP e non possono elaborarli. Le richieste agli endpoint del dominio dall'interno di un VPC hanno sempre esito negativo sull'endpoint dell'interfaccia, ma continuano a essere disponibili tramite DNS pubblico e routing quando configuri gli endpoint VPC per i tuoi pool di utenti.

Per impedire l'assegnazione di domini dai sistemi in un VPC, Amazon Cognito blocca CreateUserPoolDomain le richieste sull'endpoint dell'interfaccia. Ciò impedisce l'aggiunta di domini ai pool di utenti da sistemi che si trovano in un VPC. Per impedire l'aggiunta di un dominio da tutti i sistemi, applica una politica di controllo delle risorse (RCP) come nell'esempio seguente al tuo. Account AWS Questa politica blocca l'CreateUserPoolDomainazione contro il pool di utenti specificato.

{ "Version": "2012-10-17", "Statement": [ { "Principal": "*", "Effect": "Deny", "Action": [ "cognito-idp:CreateUserPoolDomain" ], "Resource": "arn:aws:cognito-idp:us-east-1:123456789012:userpool/us-east-1_EXAMPLE" } ] }

Il tuo pool di utenti potrebbe avere un dominio e in tutti i casi tale dominio non è disponibile tramite AWS PrivateLink. Tutte le richieste API del pool di utenti basate su SDK agli endpoint di cognito-idp servizio accettano le richieste tramite AWS PrivateLink, ad eccezione di. CreateUserPoolDomain Gli endpoint del servizio API del pool di utenti e gli endpoint di dominio rimangono sempre accessibili tramite percorsi Internet pubblici. Per gestire l'accesso da fonti pubbliche, implementa il web.AWS WAF ACLs

Effetti delle politiche sulle operazioni del pool di utenti

Tutte le operazioni API del pool di utenti, anche quelle tipicamente pubbliche e non autenticate, possono essere controllate nelle policy degli endpoint VPC e nelle politiche di controllo delle risorse (). RCPs Puoi anche applicare restrizioni all'accesso al pool di utenti in policy basate sull'identità con chiavi di condizione VPC. Solo le richieste che includono informazioni di autenticazione in formato SigV4 possono essere controllate in policy basate sull'identità. L'accesso gestito e le operazioni classiche dell'interfaccia utente ospitata sono una categoria separata e non sono idonee al transito VPC o all'applicazione di alcun tipo di policy alle loro azioni.

Operazioni non autenticate

Le operazioni di Amazon Cognito per le applicazioni lato client non sono autenticate con SigV4. Le operazioni di esempio sono riportate nella policy di esempio all'indirizzo. Creazione di una policy dell' endpoint per l'endpoint dell'interfaccia Altri esempi di operazioni non autenticate sono GetUser e. AssociateSoftwareToken Quando si aggiungono queste operazioni alle politiche basate sull'identità, non hanno alcun effetto. Tuttavia, puoi consentire o limitare l'accesso a queste azioni nelle policy degli endpoint VPC e. RCPs

Le operazioni non autenticate non sono associate a un principal IAM. La tua policy sugli endpoint VPC o RCP deve consentire a tutti i principali di eseguire queste azioni.

Operazioni autenticate

Le operazioni API per l'amministrazione del pool di utenti e l'autenticazione lato server sono autenticate con SigV4. Per le operazioni autenticate, puoi limitare i principali con le policy degli endpoint che applichi all'endpoint VPC, le politiche di controllo delle risorse nell'organizzazione e le politiche basate sull'identità che applichi ai principali. Le politiche basate sull'identità e sul controllo delle risorse sono compatibili con il VPC con chiavi di condizione basate sulla rete come e. aws:SourceVpc aws:SourceVpce

Per ulteriori informazioni sulle classi di operazioni API lato server, lato client e amministrative per i pool di utenti, vedere. Modelli di autorizzazione per l'autenticazione tramite API e SDK

Pool di identità e AWS PrivateLink

I pool di identità di Amazon Cognito supportano tutte le operazioni API tramite. AWS PrivateLink

Operazioni supportate

Tutte le operazioni delle API dei pool di identità sono supportate tramite l'endpoint dell'interfaccia. I pool di identità non hanno endpoint di dominio e non sono soggetti alle stesse limitazioni. Tuttavia, i pool di identità hanno considerazioni specifiche per i controlli degli accessi basati sulla rete grazie alla loro integrazione con. AWS STS

Limitazioni del contesto di rete con integrazione AWS STS

I pool di identità utilizzano AWS STS AssumeRoleWithWebIdentity le operazioni per fornire AWS credenziali temporanee. Quando i pool di identità AWS STS richiamano aws:SourceIp il flusso di autenticazione avanzato, le chiavi del contesto di rete aws:SourceVpc utilizzano e aws:SourceVpce contengono valori provenienti dall'infrastruttura del servizio di pool di identità, non dal contesto di rete dell'applicazione. AWS PrivateLink

Se le politiche di fiducia dei ruoli IAM o le politiche di controllo delle risorse (RCPs) utilizzano chiavi di condizione basate sulla rete per limitare l'accesso, le operazioni dei pool di identità potrebbero essere negate in modo imprevisto. Per ovviare a questa limitazione, puoi utilizzare uno dei seguenti approcci:

Tag principali per l'identificazione del servizio

Etichetta i ruoli IAM utilizzati con i pool di identità e modifica le tue politiche per consentire le operazioni quando il principale ha il tag appropriato. Innanzitutto, aggiungi un tag al ruolo del tuo pool di identità:

aws iam tag-role \ -\-role-name MyIdentityPoolRole \ -\-tags Key=CognitoServiceCall,Value=true

Quindi modifica le politiche basate sulla rete per consentire i principali con tag. Ad esempio, in un RCP:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Principal": "*", "Action": "sts:AssumeRoleWithWebIdentity", "Resource": "*", "Condition": { "NotIpAddress": { "aws:SourceIp": ["allowed-ip-ranges"] }, "StringNotEqualsIfExists": { "aws:ResourceTag/CognitoServiceCall": "true" } } } ] }

Chiavi di contesto specifiche del servizio

I pool di identità forniscono chiavi di contesto specifiche del servizio per l'autorizzazione a livello di risorsa nelle policy degli endpoint VPC e. RCPs Con queste chiavi contestuali, puoi abilitare un controllo granulare degli accessi e distinguere tra utenti autenticati e non autenticati nelle policy.

Sono disponibili chiavi contestuali specifiche del servizio per operazioni non SIGv4 come,,, GetIdGetCredentialsForIdentityGetOpenIdTokenUnlinkIdentity
  • cognito-identity-unauth:IdentityPoolArn- Filtra l'accesso tramite l'ARN del pool di identità per gli utenti non autenticati

  • cognito-identity-unauth:AccountId- Filtra l'accesso in base all' Account AWS ID per gli utenti non autenticati

  • cognito-identity-auth:IdentityPoolArn- Filtra l'accesso tramite l'ARN del pool di identità per gli utenti autenticati

  • cognito-identity-auth:AccountId- Filtra l'accesso in base all' Account AWS ID per gli utenti autenticati

Sono disponibili chiavi contestuali specifiche del servizio per operazioni SigV4 come e DeleteIdentitiesDescribeIdentity
  • cognito-identity:IdentityPoolArn- Filtra l'accesso tramite il pool di identità ARN

Puoi utilizzare queste chiavi di contesto nelle policy degli endpoint VPC per limitare l'accesso in base allo stato di autenticazione, come dimostrato nell'esempio seguente:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": [ "cognito-identity:GetId", "cognito-identity:GetCredentialsForIdentity" ], "Resource": "*", "Condition": { "StringEquals": { "cognito-identity-unauth:IdentityPoolArn": "arn:aws:cognito-identity:us-east-1:123456789012:identitypool/us-east-1:12345678-ffff-ffff-ffff-123456" } } } ] }

Controllo dell'accesso con politiche di controllo delle risorse

Amazon Cognito supporta il controllo dell'accesso alle risorse con politiche di controllo delle risorse ()RCPs. Con le chiavi di condizione basate sulla rete, RCPs puoi definire le reti e le azioni consentite per AWS PrivateLink l'accesso ai tuoi pool di utenti e ai pool di identità. Le Action istruzioni incluse RCPs possono controllare l'accesso alle operazioni API del pool di utenti autenticate e non autenticate.

Ad esempio, la seguente politica di esempio impedisce l'accesso a tutti i pool di utenti da un VPC specifico.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "DenyCognitoAccessOutsideVPC", "Effect": "Deny", "Principal": "*", "Action": "cognito-idp:*", "Resource": "*", "Condition": { "StringNotEqualsIfExists": { "aws:SourceVpc": "vpc-02d6770f46ef1653b" } } } ] }

Crea un endpoint di interfaccia per Amazon Cognito

Puoi creare un endpoint di interfaccia per Amazon Cognito utilizzando la console Amazon VPC o il (). AWS Command Line Interface AWS CLI Per ulteriori informazioni, consulta la sezione Creazione di un endpoint di interfaccia nella Guida per l'utente di AWS PrivateLink .

Crea un endpoint di interfaccia per i pool di utenti di Amazon Cognito utilizzando il seguente nome di servizio:

com.amazonaws.region.cognito-idp

Crea un endpoint di interfaccia per i pool di identità di Amazon Cognito utilizzando il seguente nome di servizio:

com.amazonaws.region.cognito-identity

Se abiliti il DNS privato per l'endpoint dell'interfaccia, puoi effettuare richieste API ad Amazon Cognito utilizzando il nome DNS regionale predefinito. Ad esempio, per i pool di utenti e cognito-idp.us-east-1.amazonaws.com cognito-identity.us-east-1.amazonaws.com per i pool di identità.

Creazione di una policy dell' endpoint per l'endpoint dell'interfaccia

Una policy dell'endpoint è una risorsa IAM che è possibile allegare all'endpoint dell'interfaccia. La policy predefinita per gli endpoint consente l'accesso completo ad Amazon Cognito tramite l'endpoint dell'interfaccia. Per controllare l'accesso consentito ad Amazon Cognito dal tuo VPC, collega una policy personalizzata per gli endpoint all'endpoint dell'interfaccia.

Una policy di endpoint specifica le informazioni riportate di seguito:

  • I principali che possono eseguire azioni (Account AWS, utenti IAM e ruoli IAM).

  • Le azioni che possono essere eseguite.

  • Le risorse in cui è possibile eseguire le operazioni.

  • Le condizioni che devono essere soddisfatte prima che la richiesta venga consentita o rifiutata.

Per ulteriori informazioni, consulta la sezione Controllo dell'accesso ai servizi con policy di endpoint nella Guida di AWS PrivateLink .

Esempio: policy degli endpoint VPC per le azioni del pool di utenti

Di seguito è riportato un esempio di policy endpoint personalizzata per pool di utenti. Quando si allega questa policy all'endpoint di interfaccia, si concede l'accesso alle azioni del pool di utenti elencate per tutti i principali utenti su tutte le risorse.

{ "Version": "2012-10-17", "Statement": [ { "Principal": { "AWS": "arn:aws:iam::123456789012:assumed-role/MyWebAppRole/MyWebAppSession" }, "Effect": "Allow", "Action": [ "cognito-idp:AdminInitiateAuth", "cognito-idp:AdminRespondToAuthChallenge", "cognito-idp:AdminSetUserPassword" ], "Resource":"arn:aws:cognito-idp:us-east-1:123456789012:userpool/us-east-1_EXAMPLE" }, { "Effect": "Allow", "Action": [ "cognito-idp:InitiateAuth", "cognito-idp:RespondToAuthChallenge", "cognito-idp:ForgotPassword", "cognito-idp:ConfirmForgotPassword" ], "Resource":"arn:aws:cognito-idp:us-east-1:123456789012:userpool/us-east-1_EXAMPLE" } ] }
Esempio: policy degli endpoint VPC per le azioni del pool di identità

Di seguito è riportato un esempio di policy endpoint personalizzata per pool di identità. Questa policy utilizza chiavi contestuali specifiche del servizio per limitare l'accesso agli utenti autenticati da uno specifico pool di identità.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": [ "cognito-identity:GetId", "cognito-identity:GetCredentialsForIdentity", "cognito-identity:GetOpenIdToken" ], "Resource": "*", "Condition": { "StringEquals": { "cognito-identity-auth:IdentityPoolArn": "arn:aws:cognito-identity:us-east-1:123456789012:identitypool/us-east-1:12345678-ffff-ffff-ffff-123456" } } } ] }

Crea una politica operativa basata sull'identità AWS PrivateLink

Le policy basate sull'identità sono risorse IAM che puoi collegare ai principali. AWS Puoi controllare l'accesso ad Amazon Cognito tramite endpoint VPC con policy basate sull'identità per operazioni autenticate tramite IAM. A differenza delle policy relative agli endpoint, non è possibile configurare le autorizzazioni per le operazioni non autenticate nelle policy basate sull'identità. Le operazioni autenticate o amministrative richiedono l'autorizzazione Signature Version 4. Per i pool di utenti, le operazioni autenticate includono richieste di autenticazione lato server AdminInitiateAuthe richieste amministrative come. UpdateUserPool Per i pool di identità, le operazioni autenticate includono richieste amministrative come e. DeleteIdentitiesDescribeIdentity

Una politica basata sull'identità specifica le seguenti informazioni:

  • Le azioni che possono essere eseguite.

  • Le risorse in cui è possibile eseguire le operazioni.

  • Le condizioni che devono essere soddisfatte prima che la richiesta venga consentita o rifiutata.

Esempio: politica basata sull'identità per l'autenticazione lato server del pool di utenti

La seguente politica di esempio concede l'accesso alle azioni del pool di utenti elencate nel pool di utenti specificato, dall'endpoint specificato. Applica questa policy al ruolo IAM presunto per la tua applicazione web.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cognito-idp:AdminInitiateAuth", "cognito-idp:AdminRespondToAuthChallenge", "cognito-idp:AdminSetUserPassword" ], "Resource": "arn:aws:cognito-idp:us-east-1:123456789012:userpool/us-east-1_EXAMPLE", "Condition": { "StringEquals": { "aws:SourceVpce": "vpce-1a2b3c4d" } } } ] }
Esempio: politica basata sull'identità per le operazioni amministrative del pool di identità

La seguente politica di esempio concede l'accesso alle azioni amministrative del pool di identità dall'endpoint VPC specificato. Applica questa policy al responsabile IAM che deve eseguire l'amministrazione del pool di identità.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cognito-identity:DeleteIdentities", "cognito-identity:DescribeIdentity" ], "Resource": "*", "Condition": { "StringEquals": { "aws:SourceVpce": "vpce-1a2b3c4d" }, "StringEquals": { "cognito-identity:IdentityPoolArn": "arn:aws:cognito-identity:us-east-1:123456789012:identitypool/us-east-1:12345678-ffff-ffff-ffff-123456" } } } ] }