APIAccès sécurisé avec MFA - 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.

APIAccès sécurisé avec MFA

IAMLes politiques vous permettent de définir les API opérations qu'un utilisateur est autorisé à effectuer. Vous pouvez renforcer la sécurité en demandant aux utilisateurs de s'authentifier à l'aide de l'authentification multifactorielle (MFA) avant de les autoriser à effectuer des actions particulièrement sensibles.

Par exemple, vous pouvez avoir une politique qui autorise un utilisateur à effectuer les StopInstances actions Amazon EC2 RunInstancesDescribeInstances, et. Mais vous souhaiterez peut-être restreindre une action destructrice telle que TerminateInstances et vous assurer que les utilisateurs ne peuvent effectuer cette action que s'ils s'authentifient auprès d'un AWS MFA appareil.

Présentation

L'ajout d'une MFA protection aux API opérations implique les tâches suivantes :

  1. L'administrateur configure un AWS MFA appareil pour chaque utilisateur qui doit effectuer des API demandes nécessitant une MFA authentification. Pour de plus amples informations, veuillez consulter AWS Authentification multifactorielle dans IAM.

  2. L'administrateur crée des politiques pour les utilisateurs qui incluent un Condition élément qui vérifie si l'utilisateur s'est authentifié avec un AWS MFA appareil.

  3. L'utilisateur appelle l'une des AWS STS API opérations prenant en charge les MFA paramètres : AssumeRoleou GetSessionToken. Dans le cadre de l'appel, l'utilisateur inclut l'identifiant du périphérique associé à l'utilisateur. L'utilisateur inclut également le mot de passe à usage unique basé sur le temps (TOTP) généré par l'appareil. Dans tous les cas, l'utilisateur récupère les informations d'identification de sécurité temporaires qu'il peut ensuite utiliser pour effectuer des demandes supplémentaires à AWS.

    Note

    MFAla protection des API opérations d'un service n'est disponible que si le service prend en charge les informations d'identification de sécurité temporaires. Pour connaître la liste de ces services, veuillez consulter Utilisation d'informations d'identification de sécurité temporaires pour accéder à AWS.

Si l'autorisation échoue, AWS renvoie un message d'erreur de refus d'accès (comme c'est le cas pour tout accès non autorisé). Lorsque des API politiques MFA protégées sont en place, AWS refuse l'accès aux API opérations spécifiées dans les politiques si l'utilisateur tente d'appeler une API opération sans MFA authentification valide. L'opération est également refusée si l'horodatage de la demande d'APIopération se situe en dehors de la plage autorisée spécifiée dans la politique. L'utilisateur doit être réauthentifié MFA en demandant de nouvelles informations d'identification de sécurité temporaires avec un MFA code et un numéro de série de l'appareil.

IAMpolitiques assorties de MFA conditions

Les politiques MFA assorties de conditions peuvent être associées aux éléments suivants :

  • Un utilisateur ou un groupe IAM

  • Une ressource telle qu'un compartiment Amazon S3, une SQS file d'attente Amazon ou une SNS rubrique Amazon

  • La stratégie d'approbation d'un rôle IAM qui peut être assumée par un utilisateur

Vous pouvez utiliser une MFA condition dans une politique pour vérifier les propriétés suivantes :

  • Existence : pour simplement vérifier que l'utilisateur s'est authentifiéMFA, vérifiez que la aws:MultiFactorAuthPresent clé est True en bon état. Bool La clé est uniquement présente lorsque l'utilisateur s'authentifie avec des informations d'identification à court terme. Les informations d'identification à long terme, telles que les clés d'accès, n'incluent pas cette clé.

  • Durée : si vous souhaitez accorder l'accès uniquement dans un délai spécifié après l'MFAauthentification, utilisez un type de condition numérique pour comparer l'âge de la aws:MultiFactorAuthAge clé à une valeur (3 600 secondes, par exemple). Notez que la aws:MultiFactorAuthAge clé n'est pas présente si elle n'MFAa pas été utilisée.

