我将 ec2 实例角色应用到我的服务器,但我想先在本地自行切换到这些角色以测试权限
我尝试切换到一个但出现错误:
aws sts assume-role --role-arn arn:aws:iam::1234567890:role/myrole --role-session abc
An error occurred (AccessDenied) when calling the AssumeRole operation: User: arn:aws:iam::1234567890:user/meeee is not authorized to perform: sts:AssumeRole on resource: arn:aws:iam::1234567890:role/myrole
我是帐户管理员。我是否需要修改信任策略或其他内容以允许用户承担 EC2 实例角色?
答案1
要允许您的账户承担服务角色,您需要编辑角色并在 中添加您的账户Principal
。操作如下:
在IAM
-> Roles
->Your Service Role
进入Trust relationship
选项卡并点击Edit trust relationship
。您的信任关系将如下所示:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"Service": "ec2.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
您需要添加类似于以下内容的 AWS 账户:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"Service": "ec2.amazonaws.com",
"AWS": "arn:aws:iam::<your AWS account number>:root"
},
"Action": "sts:AssumeRole"
}
]
}
然后您将能够通过 获得凭证sts
。
获得所需结果的另一种方法是使用策略模拟器
在角色的Permissions
选项卡中,单击策略左侧的箭头,它将显示一个按钮Simulate policy
:
笔记
无法将 IAM 组用作Principal
。
请注意,组并不是真正的身份,因为它不能在基于资源或信任的策略中被标识为主体。它只是一种将策略同时附加到多个用户的方法。
参考
答案2
您可以从实例中获取凭证,并在以下帮助下在本地使用它获取实例凭证脚本。
- 使用所需的 EC2 角色启动您的实例
跑步
get-instance-credentials
[ec2-user@ip-...] aws-utils $ ./get-instance-credentials export AWS_ACCESS_KEY_ID="ASIA5G...ERJGI" export AWS_SECRET_ACCESS_KEY="8rTXu4R1...IM2" export AWS_SESSION_TOKEN="IQoJb3JpZ2luX2VjEE4aD...4zw=="
复制并粘贴这 3
export AWS_*
行到你的笔记本电脑上的本地 shell 中me@my-laptop ~ $ export AWS_ACCESS_KEY_ID="ASIA5G...ERJGI" me@my-laptop ~ $ export AWS_SECRET_ACCESS_KEY="8rTXu4R1...IM2" me@my-laptop ~ $ export AWS_SESSION_TOKEN="IQoJb3JpZ2luX2VjEE4aD...4zw=="
验证凭证
me@my-laptop ~ $ aws sts get-caller-identity { "UserId": "AROAXYZABC1234:i-0a1b2c3d", "Account": "123456789012", "Arn": "arn:aws:sts::123456789012:assumed-role/test-ec2-role/i-0a1b2c3d" }
正如你所看到的我@我的笔记本电脑我现在可以使用以下凭证访问 AWS测试-ec2-角色。
这样,您可以轻松测试 IAM 角色配置、测试您的应用程序等。
希望有帮助:)