我正试图在目标群体上运行这个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服务的情况下,您可以指定您自己的region , account-id , ELB名称, target-group-name/target-group-id等等,但你不能写你喜欢的东西,因为这是不是有效的ARN:
"Resource": "arn:aws:elasticloadbalancing:::*"