¿Cómo puedo restringir el acceso a una sesión de rol de IAM específica mediante una política basada en identidad de IAM?

Última actualización: 31/01/2022

Quiero conceder permisos a una sesión específica del rol de AWS Identity and Access Management (IAM) con una política basada en la identidad.

Resolución

Cree una política de IAM para permitir el acceso a una sesión de rol de IAM específica mediante la clave de contexto de condición global de AWS aws:userid.

Nota: Si se producen errores al ejecutar comandos de la AWS Command Line Interface (AWS CLI), asegúrese de que está utilizando la versión más reciente de la AWS CLI.

La clave de condición global aws:userid comprueba si el ID único de la entidad principal que realiza la solicitud coincide con el ID único especificado en la política de IAM.

Por ejemplo, si desea permitir que una sesión de rol de IAM específica realice solo acciones específicas de Amazon Elastic Compute Cloud (Amazon EC2) en su cuenta de AWS. Cree una política de IAM similar a la siguiente:

{
    "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>"
                }
            }
        }
    ]
}

Esta política de IAM concede a la instancia de Amazon EC2 acceso a la sesión del rol de IAM en la clave de condición global aws:userid. Otras sesiones de rol no pueden realizar ninguna acción de Amazon EC2.

Para obtener el ID del rol de IAM, ejecute el siguiente comando de la AWS CLI:

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

Obtendrá un resultado similar al siguiente:

{
    "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"
    }
}

En el resultado, compruebe la cadena RoleId. El ID de rol se utiliza en la política basada en la identidad para dar acceso a las instancias de Amazon EC2 a la sesión de rol de IAM.

Nota: La clave de condición global aws:userid se puede utilizar en cualquier tipo de política de IAM, como políticas basadas en identidad, políticas basadas en recursos, políticas de límites de permisos, etc. Los valores de la clave de condición global aws:userid dependen del tipo de entidad principal que inicia la solicitud. Para determinar los valores de los diferentes tipos de entidades principales, consulte Información disponible en todas las solicitudes.