L'exemple suivant montre la politique de confiance d'un IAM rôle qui inclut une MFA condition permettant de tester l'existence d'une MFA authentification. Avec cette politique, les utilisateurs Compte AWS spécifiés dans l'Principalélément (à ACCOUNT-B-ID remplacer par un Compte AWS identifiant valide) peuvent assumer le rôle auquel cette politique est attachée. Cependant, ces utilisateurs ne peuvent assumer le rôle que s'ils sont authentifiés à l'aide MFA de.

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Principal": {"AWS": "ACCOUNT-B-ID"}, "Action": "sts:AssumeRole", "Condition": {"Bool": {"aws:MultiFactorAuthPresent": "true"}} } }

Pour plus d'informations sur les types de conditions pour MFAAWS clés contextuelles de condition globale, voirOpérateurs de condition numériques, etOpérateur de condition pour vérifier l'existence de clés de condition .

Choisir entre GetSessionToken et AssumeRole

AWS STS propose deux API opérations qui permettent aux utilisateurs de transmettre MFA des informations : GetSessionToken etAssumeRole. L'APIopération que l'utilisateur appelle pour obtenir des informations d'identification de sécurité temporaires dépend du scénario qui s'applique parmi les scénarios suivants.

Utilisez GetSessionToken pour les scénarios suivants :

  • APIOpérations d'appel qui accèdent aux ressources de la même manière Compte AWS que l'IAMutilisateur qui fait la demande. Notez que les informations d'identification temporaires issues d'une GetSessionToken demande ne peuvent être consultées IAM AWS STS API et utilisées que si vous incluez MFA des informations dans la demande d'informations d'identification. Dans la mesure où les informations d'identification temporaires renvoyées par GetSessionToken incluent MFA des informations, vous pouvez les vérifier MFA dans les API opérations individuelles effectuées à l'aide des informations d'identification.

  • Accès aux ressources protégées par des politiques basées sur les ressources qui incluent une MFA condition.

Le but de l'GetSessionTokenopération est d'authentifier l'utilisateur à l'aide MFA de. Vous ne pouvez pas utiliser de stratégies pour contrôler les opérations d’authentification.

Utilisez AssumeRole pour les scénarios suivants :

  • APIOpérations d'appel qui accèdent aux ressources de la même manière ou d'une autre Compte AWS. Les API appels peuvent inclure n'importe lequel IAM ou AWS STS API. Notez que pour protéger l'accès, vous devez l'appliquer MFA au moment où l'utilisateur assume le rôle. Les informations d'identification temporaires renvoyées par AssumeRole n'incluent MFA aucune information dans le contexte. Vous ne pouvez donc pas vérifier les API opérations individuellesMFA. C'est pourquoi vous devez utiliser GetSessionToken pour restreindre l'accès aux ressources protégées par des politiques basées sur les ressources.

Vous trouverez des détails sur l'implémentation de ces scénarios ultérieurement dans ce document.

Points importants concernant l'MFAaccès protégé API

