我想使用基于身份的策略授予对特定 AWS Identity and Access Management (IAM) 角色会话的权限。
解决方法
要创建允许访问特定 IAM 角色会话的 IAM 策略,请使用 AWS 全局条件上下文键 aws:userid。
**注意:**如果在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请参阅 AWS CLI 错误故障排除。此外,请确保您使用的是最新版本的 AWS CLI。
aws: userid 全局条件键会检查发起请求的主体的唯一 ID 是否与 IAM 策略中指定的唯一 ID 相匹配。例如,要允许 IAM 角色会话在您的 AWS 账户中执行特定的 Amazon Elastic Compute Cloud (Amazon EC2) 操作,请创建 IAM 策略:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowASpecificRoleSession",
"Effect": "Allow",
"Action": [
"ec2:StartInstances",
"ec2:StopInstances",
"ec2:RebootInstances",
"ec2:TerminateInstances"
],
"Resource": "*",
"Condition": {
"StringEquals": {
"aws:userid": "AROA123456789EXAMPLE:&ExampleRoleSessionName"
}
}
}
]
}
**注意:**请将 aws: userid 替换为您角色的唯一 ID 和会话名称。
上述 IAM 策略通过 aws: userid 全局条件键授予 Amazon EC2 实例对 IAM 角色会话的访问权限。其他角色会话无法执行 Amazon EC2 操作。
要获取 IAM 角色的角色 ID,请运行 get-role AWS CLI 命令:
aws iam get-role --role-name role_name
**注意:**请将 role_name 替换为您的角色名称。
您将收到类似于以下内容的输出:
{
"Role": {
"Path": "/",
"RoleName": "Test-Role",
"RoleId": "AROA123456789EXAMPLE",
"Arn": "arn:aws:iam::444455556666:role/Role",
"CreateDate": "2023-08-04T12:37:14+00:00",
"AssumeRolePolicyDocument": "URL-encoded-JSON",
"Description": "Test Role",
"MaxSessionDuration": 3600,
"RoleLastUsed": {
"Region": "us-east-1",
"LastUsedDate": "2025-10-27T12:36:29+00:00"
}
}
}
在输出中,检查 RoleId 字符串。角色 ID 会在基于身份的策略中使用,以限制 Amazon EC2 实例对 IAM 角色会话的访问权限。
**注意:**aws:userid 全局条件键可用于任何类型的 IAM 策略,例如基于身份的策略、基于资源的策略以及权限边界策略。aws:userid 全局条件键的值取决于发起请求的主体类型。要确定不同主体类型的值,请参阅主体键值。
相关信息
如何限制 IAM 身份对特定 Amazon EC2 资源的访问?
如何使用 IAM 策略标签来限制 EC2 实例或 EBS 卷的创建和访问方式?