示例:将属性用于访问控制策略 - Amazon Cognito
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

示例:将属性用于访问控制策略

考虑这样一种场景:某公司法律部门的员工需要列出存储桶中属于其部门并按其安全级别分类的所有文件。假定此员工从身份提供商获得的令牌包含以下陈述。

陈述

{ . . "sub" : "57e7b692-4f66-480d-98b8-45a6729b4c88", "department" : "legal", "clearance" : "confidential", . . }

这些属性可以映射到标签,并在 IAM 权限策略中作为委托人标签引用。现在,您可以通过更改身份提供商端的用户配置文件来管理访问权限。或者,您可以使用名称或标签来更改资源端的属性,而无需更改策略本身。

以下权限策略有两个作用:

  • 允许列表访问以与用户部门名称匹配的前缀结尾的所有 s3 存储桶。

  • 允许对这些存储桶中的文件进行读取访问,只要文件上的清理标签与用户的清理属性匹配。

权限策略

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:List*", "Resource": "arn:aws:s3:::*-${aws:PrincipalTag/department}" }, { "Effect": "Allow", "Action": "s3:GetObject*", "Resource": "arn:aws:s3:::*-${aws:PrincipalTag/department}/*", "Condition": { "StringEquals": { "s3:ExistingObjectTag/clearance": "${aws:PrincipalTag/clearance}" } } } ] }

信任策略决定谁可担任此角色。信任关系策略允许使用 sts:AssumeRoleWithWebIdentitysts:TagSession 来允许访问。它添加了一部分条件,以将策略限制在您创建的身份池中,并确保该策略适用于经过身份验证的角色。

信任策略

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "cognito-identity.amazonaws.com" }, "Action": [ "sts:AssumeRoleWithWebIdentity", "sts:TagSession" ], "Condition": { "StringEquals": { "cognito-identity.amazonaws.com:aud": "IDENTITY-POOL-ID" }, "ForAnyValue:StringLike": { "cognito-identity.amazonaws.com:amr": "authenticated" } } } ] }