【问题标题】:AWS IAM Roles: Policy with permissions only over the instance itself and not every resourceAWS IAM 角色:仅对实例本身而不是每个资源具有权限的策略
【发布时间】:2020-07-16 23:14:01
【问题描述】:

我会尽力解释我的问题。

我想使用我自己的 RebootPolicy 创建一个 IAM 角色,当附加到 EC2 实例时,该角色允许该实例自行重启(但仅允许它自己)。目前我唯一能做的就是创建一个角色,其策略允许在所有实例中重新启动。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": "ec2:RebootInstances",
            "Resource": "*"
        }
    ]
}

我知道我可以在技术上将实例的特定 ID 添加到策略中,但我的想法是我可以在任何我想要的实例中使用该策略,而不仅仅是一个特定的实例。我尝试按照https://docs.aws.amazon.com/IAM/latest/UserGuide/list_amazonec2.html 的文档进行操作,但我不知道如何实现它。

有什么想法吗? 提前致谢!

【问题讨论】:

  • 为什么不直接使用sudo reboot?无需 API 调用!
  • @JohnRotenstein 我认为reboot 与从 API 重新启动略有不同。例如,reboot 不会更改临时 IP,但从 API 重新启动会。
  • 通过 API 调用重新启动将不会更改 IP 或丢失 Instance Store。
  • @JohnRotenstein 啊,谢谢你指出我!我错了。停止和启动会改变 IP。

标签: amazon-ec2 amazon-iam


【解决方案1】:

您可以使用ec2:SourceInstanceARN IAM 策略变量自行引用 EC2。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": "ec2:RebootInstances",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "aws:ARN": "${ec2:SourceInstanceARN}"
                }
            }
        }
    ]
}

【讨论】:

  • 哦,太好了!此处还显示:AWS IAM EC2 policy limited to originating instance
  • 谢谢!这正是我想要的。我试图仅使用“资源”属性来解决它,但似乎我们需要您使用它的方式的“条件”。奇怪的是,在创建策略时,我从 AWS 控制台收到此警告:“此策略不授予任何权限。要授予访问权限,策略必须具有具有适用资源或条件的操作。有关详细信息,请选择 Show其余的”。该政策仍然对我有用
  • @jbbb 警告有时很愚蠢。只是忽略他们。我很高兴它对你有用。
【解决方案2】:

我想你可以使用:$(aws:userid)

IAM Policy Elements: Variables and Tags 说:

aws:userid 将设置为 role-id:ec2-instance-id,其中 role-id 是角色的唯一 ID,ec2-instance-id 是 EC2 实例的唯一标识符。

【讨论】:

    猜你喜欢
    • 2018-11-02
    • 2016-05-15
    • 2015-03-13
    • 2019-08-06
    • 2020-03-02
    • 2019-07-13
    • 1970-01-01
    • 1970-01-01
    • 2019-04-18
    相关资源
    最近更新 更多