483 字
1 分钟
IAM 与访问控制
一、云安全责任模型
1.1 共享责任模型
graph TB
A["云安全责任模型"] --> B["云服务商责任"]
A --> C["客户责任"]
B --> D["云基础设施安全"]
B --> E["物理安全"]
B --> F["网络基础设施"]
C --> H["身份与访问管理"]
C --> I["数据分类与加密"]
C --> J["应用程序安全"]
C --> K["操作系统配置"]
| 责任 | IaaS | PaaS | SaaS |
|---|---|---|---|
| 数据 | 客户 | 客户 | 供应商 |
| OS | 客户 | 供应商 | 供应商 |
| 网络 | 客户 | 供应商 | 供应商 |
| 应用 | 客户 | 客户 | 供应商 |
1.2 CIA 三元组
| 概念 | 说明 | 保护措施 |
|---|---|---|
| 机密性 | 防止未授权访问 | 加密、访问控制 |
| 完整性 | 防止未授权修改 | 签名、校验和 |
| 可用性 | 确保及时访问 | 冗余、备份 |
二、IAM 核心概念
2.1 IAM 组件对比
| 组件 | AWS | Azure | GCP |
|---|---|---|---|
| 用户 | IAM User | Azure AD User | User |
| 组 | IAM Group | Azure AD Group | Group |
| 角色 | IAM Role | Managed Identity | Service Account |
| 策略 | IAM Policy | Azure Policy | IAM Policy |
2.2 AWS IAM Policy 结构
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowEC2Management", "Effect": "Allow", "Action": [ "ec2:StartInstances", "ec2:StopInstances", "ec2:DescribeInstances" ], "Resource": "arn:aws:ec2:*:*:instance/*", "Condition": { "StringEquals": { "aws:RequestedRegion": ["us-east-1", "eu-west-1"] } } } ]}2.3 Policy 类型
| 类型 | 说明 |
|---|---|
| Identity-based | 附加到用户/组/角色的策略 |
| Resource-based | 附加到资源的策略(如 S3 bucket policy) |
| Permission boundary | 设置最大权限边界 |
| Organization SCP | AWS Organizations 服务控制策略 |
三、最小权限原则
3.1 权限设计原则
# 错误:过度权限{ "Effect": "Allow", "Action": "*", "Resource": "*"}
# 正确:精确权限{ "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject" ], "Resource": "arn:aws:s3:::my-bucket/my-prefix/*"}3.2 条件限制
{ "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::123456789:role/MyRole", "Condition": { "IpAddress": { "aws:SourceIp": "10.0.0.0/8" }, "Bool": { "aws:MultiFactorAuthPresent": "true" }, "StringEquals": { "aws:RequestedRegion": ["us-east-1", "us-west-2"] } }}3.3 权限边界
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["s3:*", "ec2:Describe*"], "Resource": "*" } ]}四、MFA 多因素认证
4.1 认证因素
factors = { "知识因素": ["密码", "PIN 码", "安全问题"], "持有因素": ["手机", "硬件令牌", "智能卡"], "固有因素": ["指纹", "面部识别", "虹膜"]}
# 安全性排序# 1. FIDO2/WebAuthn 硬件令牌 - 最安全# 2. TOTP 软件令牌 - 较安全# 3. SMS 验证码 - 中等安全(SIM 劫持风险)# 4. 邮件验证码 - 较弱4.2 MFA 实施策略
{ "Version": "2012-10-17", "Statement": { "Effect": "Deny", "Action": "*", "Resource": "*", "Condition": { "Bool": { "aws:MultiFactorAuthPresent": "false" } } }}4.3 虚拟 MFA vs 硬件 MFA
| 特性 | 虚拟 MFA | 硬件 MFA |
|---|---|---|
| 成本 | 免费 | $10-50 |
| 设备 | 手机 App | 专用设备 |
| 安全性 | 中等 | 高 |
| 适用 | 开发/测试 | 生产环境 |
五、联合认证与 SSO
5.1 认证协议对比
| 协议 | 用途 | Token 类型 |
|---|---|---|
| SAML 2.0 | Web SSO | XML 断言 |
| OAuth 2.0 | 授权 | Access/Refresh Token |
| OIDC | 身份认证 | ID Token (JWT) |
| LDAP | 目录服务 | - |
| OpenID | 身份联合 | ID Token |
5.2 OIDC 认证流程
sequenceDiagram
participant U as User
participant A as App
participant IdP as Identity Provider
U->>A: 访问应用
A->>U: 重定向到 IdP
U->>IdP: 输入凭证
IdP->>U: 认证成功
U->>A: 返回 Authorization Code
A->>IdP: 兑换 Token
IdP->>A: 返回 ID Token + Access Token
A->>U: 用户登录成功
5.3 AWS IAM Role 信任策略
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::123456789:saml-provider/MySamlProvider" }, "Action": "sts:AssumeRoleWithSAML", "Condition": { "StringEquals": { "SAML:aud": "https://signin.aws.amazon.com/saml" } } } ]}六、最佳实践
6.1 用户管理
# 1. 启用 MFAaws iam enable-mfa-device \ --user-name alice \ --serial-number arn:aws:iam::123456789:mfa/alice
# 2. 创建组而不是直接分配权限aws iam create-group --group-name Developers
# 3. 使用角色进行跨账户访问aws sts assume-role \ --role-arn arn:aws:iam::123456789:role/CrossAccountRole \ --role-session-name dev-session6.2 权限审查
# 检查未使用的权限aws iam simulate-principal-policy \ --policy-source-arn arn:aws:iam::123456789:user/alice \ --action-names s3:* \ --resource-arns arn:aws:s3:::bucket
# 生成权限报告aws iam generate-service-last-accessed-details \ --arn arn:aws:iam::123456789:user/alice6.3 安全配置检查
| 检查项 | 推荐配置 |
|---|---|
| 根账户 | MFA 启用,不用于日常操作 |
| 密码策略 | 最小 14 字符,复杂要求 |
| 公开访问 | S3 bucket 关闭公开访问 |
| SSH 密钥 | 使用 EC2 Instance Connect |
| API 凭证 | 定期轮换,使用临时凭证 |
支持与分享
如果这篇文章对你有帮助,欢迎支持作者或分享给更多人
部分信息可能已经过时
相关文章 智能推荐
1
零信任架构与数据安全
面试 零信任架构原则、数据加密方案、KMS 密钥管理、数据分类与保护策略。
2
云安全事件响应与合规
面试 云安全事件响应流程、SIEM 监控、合规框架(SOC2/ISO27001/GDPR)、审计日志配置。
3
面试题库
面试 系统整理的面试题库,涵盖计算机基础、编程语言(Go/Python)、数据库(MySQL/Redis)、云原生(Kubernetes/容器)、系统设计与云安全等核心知识点。
4
Kubernetes 安全与 RBAC
面试 Kubernetes 安全——RBAC 权限模型、Security Context、Pod Security Standards、网络策略、Secret 管理。
5
Kubernetes 网络与存储
面试 Kubernetes 网络模型、Service 类型、Ingress、NetworkPolicy、存储卷与持久化存储。






