我想为新创建的 IAM 用户设置权限,以便该用户只能访问给定区域中的特定 ec2 实例。
例如。我有 3 个 ec2 实例在 aws us-east(即弗吉尼亚北部)中运行我希望将用户重新启动、启动和停止限制为仅 1 台 ec2 服务器
我写了如下政策,但它不起作用。我不确定我在这里错过了什么。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "TheseActionsSupportResourceLevelPermissions",
"Effect": "Allow",
"Action": [
"ec2:StopInstances",
"ec2:StartInstances",
"ec2:RebootInstances",
"ec2:Describe*"
],
"Resource": "arn:aws:ec2:us-east-1:accountid:instance/i-d4f1b83a"
}
]
}
提前感谢您的帮助。
您的策略有效。我测试了它并成功地使用它来启动特定实例。
需要注意的一些事项:
- 在"资源"部分中,请务必将
accountid
替换为您自己的 12 位帐户 ID(可在"帐单/帐户"页面中找到) - IAM 仅支持有限数量的特定于资源的 API 调用。包括停止、启动和重新启动,但描述调用不是特定于资源的。
IAM 策略可以通过策略定义旁边的模拟策略链接进行测试,该链接链接到策略模拟器。这是调试权限问题的好工具。
我做了这样的事情,这对我有帮助。但是所有资源仍然对那个IAM用户可见,我实际上不想要。任何进一步的答案都将是一个很大的帮助。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "ec2:Describe*",
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"ec2:StartInstances",
"ec2:StopInstances",
"ec2:RebootInstances"
],
"Resource": "arn:aws:ec2:us-west-1:accountid:instance/instance-id",
"Condition": {
"StringEquals": {
"ec2:ResourceTag/Name": "Test"
}
}
}
]
}