What’s AWS IAM and how it works

Table of Contents

AWS IAM 是什么?

AWS Identity and Access Management (IAM) 是 Amazon Web Services 提供的一项服务,用于 管理访问 AWS 资源的权限。通过 IAM,你可以定义谁可以访问哪些资源,以及允许他们进行什么操作。


AWS IAM 的用途

  1. 用户管理:

    • 创建和管理 AWS 用户和组。
    • 为用户分配登录凭证和权限。
  2. 访问控制:

    • 通过策略 (Policy) 控制用户或服务的权限。
    • 实现最小权限原则(仅赋予用户完成任务所需的最低权限)。
  3. 安全认证:

    • 提供多因素认证 (MFA)。
    • 使用访问密钥和临时凭证支持程序化访问。
  4. 跨账户访问:

    • 使用角色允许用户或服务在多个 AWS 账户间访问资源。
  5. 与服务集成:

    • 为 EC2 实例、Lambda 函数等分配角色,授权这些服务访问其他 AWS 服务(如 S3、DynamoDB)。

AWS IAM 的工作原理

IAM 的核心工作机制基于以下几个概念:

1. 关键实体

  • 用户 (User):

    • 是一个唯一的身份,用于代表一个人或应用程序。
    • 用户可以有访问密钥 (Access Key)、密码或 MFA。
  • 组 (Group):

    • 是用户的集合,用于统一管理权限。
    • 用户继承组的策略。
  • 角色 (Role):

    • 是一个临时身份,用于允许实体(如用户、应用程序或 AWS 服务)访问资源。
    • 使用信任策略定义谁可以假设该角色。
  • 策略 (Policy):

    • 是一个 JSON 文档,定义允许或拒绝的权限。
    • 类型:
    • 托管策略(AWS 提供或用户定义的可复用策略)。
    • 内联策略(直接附加到一个用户、组或角色的策略)。

2. 权限评估

IAM 的权限通过 策略评估机制 确定。

  • 显式允许优先:

    • 如果策略明确允许某个操作,用户/角色就可以执行。
  • 显式拒绝优先:

    • 如果策略明确拒绝某个操作,即使有允许的策略,也会被拒绝。

3. 信任关系

  • IAM 角色允许通过 AssumeRole API 调用被其他实体(用户、服务或外部账户)临时使用。
  • 信任策略定义谁可以假设角色。

4. IAM 临时凭证

  • AWS 提供临时凭证(通过 STS 服务)供角色或会话使用。
  • 临时凭证的有效时间较短,增强了安全性。

IAM 的典型工作流程

  1. 创建用户或角色:

    • 为用户创建唯一身份,或定义允许服务访问的角色。
    • 例如,为开发者分配权限访问 S3 存储桶。
  2. 定义和附加策略:

    • 编写策略,明确允许或拒绝的操作。
    • 例如,允许开发者只读 S3 文件。
  3. 授权访问资源:

    • IAM 根据附加的策略,评估请求是否被允许。
  4. 临时凭证或密钥验证:

    • 用户或服务向 AWS 发送 API 请求,附加密钥或临时凭证。
    • IAM 验证凭证的有效性,并根据策略响应是否允许操作。

优势

  1. 安全性:

    • 提供精细粒度的访问控制,减少暴露面。
    • 支持 MFA,提高账户安全性。
  2. 灵活性:

    • 支持跨账户和跨服务的访问控制。
    • 支持通过角色实现无密码访问。
  3. 审计和监控:

    • 与 AWS CloudTrail 集成,记录 IAM 用户和角色的操作。

示例:允许用户只读 S3 的策略

以下是一个策略的 JSON 文档,允许用户对 S3 存储桶执行只读操作:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:ListBucket"
      ],
      "Resource": [
        "arn:aws:s3:::example-bucket",
        "arn:aws:s3:::example-bucket/*"
      ]
    }
  ]
}

总结

AWS IAM 是 AWS 安全模型的核心组件,负责用户、角色和权限管理,确保 AWS 资源在不同场景下的访问安全。理解 IAM 的概念和工作原理,有助于设计安全、合规的 AWS 架构。

Comments |0|

Legend *) Required fields are marked
**) You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>
Category: 似水流年