Procédure d'utilisation d'un ID externe lorsque vous accordez l'accès à vos ressources AWS à un tiers - AWS Identity and Access Management

Procédure d'utilisation d'un ID externe lorsque vous accordez l'accès à vos ressources AWS à un tiers

Parfois, vous devez accorder à des tiers l'accès à vos ressources AWS (déléguer l'accès). Un aspect important de ce scénario est l'ID externe, informations facultatives que vous pouvez utiliser dans une politique d'approbation des rôles IAM afin de désigner l'utilisateur autorisé à endosser le rôle.

Important

AWS ne considère pas l'ID externe comme un secret. Une fois que vous avez créé un secret comme une paire de clés d'accès ou un mot de passe dans AWS, vous ne pouvez plus l'afficher. L'ID externe d'un rôle peut être vu par n'importe qui ayant l'autorisation de consulter le rôle.

Dans un environnement multi-locataire où vous prenez en charge plusieurs clients avec différents comptes AWS, nous vous recommandons d'utiliser un ID externe par compte AWS. Cet ID doit être une chaîne aléatoire générée par le tiers.

Pour exiger que le tiers fournisse un ID externe lors de la prise en charge d'un rôle, mettez à jour la politique d'approbation du rôle avec l'ID externe de votre choix.

Pour fournir un ID externe lorsque vous endossez un rôle, utilisez l’interface AWS CLI ou l'API AWS pour endosser ce rôle. Pour de plus amples informations, veuillez consulter l'opération d'API STS AssumeRole ou l'opération de CLI STS assume-rôle.

Par exemple, disons que vous décidez d'embaucher une entreprise tierce appelée Example Corp pour surveiller votre compte AWS et vous aider à optimiser les coûts. Pour effectuer le suivi de vos dépenses quotidiennes, Example Corp doit accéder à vos ressources AWS. Example Corp surveille également de nombreux autres comptes AWS pour d'autres clients.

Ne donnez pas à Exemple Corp l'accès à un utilisateur IAM et à ses informations d'identification à long terme dans votre compte AWS. Utilisez plutôt un rôle IAM et ses informations d'identification de sécurité temporaires. Un rôle IAM fournit un mécanisme visant à autoriser un tiers à accéder à vos ressources AWS sans avoir besoin de communiquer vos informations d'identification à long terme (par exemple, une clé d'accès d'utilisateur IAM).

Vous pouvez utiliser un rôle IAM pour établir une relation de confiance entre votre compte AWS et le compte Exemple Corp. Une fois cette relation établie, un membre du compte exemple Corp peut appeler l'API AssumeRole AWS Security Token Service pour obtenir des informations d'identification de sécurité temporaires. Il peut ensuite s'en servir pour accéder aux ressources AWS de votre compte.

Note

Pour plus d'informations sur AssumeRole et sur les autres opérations d'API AWS que vous pouvez appeler pour obtenir des informations d'identification temporaires, consultez Demande d'informations d'identification temporaires de sécurité.

