Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Accédez à Amazon Cognito à l'aide d'un point de terminaison d'interface (AWS PrivateLink)
Vous pouvez l'utiliser AWS PrivateLink pour créer une connexion privée entre votre VPC et Amazon Cognito. Vous pouvez accéder à Amazon Cognito comme s'il se trouvait dans votre VPC, sans utiliser de passerelle Internet, de périphérique NAT, de connexion VPN ou Direct Connect de connexion. Les instances de votre VPC n'ont pas besoin d'adresses IP publiques pour accéder à Amazon Cognito.
Vous établissez cette connexion privée en créant un point de terminaison d’interface optimisé par AWS PrivateLink. Nous créons une interface réseau de point de terminaison dans chaque sous-réseau que vous activez pour le point de terminaison d’interface. Il s'agit d'interfaces réseau gérées par le demandeur qui servent de point d'entrée pour le trafic destiné à Amazon Cognito.
Pour plus d’informations, consultez Accès aux Services AWS via AWS PrivateLink dans le Guide AWS PrivateLink .
Important
Les types d'authentification suivants ne sont actuellement pas pris en charge via AWS PrivateLink :
-
Autorisation machine à machine (M2M) avec le flux d'informations d'identification du client OAuth 2.0
-
Sign-in avec connexion gérée et interface utilisateur hébergée classique.
Rubriques
Flux d'authentification pour AWS PrivateLink intégration
Le tableau suivant décrit les flux d'authentification disponibles pour les clients dans les VPC et les politiques IAM que vous pouvez appliquer pour les régir. Les politiques que vous pouvez évaluer dans les demandes adressées à des groupes d'utilisateurs sont les politiques de contrôle des ressources (RCP), les politiques de point de terminaison VPC et les politiques basées sur l'identité.
| Ressource | Flux d'authentification | Politiques évaluées lorsque le client transite par un point de terminaison VPC | Politiques évaluées lorsque l'origine du client est publique |
|---|---|---|---|
| Groupe d'utilisateurs | Connexion gérée et connexion à l'interface utilisateur hébergée classique | Aucun (pas d'accès) 1 | Aucune 2 |
| Groupe d'utilisateurs | Machine-to-machine authorization | Aucun (pas d'accès) 1 | Aucune 2 |
| Groupe d'utilisateurs | Requêtes non authentifiées du SDK et de l'API REST | RCP, politiques relatives aux terminaux VPC 3 | RCP |
| Groupe d'utilisateurs | Requêtes authentifiées Sigv4 via le SDK et l'API REST | RCP, politiques relatives aux terminaux VPC, politiques basées sur l'identité 3 | RCP, politiques basées sur l'identité |
| Groupe d'identités | Requêtes non authentifiées du SDK et de l'API REST (flux de base et améliorés) | RCP, politiques relatives aux terminaux VPC | RCP |
| Groupe d'identités | Requêtes authentifiées Sigv4 via le SDK et l'API REST (flux authentifié par le développeur) Le flux d'authentification authentifié par le développeur | RCP, politiques basées sur l'identité | RCP, politiques basées sur l'identité |
1 Les points de terminaison VPC n'acceptent pas les demandes de domaines de pool d'utilisateurs. Si le client dispose d'une route vers Internet, le NAT est appliqué, rendant l'origine publique.
2 L'existence d'un domaine de pool d'utilisateurs empêche l'exécution de toutes les demandes de pool d'utilisateurs qui transitent par un point de terminaison VPC. Tout client peut emprunter des chemins de transport en commun uniquement vers le domaine du pool d'utilisateurs et les points de terminaison du service API, ce qui rend le point de terminaison VPC inutilisable pour le pool d'utilisateurs. Les groupes d'utilisateurs auxquels des domaines sont attribués ne sont pas compatibles avec AWS PrivateLink.
3 Aucun domaine ne doit être attribué au groupe d'utilisateurs.
Modes de fonctionnement pour AWS PrivateLink
Les exemples de modèles d'implémentation suivants sont pris en charge avec AWS PrivateLink Amazon Cognito.
| Ressource | Mise en œuvre | Actions |
|---|---|---|
| Groupe d'utilisateurs | Application SDK ou API REST entièrement privée |
|
| Groupe d'utilisateurs | Publics et privés |
|
| Groupe d'utilisateurs | Serveur d'autorisation OAuth 2.0 privé ou public |
|
| Groupe d'identités | Entièrement privé |
|
| Groupe d'identités | Publics et privés |
|
Considérations relatives à Amazon Cognito
Avant de configurer un point de terminaison d'interface pour Amazon Cognito, consultez les considérations du AWS PrivateLink Guide. Amazon Cognito permet d'appeler toutes les actions de l'API Amazon Cognito via le point de terminaison de l'interface. Pour plus d'informations sur ces opérations, consultez la référence de l'API des groupes d'utilisateurs Amazon Cognito et la référence de l'API Amazon Cognito Federated Identities.
Groupes d'utilisateurs et AWS PrivateLink
Vous pouvez envoyer des requêtes à tous les groupes d'utilisateurs (opérations d'API) via le point de terminaison de l'interface, mais pas aux opérations que votre application demande au serveur d'autorisation OAuth 2.0 du pool d'utilisateurs, par exemple les informations d'identification des clients, les autorisations et la connexion gérée.
L'API des groupes cognito-idp d'utilisateurs comporte des opérations d'API non authentifiées, authentifiées et autorisées par jeton. Vous pouvez accorder des autorisations pour les opérations authentifiées dans les politiques de contrôle des ressources et des terminaux VPC. Vous pouvez également accorder des autorisations pour les opérations non authentifiées et autorisées par jeton, contrairement aux politiques basées sur l'identité. Les types de politiques de contrôle des terminaux et des ressources VPC sont capables d'évaluer et de refuser ou d'autoriser les demandes relatives à des opérations autrement publiques.
Les demandes adressées aux points de terminaison de domaine sont également publiques, mais vous ne pouvez pas les évaluer dans les politiques. Le DNS privé VPC n'achemine pas les demandes de domaines de pool d'utilisateurs vers votre point de terminaison VPC. Vous ne pouvez faire des demandes de services de domaine que par le biais de chemins Internet publics. Pour de plus amples informations, veuillez consulter Effets des politiques sur le fonctionnement des groupes d'utilisateurs.
Rubriques
Opérations prises en charge
Les systèmes d'un VPC peuvent envoyer des demandes aux actions d'API du pool d'utilisateurs, mais pas aux points de terminaison du domaine du pool d'utilisateurs. Les flux de travail OpenID Connect (OIDC) et OAuth 2.0 qui utilisent des points de terminaison de domaine, par exemple le machine-to-machine (M2M), la connexion fédérée et l'attribution de codes d'autorisation, sont inaccessibles via les points de terminaison VPC. Le point de terminaison de redirection et d'autorisation Les politiques relatives aux terminaux VPC n'ont aucun effet sur ces flux de travail HTTP et ne peuvent pas les traiter. Les demandes adressées aux points de terminaison de domaine depuis un VPC échouent toujours au niveau du point de terminaison de l'interface, mais elles restent disponibles via le DNS public et le routage lorsque vous configurez des points de terminaison VPC pour vos groupes d'utilisateurs.
Pour empêcher l'attribution de domaines depuis les systèmes d'un VPC, Amazon Cognito bloque les CreateUserPoolDomain demandes au niveau du point de terminaison de l'interface. Cela empêche l'ajout de domaines à vos groupes d'utilisateurs à partir de systèmes qui se trouvent dans un VPC. Pour empêcher l'ajout d'un domaine à partir de tous les systèmes, appliquez une politique de contrôle des ressources (RCP) comme dans l'exemple suivant à votre Compte AWS. Cette politique bloque l'CreateUserPoolDomainaction contre le groupe d'utilisateurs spécifié.
{ "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" } ] }
Votre groupe d'utilisateurs possède peut-être un domaine et, dans tous les cas, ce domaine n'est pas disponible via AWS PrivateLink. Toutes les demandes d'API du pool d' SDK-based utilisateurs adressées aux points de terminaison de cognito-idp service sont AWS PrivateLink acceptées, à l'exception deCreateUserPoolDomain. Les points de terminaison des services API du pool d'utilisateurs et les points de terminaison des domaines restent toujours accessibles via des chemins Internet publics. Pour gérer l'accès depuis des sources publiques, implémentez des ACL AWS WAF Web.
Effets des politiques sur le fonctionnement des groupes d'utilisateurs
Toutes les opérations d'API du pool d'utilisateurs, même celles qui sont généralement publiques et non authentifiées, peuvent être contrôlées dans les politiques de point de terminaison VPC et les politiques de contrôle des ressources (RCP). Vous pouvez également appliquer des restrictions à l'accès au pool d'utilisateurs dans le cadre de politiques basées sur l'identité avec des clés de condition VPC. Seules les demandes qui incluent des informations d'authentification au format SIGv4 peuvent être contrôlées dans le cadre de politiques basées sur l'identité. Les opérations de connexion gérée et d'interface utilisateur hébergée classique constituent une catégorie distincte et ne sont pas éligibles au transit VPC ni à l'application de politiques de quelque type que ce soit à leurs actions.
Opérations non authentifiées
Les opérations Amazon Cognito pour les applications côté client ne sont pas authentifiées avec SIGv4. Des exemples d'opérations figurent dans l'exemple de politique à l'adresseCréation d’une politique de point de terminaison pour votre point de terminaison d’interface. D'autres exemples d'opérations non authentifiées sont GetUser et. AssociateSoftwareToken Lorsque vous ajoutez ces opérations à des politiques basées sur l'identité, elles n'ont aucun effet. Cependant, vous pouvez autoriser ou restreindre l'accès à ces actions dans les politiques relatives aux terminaux VPC et les Contrôle de l'accès à l'aide de politiques de contrôle des ressources RCP.
Les opérations non authentifiées ne sont pas associées à un principal IAM. Votre politique de point de terminaison VPC ou RCP doit autoriser tous les principaux à effectuer ces actions.
Opérations authentifiées
Les opérations d'API pour l'administration du pool d'utilisateurs et l'authentification côté serveur sont authentifiées avec SIGv4. Pour les opérations authentifiées, vous pouvez restreindre les mandants à l'aide de politiques de point de terminaison que vous appliquez au point de terminaison VPC, de politiques de contrôle des ressources de votre organisation et de politiques basées sur l'identité que vous appliquez aux mandants. Identity-based et les politiques de contrôle des ressources s'appuient sur des clés VPC-aware de condition basées sur le réseau telles que et. aws:SourceVpc aws:SourceVpce
Pour plus d'informations sur les classes d'opérations d'API côté serveur, côté client et administratives pour les groupes d'utilisateurs, consultez. Modèles d'autorisation pour l'authentification par API et SDK
Pools d'identités et AWS PrivateLink
Les pools d'identités Amazon Cognito prennent en charge toutes les opérations d'API via AWS PrivateLink.
Rubriques
Opérations prises en charge
Toutes les opérations d'API des pools d'identités sont prises en charge via le point de terminaison de l'interface. Les pools d'identités n'ont pas de points de terminaison de domaine et ne sont pas soumis aux mêmes restrictions. Cependant, les pools d'identités présentent des considérations spécifiques pour les contrôles d'accès basés sur le réseau en raison de leur intégration avec AWS STS.
Limitations du contexte réseau avec AWS STS intégration
Les pools d'identités utilisent AWS STS AssumeRoleWithWebIdentity des opérations pour fournir des AWS informations d'identification temporaires. Lorsque des groupes d'identités appellent AWS STS via AWS PrivateLink le flux d'authentification amélioré, les clés de contexte réseau telles que aws:SourceIpaws:SourceVpc, et aws:SourceVpce contiennent des valeurs provenant de l'infrastructure de service des pools d'identités, et non du contexte réseau de votre application.
Si vos politiques de confiance des rôles IAM ou vos politiques de contrôle des ressources (RCP) utilisent des clés de condition basées sur le réseau pour restreindre l'accès, les opérations des pools d'identités peuvent être refusées de manière inattendue. Pour remédier à cette limitation, vous pouvez utiliser l'une des approches suivantes :
Étiquettes principales pour l'identification des services
Marquez les rôles IAM utilisés avec les pools d'identités et modifiez vos politiques pour autoriser les opérations lorsque le principal possède la balise appropriée. Tout d'abord, ajoutez un tag à votre rôle dans le pool d'identités :
aws iam tag-role \ -\-role-nameMyIdentityPoolRole\ -\-tags Key=CognitoServiceCall,Value=true
Modifiez ensuite vos politiques basées sur le réseau pour autoriser les principaux balisés. Par exemple, dans 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" } } } ] }
Service-specific clés contextuelles
Les pools d'identités fournissent des clés contextuelles spécifiques au service pour l'autorisation au niveau des ressources dans les politiques des terminaux VPC et les RCP. Grâce à ces clés contextuelles, vous pouvez activer un contrôle d'accès précis et faire la distinction entre les utilisateurs authentifiés et non authentifiés dans les politiques.
Clés de contexte spécifiques au service disponibles pour les opérations non SIGv4 telles que GetId, GetCredentialsForIdentity, GetOpenIdToken, UnlinkIdentity
-
cognito-identity-unauth:IdentityPoolArn- Filtre l'accès par l'ARN du pool d'identités pour les utilisateurs non authentifiés -
cognito-identity-unauth:AccountId- Filtre l'accès par Compte AWS identifiant pour les utilisateurs non authentifiés -
cognito-identity-auth:IdentityPoolArn- Filtre l'accès par l'ARN du pool d'identités pour les utilisateurs authentifiés -
cognito-identity-auth:AccountId- Filtre l'accès par Compte AWS identifiant pour les utilisateurs authentifiés
Clés de contexte spécifiques au service disponibles pour les opérations SIGv4 telles que DeleteIdentities and DescribeIdentity
-
cognito-identity:IdentityPoolArn- Filtre l'accès par l'ARN du pool d'identités
Vous pouvez utiliser ces clés contextuelles dans les politiques relatives aux terminaux VPC pour restreindre l'accès en fonction de l'état d'authentification, comme le montre l'exemple suivant :
{ "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" } } } ] }
Contrôle de l'accès à l'aide de politiques de contrôle des ressources
Amazon Cognito prend en charge le contrôle de l'accès à vos ressources à l'aide de politiques de contrôle des ressources (RCP). Grâce aux clés de condition basées sur le réseau, les RCP peuvent définir les réseaux et les actions autorisés pour AWS PrivateLink accéder à vos groupes d'utilisateurs et à vos groupes d'identités. Les Action instructions contenues dans les RCP peuvent contrôler l'accès aux opérations d'API du pool d'utilisateurs authentifiés et non authentifiés.
Par exemple, l'exemple de politique suivant empêche l'accès à tous les groupes d'utilisateurs depuis un VPC spécifique.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "DenyCognitoAccessOutsideVPC", "Effect": "Deny", "Principal": "*", "Action": "cognito-idp:*", "Resource": "*", "Condition": { "StringNotEqualsIfExists": { "aws:SourceVpc": "vpc-02d6770f46ef1653b" } } } ] }
Création d'un point de terminaison d'interface pour Amazon Cognito
Vous pouvez créer un point de terminaison d'interface pour Amazon Cognito à l'aide de la console Amazon VPC ou du AWS Command Line Interface ()AWS CLI. Pour plus d’informations, consultez Création d’un point de terminaison d’interface dans le Guide AWS PrivateLink .
Créez un point de terminaison d'interface pour les groupes d'utilisateurs Amazon Cognito en utilisant le nom de service suivant :
com.amazonaws.region.cognito-idp
Créez un point de terminaison d'interface pour les groupes d'identités Amazon Cognito en utilisant le nom de service suivant :
com.amazonaws.region.cognito-identity
Si vous activez le DNS privé pour le point de terminaison de l'interface, vous pouvez envoyer des requêtes d'API à Amazon Cognito en utilisant son nom DNS régional par défaut. Par exemple, cognito-idp.us-east-1.amazonaws.com pour les groupes d'utilisateurs et cognito-identity.us-east-1.amazonaws.com pour les groupes d'identités.
Création d’une politique de point de terminaison pour votre point de terminaison d’interface
Une politique de point de terminaison est une ressource IAM que vous pouvez attacher à votre point de terminaison d’interface. La politique de point de terminaison par défaut autorise un accès complet à Amazon Cognito via le point de terminaison de l'interface. Pour contrôler l'accès autorisé à Amazon Cognito depuis votre VPC, associez une politique de point de terminaison personnalisée au point de terminaison de l'interface.
Une politique de point de terminaison spécifie les informations suivantes :
-
Les principaux qui peuvent effectuer des actions (Comptes AWS, utilisateurs IAM et rôles IAM).
-
Les actions qui peuvent être effectuées.
-
La ressource sur laquelle les actions peuvent être effectuées.
-
Les conditions qui doivent être remplies pour que la demande soit acceptée ou refusée.
Pour plus d’informations, consultez Contrôle de l’accès aux services à l’aide de politiques de point de terminaison dans le Guide AWS PrivateLink .
Exemple : politique de point de terminaison VPC pour les actions du pool d'utilisateurs
Voici un exemple de politique de point de terminaison personnalisée pour les groupes d'utilisateurs. Lorsque vous associez cette politique au point de terminaison de votre interface, elle accorde l'accès aux actions du groupe d'utilisateurs répertoriées pour tous les principaux sur toutes les ressources.
{ "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" } ] }
Exemple : politique de point de terminaison VPC pour les actions relatives au pool d'identités
Voici un exemple de politique de point de terminaison personnalisée pour les pools d'identités. Cette politique utilise des clés contextuelles spécifiques au service pour restreindre l'accès aux utilisateurs authentifiés à partir d'un pool d'identités spécifique.
{ "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" } } } ] }
Créez une politique basée sur l'identité pour AWS PrivateLink opérations
Identity-basedles politiques sont des ressources IAM que vous pouvez associer aux AWS directeurs. Vous pouvez contrôler l'accès à Amazon Cognito via des points de terminaison VPC grâce à des politiques opérationnelles basées sur l'identité. IAM-authenticated Contrairement aux politiques relatives aux terminaux, vous ne pouvez pas configurer d'autorisations pour les opérations non authentifiées dans les politiques basées sur l'identité. Les opérations authentifiées ou administratives nécessitent une autorisation Signature Version 4. Pour les groupes d'utilisateurs, les opérations authentifiées incluent les demandes d'authentification côté serveur AdminInitiateAuth et les demandes administratives similaires. UpdateUserPool Pour les pools d'identités, les opérations authentifiées incluent des requêtes administratives telles que DeleteIdentities et DescribeIdentity.
Une politique basée sur l'identité spécifie les informations suivantes :
-
Les actions qui peuvent être effectuées.
-
La ressource sur laquelle les actions peuvent être effectuées.
-
Les conditions qui doivent être remplies pour que la demande soit acceptée ou refusée.
Exemple : politique basée sur l'identité pour l'authentification côté serveur du pool d'utilisateurs
L'exemple de politique suivant autorise l'accès aux actions du groupe d'utilisateurs répertoriées dans le groupe d'utilisateurs spécifié, à partir du point de terminaison spécifié. Appliquez cette politique au rôle IAM assumé pour votre application 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" } } } ] }
Exemple : politique basée sur l'identité pour les opérations administratives du pool d'identités
L'exemple de politique suivant autorise l'accès aux actions administratives du pool d'identités depuis le point de terminaison VPC spécifié. Appliquez cette politique au principal IAM qui doit administrer le pool d'identités.
{ "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" } } } ] }