Scénarios courants - AWS Identity and Access Management

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.

Scénarios courants

Note

Nous vous recommandons de demander à vos utilisateurs humains d'utiliser des informations d'identification temporaires lors de l'accès AWS. Avez-vous envisagé d'en utiliser AWS IAM Identity Center ? Vous pouvez utiliser IAM Identity Center pour gérer de manière centralisée l'accès à plusieurs comptes Comptes AWS et fournir aux utilisateurs un accès MFA sécurisé par authentification unique à tous les comptes qui leur sont attribués à partir d'un seul endroit. Avec IAM Identity Center, vous pouvez créer et gérer les identités des utilisateurs dans IAM Identity Center ou vous connecter facilement à votre fournisseur d'identité compatible SAML 2.0 existant. Pour plus d'informations, consultez Qu'est-ce qu'IAMIdentity Center ? dans le guide de AWS IAM Identity Center l'utilisateur.

Vous pouvez utiliser un fournisseur d'identité (IdP) externe pour gérer les identités des utilisateurs en dehors de... et de l'IdP externe AWS. Un IdP externe peut fournir des informations d'identité à l' AWS aide d'OpenID Connect (OIDC) ou du Security Assertion Markup Language (). SAML OIDCest couramment utilisé lorsqu'une application qui ne s'exécute pas AWS a besoin d'accéder à AWS des ressources.

Lorsque vous souhaitez configurer la fédération avec un IdP externe, vous créez un fournisseur d'IAMidentité pour fournir des AWS informations sur l'IdP externe et sa configuration. Cela établit un climat de confiance entre votre Compte AWS IdP et l'IdP externe. Les rubriques suivantes présentent des scénarios courants d'utilisation de fournisseurs IAM d'identité.

Amazon Cognito pour applications mobiles

La méthode préférée pour utiliser OIDC la fédération est d'utiliser Amazon Cognito. Par exemple, la développeuse Adèle est en train de créer un jeu pour appareil mobile dans lequel les données utilisateur, telles que les scores et les profils, sont stockées dans Amazon S3 et Amazon DynamoDB. Adèle pourrait également stocker ces données en local sur l'appareil et utiliser Amazon Cognito pour les maintenir synchronisées sur les différents appareils. Elle sait que pour des raisons de sécurité et de maintenance, des informations d'identification (credentials) de sécurité AWS à long terme ne doivent pas être distribuées avec le jeu. Elle sait également que le jeu pourrait avoir un grand nombre d'utilisateurs. Pour toutes ces raisons, elle ne souhaite pas créer de nouvelles identités d'utilisateur IAM pour chaque joueur. Elle construit plutôt le jeu afin que les utilisateurs puissent se connecter en utilisant une identité qu'ils ont déjà établie auprès d'un fournisseur d'identité externe (IdP) connu, tel que Login with Amazon, Facebook, Google ou tout autre IdP compatible avec OpenID Connect ()OIDC. Son jeu peut tirer parti du mécanisme d'authentification de l'un de ces fournisseurs afin de valider l'identité de l'utilisateur.

Pour permettre à l'application mobile d'accéder à ses AWS ressources, Adele enregistre d'abord un identifiant de développeur auprès de son choix IdPs. Elle configure également l'application avec chacun de ces fournisseurs. Dans le dossier Compte AWS qui contient le compartiment Amazon S3 et la table DynamoDB du jeu, Adele utilise Amazon Cognito pour créer des rôles qui définissent précisément les autorisations IAM dont le jeu a besoin. Si elle utilise un OIDC IdP, elle crée également une entité fournisseur d'IAMOIDCidentité pour établir un lien de confiance entre le pool d'identités Amazon Cognito qu'elle possède Compte AWS et l'IdP.

Dans le code de l'application, Adèle appelle l'interface de la connexion pour le fournisseur d'identité l'IdP qu'elle a configuré précédemment. L'IdP gère tous les détails relatifs à la connexion de l'utilisateur, et l'application obtient un jeton d'OAuthaccès ou un jeton d'OIDCidentification auprès du fournisseur. L'application d'Adele peut échanger ces informations d'authentification contre un ensemble d'informations de sécurité temporaires comprenant un identifiant de clé d' AWS accès, une clé d'accès secrète et un jeton de session. L'application peut ensuite utiliser ces informations d'identification pour accéder aux services Web proposés par AWS. L'application est limitée aux autorisations qui sont définies dans le rôle qu'elle endosse.

La figure suivante illustre un flux simplifié d'un fonctionnement possible, à l'aide de Login with Amazon comme fournisseur d'identité. Pour l'étape 2, l'application peut également utiliser Facebook, Google ou tout autre IdP OIDC compatible, mais cela n'est pas indiqué ici.

