Identity and Access Management (IAM) 是一个AWS的关键组成部分,因为它与保护和控制对 AWS 资源的访问直接相关。您将遇到有关以安全且可扩展的方式管理 IAM 用户、组、角色和策略的问题。
1.IAM 用户
-
定义:IAM 用户是您在 AWS 中创建的实体,用于表示与 AWS 资源交互的人员或服务。
-
最佳实践:
- 使用 IAM 用户表示个人和服务。
- 为 IAM 用户启用多重身份验证 (MFA) 以提高安全性。
- 避免将 root 账户用于日常任务。
-
重要概念:
- 创建和管理 IAM 用户。
- 通过 IAM 策略的用户权限。
2.IAM 组
-
定义:IAM 组是 IAM 用户的集合。您可以使用组一次向多个用户分配权限。
-
最佳实践:
- 使用组来管理具有类似访问需求的用户的权限。
- 每个用户都可以是多个组的成员。
-
重要概念:
- 将 IAM 用户分配到组。
- 通过 IAM 策略管理组权限。
3.IAM 角色
- 定义: IAM 角色是具有特定权限的 AWS 身份,您可以临时代入这些角色。角色通常由 AWS 服务、EC2 实例或联合身份用户用于对 AWS 资源执行操作。
- 最佳实践:
- 将角色用于跨账户访问、EC2 实例、Lambda 函数和其他服务。
- 通过仅授予角色用途所需的权限来使用最低权限。
- 使用角色信任策略来定义哪些实体可以代入角色。
- 重要概念:
- 使用 IAM 角色进行跨账户访问。
- 将角色用于 EC2 或 Lambda 等 AWS 服务(例如 EC2 实例角色)。
- 角色信任策略和权限策略。
4.IAM 策略
-
定义:IAM 策略是定义权限的文档。策略可以附加到 IAM 用户、组或角色。
-
策略类型:
- 托管策略:AWS 预定义策略或客户托管策略。
- 内联策略:直接嵌入到用户、组或角色中的策略。
-
最佳实践:
- 尽可能使用托管策略,以便于管理。
- 在特殊情况下,当您需要特定用户/组/角色的唯一权限时,请使用内联策略。
-
重要概念:
- IAM 策略的 JSON 语法。
- 策略结构:版本、语句、效果、操作、资源、条件。
- 权限:允许 vs 拒绝、显式拒绝 vs 隐式允许。
- 最小权限原则。
- 关键 AWS 托管策略(例如,"AdministratorAccess"、"PowerUserAccess")。
5.IAM 策略评估逻辑
-
定义:IAM 使用特定的评估逻辑来确定是允许还是拒绝请求。它涉及 允许 和 拒绝 权限的概念,以及 拒绝 始终覆盖 允许 的事实。
-
评估流程:
- 如果用户具有显式 拒绝 权限,则无论任何允许权限如何,都会拒绝访问。
- 如果存在 No explicit deny ,则 AWS 接下来会评估 Allow 权限。
-
重要概念:
- 显式允许 vs 隐式拒绝。
- 涉及多个策略(用户、组和角色策略)时的评估逻辑。
- 将 IAM 策略元素与基于资源的策略 (e.g.,S3 存储桶策略)。
6.IAM 最佳实践和安全性
- 最低权限: 始终仅授予用户或服务执行其任务所需的权限。
- 使用 MFA:为 IAM 用户启用 MFA,尤其是对于具有管理权限的账户。
- 定期轮换凭证:定期轮换 IAM 用户访问密钥。
- 使用组进行权限管理: 将权限分配给组,而不是直接分配给单个用户。
- 使用基于角色的访问控制 (RBAC): 使用 IAM 角色向用户或服务(如 EC2 实例、Lambda 等)授予临时访问权限。
- 策略版本控制和审计: 使用 AWS CloudTrail 跟踪策略更改并监控访问日志。
7.联合访问和身份提供商
- 定义: 联合允许用户使用现有身份(例如,公司目录、Google、Facebook)登录 AWS。
- AWS 对联合身份验证的支持: AWS 支持通过身份提供商 (IdP)(例如 Active Directory、Google 或基于 SAML 的 IdP)进行联合身份验证。
- 重要概念:
- 使用 AWS Cognito 或 SAML 进行联合身份验证。
- 使用 IAM 角色配置联合身份用户以进行访问控制。
- 角色承担和联合流。
8.跨账户访问
-
定义: 跨账户访问使一个 AWS 账户能够访问另一个账户中的资源。
-
最佳实践:
- 使用 IAM 角色在账户之间授予权限。
- 确保源账号与目标账号有信任关系。
-
重要概念:
- 信任策略,用于定义哪些账户或服务可以代入角色。
- 资源策略(例如 S3 存储桶策略),用于向其他账户授予权限。
9.服务控制策略 (SCP)
-
定义: SCP 在 AWS Organizations 中用于管理跨多个 AWS 账户的权限。
-
最佳实践:
- 使用 SCP 在整个组织中实施权限边界。
- SCP 不授予权限,但可以限制用户可以在组织中的 AWS 账户 之间执行的操作。
-
重要概念:
- 在组织级别管理权限。
- 限制对特定 AWS 服务的访问。
10.IAM 凭证报告和访问顾问
- 凭证报告:此报告提供有关所有 IAM 用户及其关联凭证(例如密码、访问密钥)的详细信息。
- 访问顾问:显示用户访问了哪些服务以及已授予的权限。
11.理解IAM概念
- What is IAM:AWS Identity and Access Management(IAM)可让用户安全地控制对AWS服务和资源的访问。
- IAM Users vs. IAM Roles vs. IAM Groups:用户是人员或服务的个体身份;角色是为用户、服务或应用程序代表用户执行操作的临时凭证;组是具有相同权限的IAM用户集合。
- Policies:托管策略由AWS预定义或由客户管理,内联策略直接嵌入用户、组或角色中。
12.IAM用户权限和策略
- Default Permission:新IAM用户默认无任何权限。
- Grant Permissions:可直接将IAM策略附加到用户、组或角色,也可使用托管策略或内联策略。
- Group Permissions:组的权限适用于组内所有用户,用户可属于多个组。
13.IAM角色
- Use Cases:当需要向AWS资源或服务授予临时访问权限时,如EC2实例、Lambda函数或跨账户访问,使用角色进行服务间通信或委托对AWS资源的访问。
- Assuming vs. Attaching:假设角色允许用户或服务获取临时安全凭证以根据角色策略执行特定操作,而附加策略则是永久地(或直到策略被修改)授予用户、组或角色特定权限。
- Trust Relationship:信任策略定义了哪些实体(如用户、角色或服务)可以承担该角色,与权限策略是分开的。
14.IAM最佳实践
- Security Practices:遵循最小权限原则,仅授予执行任务所需的权限;为敏感操作启用多因素身份验证(MFA);定期轮换访问密钥并删除未使用的密钥;使用组大规模管理权限。
- Least Privilege Principle:始终只授予执行任务所需的最小权限,以降低未经授权访问或意外修改关键资源的风险。
15.IAM策略
- Policy Definition:IAM策略是一个JSON文档,用于定义对AWS资源的操作权限,指定允许或拒绝的操作。
- Policy Types:有基于身份的策略(附于IAM用户、组或角色)、基于资源的策略(附于S3桶等资源)、权限边界(设置用户或角色可拥有的最大权限)。
- Explicit Deny:若IAM策略明确拒绝某个操作,此拒绝优先于任何允许声明。
- Policy Evaluation:AWS按拒绝>允许>隐式拒绝的规则评估政策,若在任何策略中明确拒绝某个操作,无论其他策略中的允许声明如何,该操作都将被拒绝。
16.Cross - Account Access
- Enable Access:可使用IAM角色实现跨账户访问,在要授予访问权限的账户中创建角色,并设置信任策略,允许另一个AWS账户中的特定IAM用户或角色承担该角色。
- Resource - based Policy:附于特定资源,允许来自另一个AWS账户的访问。
17.IAM Federation (SAML, Web Identity, and Active Directory)
- Identity Federation:允许用户使用来自身份提供商(如Microsoft AD、Google或Facebook)的外部身份访问AWS资源,可使用AWS SSO或通过SAML或网络身份来承担IAM角色。
- SAML 2.0 Federation:SAML 2.0是一种开放标准,允许身份提供商对用户进行身份验证,然后根据身份提供商发送的断言在AWS中承担IAM角色。
18.IAM Access Analyzer
可帮助识别与外部实体共享的资源,通过提醒意外的公共访问或跨账户共享来分析和提高安全性。
19.IAM策略和策略评估
- Policy Evaluation Logic:AWS按显式拒绝>允许>隐式拒绝的顺序评估策略。
- Permissions Boundary Purpose:定义角色或用户可拥有的最大权限,即使其他附加策略授予更广泛的权限,也不能超过边界设定的权限。
20.注意事项
- 在创建和管理IAM资源时,要仔细规划权限,避免过度授权。
- 定期审查和更新IAM策略、用户、角色和组,确保与业务需求和安全要求保持一致。
- 对于跨账户访问和身份联合等复杂场景,要充分理解相关概念和配置,确保安全可靠的访问。
- 关注AWS的安全公告和最佳实践建议,及时调整IAM配置以应对新的安全威胁和风险。