IAM 与权限
用户、角色、Policy、最小权限。
35 分钟
IAM 与权限
IAM(Identity and Access Management) 管 AWS 账号内的 身份(用户、角色)与 授权(Policy)。宝塔用 root + 面板密码;AWS 必须 最小权限,避免长期 Access Key 泄露。
学习目标
- 区分 User、Role、Policy、Group
- 写一条最小权限 Policy 思路
- 为 terraform-essentials 与 CI 准备角色
核心内容
核心对象
| 对象 | 用途 |
|---|---|
| Root | 账号所有者,仅账单与紧急恢复 |
| IAM User | 人机登录或 CLI(开发实验) |
| IAM Role | 服务/EC2/CI 临时凭证,推荐 |
| Policy | JSON 声明 Allow/Deny 与 Resource ARN |
原则:日常不用 root;Terraform 用专用 User 或 OIDC Role;Key 不入 Git。
最小权限示例
只允许某 S3 bucket 读写(概念 Policy):
{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"Action": ["s3:GetObject", "s3:PutObject"],
"Resource": "arn:aws:s3:::coderoadmap-lab/*"
}]
}
Console 操作
- IAM → Users → Create user → 勾选 Programmatic access
- Attach policies → 实验可用
PowerUserAccess,生产按服务拆分 - 下载 Access Key,本地
aws configure
CLI 示例
# 列出当前用户
aws iam get-user
# 列出附加策略(需 iam:ListAttachedUserPolicies)
aws iam list-attached-user-policies --user-name lab-dev
# 扮演角色(CI / EC2 实例常用)
aws sts assume-role --role-arn arn:aws:iam::123456789012:role/TerraformRole \
--role-session-name tf-session
与 linux-essentials SSH 密钥类似:身份凭证决定你能执行什么命令。
练习
- 创建 IAM User,禁止控制台密码,仅 Programmatic access
- 用
aws iam get-user验证 CLI 身份 - 列出 CodeRoadMap 上云后哪些操作应走 Role 而非长期 Key
小结
IAM = AWS 的权限中枢。 下一课 VPC:资源落在哪张网里。
加载本节练习…