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

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用属性作为访问控制策略示例

考虑一种情况,即公司法律部门的员工需要列出存储桶中属于其部门并按其安全级别进行分类的所有文件。假定此员工从身份提供商获得的令牌包含以下声明。

申请

{ . . "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" } } } ] }