AWS中IAM角色和IAM用户之间的差异

sas*_*alm 20 federated-identity amazon-web-services amazon-iam

IAM角色和IAM用户之间有什么区别?该IAM常见问题有一个条目解释它,但它是模糊的,不是很清楚:

IAM用户具有永久的长期凭据,用于直接与AWS服务交互.IAM角色没有任何凭据,也无法向AWS服务发出直接请求.IAM角色应由授权实体承担,例如IAM用户,应用程序或AWS服务(如EC2).

我认为IAM角色用于联合登录(例如,使用带有SAML令牌的IdP),并且它们没有像常规IAM用户那样可以下载的永久访问密钥("IAM角色没有任何凭证"部分".

当他们说IAM角色无法直接向AWS服务发出请求时,他们的意思是什么?我可以登录AWS控制台(Web控制台)并创建堆栈等,因此不能这样.

小智 23

为了理解这些差异,让我们来看看IAM的基本知识

IAM控制:谁(身份验证)可以在您的AWS账户中执行什么(授权).使用IAM的身份验证(谁)使用用户/组和角色,而授权(什么)由策略完成.

这个词

  • 用户 - 最终用户考虑人
  • 组 - 一组权限(策略)下的一组用户

  • 角色 - 用于在特定持续时间内向特定参与者授予特定权限.这些参与者可以通过AWS或某些可信外部系统进行身份验证.

用户和角色使用策略进行授权.请记住,在您允许对策略执行某些操作之前,用户和角色无法执行任何操作.

回答以下问题,您将区分用户和角色?

  • 可以有密码吗?是 - >用户,否 - >角色
  • 可以有访问密钥吗?是 - >用户,否 - >角色
  • 可以属于一个群体吗?是 - >用户,否 - >角色
  • 可以与AWS资源相关联(例如EC2实例)?否 - >用户,是 - >角色

AWS为不同的方案支持3种角色类型

  • AWS服务角色(例如:EC2,Lambda,Redshift,...)
  • 跨账户访问:向其他AWS账户的用户授予权限,无论您是否控制这些账户.
  • 身份提供者访问权限:向受信任的外部系统验证的用户授予权限.AWS支持两种身份联合: - 基于Web的身份,如Facebook,Goolge-IAM支持通过OpenID Connect进行集成 - SAML 2.0身份,如Active Directory,LDAP.

要了解角色是什么,您需要阅读其用例,我不想重新发明轮子所以请阅读以下AWS文档:https: //aws.amazon.com/blogs/security/how-to-use -a单IAM用户对轻松存取所有的账户按使用最AWS-CLI /

https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_saml.html

希望能帮助到你.


das*_*mug 14

当他们说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控制台时,您不会将角色用作您的身份.您正在使用联合用户帐户(具有自己的附加角色)作为您的身份.


Ash*_*ana 14

IAM的主要参与者是用户角色策略。您需要了解的有关AWS的事情永远不会忘记:

AWS中的一切都是API

要执行任何API或其任何方法,首先我们必须进行身份验证,然后授权该特定用户/组/角色。

例如:操作员想要将一个对象放到S3存储桶中。此过程通过AWS内的一组API调用进行。基本上,我们调用S3 API及其一种将对象放入特定存储桶的方法(say方法put_object_in_s3)。为此,我们可能想要提供存储桶,对象的名称,最重要的是,我们需要提供一组凭证(带密码或私钥等的用户名)以告诉AWS API Engine该用户/组/角色是。

API引擎要做的第一件事是,查看与API一起发送的那些凭据。然后,它将验证那些(表明它们是正确的,活动的)凭据,以表明此请求来自实际的有效用户,组或角色。然后,API引擎要做的是(因为它现在知道谁发送了此API请求),它将获取与特定操作员(用户或角色)相关联的策略文档,并将它们作为单个视图进行评估。也就是说,我们检查API中调用的操作是否已授权给该操作员。

IAM用户 -在IAM的上下文中,用户是“永久”命名的操作员(人或机器)。需要注意的重要一点是,它的凭据(凭据可能是用户名密码,访问密钥或秘密密钥)是永久的,并且与该命名用户一起使用。因此,AWS知道该用户的身份验证方法(用户名密码身份验证方法或私钥方法等)是什么(作为其永久身份并留在用户手中)。

IAM组 -如上图所示,组是用户的集合。请注意,用户也可以分为多个组。

IAM角色 -角色不是权限!!!。就像IAM用户和组一样,角色也是一种身份验证方法。作为用户,角色也是操作员(可以是人,也可以是机器)。区别在于带有角色的凭据是临时的。

策略文档 -如前所述,角色不是“权限”。AWS中的权限完全由名为的对象处理Policy Documents。策略文档是JSON文档。策略文档可以直接附加到用户,组或角色。当策略文档附加到上述操作员中的任何一个时,则只有他们获得许可才能执行操作。策略文档列出了以下内容:特定API或API的通配符组(针对这些资源被列入白名单)以及这些API执行的条件(例如仅当此用户,组或角色在家庭网络中时允许,或者在任何位置都允许,仅允许在一天中的特定时间等)

最后但并非最不重要的一点是,AWS中的身份验证是通过(IAM用户,组和角色)完成的,而授权是通过策略完成的。

  • 解释得很好! (2认同)
  • 这是迄今为止最好的解释 (2认同)

jen*_*ter 5

IAM用户是可由个人或应用程序使用的帐户.用户具有登录凭据并使用分配给该帐户的权限执行操作的凭据.

IAM角色是资源可以假设的虚拟角色.例如,EC2实例可以承担角色并使用分配的权限执行AWS命令.其他服务也是如此,例如API网关,Lambda,Kinesis,RDS等.

当他们说IAM角色无法直接向AWS服务发出请求时,他们的意思是什么?

角色本身无法执行任何任务,因为它必须由某人或某事来承担.有人也可以是通过身份联合登录然后担任角色的人.