Il est important de comprendre les aspects suivants de la MFA protection des API opérations :

  • MFAla protection n'est disponible qu'avec des informations d'identification de sécurité temporaires, qui doivent être obtenues avec AssumeRole ouGetSessionToken.

  • Vous ne pouvez pas utiliser d'APIaccès MFA protégé avec des Utilisateur racine d'un compte AWS informations d'identification.

  • Vous ne pouvez pas utiliser d'APIaccès MFA protégé avec des clés de sécurité U2F.

  • Les utilisateurs fédérés ne peuvent pas se voir attribuer un MFA appareil à utiliser avec les AWS services, ils ne peuvent donc pas accéder aux AWS ressources contrôlées parMFA. (Voir le point suivant.)

  • AWS STS APILes autres opérations renvoyant des informations d'identification temporaires ne sont pas prises en chargeMFA. Pour AssumeRoleWithWebIdentity etAssumeRoleWithSAML, l'utilisateur est authentifié par un fournisseur externe et AWS ne peut pas déterminer si ce fournisseur est requis. MFA CarGetFederationToken, n'MFAest pas nécessairement associé à un utilisateur spécifique.

  • De même, les informations d'identification à long terme (IAMclés d'accès utilisateur et clés d'accès utilisateur root) ne peuvent pas être utilisées avec un API accès MFA protégé car elles n'expirent pas.

  • AssumeRoleet GetSessionToken peut également être appelé sans MFA information. Dans ce cas, l'appelant récupère des informations d'identification de sécurité temporaires, mais les informations de session associées à ces informations d'identification temporaires n'indiquent pas que l'utilisateur s'est authentifié avec. MFA

  • Pour MFA protéger les API opérations, vous ajoutez des MFA conditions aux politiques. Une politique doit inclure la clé de aws:MultiFactorAuthPresent condition pour imposer l'utilisation deMFA. Pour la délégation entre comptes, la politique d'approbation du rôle doit inclure la clé de condition.

  • Lorsque vous autorisez une autre personne Compte AWS à accéder aux ressources de votre compte, la sécurité de vos ressources dépend de la configuration du compte approuvé (l'autre compte, pas le vôtre). Cela est vrai même lorsque vous imposez une authentification multi-facteur. Toute identité du compte sécurisé autorisée à créer des MFA appareils virtuels peut constituer une MFA réclamation conforme à cette partie de la politique de confiance de votre rôle. Avant d'autoriser les membres d'un autre compte à accéder à vos AWS ressources qui nécessitent une authentification à plusieurs facteurs, vous devez vous assurer que le propriétaire du compte de confiance suit les meilleures pratiques en matière de sécurité. Par exemple, le compte sécurisé doit restreindre l'accès aux API opérations sensibles, telles que les opérations de MFA gestion des appareils, à API des identités spécifiques et fiables.

  • Si une politique inclut une MFA condition, une demande est refusée si les utilisateurs n'ont pas été MFA authentifiés ou s'ils fournissent un identifiant d'MFAappareil non valide ou non valideTOTP.

Scénario : MFA protection pour la délégation entre comptes

Dans ce scénario, vous souhaitez déléguer l'accès aux IAM utilisateurs d'un autre compte, mais uniquement si les utilisateurs sont authentifiés avec un AWS MFA appareil. Pour plus d'informations sur la délégation entre comptes, consultezTermes et concepts relatifs aux rôles.

Imaginons que vous disposiez d'un compte A (le compte d'approbation qui est titulaire de la ressource auxquelles les utilisateurs ont accès), avec l'utilisateur IAM Anaya qui dispose de l'autorisation administrateur. Elle souhaite accorder l'accès à l'utilisateur Richard dans le compte B (le compte de confiance), mais elle veut s'assurer que Richard est authentifié MFA avant qu'il n'assume le rôle.

  1. Dans le compte fiduciaire A, Anaya crée un IAM rôle nommé CrossAccountRole et définit le principal de la politique de confiance du rôle comme étant l'identifiant du compte B. La politique de confiance autorise l' AWS STS AssumeRoleaction. Anaya ajoute également une MFA condition à la politique de confiance, comme dans l'exemple suivant.

    { "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Principal": {"AWS": "ACCOUNT-B-ID"}, "Action": "sts:AssumeRole", "Condition": {"Bool": {"aws:MultiFactorAuthPresent": "true"}} } }
  2. Anaya ajoute une politique d'autorisations au rôle qui spécifie ce que le rôle est autorisé à faire. La politique d'autorisation pour un rôle protégé n'est pas différente de toute autre politique d'autorisation de rôle. MFA L'exemple suivant montre la politique qu'Anaya ajoute au rôle : elle permet à un utilisateur endossant le rôle d'exécuter toutes les actions Amazon DynamoDB sur la table Books dans le compte A. Cette politique permet également l'action dynamodb:ListTables, qui est nécessaire pour effectuer des actions dans la console.

    Note

    La politique d'autorisation ne contient aucune MFA condition. Il est important de comprendre que l'MFAauthentification est utilisée uniquement pour déterminer si un utilisateur peut assumer le rôle. Une fois que l'utilisateur a assumé le rôle, aucune autre MFA vérification n'est effectuée.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "TableActions", "Effect": "Allow", "Action": "dynamodb:*", "Resource": "arn:aws:dynamodb:*:ACCOUNT-A-ID:table/Books" }, { "Sid": "ListTables", "Effect": "Allow", "Action": "dynamodb:ListTables", "Resource": "*" } ] }
  3. Dans le compte sécurisé B, l'administrateur s'assure que IAM l'utilisateur Richard est configuré avec un AWS MFA appareil et qu'il connaît l'identifiant de l'appareil. L'ID de l'appareil est le numéro de série s'il s'agit d'un MFA périphérique matériel, ou celui de l'appareil ARN s'il s'agit d'un MFA appareil virtuel.

  4. Dans le compte B, l'administrateur attache la politique suivante à l'utilisateur Richard (ou à un groupe dont il est membre) qui l'autorise à appeler l'action AssumeRole. La ressource est définie sur le ARN rôle créé par Anaya à l'étape 1. Notez que cette politique ne contient aucune MFA condition.

    { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": ["sts:AssumeRole"], "Resource": ["arn:aws:iam::ACCOUNT-A-ID:role/CrossAccountRole"] }] }
  5. Dans le compte B, Richard (ou une application qu'il exécute) appelle AssumeRole. L'APIappel inclut le ARN rôle à assumer (arn:aws:iam::ACCOUNT-A-ID:role/CrossAccountRole), l'identifiant de l'MFAappareil et le courant TOTP que Richard reçoit de son appareil.

    Lorsque Richard appelleAssumeRole, AWS détermine s'il possède des informations d'identification valides, y compris l'exigence deMFA. Le cas échéant, Richard réussit à endosser le rôle et peut exécuter n'importe quelle action DynamoDB sur la table nommée Books dans le compte A tout en utilisant les informations d'identification temporaires du rôle.

    Pour obtenir un exemple d'un programme qui appelle AssumeRole, consultez Appels AssumeRole avec authentification MFA.

Scénario : MFA protection de l'accès aux API opérations du compte courant

Dans ce scénario, vous devez vous assurer qu'un utilisateur Compte AWS peut accéder aux API opérations sensibles uniquement lorsqu'il est authentifié à l'aide d'un AWS MFA appareil.

Imaginez que vous avez un compte A contenant un groupe de développeurs qui doivent travailler avec des EC2 instances. Les développeurs standard peuvent utiliser les instances, mais ils n'ont pas l'autorisation d'utiliser les actions ec2:StopInstances ou ec2:TerminateInstances. Vous souhaitez limiter ces actions privilégiées « destructrices » à quelques utilisateurs de confiance, afin d'ajouter une MFA protection à la politique qui autorise ces EC2 actions Amazon sensibles.

Dans ce scénario, l'un des utilisateurs approuvé s'appelle Sofía. L'utilisatrice Anaya est administratrice du compte A.

  1. Anaya s'assure que Sofía est configurée avec un AWS MFA appareil et que Sofía connaît l'identifiant de l'appareil. L'ID de l'appareil est le numéro de série s'il s'agit d'un MFA périphérique matériel, ou celui de l'appareil ARN s'il s'agit d'un MFA appareil virtuel.

  2. Anaya crée un groupe appelé EC2-Admins et ajoute l'utilisatrice Sofía au groupe.

  3. Anaya attache la politique suivante au groupe EC2-Admins. Cette politique autorise les utilisateurs à appeler Amazon EC2 StopInstances et à effectuer TerminateInstances des actions uniquement si l'utilisateur s'est authentifié en utilisantMFA.

    { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "ec2:StopInstances", "ec2:TerminateInstances" ], "Resource": ["*"], "Condition": {"Bool": {"aws:MultiFactorAuthPresent": "true"}} }] }
  4. Note

    Pour que cette politique prenne effet, les utilisateurs doivent d'abord se déconnecter et se connecter à nouveau.

    Si l'utilisateur Sofía doit arrêter ou mettre fin à une EC2 instance Amazon, elle (ou une application qu'elle exécute) appelleGetSessionToken. Cette API opération transmet l'identifiant de l'MFAappareil et le courant TOTP que Sofía reçoit de son appareil.

  5. L'utilisateur Sofía (ou une application utilisée par Sofía) utilise les informations d'identification temporaires fournies par Amazon GetSessionToken pour appeler Amazon EC2 StopInstances ou TerminateInstances l'action.

    Pour obtenir un exemple d'un programme qui appelle GetSessionToken, consultez Appels GetSessionToken avec authentification MFA ci-après dans ce document.

