1.简述
IAM(IDENTITY & ACCESS MANAGEMENT),身份验证以及访问控制,一种对资源提供可控安全的访问解决方案,现在的公有云基本都支持IAM来对公有云资源提供授权访问,各大云厂商命名可能不一致,如阿里称为RAM (Resource Access Management),但所支持功能基本都是一样.
概况来说IAM主要在发生资源访问时,首先是身份验证,然后是访问权限验证,以上两步通过后才能访问资源.否则访问会被拒绝.
2.关键术语
- User(用户)
这里是指创建的IAM用户,一般由管理用户创建,新创建的用户没有任何权限.
- Resource(资源)
这里一般指需要进行访问控制的产品,如公有云的数据库,虚拟机等.
- Group(用户组)
这里是指用户组,可以将用户划分为不同用户组,授权时针对用户组授权,提高授权效率.
- Policy(授权策略)
用来描述授权策略的一种描述语言,用于描述谁在xx条件下对xx资源具有xx操作.
- AK (Access Key)
访问密钥由AccessKeyID和AccessKeySecret组成,用于云服务API请求的身份认证.
- MFA (Multi-Factor Authentication)
主要为他们输入用户名和密码(第一安全要素-用户已知),还需要MFA设备的身份验证代码(第二安全要素 – 用户已有)。这样通过多重要素结合起来方式为账户和资源提供更高的安全保护.
- Role(角色)
用户可以通过扮演角色从而拥有角色的权限,这里可以类比现实生活中,一个人会扮演不同角色,当扮演父亲角色时需要教育儿女,当扮演丈夫角色时可能需要跪搓衣板.
对于角色的详细解读,
可以见阿里云文档:https://help.aliyun.com/docum...
3.临时访问凭证
临时访问凭证主要针对一些不安全的访问环境,在这种访问环境下直接存储访问秘钥存在一定风险,发生访问秘钥泄露之后如果无法及时解除权限的话将会很危险。
因此可以使用服务端生成临时访问凭证的方式进行对资源的访问,TS可以指定复杂的策略来对特定的用户进行限制,仅提供最小的权限,且访问凭证具有时间限制,失效后需要重新获取.
5.policy概述
policy一般采用json格式进行配置,样例格式如下:
{
"Version": "1",
"Statement":
[{
"Effect": "Allow",
"Action": ["oss:List*", "oss:Get*"],
"Resource": ["acs:oss:*:*:samplebucket", "acs:oss:*:*:samplebucket/*"],
"Condition":
{
"IpAddress":
{
"acs:SourceIp": "42.160.1.0"
}
}
}]
}
5.1 Effect
授权效力包括两种:允许(Allow)和拒绝(Deny),每条授权语句要么Deny,要么是 Allow,当同时存在多条授权语句既包含有Allow又包含有Deny时,遵循Deny优先原则。
5.2 Resource
资源是指被授权的具体对象。
格式为:
acs:<service-name>:<region>:<account-id>:<relative-id>
acs:阿里云缩写
service-name: 服务名字.
region: 地区信息。如果不支持该项,可以使用通配符“*”号来代替。
account-id: 账号ID,
relative-id: 与service相关的资源描述部分,这部分的格式描述支持类似于一个文件路径的树状结构。如对于对象存储,可以指定到特定目录下的某个对象.
5.4 Action
操作方法是指对具体资源的操作,由服务名以及接口名组成.
格式为:
<service-name>:<action-name>
样例:
"Action": ["oss:ListBuckets", "ecs:Describe*", "rds:Describe*"]
5.5 Condition
限制条件是指授权生效的限制条件,这里一般通用的限制条件有访问者的IP地址,访问时间段等.
6.总结
IAM在管理平台使用比较广泛,目前各大云厂商的实现均有极大的借鉴意义,针对身份验证方面,传统的用户名密码方式安全度并不高,因此目前通常引入
MFA进行多次验证,MFA主要是TOTP算法(Time-Based One-Time Password Algorithm)的应用.
权限控制方面则尽可能授予最小权限,另一方面也需要做好职权分离.
参考
1.阿里云RAM https://help.aliyun.com/docum...
2.AWS IAM https://aws.amazon.com/cn/iam/
3.Googel IAM https://cloud.google.com/iam/
4.TOTP算法 https://tools.ietf.org/html/r...
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。