elasticloadbalancing 的 AWS IAM 策略:DescribeTargetHealth

elasticloadbalancing 的 AWS IAM 策略:DescribeTargetHealth

我正在尝试在目标组上运行这个 cli:

aws elbv2 describe-target-health

此 IAM 策略不起作用:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "Stmt1497933736509",
      "Action": [
        "elasticloadbalancing:DescribeTargetHealth"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:elasticloadbalancing:::*"
    }
  ]
}

错误信息:

An error occurred (AccessDenied) when calling the DescribeTargetHealth operation

这有效:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "Stmt1497933977893",
      "Action": [
        "elasticloadbalancing:DescribeTargetHealth"
      ],
      "Effect": "Allow",
      "Resource": "*"
    }
  ]
}

问题:为什么我必须使用 * 来包含所有 AWS 资源?我是否遗漏了任何显而易见的东西?

答案1

在某些情况下,ARN 中的路径可以包含通配符或星号 (*)。但您不能在 ARN 中指定资源类型的部分使用通配符。这是什么意思?

您可以指定“所有用户”:

"Resource": "arn:aws:iam::123456789012:user/*"

您可以指定“所有 S3 存储桶”:

"Resource": "arn:aws:s3:::*"

您可以指定“所有 AWS 资源”:

"Resource": "*"

有效 ARN 列表记录在ARNS 和 AWS 服务命名空间页面。对于ELB/ALB服务,唯一允许的 ARN 和资源是:

arn:aws:elasticloadbalancing:region:account-id:loadbalancer/app/load-balancer-name/load-balancer-id
arn:aws:elasticloadbalancing:region:account-id:listener/app/load-balancer-name/load-balancer-id/listener-id
arn:aws:elasticloadbalancing:region:account-id:listener-rule/app/load-balancer-name/load-balancer-id/listener-id/rule-id
arn:aws:elasticloadbalancing:region:account-id:targetgroup/target-group-name/target-group-id
arn:aws:elasticloadbalancing:region:account-id:loadbalancer/name

在文档中,红色的 ARN 组件是您可以使用的。对于ELB/ALB服务,您可以指定自己的region、、account-id名称ELBtarget-group-name/target-group-id。但您不能写出您尝试过的内容,因为这不是有效的 ARN:

"Resource": "arn:aws:elasticloadbalancing:::*"

相关内容