Exemple de flux de travail Amazon Cognito pour fédérer des utilisateurs pour une application mobile

  1. Un client démarre votre application sur un appareil mobile. L'application demande à l'utilisateur de se connecter.

  2. L'application utilise des ressources Login with Amazon pour accepter les informations d'identification de l'utilisateur.

  3. L'application utilise les API opérations Amazon Cognito GetId et GetCredentialsForIdentity échange le jeton Login with Amazon ID contre un jeton Amazon Cognito. Amazon Cognito, qui a été configuré pour approuver votre projet Login with Amazon (Connexion avec Amazon), génère un jeton qu'il échange contre des informations d'identification de session temporaires avec AWS STS.

  4. L'application reçoit des informations d'identification de sécurité temporaires d'Amazon Cognito. Votre application peut également utiliser le flux de travail de base (classique) d'Amazon Cognito pour récupérer des jetons lors de AWS STS l'utilisation. AssumeRoleWithWebIdentity Pour plus d'informations, consultez la rubrique Flux d'authentification des groupes d'identités (identités fédérées) dans le Guide du développeur Amazon Cognito.

  5. Les informations d'identification de sécurité temporaires peuvent être utilisées par l'application pour accéder aux ressources AWS requises par l'application pour fonctionner. Le rôle associé aux informations d'identification de sécurité temporaires et les politiques qui lui sont attribuées détermine ce qui est accessible.

Suivez le processus suivant pour configurer votre application afin qu'elle utilise Amazon Cognito afin d'authentifier les utilisateurs et de permettre à votre application d'accéder aux ressources. AWS Pour les étapes spécifiques permettant de réaliser ce scénario, consultez la documentation d'Amazon Cognito.

  1. (Facultatif) Inscrivez-vous en tant que développeur avec Login with Amazon, Facebook, Google ou tout autre IdP compatible avec OpenID Connect (OIDC) et configurez une ou plusieurs applications avec le fournisseur. Cette étape est facultative, car Amazon Cognito prend également en charge l'accès non authentifié (invité) pour vos utilisateurs.

  2. Accédez à Amazon Cognito dans le. AWS Management Console Utilisez l'assistant Amazon Cognito pour créer un groupe d'identités, qui est un conteneur utilisé par Amazon Cognito pour maintenir des identités d'utilisateur final organisées pour vos applications. Vous pouvez partager des pools d'identité entre des applications. Lorsque vous configurez un pool d'identités, Amazon Cognito crée un ou deux IAM rôles (un pour les identités authentifiées et un pour les identités « invités » non authentifiées) qui définissent les autorisations pour les utilisateurs d'Amazon Cognito.

  3. Intégrez AWSAmplify avec votre application et importez les fichiers requis pour utiliser Amazon Cognito.

  4. Créez une instance du fournisseur d'informations d'identification Amazon Cognito, en transmettant l'ID du pool d'identités, votre Compte AWS numéro et le nom de ressource Amazon (ARN) des rôles que vous avez associés au pool d'identités. L'assistant Amazon Cognito AWS Management Console fournit un exemple de code pour vous aider à démarrer.

  5. Lorsque votre application accède à une AWS ressource, transmettez l'instance du fournisseur d'informations d'identification à l'objet client, qui transmet les informations de sécurité temporaires au client. Les autorisations pour les informations d'identification sont basées sur le ou les rôles que vous avez définis précédemment.

Pour plus d’informations, consultez les ressources suivantes :

OIDCfédération pour applications mobiles

Pour de meilleurs résultats, utilisez Amazon Cognito comme courtier d'identité pour presque tous les scénarios de OIDC fédération. Amazon Cognito est facile à utiliser et offre des capacités supplémentaires, comme l'accès anonyme (sans authentification) et la synchronisation des données utilisateur entre les périphériques et les fournisseurs. Toutefois, si vous avez déjà créé une application qui utilise la OIDC fédération en appelant manuellement le AssumeRoleWithWebIdentityAPI, vous pouvez continuer à l'utiliser et vos applications fonctionneront toujours correctement.

