AWS IAM“身份”和“实体”之间的区别

Posted

技术标签:

【中文标题】AWS IAM“身份”和“实体”之间的区别【英文标题】:Difference between AWS IAM "Identity" and "Entity" 【发布时间】:2020-12-30 04:08:59 【问题描述】:

我正在阅读 AWS 文档 Understanding how IAM works,但我对 identitiesentities 的定义感到困惑。

身份 用于标识和分组的 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 网关进行身份验证

AWS 跨账户 Postgres RDS IAM 身份验证

CloudFront 后面的 API Gateway 不支持 AWS_IAM 身份验证吗?

使用 IAM 身份验证和 Spring JDBC(DataSource 和 JdbcTemplace)访问 AWS RDS

有啥方法可以限制 IAM 用户/假定角色在 AWS cognito 中启用未经身份验证的用户身份?

具有 Cognito 联合身份的 AWS AppSync IAM 授权