文档简介:
IAM最佳实践
安全管理
-
创建独立的IAM子用户
一个账户可以建立多个子用户,您可以通过IAM为不同的操作人员创建独立的IAM子用户。根据操作人员的职能范围,授予相应的管理权限。同时建议您也为根用户创建子用户,并授予该子用户管理权限,使用该用户进行日常管理工作,保护账户安全。
-
控制台登录用户与编程用户分离
建议通过控制台登录用户与编程用户分离,以便更好的分配权限:
-
控制台登录用户:通过控制台登录的用户,只需设置控制台登录密码。
-
编程用户:通过API访问的用户,只需创建访问密钥。
-
分组进行授权
账户有多个用户时,通过用户组将用户进行分类,同类权限的用户分到一组。通过为用户组授权,使组内用户获取用户组具有的权限。
-
授予最小权限
建议您为IAM用户授予最小权限,您可以使用IAM用户制定策略,给IAM用户仅授予完成工作所需的权限,通过授予最小权限,可以帮您安全的控制IAM用户对OOS的管理。
-
为IAM用户配置强密码策略
通过IAM可以为控制台登录的用户设置强密码策略。例如密码最小长度、密码中必须包含元素、密码不与历史密码相同、强制定期更换密码等,确保用户使用复杂度高的强密码。
-
开启MFA认证
为IAM用户开启多因素认证(Multi-factor authentication,MFA),提高账号的安全性,在用户名和密码之外再增加一层安全保护。
-
使用策略限制条件
您可以在IAM策略中设置用户在特定时间、特定请求IP的条件下才能操作指定的OOS资源,而其他情况下不能操作。
-
根账户不使用访问密钥
由于根账户对名下资源有完全的控制权,为了避免因访问密钥泄露带来的风险,不建议根用户使用访问密钥。
建议您创建子用户,并授予该子用户管理权限,使用该用户进行日常管理工作,保护账户安全。
-
开启操作跟踪功能
开启OOS的操作跟踪功能,记录用户在账户中做了哪些操作、使用了哪些资源。操作跟踪日志会记录操作的类型、时间、操作的源IP、操作人员等,并且可以长久的保存在OOS存储桶中。
将IAM与操作跟踪功能结合使用,您可以从控制和监控两个层面进行账户管理。
用户管理示例
某公司有多个员工需要访问、操作存储资源,由于每个员工的工作职责不同,需要的权限也不同:
-
将控制台登录用户和编程用户区分;
-
可以根据不同的职能为用户分配权限;
-
只有管理员可以进行较为敏感的日常操作;
-
不同的管理人员可以查看不同方面的保密数据。
目前该公司希望:
-
主管A和主管B均有保密数据的查看权限;
-
主管A可以在MFA认证的情况下对IAM用户进行管理和变更;
-
主管B可以进行操作跟踪管理,查看账户的操作记录;
-
员工C和员工D可以查看存储桶对象;
-
编程用户可以对存储桶上传对象。
创建用户组并关联策略
IAM用户组 |
包含用户 |
策略说明 |
保密数据权限组 |
主管A和主管B |
查看secretBucket内的保密数据,但不可以更改。 |
IAM管理组 |
主管A |
可以进行IAM的相关管理操作。 |
操作跟踪管理组 |
主管B |
可以进行操作跟踪的相关管理操作,查看操作跟踪Bucket中的数据。 |
查看存储对象组 |
员工C和员工D |
查看上传对象权限。 |
上传对象组 |
编程用户 |
通过API可以向指定的Bucket内写入数据。 |
保密数据组权限策略示例:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowGroupToSeeBucket", "Action": [ "oos:ListBuckets", "oos:Get*" ], "Effect": "Allow", "Resource": [ //secretBucket的存储桶资源 "arn:ctyun:oos::10rc2arpn6306:secretBucket", //存储桶secretBucket下所有对象 "arn:ctyun:oos::10rc2arpn6306:secretBucket/*" ] } ] } |
IAM管理组策略示例
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowGroupToManageIAM", "Effect": "Allow", "Action": "iam:*", "Resource": "*", "Condition": { "Bool": { "ctyun:MultiFactorAuthPresent": "true" } } } ] } |
操作跟踪管理组策略示例
{ "Version": "2012-10-17", "Statement": [ { "Sid": " AllowGroupToManageTrail", "Effect": "Allow", "Action": "cloudtrail:*", "Resource": "*" }, { "Sid": " AllowGroupToSeeBucket", "Effect": "Allow", "Action": [ "oos:GetObject", "oos:ListBucket" ], "Resource": [ "arn:ctyun:oos::10rc2arpn6306:trailbucket", "arn:ctyun:oos::10rc2arpn6306:trailbucket/*" ] } ] } |
查看对象组策略示例
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowGroupToGetObject", "Effect": "Allow", "Action": "oos:GetObject", "Resource": "arn:ctyun:oos::10rc2arpn6306:appbucket/*" } ] } |
上传对象组策略示例
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowGroupToPutObject", "Effect": "Allow", "Action": "oos:PutObject", "Resource": "arn:ctyun:oos::10rc2arpn6306:appbucket/*" } ] } |