【问题标题】:How do you create an AutoScaling IAM Role that restricts resources?如何创建限制资源的 AutoScaling IAM 角色?
【发布时间】:2020-08-23 07:06:13
【问题描述】:

如果我正在创建自定义自动缩放策略并尝试仅限制使用 KJ 开始的资源,而创建 EMR 自动缩放状态失败,而不是如果我指定“*”那么它可以正常工作.. 有什么我下面的政策代码中缺少吗?

    resource "aws_iam_policy" "aut_policy" {
      name        = "test_autoscale_policy"
      #path        = "/"
      description = ""

      policy = <<EOF
    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Action": [
                    "cloudwatch:DescribeAlarms",
                    "elasticmapreduce:ListInstanceGroups",
                    "elasticmapreduce:ModifyInstanceGroups"
                ],
          "Effect": "Allow",
          "Resource": [
                       "arn:aws:elasticmapreduce:*:*:kj*",
                       "arn:aws:ec2:*:*:kj*",
                       "arn:aws:events:*:*:kj*",
                       "arn:aws:dynamodb:*:*:table/kj*",
                       "arn:aws:cloudwatch:*:*:kj*"]
        }
      ]
    }
    EOF
    }

如何创建限制资源的 AutoScaling IAM 角色?

【问题讨论】:

  • 添加从 terraform 得到的错误会很有帮助
  • 没有具体的错误..只有EMR,自动缩放状态为失败..rest EMR启动成功。

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


【解决方案1】:

IAM 操作 elasticmapreduce:ListInstanceselasticmapreduce:ModifyInstanceGroups 都需要如下所示的 cluster* 资源 ARN:

arn:${Partition}:elasticmapreduce:${Region}:${Account}:cluster/${ClusterId}

提供如下所示的资源 ARN 模式将不匹配任何受支持的资源,并且不允许自动缩放在您的资源上调用这些 Elastic MapReduce API:

arn:aws:elasticmapreduce:*:*:kj*

以下cluster* Resource ARN 应该可以正常工作:

arn:aws:elasticmapreduce:*:*:cluster/kj*

IAM 操作 cloudwatch:DescribeAlarms 需要如下所示的 alarm* 资源 ARN:

arn:${Partition}:cloudwatch:${Region}:${Account}:alarm:${AlarmName}

提供如下所示的资源 ARN 模式将不匹配任何受支持的资源,并且不允许自动缩放在您的资源上调用 CloudWatch API:

arn:aws:cloudwatch:*:*:kj*

以下alarm* Resource ARN 应该可以正常工作:

arn:aws:cloudwatch:*:*:alarm:kj*

指定了以下资源 ARN,但它们不是匹配的操作(无害,但令人困惑):

"arn:aws:ec2:*:*:kj*",
"arn:aws:events:*:*:kj*",
"arn:aws:dynamodb:*:*:table/kj*",

强烈建议将帐户限制在 ARN 中。这可能是最重要的限制,因为任何其他帐户都可以创建以 kj 开头的资源。

您可以在此处阅读有关 Amazon Elastic MapReduce 的操作、资源和条件键的更多信息:

https://docs.aws.amazon.com/IAM/latest/UserGuide/list_amazonelasticmapreduce.html

您可以在此处阅读有关 Amazon CloudWatch 的操作、资源和条件键的更多信息:

https://docs.aws.amazon.com/IAM/latest/UserGuide/list_amazoncloudwatch.html#amazoncloudwatch-alarm

【讨论】:

  • 不起作用.. 状态仍然是 Failed only.. 为简单起见,我删除了 kj 只是为了检查语法是否有效.. 但不走运.. 这是更新后的代码:"资源": [ "arn:aws:elasticmapreduce:*:*:cluster/*", "arn:aws:cloudwatch:*:*:alarm:*" ]
  • 嗯。那真不幸。对于那个很抱歉。在 CloudTrail 中查看自动缩放服务最近拒绝的 API 调用。它应该有受影响资源的 ARN。
  • 在 CloudTrail 上我没有找到任何被拒绝的资源.. 有什么不同的方法可以找到那些被拒绝的 API?
  • AWS 支持可能是您最好的选择。 CloudTrail 中应该会正常显示底层自动缩放失败。
  • 根据此文档,Auto Scaling 不支持指定资源 ARN。 docs.aws.amazon.com/IAM/latest/UserGuide/…
猜你喜欢
  • 2018-11-02
  • 2021-12-22
  • 2021-06-21
  • 2020-04-22
  • 2017-11-17
  • 2021-09-26
  • 2021-08-20
  • 2020-09-10
相关资源
最近更新 更多