IAM基础 #

一、IAM概述 #

1.1 什么是IAM #

AWS IAM(Identity and Access Management)是AWS提供的身份和访问管理服务,用于安全地控制对AWS服务和资源的访问。

1.2 IAM特点 #

text
IAM核心特点:
├── 集中访问控制
│   └── 统一管理用户和权限
│
├── 精细权限控制
│   └── 可控制到具体API操作
│
├── 多因素认证
│   └── 增强账户安全
│
├── 联合身份
│   └── 支持外部身份提供商
│
├── 免费使用
│   └── IAM本身不收费
│
└── 全局服务
    └── 跨所有区域生效

1.3 IAM核心概念 #

text
IAM核心组件:
├── 用户(User)
│   └── 与人或应用程序关联的身份
│
├── 组(Group)
│   └── 用户的集合
│
├── 角色(Role)
│   └── 临时凭证的身份
│
├── 策略(Policy)
│   └── 定义权限的JSON文档
│
└── 实体(Principal)
    └── 可以执行操作的用户/角色/应用程序

二、IAM用户 #

2.1 用户类型 #

text
用户类型:
├── 根用户(Root User)
│   ├── 账户创建时自动创建
│   ├── 拥有所有权限
│   └── 仅用于账户管理
│
└── IAM用户
    ├── 创建的身份
    ├── 可分配权限
    └── 用于日常操作

2.2 创建IAM用户 #

bash
aws iam create-user \
    --user-name developer \
    --tags Key=Department,Value=Engineering

aws iam create-login-profile \
    --user-name developer \
    --password TempPassword123! \
    --password-reset-required

2.3 访问密钥 #

text
访问密钥用途:
├── 编程访问AWS
├── 包含访问密钥ID和秘密访问密钥
├── 每个用户最多2个
└── 定期轮换
bash
aws iam create-access-key --user-name developer

2.4 最佳实践 #

text
IAM用户最佳实践:
├── 不使用根用户日常操作
├── 为每个用户创建单独账户
├── 启用MFA
├── 定期轮换访问密钥
├── 使用强密码策略
└── 定期审计用户权限

三、IAM组 #

3.1 组的概念 #

text
IAM组特点:
├── 用户的集合
├── 统一管理权限
├── 一个用户可属于多个组
├── 组不能嵌套
└── 简化权限管理

3.2 创建组 #

bash
aws iam create-group --group-name Developers

aws iam add-user-to-group \
    --group-name Developers \
    --user-name developer

3.3 常用组设计 #

text
组设计示例:
├── Administrators
│   └── 管理员权限
│
├── Developers
│   └── 开发权限
│
├── ReadOnlyUsers
│   └── 只读权限
│
├── SecurityAuditors
│   └── 安全审计权限
│
└── DBAdmins
    └── 数据库管理权限

四、IAM角色 #

4.1 角色概念 #

text
IAM角色特点:
├── 临时凭证
├── 无长期密码或访问密钥
├── 可被多种实体担任
│   ├── AWS服务
│   ├── IAM用户
│   ├── 联合用户
│   └── 应用程序
│
└── 短期会话凭证

4.2 创建角色 #

bash
aws iam create-role \
    --role-name EC2Role \
    --assume-role-policy-document file://trust-policy.json

信任策略示例:

json
{
    "Version": "2012-10-17",
    "Statement": [{
        "Effect": "Allow",
        "Principal": {
            "Service": "ec2.amazonaws.com"
        },
        "Action": "sts:AssumeRole"
    }]
}

4.3 角色使用场景 #

text
角色使用场景:
├── EC2实例
│   └── 实例配置文件
│
├── Lambda函数
│   └── 执行角色
│
├── 跨账户访问
│   └── 其他账户用户担任
│
├── 联合身份
│   └── 外部身份提供商
│
└── AWS服务
    └── 服务间访问

4.4 担任角色 #

bash
aws sts assume-role \
    --role-arn arn:aws:iam::123456789012:role/EC2Role \
    --role-session-name MySession

五、IAM策略 #

5.1 策略类型 #

text
策略类型:
├── 托管策略
│   ├── AWS托管策略
│   └── 客户托管策略
│
├── 内联策略
│   └── 直接嵌入到用户/组/角色
│
└── 资源策略
    └── 附加到资源(如S3存储桶策略)

5.2 策略结构 #

json
{
    "Version": "2012-10-17",
    "Statement": [{
        "Sid": "AllowS3Read",
        "Effect": "Allow",
        "Action": [
            "s3:GetObject",
            "s3:ListBucket"
        ],
        "Resource": [
            "arn:aws:s3:::my-bucket",
            "arn:aws:s3:::my-bucket/*"
        ],
        "Condition": {
            "IpAddress": {
                "aws:SourceIp": "192.0.2.0/24"
            }
        }
    }]
}

5.3 策略元素 #

元素 说明
Version 策略语言版本
Statement 策略语句
Sid 语句标识符
Effect Allow或Deny
Action 允许/拒绝的操作
Resource 操作的资源
Condition 条件
Principal 主体(资源策略)

5.4 创建托管策略 #

bash
aws iam create-policy \
    --policy-name S3ReadPolicy \
    --policy-document file://policy.json

5.5 附加策略 #

bash
aws iam attach-user-policy \
    --user-name developer \
    --policy-arn arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess

aws iam attach-role-policy \
    --role-name EC2Role \
    --policy-arn arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess

5.6 常用AWS托管策略 #

策略 说明
AdministratorAccess 完全访问权限
PowerUserAccess 除IAM外的完全访问
ReadOnlyAccess 只读访问
AmazonS3ReadOnlyAccess S3只读访问
AmazonEC2FullAccess EC2完全访问

六、权限边界 #

6.1 权限边界概念 #

text
权限边界特点:
├── 限制用户/角色的最大权限
├── 不授予权限,只限制权限
├── 必须与策略配合使用
└── 用于权限委托

6.2 设置权限边界 #

bash
aws iam put-user-policy-boundary \
    --user-name developer \
    --policy-arn arn:aws:iam::aws:policy/PowerUserAccess

七、IAM最佳实践 #

7.1 根账户保护 #

text
根账户保护:
├── 启用MFA
├── 不创建访问密钥
├── 仅用于账户管理
├── 使用强密码
└── 定期检查账户活动

7.2 最小权限原则 #

text
最小权限原则:
├── 只授予必要的权限
├── 使用AWS托管策略作为起点
├── 定期审计权限
├── 使用访问分析器
└── 删除不需要的权限

7.3 安全最佳实践 #

text
安全建议:
├── 启用MFA
├── 使用角色而非用户
├── 定期轮换凭证
├── 使用条件限制访问
├── 启用CloudTrail审计
├── 使用权限边界
└── 定期审查权限

八、小结 #

本章介绍了IAM基础:

内容 要点
IAM概念 身份和访问管理服务
用户 与人/应用关联的身份
用户集合,统一权限管理
角色 临时凭证身份
策略 定义权限的JSON文档

下一步学习 #

了解IAM基础后,接下来可以:

  1. IAM高级 - 学习高级IAM功能
  2. 安全最佳实践 - 学习安全配置
  3. VPC基础 - 学习网络隔离
最后更新:2026-03-28