mobile wallpaper 1mobile wallpaper 2mobile wallpaper 3mobile wallpaper 4
483 字
1 分钟
IAM 与访问控制
2023-12-06

一、云安全责任模型#

1.1 共享责任模型#

graph TB A["云安全责任模型"] --> B["云服务商责任"] A --> C["客户责任"] B --> D["云基础设施安全"] B --> E["物理安全"] B --> F["网络基础设施"] C --> H["身份与访问管理"] C --> I["数据分类与加密"] C --> J["应用程序安全"] C --> K["操作系统配置"]
责任IaaSPaaSSaaS
数据客户客户供应商
OS客户供应商供应商
网络客户供应商供应商
应用客户客户供应商

1.2 CIA 三元组#

概念说明保护措施
机密性防止未授权访问加密、访问控制
完整性防止未授权修改签名、校验和
可用性确保及时访问冗余、备份

二、IAM 核心概念#

2.1 IAM 组件对比#

组件AWSAzureGCP
用户IAM UserAzure AD UserUser
IAM GroupAzure AD GroupGroup
角色IAM RoleManaged IdentityService Account
策略IAM PolicyAzure PolicyIAM 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 SCPAWS 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.0Web SSOXML 断言
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. 启用 MFA
aws 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-session

6.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/alice

6.3 安全配置检查#

检查项推荐配置
根账户MFA 启用,不用于日常操作
密码策略最小 14 字符,复杂要求
公开访问S3 bucket 关闭公开访问
SSH 密钥使用 EC2 Instance Connect
API 凭证定期轮换,使用临时凭证

支持与分享

如果这篇文章对你有帮助,欢迎支持作者或分享给更多人

IAM 与访问控制
https://blog.souloss.com/posts/interview/iam-and-access-control/
作者
Souloss
发布于
2023-12-06
许可协议
CC BY-NC-SA 4.0

部分信息可能已经过时