我的情况是这样:
我正在尝试通过AWS Cognito使用类unix的主目录控制对S3存储桶的访问。这些主目录应由用户组而非每个用户访问。即:
s3-bucket/home/group1
s3-bucket/home/group2
s3-bucket/home/group3
当使用组信息(组名,当前用作通配符的目录名的一部分)分别创建角色时,类似于this link,它可以工作。但是,我不想为每个组分别设置IAM角色。
在使用增强的流程之前,我可以通过STS的assumeRoleWithWebIdentity
调用通过进一步的策略来限制角色。但是,当仅使用认知模式时,它只希望应用一个角色。
我宁愿让它使用组(例如来自${cognito-identity.amazonaws.com:sub}
的组,而不是直接将策略应用于ID令牌的主题(例如,${cognito-identity.amazonaws.com:cognito:groups}
),这样我就不会必须为每个新组创建一个角色,变量本身将有助于定义资源范围。
有人有很多运气吗?还是通常在IAM资源定义中使用字符串数组/集?我正在尝试做
{"Fn::Select": [0, "${cognito-identity.amazonaws.com:cognito:groups}"]}
但是cloudformation抱怨
Template error: Fn::Select requires a list argument with two elements: an integer index and a list
。
谢谢!
P.S。我看到this page指出没有用于Cognito的特定于服务的密钥可在策略中使用,但是由于我看到人们使用sub
aud
{{ 1}}等在网络上其他示例中的策略中,尽管最终指南似乎没有得到很好的记录。