我正在为无服务器框架项目创建AWS IAM策略,我正在应用最小特权原则以确保该策略尽可能严格。为了限制策略的范围,我需要能够为每种资源标识ARN,例如:

arn:aws:logs:us-east-1:123456789012:log-group:my-log-group:*


我可以浏览CloudWatch和CloudFormation UI

问题:对于Amazon Web Services中的任何资源,我如何获取ARN?

评论

在arn:aws:logs:us-east-1:123456789012:log-group:my-log-group:* ...中,他们试图告诉您的是log-group是固定的文字字符串,而my- log-group是您的日志组的实际名称...但是不会以明显的方式显示。以my-开头的事情似乎是它们如何指示替换特定资源名称的位置。这就是您要找出的吗?否则,您的问题包含答案的链接,因此不清楚您要问什么。

我已经假设@ Michael-sqlbot专门针对日志组,但是,如果要为Lambda创建一个日志组,似乎有两个名称,它将以HelloLogGroup的逻辑ID和/ aws的物理ID结尾/ lambda / my-service-dev-hello。现在,我可以将它们插入我对ARN所了解的内容的末尾,看看它是否有效。我希望对于任何给定的arrayray资源,都有一种确定性的方法来派生ARN。

#1 楼

https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html列出了(我相信)亚马逊支持的所有ARN的架构。斜体红色文字表示您应该在自己的值中代替实际字符串,而不是文字字符串,并且每节中都有一些示例可帮助您弄清楚这一点。

请注意,IAM的限制性要小于乍一看。首先,大多数服务仅具有部分IAM支持。其次,通常仅以非常特定的方式来支持资源级别支持的事物。例如,授予子网上的所有权限ARN不会授予连接的用户完全管理该子网上的实例的能力,因为AttachVolume仅支持按卷ID进行限制等。第三,如果用户要使用Amazon Web控制台根本上,它们必须具有广泛的查看权限,因为控制台不是在考虑PoLP的情况下编写的,并且会发出不受资源限制的API调用(并且通常只是在javascript控制台中转储错误!)。