IAM用户具有永久的长期凭证,并用于直接与AWS服务交互。IAM角色没有任何凭据,无法直接请求AWS服务。IAM角色旨在由授权实体(如IAM用户、应用程序或AWS服务,如EC2)来承担。
我认为IAM角色用于联合登录(例如使用SAML令牌的IdP),并且它们没有像常规IAM用户那样可以下载的永久访问密钥(“IAM角色没有任何凭据”部分)。
当他们说IAM角色不能直接请求AWS服务时,他们是什么意思?我可以登录到AWS控制台(Web控制台)并创建堆栈等,所以这不可能是真的。
希望对您有所帮助。
IAM 中的主要参与者包括用户、组、角色和策略。要理解 AWS 的一点非常重要的事情就是:
AWS 中的所有内容都是 API
要执行任何 API 或其方法,首先我们必须对特定的用户/组/角色进行身份验证和授权。
例如:操作员想将对象放入 S3 存储桶中。此过程是在 AWS 中通过一组 API 调用发生的。我们基本上调用 S3 API 并调用其方法将对象放入特定存储桶中(比如说 put_object_in_s3
方法)。为此,我们可能需要提供存储桶的名称、对象以及最重要的是需要提供一组凭据(用户名和密码或密钥等),以便告诉 AWS API 引擎这个用户/组/角色是谁。
API 引擎所做的第一件事就是查看 API 发送的凭证。然后验证这些凭证(是否正确,是否激活),表明该请求来自实际有效的用户、组或角色。然后 API 引擎会获取与特定操作员(用户或角色)相关联的策略文档,并将它们作为单个视图进行评估。也就是说,我们检查在 API 中调用的操作是否为该操作员授权。
IAM用户 - 在IAM的上下文中,用户是一个“永久”的命名操作员(人或机器)。需要注意的是,它的凭证(凭证可能是用户名密码、访问密钥或秘密密钥)是永久性的,并且与该命名用户在一起。因此,AWS知道这个用户的身份验证方法(如用户名密码身份验证方法或秘密密钥方法等),因为它是永久的并与用户在一起。
IAM组 - 如上图所示,组是用户的集合。请注意,用户也可以属于多个组。
IAM角色 - 角色不是权限!!!角色也是一种身份验证方法,就像IAM用户和组一样。作为一个用户,角色也是一个操作员(可能是人,也可能是机器)。不同之处在于,具有角色的凭据是临时的。
策略文档 - 如前所述,角色不是权限。在AWS中,权限完全由称为策略文档
的对象处理。策略文档是JSON文档。策略文件可以直接附加到用户、组或角色上。当策略文档附加到任何上述操作员时,它们才可以执行相应的操作。
最后但并非最不重要的是,AWS中的身份验证是通过IAM用户、组和角色来完成的,而授权则由策略来完成。
当他们说 IAM 角色不能直接请求 AWS 服务时,他们是什么意思?我可以登录到 AWS 控制台(Web 控制台)并创建堆栈等,因此不可能是那样。
您是一个 IAM 用户(附有一些 IAM 角色)。
将 IAM 角色视为功能。
您赋予 IAM 用户功能(例如“可以创建 Lambda 函数”,“可以上传到 S3”)。
关于联合用户的说明:
来自http://docs.aws.amazon.com/IAM/latest/UserGuide/id.html:
可以将角色分配给通过外部身份提供者而不是IAM登录的联合用户。 AWS使用身份提供者传递的详细信息来确定将哪个角色映射到联合用户。
因此,联合用户类似于您可以附加IAM角色的IAM用户。只是你有一个外部身份提供者。
从技术上讲,在登录AWS控制台时,您并未使用角色作为身份。您正在使用自己的联合用户帐户(附有其自己的角色)作为您的身份。
IAM用户是一个人或应用程序可以使用的帐户。用户具有凭据以登录并执行分配给该帐户的特权的操作。
IAM角色是资源可以扮演的虚拟身份。例如,EC2实例可以扮演角色并使用分配的权限执行AWS命令。其他服务如API网关、Lambda、Kinesis和RDS等也是一样。
当他们说IAM角色不能直接请求AWS服务时,他们是什么意思?
角色本身无法执行任何任务,因为它必须由某人或某物扮演。某人也可以是通过身份联合登录然后扮演角色的人。
我对AWS几乎是新手,但我已经在后端应用程序中实现了类似的概念。因此,我会尝试从新手角度更简化这个问题。
头衔
,即具有此头衔的任何人都将具有一组策略(权限/访问)。例如,如果我们有一个“笔记记录员”的头衔,不同部门的任何人都可以被临时分配这个头衔,在会议、期间等。只有拥有此权限的人才能访问笔记应用程序。但是,我们可以有一些适合于一组的角色,例如,所有会计部门成员都可以拥有会计师的头衔,从而获得对账簿的访问权限。但是我们还可以有另一个名为“主管”的头衔,该头衔拥有删除账簿的访问权限,并且跨越所有部门。头衔
的承包商。好处在于,如果联合平台替换了用户,则无需停用旧用户并授予新用户访问权限,因为平台具有访问权限,而不是“用户”。IAM角色是一个实体,其具有由策略定义的特定访问权限。该访问权限不具有永久凭证(访问密钥和秘密访问密钥)-它使用“AssumeRole”方法工作,其中授予令牌以访问不同的AWS资源。
IAM用户具有永久访问密钥和秘密访问密钥,我们可以定义对资源的权限,IAM ROLE可以由IAM USER承担,因为它具有密钥-它可以随时访问资源...
IAM用户 - 访问AWS资源的用户/应用程序 IAM角色 - 一组可适用于用户或资源的权限/策略。
您可以将角色应用于IAM用户和AWS资源。 例如,将IAM角色应用于Lambda函数。函数只能使用该IAM角色。
IAM策略(权限-读取、写入等)适用于用户、组和角色。
用户-当用户想要访问AWS云中的任何内容时,必须分配IAM策略。
组 - 当一组用户被分配了共同的IAM策略。
角色 - 它在一个服务想要访问另一个服务时是必需的。服务必须被分配有策略的角色来执行AWS云中的某些操作。换句话说,我们不能直接在服务上分配策略,首先需要创建角色,然后在该角色上分配策略。
注意:角色不是为物理人员使用而设计的,而是仅供AWS服务使用。