Le processus d'utilisation de OIDC la fédération sans Amazon Cognito suit ce schéma général :

  1. Inscrivez-vous en tant que développeur auprès de l'IdP externe et configurez votre application avec l'ID unique qu'il vous donnera. (Différents IdPs utilisent une terminologie différente pour ce processus. Ce plan utilise le terme configurer pour désigner le processus d'identification de votre application auprès de l'IdP.) Chaque IdP vous donne un identifiant d'application qui lui est propre. Ainsi, si vous configurez la même application avec plusieurs IdPs, votre application en aura plusieurs. IDs Vous pouvez configurer plusieurs applications auprès de chaque fournisseur.

    Les liens externes suivants fournissent des informations sur l'utilisation de certains fournisseurs d'identité couramment utilisés (IdPs) :

    Important

    Si vous utilisez un fournisseur OIDC d'identité de Google, Facebook ou Amazon Cognito, ne créez pas de fournisseur d'IAMidentité distinct dans le. AWS Management Console AWS intègre ces fournisseurs OIDC d'identité et les met à votre disposition. Ignorez l'étape suivante et passez directement à la création de rôles à l'aide de votre fournisseur d'identité.

  2. Si vous utilisez un IdP autre que Google, Facebook ou Amazon Cognito OIDC compatible, créez IAM une entité de fournisseur d'identité pour celui-ci.

  3. DansIAM, créez un ou plusieurs rôles. Pour chaque rôle, définissez qui peut endosser le rôle (politique d'approbation) et les autorisations accordées aux utilisateurs de l'application (politique d'autorisation). En général, vous créez un rôle pour chaque IdP pris en charge par l'application. Par exemple, vous pouvez créer un rôle qui est endossé par une application si l'utilisateur se connecte via Login with Amazon, un deuxième rôle pour la même application s'il se connecte via Facebook, et un troisième rôle s'il se connecte via Google. Pour la relation d'approbation, spécifiez l'IdP (par exemple, Amazon.com) en tant que Principal (l'entité de confiance) et incluez un élément Condition qui correspond à l'ID d'application attribué par l'IdP. Des exemples de rôles pour différents fournisseurs sont présentés dans la rubrique Création d'un rôle pour un fournisseur d'identité tiers (fédération).

  4. Dans votre application, authentifiez vos utilisateurs en recourant à l'IdP. La procédure à suivre varie en fonction de l'IdP utilisé (Login with Amazon, Facebook ou Google) et la plateforme sur laquelle s'exécute votre application. Par exemple, la méthode d'authentification d'une application Android peut être différente de celle d'une application iOS ou d'une application Web JavaScript basée sur le Web.

    En règle générale, si l'utilisateur n'est pas déjà connecté, l'IdP affiche une page de connexion. Une fois qu'il a authentifié l'utilisateur, l'IdP retourne un jeton d'authentification contenant des informations sur l'utilisateur à l'application. Ces informations dépendent de ce que l'IdP expose et des informations que l'utilisateur est disposé à partager. Vous pouvez utiliser ces informations dans votre application.

  5. Dans l'application, effectuez un appel non signé à l'action AssumeRoleWithWebIdentity pour solliciter des informations d'identification de sécurité temporaires. Dans la demande, vous transmettez le jeton d'authentification de l'IdP et vous spécifiez le nom de ressource Amazon (ARN) pour le IAM rôle que vous avez créé pour cet IdP. AWS vérifie que le jeton est fiable et valide et, dans l'affirmative, renvoie les informations de sécurité temporaires à votre application qui disposent des autorisations pour le rôle que vous nommez dans la demande. La réponse inclut également des métadonnées se rapportant à l'utilisateur provenant de l'IdP telles que l'ID utilisateur unique que l'IdP associe à l'utilisateur.

  6. À l'aide des informations de sécurité temporaires fournies dans la AssumeRoleWithWebIdentity réponse, votre application envoie des demandes signées aux AWS API opérations. Les informations d'identification d'utilisateur fournies par l'IdP permettent de distinguer les utilisateurs de votre application. Par exemple, vous pouvez placer des objets dans des dossiers Amazon S3 qui incluent l'ID utilisateur sous forme de préfixes ou de suffixes. Ceci vous permet de créer des politiques d'accès qui verrouillent un dossier, afin que seul l'utilisateur ayant l'ID approprié soit autorisé à y accéder. Pour de plus amples informations, veuillez consulter AWS STS principes de session utilisateur fédérée.

  7. Votre application met généralement en cache ces informations d'identification de sécurité temporaires afin que vous n'ayez pas à en redemander à chaque fois que l'application doit envoyer une demande à AWS. Par défaut, les informations d'identification restent valides pendant une heure. Lorsque les informations d'identification expirent (ou avant le délai d'expiration), vous effectuez un autre appel à AssumeRoleWithWebIdentity pour obtenir un nouvel ensemble d'informations d'identification de sécurité temporaires. Selon l'IdP utilisé et la façon dont il gère ses jetons, il sera peut-être nécessaire d'actualiser le jeton de l'IdP avant un nouvel appel à AssumeRoleWithWebIdentity, car les jetons de l'IdP expirent généralement après un délai spécifié. Si vous utilisez le AWS SDK pour iOS ou AWS SDK pour Android, vous pouvez utiliser l'action A mazonSTSCredentials Provider, qui gère les informations d'identification IAM temporaires, notamment en les actualisant si nécessaire.