权限管理
如果您需要对华为云上购买的MRS资源,为企业中的员工设置不同的访问权限,以达到不同员工之间的权限隔离,您可以使用统一身份认证服务(Identity and Access Management,简称IAM)进行精细的权限管理。该服务提供用户身份认证、权限分配、访问控制等功能,可以帮助您安全地控制华为云资源的访问。如果华为账号已经能满足您的要求,不需要通过IAM对用户进行权限管理,您可以跳过本章节,不影响您使用MRS服务的其它功能。
IAM是华为云提供权限管理的基础服务,无需付费即可使用,您只需要为您账号中的资源进行付费。
通过IAM,您可以通过授权控制他们对华为云资源的访问范围。例如您的员工中有负责软件开发的人员,您希望他们拥有MRS的使用权限,但是不希望他们拥有删除MRS等高危操作的权限,那么您可以使用IAM进行权限分配,通过授予用户仅能使用MRS,但是不允许删除MRS的权限,控制他们对MRS资源的使用范围。
目前IAM支持两类授权,一类是角色与策略授权,另一类为身份策略授权。
两者有如下的区别和关系:
| 名称 | 核心关系 | 涉及的权限 | 授权方式 | 适用场景 |
|---|---|---|---|---|
| 角色与策略授权 | 用户-角色-权限 |
| 为主体授予角色或策略 | 核心关系为“用户-权限-授权范围”,每个用户根据所需权限和所需授权范围进行授权,无法直接给用户授权,需要维护更多的用户组,且支持的条件键较少,难以满足细粒度精确权限控制需求,更适用于对细粒度权限管控要求较低的中小企业用户。 |
| 身份策略授权 | 用户-策略 |
|
| 核心关系为“用户-策略”,管理员可根据业务需求定制不同的访问控制策略,能够做到更细粒度更灵活的权限控制,新增资源时,对比角色与策略授权,基于身份策略的授权模型可以更快速地直接给用户授权,灵活性更强,更方便,但相对应的,整体权限管控模型构建更加复杂,对相关人员专业能力要求更高,因此更适用于中大型企业。 |
例如:如果需要对IAM用户授予可以创建华北-北京四区域的ECS和华南-广州区域的OBS的权限,基于角色与策略授权的场景中,管理员需要创建两个自定义策略,并且为IAM用户同时授予这两个自定义策略才可以实现权限控制。在基于身份策略授权的场景中,管理员仅需要创建一个自定义策略,在身份策略中通过条件键“g:RequestedRegion”的配置即可达到身份策略对于授权区域的控制。将身份策略附加主体或为主体授予该身份策略即可获得相应权限,权限配置方式更细粒度更灵活。
两种授权场景下的策略/身份策略、授权项等并不互通,推荐使用身份策略进行授权。角色与策略权限管理和身份策略权限管理分别介绍两种模型的系统权限。
关于IAM的详细介绍,请参见IAM产品介绍。
角色与策略权限管理
MRS服务支持角色与策略授权。默认情况下,管理员创建的IAM用户没有任何权限,需要将其加入用户组,并给用户组授予策略或角色,才能使得用户组中的用户获得对应的权限,这一过程称为授权。授权后,用户就可以基于被授予的权限对云服务进行操作。
MRS部署时通过物理区域划分,为项目级服务。授权时,“授权范围”需要选择“指定区域项目资源”,然后在指定区域(如华北-北京1)对应的项目(cn-north-1)中设置相关权限,并且该权限仅对此项目生效;如果“授权范围”选择“所有资源”,则该权限在所有区域项目中都生效。访问MRS时,需要先切换至授权区域。
如表2和表3所示,包括了MRS的所有系统权限,其中表2为系统权限的最小化权限,建议使用表2。角色与策略授权场景的系统策略与身份策略授权场景的并不互通。MRS系统策略暂未包含全局级服务(如标签管理、对象存储、统一认证等)权限,如有作业管理、日志转储、引导操作、弹性伸缩脚本、标签配置等需求,需自行添加obs:bucket:ListAllMyBuckets、obs:bucket:ListBucket、obs:object:PutObject、tms:resourceTags:list、tms:predefineTags:list等权限。
| 系统角色/策略名称 | 描述 | 类别 | 依赖关系 |
|---|---|---|---|
| MRS Minimal FullAccess | MapReduce服务管理员权限最小集,包括集群创建、扩容、缩容、升级规格、删除、查询等所有操作权限。建议优先使用此策略,并和MRS Dependency Access策略一起配置,以获取管理员完整权限。 | 系统策略 | 无 |
| MRS Minimal CommonOperations | MapReduce服务普通用户权限最小集,包括集群查询、任务、文件、标签、补丁、运维通道、告警配置等集群操作权限,建议优先使用此策略。 | 系统策略 | 无 |
| MRS Minimal ReadOnlyAccess | MapReduce服务只读权限最小集,包括集群查询操作,建议优先使用此策略。 | 系统策略 | 无 |
| MRS Dependency Access | MapReduce服务依赖的敏感权限,包括加密、付款、打通网络边界等权限。 说明: 该策略赋予用户的过高权限,请谨慎配置。 | 系统策略 | 无 |
| 系统角色/策略名称 | 描述 | 类别 | 依赖关系 |
|---|---|---|---|
| MRS FullAccess | MRS管理员权限,拥有该权限的用户可以拥有MRS所有权限。 | 系统策略 | 无 |
| MRS CommonOperations | MRS服务普通用户权限,拥有该权限的用户可以拥有MRS服务使用权限,无新增、删除资源权限。 | 系统策略 | 无 |
| MRS ReadOnlyAccess | MRS服务只读权限,拥有该权限的用户仅能查看MRS的资源。 | 系统策略 | 无 |
| MRS Administrator | 操作权限: | 系统角色 | 依赖Tenant Guest和Server Administrator角色,在同项目中勾选依赖的角色。 |
表4列出了MRS常用操作与系统权限的授权关系,您可以参照该表选择合适的系统权限。
| 操作 | MRS Minimal FullAccess/ MRS FullAccess | MRS Minimal CommonOperations/ MRS CommonOperations | MRS Minimal ReadOnlyAccess/ MRS ReadOnlyAccess | MRS Administrator |
|---|---|---|---|---|
| 创建集群 | √ | x | x | √ |
| 调整集群 | √ | x | x | √ |
| 升级节点规格 | √ | x | x | √ |
| 删除集群 | √ | x | x | √ |
| 查询集群详情 | √ | √ | √ | √ |
| 查询集群列表 | √ | √ | √ | √ |
| 设置弹性伸缩策略 | √ | x | x | √ |
| 查询主机列表 | √ | √ | √ | √ |
| 查询操作日志 | √ | √ | √ | √ |
| 创建并执行作业 | √ | √ | x | √ |
| 停止作业 | √ | √ | x | √ |
| 删除单个作业 | √ | √ | x | √ |
| 批量删除作业 | √ | √ | x | √ |
| 查询作业详情 | √ | √ | √ | √ |
| 查询作业列表 | √ | √ | √ | √ |
| 新建文件夹 | √ | √ | x | √ |
| 删除文件 | √ | √ | x | √ |
| 查询文件列表 | √ | √ | √ | √ |
| 批量操作集群标签 | √ | √ | x | √ |
| 创建单个集群标签 | √ | √ | x | √ |
| 删除单个集群标签 | √ | √ | x | √ |
| 按照标签查询资源列表 | √ | √ | √ | √ |
| 查询集群标签 | √ | √ | √ | √ |
| 访问Manager页面 | √ | √ | x | √ |
| 查询补丁列表 | √ | √ | √ | √ |
| 安装补丁 | √ | √ | x | √ |
| 卸载补丁 | √ | √ | x | √ |
| 运维通道授权 | √ | √ | x | √ |
| 运维通道日志共享 | √ | √ | x | √ |
| 查询告警列表 | √ | √ | √ | √ |
| 订阅告警消息提醒 | √ | √ | x | √ |
| 提交SQL语句 | √ | √ | x | √ |
| 查询SQL结果 | √ | √ | x | √ |
| 取消SQL执行任务 | √ | √ | x | √ |
身份策略权限管理
MRS服务支持身份策略授权。如表5和表6所示,包括了MRS身份策略中的所有系统身份策略,其中表5为系统身份策略的最小化权限,建议使用表5。身份策略授权场景的系统身份策略与角色与策略授权场景的并不互通。
MRS身份策略授暂未包含对象存储服务权限,如有作业管理、日志转储、引导操作、弹性伸缩脚本等需求,需自行添加obs:bucket:ListAllMyBuckets、obs:bucket:ListBucket、obs:object:PutObject等权限。
| 系统身份策略名称 | 描述 | 策略类别 |
|---|---|---|
| MRSFullAccessMinimalPolicy | MapReduce服务管理员权限最小集,包括集群创建、扩容、缩容、升级规格、删除、查询等所有操作权限。建议优先使用此策略,并和MRS Dependency Access策略一起配置,以获取管理员完整权限。 | 系统身份策略 |
| MRSCommonOperationsMinimalPolicy | MapReduce服务使用权限最小集,包括集群查询、任务、文件、标签、补丁、运维通道、告警配置等集群操作权限。建议优先使用此策略。 | 系统身份策略 |
| MRSReadOnlyAccessMinimalPolicy | MapReduce服务只读权限最小集,包括集群查询操作。建议优先使用此策略。 | 系统身份策略 |
| MRSDependencyAccessPolicy | MapReduce服务依赖的敏感权限,包括加密、付款、打通网络边界等权限。 说明: 该策略赋予用户的过高权限,请谨慎配置。 | 系统身份策略 |
| autoSystemPolicyName5Mrs | 自动化测试。 | 系统身份策略 |
| 系统身份策略名称 | 描述 | 策略类别 |
|---|---|---|
| MRSFullAccessPolicy | MRS的管理员权限,拥有这些权限的用户可以操作和使用MRS集群。 | 系统身份策略 |
| MRSReadOnlyAccessPolicy | MRS服务只读权限,拥有该权限的用户仅能查看MRS的资源。 | 系统身份策略 |
| autoSystemPolicyName5Mrs | 自动化测试。 | 系统身份策略 |
表7列出了MRS常用操作与系统身份策略的授权关系,您可以参照该表选择合适的系统身份策略。
| 操作 | MRSFullAccessMinimalPolicy/ MRSFullAccessPolicy | MRSCommonOperationsMinimalPolicy | MRSReadOnlyAccessMinimalPolicy/ MRSReadOnlyAccessPolicy |
|---|---|---|---|
| 创建集群 | √ | x | x |
| 调整集群 | √ | x | x |
| 升级节点规格 | √ | x | x |
| 删除集群 | √ | x | x |
| 查询集群详情 | √ | √ | √ |
| 查询集群列表 | √ | √ | √ |
| 设置弹性伸缩策略 | √ | x | x |
| 查询主机列表 | √ | √ | √ |
| 查询操作日志 | √ | √ | √ |
| 创建并执行作业 | √ | √ | x |
| 停止作业 | √ | √ | x |
| 删除单个作业 | √ | √ | x |
| 批量删除作业 | √ | √ | x |
| 查询作业详情 | √ | √ | √ |
| 查询作业列表 | √ | √ | √ |
| 新建文件夹 | √ | √ | x |
| 删除文件 | √ | √ | x |
| 查询文件列表 | √ | √ | √ |
| 批量操作集群标签 | √ | √ | x |
| 创建单个集群标签 | √ | √ | x |
| 删除单个集群标签 | √ | √ | x |
| 按照标签查询资源列表 | √ | √ | √ |
| 查询集群标签 | √ | √ | √ |
| 访问Manager页面 | √ | √ | x |
| 查询补丁列表 | √ | √ | √ |
| 安装补丁 | √ | √ | x |
| 卸载补丁 | √ | √ | x |
| 运维通道授权 | √ | √ | x |
| 运维通道日志共享 | √ | √ | x |
| 查询告警列表 | √ | √ | √ |
| 订阅告警消息提醒 | √ | √ | x |
| 提交SQL语句 | √ | √ | x |
| 查询SQL结果 | √ | √ | x |
| 取消SQL执行任务 | √ | √ | x |
MRS Minimal FullAccess策略内容
{
"Version": "1.1",
"Statement": [
{
"Action": [
"mrs:*:*",
"bms:serverFlavors:get",
"bms:serverQuotas:get",
"bms:servers:attachVolume",
"bms:servers:create",
"bms:servers:detachVolume",
"bms:servers:get",
"bms:servers:list",
"bms:servers:put",
"bms:servers:reInstallOS",
"bms:servers:reboot",
"bms:servers:start",
"bms:servers:stop",
"bms:servers:updateMetadata",
"bss:balance:view",
"bss:coupon:view",
"bss:discount:view",
"bss:invoice:view",
"bss:order:view",
"bss:renewal:view",
"ces:metricData:create",
"ces:remoteChecks:list",
"ces:siteMonitorHealthCheck:get",
"ces:siteMonitorHealthCheck:create",
"ces:siteMonitorRule:delete",
"ces:siteMonitorRule:put",
"dns:recordset:create",
"dns:recordset:delete",
"dns:recordset:get",
"dns:recordset:list",
"dns:recordset:update",
"dns:zone:associaterouter",
"dns:zone:create",
"dns:zone:delete",
"dns:zone:disassociaterouter",
"dns:zone:get",
"dns:zone:list",
"ecs:cloudServerFlavors:get",
"ecs:cloudServerQuotas:get",
"ecs:cloudServers:attach",
"ecs:cloudServers:batchSetServerTags",
"ecs:cloudServers:create",
"ecs:cloudServers:createServerGroup",
"ecs:cloudServers:createServers",
"ecs:cloudServers:delete",
"ecs:cloudServers:deleteMetadata",
"ecs:cloudServers:deleteServerGroup",
"ecs:cloudServers:deleteServers",
"ecs:cloudServers:detachVolume",
"ecs:cloudServers:get",
"ecs:cloudServers:list",
"ecs:cloudServers:listServerInterfaces",
"ecs:cloudServers:listServersDetails",
"ecs:cloudServers:put",
"ecs:cloudServers:reboot",
"ecs:cloudServers:rebuild",
"ecs:cloudServers:resize",
"ecs:cloudServers:showServer",
"ecs:cloudServers:showServerGroup",
"ecs:cloudServers:showServerTags",
"ecs:cloudServers:start",
"ecs:cloudServers:stop",
"ecs:cloudServers:updateMetadata",
"ecs:diskConfigs:use",
"ecs:serverGroups:manage",
"ecs:serverInterfaces:get",
"ecs:serverKeypairs:get",
"ecs:serverKeypairs:list",
"ecs:serverVolumes:use",
"ecs:servers:get",
"ecs:servers:list",
"ecs:servers:setMetadata",
"eg:channels:putEvents",
"elb:members:create",
"elb:members:delete",
"elb:members:list",
"evs:quotas:get",
"evs:types:get",
"evs:volumeTags:create",
"evs:volumes:extend",
"evs:volumes:list",
"evs:volumes:tagResource",
"evs:volumes:use",
"gaussdb:instance:list",
"kps:domainKeypairs:get",
"kps:domainKeypairs:list",
"lakeformation:instance:access",
"lakeformation:instance:describe",
"lts:groups:create",
"lts:groups:delete",
"lts:topics:create",
"lts:topics:delete",
"rds:instance:create",
"rds:instance:list",
"smn:topic:list",
"smn:topic:publish",
"vpc:firewallPolicies:addRule",
"vpc:firewallPolicies:removeRule",
"vpc:firewallRules:update",
"vpc:floatingIps:get",
"vpc:networks:get",
"vpc:ports:create",
"vpc:ports:delete",
"vpc:ports:get",
"vpc:ports:update",
"vpc:privateIps:create",
"vpc:privateIps:delete",
"vpc:privateIps:get",
"vpc:publicIps:get",
"vpc:publicIps:list",
"vpc:quotas:list",
"vpc:securityGroupRules:create",
"vpc:securityGroupRules:delete",
"vpc:securityGroupRules:get",
"vpc:securityGroups:create",
"vpc:securityGroups:delete",
"vpc:securityGroups:get",
"vpc:subnets:create",
"vpc:subnets:get",
"vpc:vpcs:create",
"vpc:vpcs:get",
"vpc:vpcs:list",
"vpcep:endpoints:create",
"vpcep:endpoints:delete",
"vpcep:endpoints:get",
"vpcep:endpoints:list",
"vpcep:endpoints:update",
"vpcep:epserviceDesc:get",
"vpcep:quotas:get"
],
"Effect": "Allow"
}
]
} MRS Minimal CommonOperations策略内容
{
"Version": "1.1",
"Statement": [
{
"Action": [
"mrs:*:get*",
"mrs:*:list*",
"mrs:bootstrap:update",
"mrs:bootstrap:delete",
"mrs:alarm:delete",
"mrs:alarm:subscribe",
"mrs:file:create",
"mrs:file:delete",
"mrs:job:batchDelete",
"mrs:job:checkSql",
"mrs:job:delete",
"mrs:job:stop",
"mrs:job:submit",
"mrs:manager:access",
"mrs:ops:grant",
"mrs:ops:shareLog",
"mrs:patch:install",
"mrs:patch:uninstall",
"mrs:tag:batchOperate",
"mrs:tag:create",
"mrs:tag:delete",
"bms:serverFlavors:get",
"bms:servers:get",
"bms:servers:list",
"bss:balance:view",
"bss:coupon:view",
"bss:discount:view",
"bss:invoice:view",
"bss:order:view",
"bss:renewal:view",
"ces:metricData:create",
"ces:remoteChecks:list",
"ces:siteMonitorHealthCheck:get",
"dns:recordset:get",
"dns:recordset:list",
"dns:zone:get",
"dns:zone:list",
"ecs:cloudServerFlavors:get",
"ecs:cloudServers:get",
"ecs:cloudServers:list",
"ecs:cloudServers:listServerInterfaces",
"ecs:cloudServers:listServersDetails",
"ecs:cloudServers:showServer",
"ecs:cloudServers:showServerGroup",
"ecs:cloudServers:showServerTags",
"ecs:serverInterfaces:get",
"ecs:serverKeypairs:get",
"ecs:serverKeypairs:list",
"ecs:servers:get",
"ecs:servers:list",
"elb:members:list",
"evs:types:get",
"evs:volumes:list",
"gaussdb:instance:list",
"kps:domainKeypairs:get",
"kps:domainKeypairs:list",
"lakeformation:instance:access",
"lakeformation:instance:describe",
"rds:instance:list",
"smn:topic:list",
"vpc:floatingIps:get",
"vpc:networks:get",
"vpc:ports:get",
"vpc:privateIps:get",
"vpc:publicIps:get",
"vpc:publicIps:list",
"vpc:securityGroupRules:get",
"vpc:securityGroups:get",
"vpc:subnets:get",
"vpc:vpcs:get",
"vpc:vpcs:list",
"vpcep:endpoints:get",
"vpcep:endpoints:list",
"vpcep:epserviceDesc:get"
],
"Effect": "Allow"
}
]
} MRS Minimal ReadOnlyAccess策略内容
{
"Version": "1.1",
"Statement": [
{
"Action": [
"mrs:*:get*",
"mrs:*:list*",
"mrs:tag:count",
"bms:serverFlavors:get",
"bms:servers:get",
"bms:servers:list",
"ces:remoteChecks:list",
"ces:siteMonitorHealthCheck:get",
"dns:recordset:get",
"dns:recordset:list",
"dns:zone:get",
"dns:zone:list",
"ecs:cloudServerFlavors:get",
"ecs:cloudServers:get",
"ecs:cloudServers:list",
"ecs:cloudServers:listServerInterfaces",
"ecs:cloudServers:listServersDetails",
"ecs:cloudServers:showServer",
"ecs:cloudServers:showServerGroup",
"ecs:cloudServers:showServerTags",
"ecs:serverInterfaces:get",
"ecs:serverKeypairs:get",
"ecs:serverKeypairs:list",
"ecs:servers:get",
"ecs:servers:list",
"elb:members:list",
"evs:types:get",
"evs:volumes:list",
"gaussdb:instance:list",
"kps:domainKeypairs:get",
"kps:domainKeypairs:list",
"lakeformation:instance:describe",
"rds:instance:list",
"smn:topic:list",
"vpc:floatingIps:get",
"vpc:networks:get",
"vpc:ports:get",
"vpc:privateIps:get",
"vpc:publicIps:get",
"vpc:publicIps:list",
"vpc:securityGroupRules:get",
"vpc:securityGroups:get",
"vpc:subnets:get",
"vpc:vpcs:get",
"vpc:vpcs:list",
"vpcep:endpoints:get",
"vpcep:endpoints:list",
"vpcep:epserviceDesc:get"
],
"Effect": "Allow"
}
]
} MRS Dependency Access策略内容
{
"Version": "1.1",
"Statement": [
{
"Action": [
"bss:balance:update",
"bss:coupon:update",
"bss:invoice:update",
"bss:order:pay",
"bss:order:update",
"bss:renewal:update",
"bss:unsubscribe:update",
"vpc:publicIps:create",
"vpc:publicIps:delete",
"vpc:publicIps:update",
"kms:cmk:create",
"kms:cmk:get",
"kms:cmk:list"
],
"Effect": "Allow"
}
]
} MRS Administrator策略内容
{
"Depends": [
{
"catalog": "BASE",
"display_name": "Server Administrator"
},
{
"catalog": "BASE",
"display_name": "Tenant Guest"
}
],
"Version": "1.0",
"Statement": [
{
"Action": [
"MRS:MRS:*"
],
"Effect": "Allow"
}
]
} 相关链接
- IAM产品介绍
- 通过角色/策略管理资源访问权限,请参见创建IAM用户并授权使用MRS。
- 策略支持的授权项,请参见身份策略授权参考。