是否可以使用标记值来控制对资源的访问



为了让实例访问s3存储桶中的特定文件夹,我在策略中有这样的内容:

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

它不起作用。使用类似标签的文档如下:https://docs.aws.amazon.com/IAM/latest/UserGuide/access_iam-tags.html

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

但我不想为每个需要访问文件夹的实例创建一个新角色。我还有别的办法吗?

您可以使用IAM策略元素:变量和标记-AWS标识和访问管理来编写适用于多个IAM用户/IAM角色的单个策略。

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

s3://bucketname/AROAU2DKSKXYQTOSDGTGX:i-abcd1234/*

aws:ResourceTag不是为S3资源定义的。S3在访问对象时只提供标签作为策略变量,并且它位于变量s3:ExistingObjectTag之下。

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

无论如何,我不确定你的说法是否有效。我认为您实际想要的是使用aws:PrincipalTag/Name,即"Resource": "arn:aws:s3:::My_Bucket/db_backups/${aws:PrincipalTag/Name}/*"。这将嵌入用于访问资源的IAM主体(用户或角色(的Name标记。

最新更新