AWS 中 IAM 角色和 IAM 用户的区别
Difference between IAM role and IAM user in AWS
IAM 角色和 IAM 用户有什么区别? IAM FAQ 有一个条目解释它,但它含糊不清,不是很清楚:
An IAM user has permanent long-term credentials and is used to directly interact with AWS services. An IAM role does not have any credentials and cannot make direct requests to AWS services. IAM roles are meant to be assumed by authorized entities, such as IAM users, applications, or an AWS service such as EC2.
我认为 IAM 角色用于联合登录(例如使用带有 SAML 令牌的 IdP),并且他们没有像普通 IAM 用户那样可以下载的永久访问密钥("an IAM role doesn't have any credentials"部分)。
他们说 IAM 角色不能直接请求 AWS 服务是什么意思?我可以登录到 AWS 控制台(Web 控制台)并创建堆栈等,所以不可能。
IAM 用户 - user/application 访问 AWS 资源
IAM 角色 - 可适用于用户或资源的 permissions/policy 组。
您也可以将角色应用到 IAM 用户和 AWS 资源。
例如,将 IAM 角色应用于 Lambda 函数。函数只能使用该 IAM 角色。
What do they mean when they say an IAM role can't make direct requests to AWS services? I can login to AWS Console (the web console) and create stacks etc, so it can't be that.
您 是 IAM 用户(具有一些附加的 IAM 角色)。
将 IAM 角色视为 能力。
您授予 IAM 用户权限(例如“可以创建 Lambda 函数”,“可以上传到 S3”)。
联合用户注意事项:
来自http://docs.aws.amazon.com/IAM/latest/UserGuide/id.html:
A role can be assigned to a federated user who signs in by using an external identity provider instead of IAM. AWS uses details passed by the identity provider to determine which role is mapped to the federated user.
因此,联合用户类似于 IAM 用户,您可以将 IAM 角色附加到该用户。除了您有外部身份提供者。
从技术上讲,您在登录 AWS 控制台时并没有使用角色作为您的身份。您正在使用您的联合用户帐户(具有自己的附加角色)作为您的身份。
IAM 用户是个人或应用程序可以使用的帐户。用户具有登录凭据并使用分配给该帐户的权限执行操作。
IAM 角色是资源可以承担的虚拟角色。例如,一个 EC2 实例可以承担一个角色并使用分配的权限执行 AWS 命令。 API 网关、Lambda、Kinesis、RDS 等其他服务也是如此。
What do they mean when they say an IAM role can't make direct requests to AWS services?
角色本身不能执行任何任务,因为它必须由某人或某物承担。 somebody 也可以是通过身份联合登录然后担任角色的人。
要了解差异,让我们了解一下IAM基础知识
IAM 控制:谁(身份验证)可以在您的 AWS 账户中做什么(授权)。
IAM 的身份验证(谁)是通过 users/groups 和角色完成的,而授权(什么)是由策略完成的。
这里是术语
用户——终端用户想想人
组-一组权限(策略)下的一组用户
角色 - 用于在一段时间内向特定参与者授予特定权限。这些参与者可以由 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-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 中的主要参与者是用户、组、角色 和政策。关于 AWS,您需要了解并且永远不要忘记的是
Everything in AWS is an API
要执行任何 API 或其任何方法,首先我们必须验证然后授权特定的 user/group/role。
示例:操作员想要将对象放入 S3 存储桶。此过程通过 AWS 中的一组 API 调用发生。基本上我们调用 S3 API 和它的一个方法来将对象放入特定的桶中(比如方法 put_object_in_s3
)。为此,我们可能需要提供存储桶的名称、对象,最重要的是,我们需要提供一组凭据(带密码的用户名或密钥等),以便告诉 AWS API 引擎这是谁user/group/role是。
API 引擎做的第一件事是,查看与 API 一起发送的凭据。然后它验证那些(无论它们是否正确、有效)凭证,表明该请求来自实际有效的用户、组或角色。然后 API 引擎所做的是(因为它现在知道是谁发送了这个 API 请求)它获取与特定操作员(用户或角色)关联的策略文档并将它们作为单个视图进行评估。也就是说,我们检查 API 中调用的操作是否已为该操作员授权。
IAM 用户 - 在 IAM 的上下文中,用户是“永久”命名操作员(人或机器)。需要注意的重要一点是,它的凭据(凭据可能是用户名密码或访问密钥或密钥)是永久性的,并与指定用户保持一致。因此,AWS 知道该用户的身份验证方法是什么(用户名密码身份验证方法或密钥方法等)(因为它是永久的并与用户保持一致)。
IAM 组 - 如上图所示,组是用户的集合。请注意,一个用户也可以在多个组中。
IAM 角色 - 角色不是权限!!!。角色也是一种身份验证方法,就像 IAM 用户和组一样。作为用户,角色也是操作员(可以是人,可以是机器)。区别在于具有角色的凭据是临时的。
政策文件 - 如前所述,角色不是权限。 AWS 中的权限完全由名为 Policy Documents
的对象处理。政策文件是 JSON 文件。策略文档可以直接附加到用户、组或角色。当政策文件附加到上述任何操作员时,只有他们获得权限才能做事。
策略文档列出了以下内容:针对哪些资源列入白名单的特定 API 或 API 的通配符组,以及那些 API 执行的条件(例如仅当此用户、组或在家庭网络中的角色或从任何位置允许,仅在一天中的特定时间允许等)
Last but not least, Authentication in AWS is done via (IAM users,
groups and roles) whereas Authorization is done by Policies.
IAM 角色是具有策略定义的特定访问权限的实体。而那个访问是。它没有永久信用(访问密钥和秘密访问密钥)——它在“AssumeRole”方法上工作,在该方法中授予令牌以访问不同的 AWs 资源。
IAM 用户拥有永久访问密钥和秘密访问密钥,我们可以定义对资源的权限,IAM 用户可以承担 IAM 角色,因为它拥有密钥 - 它可以访问所有资源时间...
我几乎是 AWS 的新手,但我已经在后端应用程序中实现了类似的概念。因此,我会尝试从新手的角度来简化这一点。
- IAM 用户 - 这是注册到 AWS IAM 平台的实际帐户。这意味着这是一个 person/application 是一个实际的实体。请注意,这个实体什么也做不了,只是存在。就像我注册应用程序时一样,我的用户实体已创建,我可以使用提供的凭据登录并拥有个人资料。
- IAM 组 - 这是一个
collection of specific users
。虽然这也可以赋予身份,但重点是构成群体的特定个体。例如,我们如何根据员工的特定专业和技能将员工分组到组织中的部门。
- IAM 策略 - 这部分似乎最容易理解。这是一个特定的 rule/permission/access 资源,以 JSON 格式清楚地说明了该做和不该做的事情。每个策略都与特定资源有关。资源可以是 EBS 卷、Lamda 函数甚至 IAM 本身中的任何内容。
- IAM 角色 - 这就像具有特定职责的
title
,即具有此头衔的任何人都将拥有的一组策略 (permissions/access) .例如,如果我们有一个标题“Note-Taker”,那么来自不同部门的任何人都可以临时分配这个标题用于会议、期间等。只有具有此权限的人才能访问 note-taking 应用程序。但是,我们可以有一些适合团队的角色,例如会计部门的所有成员都可以拥有会计师的头衔,可以查阅会计账簿。但是我们可以再有一个director的头衔,有删除账簿的权限,这样就可以跨所有部门了。
- 联合用户 - 这些也是实体,但在公司 (IAM) 中没有配置文件。他们就像承包商一样,可以通过从联合平台获得的信任以及由于这些头衔而获得的访问权限来分配某些角色或
titles
。好消息是,如果联合平台替换用户,就没有理由停用旧用户并授予新用户访问权限,因为平台是拥有访问权限的平台,而不是“用户”。
IAM 角色和 IAM 用户有什么区别? IAM FAQ 有一个条目解释它,但它含糊不清,不是很清楚:
An IAM user has permanent long-term credentials and is used to directly interact with AWS services. An IAM role does not have any credentials and cannot make direct requests to AWS services. IAM roles are meant to be assumed by authorized entities, such as IAM users, applications, or an AWS service such as EC2.
我认为 IAM 角色用于联合登录(例如使用带有 SAML 令牌的 IdP),并且他们没有像普通 IAM 用户那样可以下载的永久访问密钥("an IAM role doesn't have any credentials"部分)。
他们说 IAM 角色不能直接请求 AWS 服务是什么意思?我可以登录到 AWS 控制台(Web 控制台)并创建堆栈等,所以不可能。
IAM 用户 - user/application 访问 AWS 资源 IAM 角色 - 可适用于用户或资源的 permissions/policy 组。
您也可以将角色应用到 IAM 用户和 AWS 资源。 例如,将 IAM 角色应用于 Lambda 函数。函数只能使用该 IAM 角色。
What do they mean when they say an IAM role can't make direct requests to AWS services? I can login to AWS Console (the web console) and create stacks etc, so it can't be that.
您 是 IAM 用户(具有一些附加的 IAM 角色)。
将 IAM 角色视为 能力。
您授予 IAM 用户权限(例如“可以创建 Lambda 函数”,“可以上传到 S3”)。
联合用户注意事项:
来自http://docs.aws.amazon.com/IAM/latest/UserGuide/id.html:
A role can be assigned to a federated user who signs in by using an external identity provider instead of IAM. AWS uses details passed by the identity provider to determine which role is mapped to the federated user.
因此,联合用户类似于 IAM 用户,您可以将 IAM 角色附加到该用户。除了您有外部身份提供者。
从技术上讲,您在登录 AWS 控制台时并没有使用角色作为您的身份。您正在使用您的联合用户帐户(具有自己的附加角色)作为您的身份。
IAM 用户是个人或应用程序可以使用的帐户。用户具有登录凭据并使用分配给该帐户的权限执行操作。
IAM 角色是资源可以承担的虚拟角色。例如,一个 EC2 实例可以承担一个角色并使用分配的权限执行 AWS 命令。 API 网关、Lambda、Kinesis、RDS 等其他服务也是如此。
What do they mean when they say an IAM role can't make direct requests to AWS services?
角色本身不能执行任何任务,因为它必须由某人或某物承担。 somebody 也可以是通过身份联合登录然后担任角色的人。
要了解差异,让我们了解一下IAM基础知识
IAM 控制:谁(身份验证)可以在您的 AWS 账户中做什么(授权)。 IAM 的身份验证(谁)是通过 users/groups 和角色完成的,而授权(什么)是由策略完成的。
这里是术语
用户——终端用户想想人
组-一组权限(策略)下的一组用户
角色 - 用于在一段时间内向特定参与者授予特定权限。这些参与者可以由 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-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 中的主要参与者是用户、组、角色 和政策。关于 AWS,您需要了解并且永远不要忘记的是
Everything in AWS is an API
要执行任何 API 或其任何方法,首先我们必须验证然后授权特定的 user/group/role。
示例:操作员想要将对象放入 S3 存储桶。此过程通过 AWS 中的一组 API 调用发生。基本上我们调用 S3 API 和它的一个方法来将对象放入特定的桶中(比如方法 put_object_in_s3
)。为此,我们可能需要提供存储桶的名称、对象,最重要的是,我们需要提供一组凭据(带密码的用户名或密钥等),以便告诉 AWS API 引擎这是谁user/group/role是。
API 引擎做的第一件事是,查看与 API 一起发送的凭据。然后它验证那些(无论它们是否正确、有效)凭证,表明该请求来自实际有效的用户、组或角色。然后 API 引擎所做的是(因为它现在知道是谁发送了这个 API 请求)它获取与特定操作员(用户或角色)关联的策略文档并将它们作为单个视图进行评估。也就是说,我们检查 API 中调用的操作是否已为该操作员授权。
IAM 用户 - 在 IAM 的上下文中,用户是“永久”命名操作员(人或机器)。需要注意的重要一点是,它的凭据(凭据可能是用户名密码或访问密钥或密钥)是永久性的,并与指定用户保持一致。因此,AWS 知道该用户的身份验证方法是什么(用户名密码身份验证方法或密钥方法等)(因为它是永久的并与用户保持一致)。
IAM 组 - 如上图所示,组是用户的集合。请注意,一个用户也可以在多个组中。
IAM 角色 - 角色不是权限!!!。角色也是一种身份验证方法,就像 IAM 用户和组一样。作为用户,角色也是操作员(可以是人,可以是机器)。区别在于具有角色的凭据是临时的。
政策文件 - 如前所述,角色不是权限。 AWS 中的权限完全由名为 Policy Documents
的对象处理。政策文件是 JSON 文件。策略文档可以直接附加到用户、组或角色。当政策文件附加到上述任何操作员时,只有他们获得权限才能做事。
策略文档列出了以下内容:针对哪些资源列入白名单的特定 API 或 API 的通配符组,以及那些 API 执行的条件(例如仅当此用户、组或在家庭网络中的角色或从任何位置允许,仅在一天中的特定时间允许等)
Last but not least, Authentication in AWS is done via (IAM users, groups and roles) whereas Authorization is done by Policies.
IAM 角色是具有策略定义的特定访问权限的实体。而那个访问是。它没有永久信用(访问密钥和秘密访问密钥)——它在“AssumeRole”方法上工作,在该方法中授予令牌以访问不同的 AWs 资源。
IAM 用户拥有永久访问密钥和秘密访问密钥,我们可以定义对资源的权限,IAM 用户可以承担 IAM 角色,因为它拥有密钥 - 它可以访问所有资源时间...
我几乎是 AWS 的新手,但我已经在后端应用程序中实现了类似的概念。因此,我会尝试从新手的角度来简化这一点。
- IAM 用户 - 这是注册到 AWS IAM 平台的实际帐户。这意味着这是一个 person/application 是一个实际的实体。请注意,这个实体什么也做不了,只是存在。就像我注册应用程序时一样,我的用户实体已创建,我可以使用提供的凭据登录并拥有个人资料。
- IAM 组 - 这是一个
collection of specific users
。虽然这也可以赋予身份,但重点是构成群体的特定个体。例如,我们如何根据员工的特定专业和技能将员工分组到组织中的部门。 - IAM 策略 - 这部分似乎最容易理解。这是一个特定的 rule/permission/access 资源,以 JSON 格式清楚地说明了该做和不该做的事情。每个策略都与特定资源有关。资源可以是 EBS 卷、Lamda 函数甚至 IAM 本身中的任何内容。
- IAM 角色 - 这就像具有特定职责的
title
,即具有此头衔的任何人都将拥有的一组策略 (permissions/access) .例如,如果我们有一个标题“Note-Taker”,那么来自不同部门的任何人都可以临时分配这个标题用于会议、期间等。只有具有此权限的人才能访问 note-taking 应用程序。但是,我们可以有一些适合团队的角色,例如会计部门的所有成员都可以拥有会计师的头衔,可以查阅会计账簿。但是我们可以再有一个director的头衔,有删除账簿的权限,这样就可以跨所有部门了。 - 联合用户 - 这些也是实体,但在公司 (IAM) 中没有配置文件。他们就像承包商一样,可以通过从联合平台获得的信任以及由于这些头衔而获得的访问权限来分配某些角色或
titles
。好消息是,如果联合平台替换用户,就没有理由停用旧用户并授予新用户访问权限,因为平台是拥有访问权限的平台,而不是“用户”。