适用于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资源? 我在这里错过了什么?

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

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

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

你可以指定“全部S3桶”:

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

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

 "Resource": "*" 

有效的ARN列表logging在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服务的情况下,您可以指定您自己的regionaccount-idELB名称, target-group-name/target-group-id等等,但你不能写你喜欢的东西,因为这是不是有效的ARN:

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