1. 前言
aliyun ram 权限系统功能强大,大部分云产品实现了极其细粒度的权限控制,但是在默认的管理管理中,往往只有读写2种权限,对产品具体设置分细粒度和访问控制权限可以实现根据应用分配不同产品的权限。
应用设置与云资源以及人员的关系,对于已经上云的资源,按照应用所使用的云资源以及人员在应用的角色(owner,PE,Developer,reporter),配置相应权限;没有上云的产品,比如 vipserer,sunfire 等,先改造实现 aliyun ram 权限控制,然后配置权限。
2. ECS,SLB等云资源权限控制:
ecs,slb,vpc 等资源,可以按照通用的 ram 配置方式配置相应读写权限,具体参考:
- 云服务器(ECS): 点击链接
- 负载均衡(SLB):点击链接
- 云数据库(RDS): 点击链接
- 日志服务(SLS): 点击链接
- 云监控: 点击链接
注:云监控目前不支持细粒度资源描述,资源授权用“*”通配。
范例:
{
"Version": "1",
"Statement": [
{
"Action": [
"ecs: AddTags",
"ecs:DescribeInstances"
],
"Resource": [
"acs:ecs:$regionid:15619224785*****:instance/i-bp1bzvz55uz27hf*****"
],
"Effect": "Allow"
}
]
}
3. vipserver,switch,sentinel 等自部署产品实现RAM权限:
RAM 权限策略与语法:点击链接
参考新部署基础设施云产品接入过程:
4. Diamond(ACM)
前提条件:
按照 EDAS 的 namespace 区分环境,按照 ACM 的 Group 区分不同的应用关联,应用和 ACM 的 Group 建立对应关系。
建立 ram 子用户,设置自定义策略授予子用户。
设置方式:
{
"Version": "1",
"Statement": [
{
"Action": [
"acms:R"
],
"Resource": [
"*:*:*:*:cfg/1ca01ca0-11b0-1e01-0df1-d1010101bc10/GROUP",
"*:*:*:*:cfg/1ca01ca0-11b0-1e01-0df1-d1010101bc10/GROUP_1"
],
"Effect": "Allow"
}
]
}
完整控制权限:"acms:*"
某个 namespace 下所有group,则不需要设置 /Group 段即可,不支持 group_name* 这样的通配符;
多个 group 就列出多行;
所有 namespaces 的某个一 group,可以使用:
"Resource": [
"*:*:*:*:cfg/*/DEFAULT_GROUP"
]
访问控制:
通过访问 acm 资源的账号拥有的账号的( ak/sk)权限调节。
{
"Version": "1",
"Statement": [
{
"Effect": "Deny",
"Action": "*",
"Resource": "*",
"Condition": {
"NotIpAddress": {
"acs:SourceIp": [
"172.16.0.0/30"
"127.0.0.1"
]
}
}
}
]
}
综上所述,可以通过应用人员,应用与 ACM 关系关联,按照上述策略建立自定义策略,可以控制应用人员的读写ACM 配置。
5. MetaQ
前置条件:
建立 ram 子用户,设置自定义策略授予子用户。
设置方式:
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"mq:SUB",
"mq:OnsInstanceBaseInfo"
],
"Resource": [
"acs:mq:*:*:{instanceId}"
]
},
{
"Effect": "Allow",
"Action": [
"mq:PUB",
"mq:SUB"
],
"Resource": [
"acs:mq:*:*:appName*",
"acs:mq:*:*:xapp*"
]
},
{ // 授予 Group 的权限
"Effect":"Allow",
"Action":[
"mq:SUB"
],
"Resource":[
"acs:mq:*:*:{instanceId}%{groupId}"
]
}
]
}
对应规则参考:点击链接
根据应用对应的 topic 和 group,设置应用权限,区分读写权限。
Top,Group 支持通配符。
访问控制方法与 ACM 类似。