首页 文章

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

提问于
浏览
7

IAM角色和IAM用户之间有什么区别? IAM FAQ有一个条目解释它,但它含糊不清,不太清楚:

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

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

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

5 回答

  • 9

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

    您是IAM用户(具有一些附加的IAM角色) .

    将IAM角色视为功能 .

    您提供IAM用户功能(例如“可以创建Lambda函数", "可以上传到S3”) .


    联邦用户注意事项:

    http://docs.aws.amazon.com/IAM/latest/UserGuide/id.html

    可以将角色分配给使用外部身份提供程序而非IAM登录的联合用户 . AWS使用身份提供程序传递的详细信息来确定将哪个角色映射到联合用户 .

    因此,联合用户类似于您可以将IAM角色附加到的IAM用户 . 除了您有外部身份提供者 .

    从技术上讲,当您登录AWS控制台时,您不会将角色用作您的身份 . 您正在使用联合用户帐户(具有自己的附加角色)作为您的身份 .

  • 7

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

    IAM控件:谁(身份验证)可以做什么(授权) in your AWS account . 使用IAM进行身份验证(who)是通过用户/组和角色完成的,而授权(由什么)由策略完成 .

    这个词

    • 用户 - 最终用户考虑人

    • Groups-一组权限(策略)下的一组用户

    • 角色 - 用于在一段时间内向特定参与者授予特定权限 . 这些演员可以 authenticated by AWS or some trusted external system.

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

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

    • 可以有密码吗?是 - >用户,否 - >角色

    • 可以有访问密钥吗?是 - >用户,否 - >角色

    • 可以属于一个群组吗?是 - >用户,否 - >角色

    • 可以与AWS资源相关联(例如EC2实例)?否 - >用户,是 - >角色

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

    • AWS服务角色(例如:EC2,Lambda,Redshift,...)

    • 跨账户访问:向其他AWS账户的用户授予权限,无论您是否控制这些账户 .

    • Identity Provider Access:向受信任的外部系统验证的用户授予权限 . AWS支持两种身份联合: - 基于Web的身份(如Facebook),Goolge-IAM支持通过OpenID Connect进行注册 - SAML 2.0身份(如Active Directory,LDAP) .

    要了解什么角色,您需要阅读其用例,我不想重新发明轮子所以请阅读以下AWS文档:https://aws.amazon.com/blogs/security/how-to-use-a-single-iam-user-to-easily-access-all-your-accounts-by-using-the-aws-cli/

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

    希望能帮助到你 .

  • 5

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

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

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

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

  • 0

    IAM中的主要参与者是 usersgroupsrolespolicies . 您需要了解AWS并且永远不会忘记这一点

    AWS中的所有内容都是API

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

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

    API Engine的第一件事就是查看使用API发送的凭据 . 然后,它验证那些(无论它们是否正确,活动)凭据,表明此请求来自实际的有效用户,组或角色 . 然后,API引擎所做的是(因为它现在知道谁发送了此API请求)它采用与特定运算符(用户或角色)关联的策略文档,并将它们评估为单个视图 . 那就是我们检查API中调用的操作是否被授权给该操作符 .

    IAM user - 在IAM的上下文中,用户是“永久”命名的运算符(人或机器) . 需要注意的是,它的凭据(凭证可能是用户名密码或访问密钥或密钥)是永久性的,并且与该命名用户保持一致 . 因此,AWS知道该用户的身份验证方法(用户名密码身份验证方法或密钥方法等)是什么(作为其永久性并留在用户身上) .

    IAM group - 如上图所示,组是用户的集合 . 请注意,用户也可以在多个组中 .

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

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

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

  • 3

    IAM用户 - 访问AWS资源的用户/应用程序IAM角色 - 可适用于用户或资源的权限/策略集 .

    您也可以将角色应用于IAM用户和AWS资源 . 例如,将IAM角色应用于Lambda函数 . 功能只能与该IAM角色一起使用 .

相关问题