AWS IAM“身份”和“实体”之间的区别
Posted
技术标签:
【中文标题】AWS IAM“身份”和“实体”之间的区别【英文标题】:Difference between AWS IAM "Identity" and "Entity" 【发布时间】:2020-12-30 04:08:59 【问题描述】:我正在阅读 AWS 文档 Understanding how IAM works,但我对 identities 和 entities 的定义感到困惑。
身份 用于标识和分组的 IAM 资源对象。您可以将策略附加到 IAM 身份。其中包括用户、组和角色。
实体 AWS 用于身份验证的 IAM 资源对象。其中包括 IAM 用户、联合用户和代入的 IAM 角色。
这两者有什么区别?它们都是 IAM 资源对象。它们都包括用户和角色(尽管只有身份有组)。您只能将策略附加到身份而不是实体,但最终验证的是实体而不是身份。命名的不同只是语法的问题,还是两者有根本的不同?
【问题讨论】:
【参考方案1】:this diagram 从Wikipedia page on IAM 帮助了我的理解。
实体代表系统中的参与者,每个参与者可能有多个身份。
不幸的是,这并不能很好地转化为 IAM 资源,而且 IAM 用户指南本身在提及实体、身份和委托人时非常松散(它通常似乎可以互换使用)。正如您已经注意到的,身份是特殊的,因为它们可以直接附加策略。虽然某些实体可以附加策略(因为它们也恰好是身份),但这更多的是实现细节,而不是功能。
【讨论】:
【参考方案2】:我发现 AWS 的这个页面也很有用:
Understanding how IAM works - With Diagram
我同意这些术语经常可以互换使用,这是我能找到的最清楚的例子。
【讨论】:
【参考方案3】:据我所知,实体是关于身份验证的,而身份是关于授权的。
例如,假设我们可以有两个实体(Admin Andy 和 Janitor Jerry)。两者都可以登录,因为它们都是实体。管理员安迪(实体)是“用户”。作为“用户”,他还拥有“用户管理员安迪”的身份。 Janitor Jerry(实体)也是“用户”。作为“用户”,他拥有“用户清洁工杰瑞”的身份。
可能存在一个名为“Janitors”的组,该组有权访问拖把柜。这个“组”是一个身份而不是一个实体。然后,定义对拖把柜的访问权限的策略将附加到组而不是用户。
可能有另一个策略附加到 Jerry 的用户身份,称为“Jerries Locker Access”。
另一种处理“看门人”组的方法是定义一个名为“看门人”的角色,而不是定义一个名为“看门人”的组。您可以将拖把壁橱的策略附加到“管理员角色”,并将“管理员角色”附加到用户“Jerry”。
结论:
实体可以登录。
身份可以接收策略形式的权限。
--
至少我是这么理解的。如果我错了,请纠正我。
【讨论】:
以上是关于AWS IAM“身份”和“实体”之间的区别的主要内容,如果未能解决你的问题,请参考以下文章
使用来自 REST 客户端 Postman 的 AWS_IAM 和 API 密钥对 AWS API 网关进行身份验证
CloudFront 后面的 API Gateway 不支持 AWS_IAM 身份验证吗?
使用 IAM 身份验证和 Spring JDBC(DataSource 和 JdbcTemplace)访问 AWS RDS