Comment puis-je restreindre l'accès à une session de rôle IAM spécifique à l'aide d'une politique basée sur l'identité IAM ?

Dernière mise à jour : 01/31/2022

Je veux accorder des autorisations à une session de rôle AWS Identity and Access Management (IAM) spécifique avec une politique basée sur l'identité.

Résolution

Créez une politique IAM pour autoriser l'accès à une session de rôle IAM spécifique à l'aide de la clé de contexte de condition globale AWS aws:userid.

Remarque : si vous recevez des erreurs lors de l'exécution de commandes AWS Command Line Interface (AWS CLI), vérifiez que vous utilisez la version AWS CLI la plus récente.

La clé de condition globale aws:userid vérifie si l'ID unique du principal à l'origine de la demande correspond à l'ID unique spécifié dans la politique IAM.

Par exemple, si vous voulez autoriser une session de rôle IAM spécifique à effectuer uniquement des actions Amazon Elastic Compute Cloud (Amazon EC2) spécifiques dans votre compte AWS. Créez ensuite une politique similaire à celle-ci :

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AllowASpecificRoleSession",
            "Effect": "Allow",
            "Action": [
                "ec2:StartInstances",
                "ec2:StopInstances",
                "ec2:RebootInstances",
                "ec2:TerminateInstances"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "aws:userid": "AROAXXXXXXXXXXXXXXXXX:<role-session-name>"
                }
            }
        }
    ]
}

Cette politique IAM accorde à l'instance Amazon EC2 l'accès à la session de rôle IAM dans la clé de condition globale aws:userid. Les autres sessions de rôle ne peuvent effectuer aucune action Amazon EC2.

Pour obtenir l'ID de rôle pour le rôle IAM, exécutez la commande AWS CLI suivante :

$ aws iam get-role --role-name <rolename>

Vous recevez un résultat similaire au suivant :

{
    "Role": {
        "Description": "Test Role",
        "AssumeRolePolicyDocument":"<URL-encoded-JSON>",
        "MaxSessionDuration": 3600,
        "RoleId": "AROA1234567890EXAMPLE",
        "CreateDate": "2019-11-13T16:45:56Z",
        "RoleName": "Test-Role",
        "Path": "/",
        "RoleLastUsed": {
            "Region": "us-east-1",
            "LastUsedDate": "2019-11-13T17:14:00Z"
        },
        "Arn": "arn:aws:iam::123456789012:role/Test-Role"
    }
}

Dans le résultat, recherchez la chaîneRoleId. L'ID de rôle est utilisé dans la politique basée sur l'identité pour étendre l'accès des instances Amazon EC2 à la session de rôle IAM.

Remarque : la clé de condition globale aws:userid peut être utilisée dans tout type de politique IAM, comme une politique basée sur l'identité, une politique basée sur les ressources, une politique de limites d'autorisation, etc. Les valeurs de la clé de condition globale aws:userid dépendent du type de principal à l'origine de la demande. Pour déterminer les valeurs des différents types de principaux, voir Informations disponibles dans toutes les demandes.