IAM角色和IAM用户之间有什么区别? IAM FAQ有一个条目解释它,但它含糊不清,不太清楚:
IAM用户具有永久性长期凭据,用于直接与AWS服务交互 . IAM角色没有任何凭据,也无法向AWS服务发出直接请求 . IAM角色应由授权实体承担,例如IAM用户,应用程序或AWS服务(如EC2) .
我认为IAM角色用于联合登录(例如,使用带有SAML令牌的IdP),并且它们没有像常规IAM用户那样可以下载的永久访问密钥(“IAM角色没有任何凭证“部分” .
当他们说IAM角色无法直接向AWS服务发出请求时,他们的意思是什么?我可以登录AWS Console(Web控制台)并创建堆栈等,因此不能这样 .
5 回答
您是IAM用户(具有一些附加的IAM角色) .
将IAM角色视为功能 .
您提供IAM用户功能(例如“可以创建Lambda函数", "可以上传到S3”) .
联邦用户注意事项:
从http://docs.aws.amazon.com/IAM/latest/UserGuide/id.html:
因此,联合用户类似于您可以将IAM角色附加到的IAM用户 . 除了您有外部身份提供者 .
从技术上讲,当您登录AWS控制台时,您不会将角色用作您的身份 . 您正在使用联合用户帐户(具有自己的附加角色)作为您的身份 .
为了理解这些差异,让我们来看看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
希望能帮助到你 .
IAM用户是可由个人或应用程序使用的帐户 . 用户具有登录凭据并使用分配给该帐户的权限执行操作的凭据 .
IAM角色是资源可以假设的虚拟角色 . 例如,EC2实例可以承担角色并使用分配的权限执行AWS命令 . 其他服务也是如此,例如API网关,Lambda,Kinesis,RDS等 .
角色本身无法执行任何任务,因为必须由某人或某事来承担 . 有人也可以是通过身份联合登录然后担任角色的人 .
IAM中的主要参与者是 users , groups , roles 和 policies . 您需要了解AWS并且永远不会忘记这一点
要执行任何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执行的条件(例如,仅当家庭网络中的此用户,组或角色允许或允许来自任何位置时,仅允许在一天中的某些时间等)IAM用户 - 访问AWS资源的用户/应用程序IAM角色 - 可适用于用户或资源的权限/策略集 .
您也可以将角色应用于IAM用户和AWS资源 . 例如,将IAM角色应用于Lambda函数 . 功能只能与该IAM角色一起使用 .