如何允许具有IAM角色的EC2实例仅为itselt设置实例运行状况?

时间:2017-02-08 05:05:56

标签: amazon-web-services amazon-iam autoscaling

我想允许在我的EC2实例上运行的脚本指示它对自动缩放组是否健康。为此,我可以从我的脚本中运行以下命令:

aws --region $AWSREGION \
  autoscaling \
  set-instance-health \
  --instance-id $(curl http://169.254.169.254/latest/meta-data/instance-id) \
  --health-status Unhealthy

在授予IAM角色的任何特殊权限之前,我收到以下错误(正如我所期待的):

An error occurred (AccessDenied) when calling the SetInstanceHealth operation: User: arn:aws:sts::ACCOUNTID:assumed-role/ROLENAME/i-INSTANCEID is not authorized to perform: autoscaling:SetInstanceHealth

我可以将以下语句添加到我的IAM角色中来解决这个问题:

{
  "Action": [
    "autoscaling:SetInstanceHealth"
  ],
  "Effect": "Allow",
  "Resource": "*"
}

但不允许此角色的实例在所有实例上设置实例运行状况(假设他们知道实例ID)?我不希望一个受到破坏的实例能够将其他人从他们自己的ASG中带走。

1 个答案:

答案 0 :(得分:0)

Supported Resource-Level Permissions文档列出资源ARN 列中的 Auto Scaling组,表示您可以autoscaling:SetInstanceHealth Resource限制{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "autoscaling:SetInstanceHealth" ], "Resource": "arn:aws:autoscaling:REGION:ACCOUNT:autoScalingGroup:UUID:autoScalingGroupName/NAME" }, { "Effect": "Allow", "Action": [ "autoscaling:DescribeAutoScalingGroups", "cloudwatch:ListMetrics", "cloudwatch:GetMetricStatistics" ], "Resource": "*" } ] }

IAM Policy Simulator不同意:

  

此操作不支持资源级权限

...但我已经验证以下IAM政策允许查找自动扩展组的成员,检查其CloudWatch指标,然后设置自动扩展组成员的实例运行状况:

{{1}}