简介
IAM 全称为 Identity and Access Management,身份和访问管理服务,是一个 global service
IAM 用于管理对 AWS 资源的访问权限和安全性
IAM 允许您创建和管理用户、组、角色和权限策略,以便精确控制对 AWS 服务和资源的访问
用户、组、角色、策略
IAM 用户
在 AWS 服务中,主要有三种用户:
- 根用户(Root User)
- IAM 用户(IAM User)
- 联合用户(Federated User)
根用户
拥有最大权限,是最开始通过邮箱注册的用户,是 AWS 账户的所有者,由于根用户
具有极高的权限,建议仅在必要情况下使用根用户
登录,以减少潜在的安全风险,因此才会有 IAM 服务
IAM 用户
是根用户或具有适当权限的IAM 管理员
通过 AWS Identity and Access Management(IAM)服务创建的用户,它们是与 AWS 账户关联的独立用户实体,拥有由管理员分配的一组权限。IAM 用户
可以用于管理和控制对 AWS 资源的访问,并可以根据需要进行身份验证和授权
联合用户
是通过联合身份提供商进行身份验证后访问 AWS 资源的用户,可以与IAM 用户
拥有相同的访问权限
本文主要是分享根用户
可以使用 IAM 服务创建和管理IAM 用户
,根用户
具有对IAM 用户
的完全控制权,包括创建、删除、修改和分配权限。通过使用IAM 用户
,可以更好地管理和限制对 AWS 资源的访问,并实现权限分离和安全最佳实践
根用户
最多可在 IAM 服务中创建 5000 个个人用户
,个人用户
在创建后默认是没有任何权限的,需要为每个用户定义独立的权限和访问策略,此处的个人用户
即IAM 用户
IAM 组
在 AWS Identity and Access Management (IAM) 中,可以使用组(Group)来组织和管理用户的权限。组是一组用户的集合,一个用户最多可以是 10 个组的成员。还可以为组分配权限策略,然后将用户添加到这些组中,以继承组的权限,即组内用户便拥有组策略对应的权限
组不仅可以组织用户,还可以为组内用户统一批量的分配权限(通过给组分配策略实现)
通过使用IAM 组
,您可以实现更加精细和灵活的权限管理,提高对 AWS 资源的访问控制和安全性。组织和分组用户可以更好地管理和维护权限策略,并减少重复的权限分配工作
IAM 角色
在 AWS Identity and Access Management(IAM)中,角色(Role)是一种用于授权访问AWS资源的身份实体。IAM 角色
可以被认证的实体(例如 AWS 服务、AWS 账户中的用户或应用程序)扮演,从而获取访问权限,而无需使用长期凭证(如密钥对或密码),而是使用临时访问凭证(通过 STS服务 生成)
IAM 角色
是一个可以具有特定权限的一个 IAM 身份,角色可以让IAM 用户
、应用程序和服务代入,一旦代入角色之后,他们的身份就变成这个角色,并拥有了分配给这个角色的权限
IAM 角色
权限划分策略有两种:
- 信任策略:定义谁可以担任这个角色
- 权限策略:给用户分配权限
IAM 策略
在 AWS Identity and Access Management(IAM)中,IAM 策略
是一个 JSON 文档,用于定义 AWS 资源的权限和访问控制。IAM 策略
是一组权限策略语句的集合,每个策略包含一个或多个声明,每个声明描述了一个特定的权限或访问控制规则
IAM 策略中的每个声明包含多个元素,包括:
- Sid:声明 ID,可选的声明标识符,用于在策略内部引用或组织声明
- Effect:指定声明允许或拒绝访问。它可以有两个值:"Allow"(允许)或 "Deny"(拒绝)
- Principal:定义应用策略的实体(IAM 用户、IAM 角色或 AWS 账号)
- Action:指定允许或拒绝的操作。它可以是特定的操作(如 "s3:GetObject")或通配符 "*",表示所有操作
- Resource:指定策略适用的 AWS 资源。它可以是特定资源(如 Amazon S3 存储桶)或通配符 "*",表示所有资源
- Condition:一个可选的元素,允许您在评估声明时指定附加条件
角色
和组
通过关联IAM 策略
可以为角色
和组
分配不同的访问权限,以满足特定的访问控制需求
策略定义权限内容,是定义权限的文档,采用 JSON 格式编写:
- 基于身份的策略,可以分配给 IAM 用户、组、角色
- 基于资源的策略,可以分配给特定资源
权限通过策略指定
IAM 组、 IAM 角色和 IAM 策略相关问题
IAM 组和 IAM 角色作用关系
在 IAM 中,角色(Role)可以与组(Group)以及用户(User)相互关联,实现权限的授权和管理
IAM 角色
不直接与IAM 组
关联,而是通过为组中的用户或直接为个体用户分配角色来实现组和角色之间的关联。这样一来,角色的权限将被授予组中的所有用户或特定的个体用户,以实现细粒度的访问控制
因此,角色可以与个体用户或组关联,并为它们提供相应的权限。这样可以实现更灵活和可扩展的权限管理和授权机制
IAM 组和 IAM 角色共同作用于一个用户,用户权限是什么
当用户属于一个组并被授予一个角色时,其权限的处理方式是基于最小权限原则,即权限叠加和最小化原则:
- 组权限叠加:当用户属于一个组时,组上定义的权限策略将与用户自身的权限策略叠加。用户将获得组的权限和个人权限的并集
- 角色权限最小化:当用户被授予一个角色时,角色上定义的权限策略将替代用户自身的权限策略。用户将获得角色定义的权限,而不再具备自身的个人权限
这意味着用户在组中拥有的权限与用户被授予的角色中的权限并不会发生冲突或叠加,而是遵循最小权限原则,取较小的权限集合作为用户的最终权限。这种最小权限原则可以确保权限的授权和管理更加精细和安全,避免了权限过度授予或权限冲突的情况
举一个例子:如果一个用户属于一个组,该组具有读取 S3 存储桶的权限,而该用户被授予一个角色,该角色具有写入 S3 存储桶的权限,那么该用户将获得的权限是最小权限集合,即仅具备读取 S3 存储桶的权限
IAM 中的权限叠加和最小化原则适用于组
和角色
的权限,而不包括其他实体如用户自身的权限。因此,在进行权限管理时,需要综合考虑组、角色和个人权限的交互和叠加关系,以确保最终的权限设置符合预期和安全要求
IAM 组、 IAM 角色和 IAM 策略简述
IAM 策略
是定义和控制对 AWS 资源的访问权限的主要机制IAM 角色
是一种 AWS 身份实体,用于代表实体或应用程序执行特定任务或操作IAM 组
是一种逻辑组合,用于集中管理用户的访问权限IAM 用户
是 AWS 中的一个实际身份,代表一个具体的人或实体
MFA 多因素身份验证
访问 AWS 可以通过以下三种途径:
- AWS 管理控制台:用户名+密码
- CLI:access key,访问秘钥
- API:access key,访问秘钥
通过 AWS 管理控制台进行登录时,一般会启用 MFA 来增加账号的安全性。因为启用了 MFA,系统会要求用户提供额外的身份验证因素,例如安全令牌或手机上收到的验证码
使用 CLI(命令行界面)或 API(应用程序接口)进行的登录或操作,MFA 通常不直接应用于此过程。CLI 和 API 通常使用 AWS 访问密钥进行身份验证,而不涉及 MFA。然而可以通过在 CLI 和 API 上设置访问权限来控制特定操作的访问,并要求使用者通过 AWS 账号的 MFA 进行身份验证
MFA 类型:
- 虚拟 MFA
- 物理 MFA,需要在第三方自行购买