2

为了让实例访问 s3 存储桶中的特定文件夹,我在策略中得到了这个:

"Resource": "arn:aws:s3:::My_Bucket/db_backups/${aws:ResourceTag/Name}/*"

它不起作用。使用这样的标签的文档在这里:https ://docs.aws.amazon.com/IAM/latest/UserGuide/access_iam-tags.html

所以也许我想做的事情是不可能的。

但我不想为每个需要访问文件夹的实例创建一个新角色。还有其他方法可以解决这个问题吗?

4

2 回答 2

1

您可以使用IAM 策略元素:变量和标签 - AWS Identity and Access Management编写适用于多个 IAM 用户/IAM 角色的单一策略。

如该文档中所示,使用aws:userid变量将插入role-id:ec2-instance-id. 因此,可以授予实例访问与其角色和实例匹配的路径的权限,例如:

s3://bucketname/AROAU2DKSKXYQTOSDGTGX:i-abcd1234/*
于 2021-05-17T22:16:14.940 回答
0

aws:ResourceTag没有为 S3 资源定义。S3 仅在访问对象时将标签作为策略变量提供,并且在变量下s3:ExistingObjectTag

我必须在最近的一次参与中这样做,而使这变得困难的一件事是,并非所有服务都将其标签作为策略变量提供,而且那些都使用不同的名称。aws:ResourceTag只有当您访问的资源是 KMS 和其他一些服务时,才会提供该变量。

无论如何,我不确定你的说法是否有效。我认为你真正想要的是使用aws:PrincipalTag/Name- 即"Resource": "arn:aws:s3:::My_Bucket/db_backups/${aws:PrincipalTag/Name}/*". 这将嵌入Name用于访问资源的 IAM 委托人(用户或角色)的标签。

于 2021-05-17T22:38:33.217 回答