Scénario : MFA protection des ressources dotées de politiques basées sur les ressources

Dans ce scénario, vous êtes propriétaire d'un compartiment S3, SQS d'une file d'attente ou d'une SNS rubrique. Vous voulez vous assurer que tous les Compte AWS utilisateurs accédant à la ressource sont authentifiés par un AWS MFA appareil.

Ce scénario illustre un moyen de fournir une MFA protection entre comptes sans obliger les utilisateurs à assumer un rôle au préalable. Dans ce cas, l'utilisateur peut accéder à la ressource si trois conditions sont remplies : l'utilisateur doit être authentifié parMFA, être en mesure d'obtenir des informations d'identification de GetSessionToken sécurité temporaires et disposer d'un compte approuvé par la politique de la ressource.

Imaginons que vous vous trouvez dans le compte A et que vous créez un compartiment S3. Vous souhaitez accorder l'accès à ce compartiment à des utilisateurs appartenant à plusieurs entités différentes Comptes AWS, mais uniquement s'ils sont authentifiés auprès de ces utilisateurs. MFA

Dans ce scénario, l'utilisateur Anaya est un administrateur du compte A. L'utilisateur Nikhil est un IAM utilisateur du compte C.

  1. Dans le compte A, Anaya crée un compartiment appelé Account-A-bucket.

  2. Anaya ajoute la politique de compartiment au compartiment. La politique autorise n'importe quel utilisateur du compte A, du compte B ou du compte C à exécuter les actions PutObject et DeleteObject Amazon S3 dans le compartiment. La politique inclut une MFA condition.

    { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": {"AWS": [ "ACCOUNT-A-ID", "ACCOUNT-B-ID", "ACCOUNT-C-ID" ]}, "Action": [ "s3:PutObject", "s3:DeleteObject" ], "Resource": ["arn:aws:s3:::ACCOUNT-A-BUCKET-NAME/*"], "Condition": {"Bool": {"aws:MultiFactorAuthPresent": "true"}} }] }
    Note

    Amazon S3 propose une fonctionnalité de MFA suppression pour l'accès au compte root (uniquement). Vous pouvez activer Amazon S3 MFA Delete lorsque vous définissez l'état de version du compartiment. Amazon S3 MFA Delete ne peut pas être appliqué à un IAM utilisateur et est géré indépendamment de l'APIaccès MFA protégé. Un IAM utilisateur autorisé à supprimer un compartiment ne peut pas supprimer un compartiment lorsque Amazon S3 MFA Delete est activé. Pour plus d'informations sur Amazon S3 MFA Delete, consultez MFASupprimer.

  3. Dans le compte C, un administrateur s'assure que l'utilisateur Nikhil est configuré avec un AWS MFA appareil et qu'il connaît l'identifiant de ce dernier. L'ID de l'appareil est le numéro de série s'il s'agit d'un MFA périphérique matériel, ou celui de l'appareil ARN s'il s'agit d'un MFA appareil virtuel.

  4. Dans le compte C, Nikhil (ou une application qu'il exécute) appelle GetSessionToken. L'appel inclut l'identifiant ARN de l'MFAappareil et le courant TOTP que Nikhil reçoit de son appareil.

  5. Nikhil (ou une application qu'il utilise) utilise les informations d'identification temporaires renvoyées par GetSessionToken pour appeler l'action PutObject Amazon S3 afin de télécharger un fichier dans Account-A-bucket.

    Pour obtenir un exemple d'un programme qui appelle GetSessionToken, consultez Appels GetSessionToken avec authentification MFA ci-après dans ce document.

    Note

    Les informations d'identification temporaires renvoyées par AssumeRole ne fonctionnent pas dans ce cas. Bien que l'utilisateur puisse fournir des MFA informations pour assumer un rôle, les informations d'identification temporaires renvoyées AssumeRole ne les MFA incluent pas. Ces informations sont nécessaires pour satisfaire à la MFA condition énoncée dans la politique.