权限管理
如果账号已经能满足您的要求,不需要创建独立的IAM用户进行权限管理,您可以跳过本章节,不影响您使用DDM服务的其它功能。
如果您需要对购买申请的DDM资源,为企业中的员工设置不同的访问权限,为达到不同员工之间的权限隔离,您可以使用统一身份认证服务(Identity and Access Management,简称IAM)进行精细的权限管理。该服务提供用户身份认证、权限分配、访问控制等功能,可以帮助您安全地控制资源的访问。
通过IAM,您可以在账号中给员工创建IAM用户,并授权控制他们对资源的访问范围。例如您的员工中有负责软件开发的人员,您希望开发人员拥有DDM的使用权限,但是不希望他们拥有删除DDM等高危操作的权限,那么您可以使用IAM为开发人员创建用户,通过授予仅能使用DDM,但是不允许删除DDM的权限,控制他们对DDM资源的使用范围。
IAM是提供权限管理的基础服务,无需付费即可使用,您只需要为您账号中的资源进行付费。
目前IAM支持两类授权,一类是角色与策略授权,另一类为身份策略授权。
两者有如下的区别和关系:
|
名称 |
核心关系 |
涉及的权限 |
授权方式 |
适用场景 |
|---|---|---|---|---|
|
角色与策略授权 |
用户-权限-授权范围 |
|
为主体授予角色或策略 |
核心关系为“用户-权限-授权范围”,每个用户根据所需权限和所需授权范围进行授权,无法直接给用户授权,需要维护更多的用户组,且支持的条件键较少,难以满足细粒度精确权限控制需求,更适用于对细粒度权限管控要求较低的中小企业用户。 |
|
身份策略授权 |
用户-策略 |
|
|
核心关系为“用户-策略”,管理员可根据业务需求定制不同的访问控制策略,能够做到更细粒度更灵活的权限控制,新增资源时,对比角色与策略授权,基于身份策略的授权模型可以更快速地直接给用户授权,灵活性更强,更方便,但相对应的,整体权限管控模型构建更加复杂,对相关人员专业能力要求更高,因此更适用于中大型企业。 |
两种授权场景下的策略/身份策略、授权项等并不互通,推荐使用身份策略进行授权。角色与策略权限管理和角色策略权限管理分别介绍两种模型的系统权限。
DDM角色与策略权限管理
默认情况下,管理员创建的IAM用户没有任何权限,需要将其加入用户组,并给用户组授予策略或角色,才能使得用户组中的用户获得对应的权限,这一过程称为授权。授权后,用户就可以基于被授予的权限对云服务进行操作。
DDM部署时通过物理区域划分,为项目级服务。授权时,“作用范围”需要选择“区域级项目”,然后在指定区域对应的项目中设置相关权限,并且该权限仅对此项目生效;如果在“所有项目”中设置权限,则该权限在所有区域项目中都生效。访问DDM时,需要先切换至授权区域。
- 角色:IAM最初提供的一种根据用户的工作职能定义权限的粗粒度授权机制。该机制以服务为粒度,提供有限的服务相关角色用于授权。由于云服务平台各服务之间存在业务依赖关系,因此给用户授予角色时,可能需要一并授予依赖的其他角色,才能正确完成业务。角色并不能满足用户对精细化授权的要求,无法完全达到企业对权限最小化的安全管控要求。
- 策略:IAM最新提供的一种细粒度授权的能力,可以精确到具体服务的操作、资源以及请求条件等。基于策略的授权是一种更加灵活的授权方式,能够满足企业对权限最小化的安全管控要求。例如:针对DDM服务,管理员能够控制IAM用户仅能对某一类数据库资源进行指定的管理操作。
表2 DDM系统策略 策略名称
描述
类别
依赖关系
DDM FullAccess
分布式数据库中间件服务所有权限。
系统策略
无。
DDM CommonOperations
分布式数据库中间件服务普通权限(除创建实例、删除实例、分片变更、分片变更回滚、规格变更、节点扩容外的所有权限)。
系统策略
无。
DDM ReadOnlyAccess
分布式数据库中间件服务只读权限。
系统策略
无。
- DDM FullAccess
{ "Version": "1.1", "Statement": [{ "Action": ["ddm:*:*", "rds:instance:list", "rds:instance:modify", "rds:instance:modifyParameter", "vpc:*:*", "ecs:*:get*", "ecs:*:list*", "ecs:cloudServerNics:update", "ecs:serverInterfaces:use"], "Effect": "Allow" }] } - DDM CommonOperations
{ "Version": "1.1", "Statement": [{ "Action": [ "vpc:*:*list*", "vpc:*:*get*", "vpc:ports:update", "ecs:*:get*", "ecs:*:list*", "rds:instance:list", "rds:instance:modify", "rds:instance:modifyParameter" ], "Effect": "Allow" }, { "Condition": { "StringEqualsIgnoreCase": { "g:ServiceName": [ "ddm" ] } }, "NotAction": [ "ddm:instance:create", "ddm:instance:delete", "ddm:database:migrate*", "ddm:instance:resize", "ddm:instance:extendNode" ], "Effect": "Allow" }] } - DDM ReadOnlyAccess
{ "Version": "1.1", "Statement": [{ "Action": [ "rds:instance:list", "vpc:*:*list*", "vpc:*:*get*", "ecs:*:get*", "ecs:*:list*", "ddm:*:list*", "ddm:*:get*", "ddm:instance:listParameter", "ddm:instance:listRwInfo", "ddm:instance:listSlowSqlInfo", "ddm:rds:connectivity" ], "Effect": "Allow" }] }
|
操作 |
DDM FullAccess |
DDM CommonOperations |
DDM ReadOnlyAccess |
|---|---|---|---|
|
查询实例列表 |
支持 |
支持 |
支持 |
|
查询实例详情 |
支持 |
支持 |
支持 |
|
修改实例信息(修改名称,修改安全组) |
支持 |
支持 |
不支持 |
|
重启实例 |
支持 |
支持 |
不支持 |
|
创建实例 |
支持 |
不支持 |
不支持 |
|
删除实例 |
支持 |
不支持 |
不支持 |
|
规格变更 |
支持 |
不支持 |
不支持 |
|
节点扩容 |
支持 |
不支持 |
不支持 |
|
创建逻辑库 |
支持 |
支持 |
不支持 |
|
查询逻辑库列表 |
支持 |
支持 |
支持 |
|
查询逻辑库详情 |
支持 |
支持 |
支持 |
|
查看逻辑表大小 |
支持 |
支持 |
支持 |
|
查看物理表碎片 |
支持 |
支持 |
支持 |
|
分片变更失败-回滚 分片变更失败-清理 分片变更失败-重试 |
支持 |
不支持 |
不支持 |
|
删除逻辑库 |
支持 |
支持 |
不支持 |
|
查询账号列表 |
支持 |
支持 |
支持 |
|
创建账号 |
支持 |
支持 |
不支持 |
|
修改账号 |
支持 |
支持 |
不支持 |
|
重置密码 |
支持 |
支持 |
不支持 |
|
删除账号 |
支持 |
支持 |
不支持 |
|
同步数据节点 |
支持 |
支持 |
不支持 |
|
查询数据节点列表 |
支持 |
支持 |
支持 |
|
查询数据节点详情 |
支持 |
支持 |
支持 |
|
修改数据节点读策略 |
支持 |
支持 |
不支持 |
|
查看产品信息列表 |
支持 |
支持 |
支持 |
|
创建参数模板 |
支持 |
支持 |
不支持 |
|
删除参数模板 |
支持 |
支持 |
不支持 |
|
应用参数模板 |
支持 |
支持 |
不支持 |
|
修改参数模板 |
支持 |
支持 |
不支持 |
|
复制参数模板 |
支持 |
支持 |
不支持 |
|
比较参数模板 |
支持 |
支持 |
支持 |
|
查询参数模板 |
支持 |
支持 |
支持 |
|
查看标签列表 |
支持 |
支持 |
支持 |
|
添加/修改/删除标签 |
支持 |
支持 |
不支持 |
|
查询会话 |
支持 |
支持 |
支持 |
|
Kill会话 |
支持 |
支持 |
不支持 |
|
查询慢日志 |
支持 |
不支持 |
不支持 |
|
导出慢日志列表 |
支持 |
不支持 |
不支持 |
|
创建慢日志下载 |
支持 |
不支持 |
不支持 |
|
查看DN限流开关 |
支持 |
支持 |
支持 |
|
设置DN限流开关 |
支持 |
支持 |
不支持 |
|
查看DN限流规则 |
支持 |
支持 |
支持 |
|
新建DN限流规则 |
支持 |
支持 |
不支持 |
|
删除DN限流规则 |
支持 |
支持 |
不支持 |
|
物理SQL生成关键字 |
支持 |
支持 |
支持 |
|
逻辑SQL生成关键字 |
支持 |
支持 |
支持 |
|
操作分类 |
详细操作 |
对应的操作权限 |
|---|---|---|
|
日常操作 |
购买实例(按需) 购买实例(包年包月) 申请实例 |
ddm:instance:create 购买申请实例操作依赖以下权限,即要配置购买申请实例权限,必须配置以下依赖的权限,否则购买申请失败。 |
|
查询实例列表 |
ddm:instance:list |
|
|
查询实例详情 |
ddm:instance:get 查询实例详情操作依赖以下权限,即要配置查询实例详情权限,必须配置以下依赖的权限,否则查询信息不全。
|
|
|
修改实例信息(修改名称、修改安全组、添加/修改/删除标签) |
ddm:instance:modify
修改安全组操作依赖以下权限,即要修改安全组权限,必须配置以下依赖的权限,否则修改失败。
|
|
|
重启实例 |
ddm:instance:reboot |
|
|
删除实例 |
ddm:instance:delete vpc:ports:delete |
|
|
规格变更 |
ddm:instance:resize |
|
|
节点扩容 |
ddm:instance:extendNode |
|
|
读占比监控查询 |
ddm:instance:listRwInfo |
|
|
慢SQL监控查询 |
ddm:instance:listSlowSqlInfo |
|
|
日常操作 |
实例续费(包年包月) |
需要配置BSS Finance、BSS Operator系统策略。设置方法如下:
|
|
日常操作 |
转包周期 |
需要配置BSS Finance、BSS Operator系统策略。设置方法同续费操作中。 |
|
逻辑库相关操作 |
创建逻辑库 |
ddm:database:create |
|
查询逻辑库列表 |
ddm:database:list |
|
|
查询逻辑库详情 |
ddm:database:get |
|
|
查看逻辑表大小 |
ddm:database:listTable |
|
|
查看物理表碎片 |
ddm:table:list |
|
|
分片变更失败-回滚 分片变更失败-清理 分片变更失败-重试 |
ddm:database:migrateRollback |
|
|
删除逻辑库 |
ddm:database:delete |
|
|
账号相关操作 |
查询账号列表 |
ddm:user:list |
|
创建账号 |
ddm:user:create |
|
|
修改账号 |
ddm:user:modify |
|
|
重置密码 |
ddm:user:modify |
|
|
删除账号 |
ddm:user:delete |
|
|
数据节点管理相关操作(以RDS为例) |
同步数据节点 |
ddm:rds:synchro 同步数据节点操作依赖以下权限,即要配置同步数据节点权限,必须配置以下依赖的权限,否则同步数据节点失败。
|
|
查询数据节点列表 |
ddm:rds:list |
|
|
查询数据节点详情 |
ddm:rds:get |
|
|
修改数据节点读策略 |
ddm:rds:modifyReadPolicy |
|
|
产品相关操作 |
查看产品信息列表 |
ddm:product:list |
|
参数模板相关操作 |
创建参数模板 |
ddm:param:create |
|
删除参数模板 |
ddm:param:delete |
|
|
应用参数模板 |
ddm:param:apply |
|
|
修改参数模板 |
ddm:param:update |
|
|
复制参数模板 |
ddm:param:create |
|
|
比较参数模板 |
ddm:param:list |
|
|
查询参数模板 |
ddm:param:list |
|
|
标签相关 |
查询标签列表 |
ddm:tag:list |
|
添加/修改/删除标签 |
ddm:tag:modify |
|
|
会话管理相关 |
查询会话 |
ddm:instance:queryProcessList |
|
Kill会话 |
ddm:instance:killProcessList |
|
|
限流相关 |
查看DN限流开关 |
ddm:instance:get |
|
设置DN限流开关 |
ddm:instance:modify |
|
|
查看DN限流规则 |
ddm:instance:get |
|
|
新建DN限流规则 |
ddm:instance:modify |
|
|
删除DN限流规则 |
ddm:instance:modify |
|
|
物理SQL生成关键字 |
ddm:instance:get |
|
|
逻辑SQL生成关键字 |
ddm:instance:get |