Voici comment s'articule ce scénario :

  1. Vous embauchez Example Corp qui crée un identifiant client unique pour vous. Ils vous fournissent cet ID de client unique et leur numéro de compte AWS. Vous avez besoin de ces informations pour créer un rôle IAM à l'étape suivante.

    Note

    Exemple Corp peut utiliser n'importe quelle valeur de chaîne pour l'ExternalId, tant qu'elle est unique pour chaque client. Il peut s'agir d'un numéro de compte client ou encore d'une chaîne aléatoire de caractères, à condition que chaque client ait une valeur différente. Elle n'est pas censée être « secrète ». Example Corp doit fournir la valeur ExternalId à chaque client. Ce qui compte, c'est qu'elle soit générée par Example Corp et non par ses clients.

  2. Vous vous connectez à AWS et vous créez un rôle IAM qui accorde à Example Corp l'accès à vos ressources. Comme tout autre rôle IAM, celui-ci dispose de deux politiques, une politique d'autorisation et une politique d'approbation. La politique d'approbation du rôle spécifie qui peut endosser le rôle. Dans notre exemple de scénario, la politique spécifie le numéro de compte AWS d'Example Corp comme Principal. Cela permet aux identités de ce compte d'endosser le rôle. En outre, vous ajoutez un élément Condition à la politique d'approbation. Cette Condition teste la clé de contexte ExternalId afin de s'assurer qu'elle correspond à l'ID client unique issu d'Exemple Corp. Exemple :

    "Principal": {"AWS": "Example Corp's AWS Account ID"}, "Condition": {"StringEquals": {"sts:ExternalId": "Unique ID Assigned by Example Corp"}}
  3. La politique d'autorisation du rôle spécifie ce que le rôle permet à un utilisateur de faire. Par exemple, vous pouvez spécifier que le rôle permet à un utilisateur de gérer uniquement vos ressources Amazon EC2 et Amazon RDS, mais pas vos utilisateurs ou groupes IAM. Dans notre exemple de scénario, vous utilisez la politique d'autorisation pour accorder à Example Corp un accès en lecture seule à toutes les ressources de votre compte.

  4. Après avoir créé le rôle, vous devez fournir l'Amazon Resource Name (ARN) du rôle à Example Corp.

  5. Lorsque Example Corp doit accéder à vos ressources AWS, quelqu'un de l'entreprise appelle l'API AWS sts:AssumeRole. L'appel inclut l'ARN du rôle à endosser et le paramètre ExternalID qui correspond à son ID client.

Si la demande émane d'une personne utilisant le compte AWS d'Example Corp et que l'ARN du rôle et l'ID externe sont corrects, la demande aboutit. Elle fournit alors des informations d'identification de sécurité temporaires que le membre d'Example Corp peut utiliser pour accéder aux ressources AWS autorisées par le rôle.

Autrement dit, quand une politique de rôle inclut un ID externe, tous ceux qui souhaitent endosser le rôle doivent non seulement être spécifiés comme principaux dans le rôle, mais également inclure l'ID externe correct.

Pourquoi utiliser un ID externe ?

De manière abstraite, l'ID externe autorise l'utilisateur qui endosse le rôle d'indiquer les circonstances dans lesquels il travaille. Il permet également au titulaire du compte d'autoriser que le rôle soit endossé uniquement dans des circonstances spécifiques. La fonction principale de l'ID externe consiste à traiter et à prévenir Le problème de l’adjoint confus.

Quand est-il conseillé d'utiliser un ID externe ?

Utilisez un ID externe dans les situations suivantes :

  • Vous êtes propriétaire d'un compte AWS et vous avez configuré un rôle afin de permettre à un tiers d'accéder à d'autres comptes AWS en plus du vôtre. Vous devez demander à ce tiers un ID externe qu'il inclura lorsqu'il endossera votre rôle. Ensuite, vous vérifiez cet ID externe dans la politique d'approbation de votre rôle. Ainsi, la tierce partie peut endosser votre rôle uniquement lorsqu'elle agit en votre nom.

  • Vous êtes en position d'endosser des rôles pour le compte de différents clients comme Exemple Corp dans notre précédent scénario. Vous devez attribuer un ID externe unique à chaque client et leur demander de l'ajouter à leur politique d'approbation du rôle. Vous devez ensuite vous assurer de toujours inclure l'ID externe correct dans vos demandes pour endosser des rôles.

    Vous disposez probablement déjà d'un identifiant unique pour chacun de vos clients, et cet ID unique est suffisant pour être utilisé comme ID externe. L'ID externe n'est pas une valeur spéciale que vous devez créer de manière explicite, ou suivre séparément, juste à cette fin.

    Vous devez toujours spécifier l'ID externe dans vos appels d'API AssumeRole. De plus, lorsqu'un client vous fournit un ARN de rôle, vérifiez que vous pouvez endosser le rôle avec et sans l'ID externe correct. Si vous pouvez endosser le rôle sans l'ID externe approprié, ne stockez pas l'ARN du rôle du client dans votre système. Attendez que le client mette à jour la politique d'approbation du rôle pour demander l'ID externe. Ainsi, vous aidez vos clients à faire ce qu'il faut, ce qui vous permet de vous protéger tous les deux contre le problème du député confus.