注册配置中心授权
MSE支持阿里云账号给RAM用户授予MSE的操作权限,避免因暴露阿里云账号密钥造成的安全风险。本文介绍如何创建RAM用户并授予RAM用户权限,授权后您就可以通过RAM用户使用MSE。
使用场景
某企业开通了微服务引擎MSE服务,由于员工工作职责不同,对资源操作所需权限也不同,现有如下需求:
鉴于安全或信任原因,不希望将云账号密钥直接透露给员工,期望可以为员工相应的账号授予权限。
用户账号只能在授权的前提下操作资源,不需要进行独立的计量计费,所有开销均计入企业账号名下。
随时可以撤销用户账号的权限,也可以随时删除其创建的用户账号。
MSE作为一个托管型产品有开发和运维两个角色,运维人员负责做集群的管理、命名空间和权限的管理,开发人员负责配置和服务管理。
使用说明
本文档内容涉及图中引擎管控链路的访问权限的配置和使用,即阿里云账号授予RAM用户权限后,被授予该权限的RAM用户拥有对控制台(OpenAPI)的相关操作权限。

关于引擎直连链路的访问鉴权配置和使用,即Nacos Client可以通过RAM用户访问MSE的Nacos的具体操作,请参见授权SDK访问。
步骤一:创建RAM用户
使用阿里云账号登录RAM控制台并创建RAM用户。
使用阿里云账号登录RAM控制台。
在左侧导航栏,选择 。
在用户页面,单击创建用户。
在创建用户页面的用户账号信息区域,设置用户基本信息。
登录名称:可包含英文字母、数字、半角句号(.)、短划线(-)和下划线(_),最多64个字符。
显示名称:最多包含128个字符或汉字。
可选:标签:您可以单击
,然后输入标签键和标签值。为RAM用户绑定标签,便于后续基于标签的用户管理。
说明单击添加用户,可以批量创建多个RAM用户。
在访问方式区域,选中控制台访问或OpenAPI调用访问。
控制台访问:完成对登录安全的基本设置,包括自动生成或自定义登录密码、是否要求下次登录时重置密码以及是否要求开启多因素认证。
说明自定义登录密码时,密码必须满足您在设置RAM用户密码强度。
中设置的密码复杂度规则。关于如何设置密码复杂度规则,请参见OpenAPI调用访问:自动为RAM用户生成访问密钥(AccessKey),支持通过API或其他开发工具访问阿里云。
说明为了保障账号安全,建议仅为RAM用户选择第一种登录方式,避免RAM用户离开组织后仍可以通过访问密钥访问阿里云资源。
单击确定。
步骤二:为RAM用户添加权限
在使用RAM用户之前,需要为其添加相应权限。
使用阿里云账号登录RAM控制台。
在左侧导航栏,选择 。
在用户页面,单击目标RAM用户操作列的添加权限。
在添加权限面板的选择权限区域选择权限策略,在文本框中输入要添加的权限策略,单击搜索到的权限策略,然后单击确定。
系统权限策略(粗粒度授权)
微服务引擎MSE目前支持两种粗粒度的系统权限策略。
权限策略名称
说明
AliyunMSEFullAccess
管理微服务引擎MSE的权限,等同于阿里云账号的权限,被授予该权限的RAM用户拥有控制台所有功能的操作权限。
AliyunMSEReadOnlyAccess
微服务引擎MSE的只读权限,被授予该权限的RAM用户具有阿里云账号所有资源的只读权限。
说明建议给运维人员授予AliyunMSEFullAccess权限策略,由运维人员去创建和删除资源。给开发人员授予AliyunMSEReadOnlyAccess权限策略,可以查看这些资源,但是不能删除和创建。如果想更细粒度地控制开发人员的权限,您可使用以下自定义权限策略。
自定义权限策略(细粒度授权)
如果您需要更细粒度地授权,您可以通过创建自定义策略来进行访问控制。创建自定义策略的具体步骤,请参见创建自定义权限策略。
关于Nacos注册中心相关鉴权粒度和配置说明,请参见注册中心细粒度鉴权;关于Nacos配置中心相关鉴权粒度和配置说明,请参见配置中心细粒度鉴权。
为了方便您自定义RAM权限策略,本文提供了微服务引擎MSE版的授权映射表。
说明List类的接口暂时不支持按权限有无对数据进行过滤展示,因此List类的接口只能授权到实例级别,细粒度授权仅支持单个数据的读写操作。
Action
权限说明
是否为只读类权限
CreateCluster
创建集群
否
DeleteCluster
删除集群
否
ListClusters
查看集群列表
是
QueryClusterDetail
更新集群详情
是
RestartCluster
重启集群
否
RetryCluster
重试集群
否
UpdateCluster
更新集群
否
CreateNacosConfig
创建Nacos配置
否
DeleteNacosConfig
删除Nacos配置
否
DeleteNacosConfigs
批量删除Nacos配置
否
GetNacosConfig
查看Nacos配置
是
GetNacosHistoryConfig
查看Nacos配置历史
是
ListNacosConfigs
查看Nacos配置列表
是
ListNacosHistoryConfigs
查看Nacos配置历史列表
是
UpdateNacosConfig
更新Nacos配置
否
ListAnsServices
查看所有服务
是
ListAnsServiceClusters
查看某服务的集群
是
ListAnsInstances
查看某服务的实例
是
UpdateNacosInstance
更新实例
否
DeleteNacosService
删除服务
否
CreateNacosService
创建服务
否
UpdateNacosService
更新服务
否
CreateNacosInstance
创建实例
否
UpdateNacosCluster
更新服务集群
否
示例一:授予RAM用户对实例
mse-cn-0pp1j8om80a
的读写权限。说明本文的
mse-cn-0pp1j8om80a
指的是InstanceId而非ClusterId。{ "Statement": [ { "Action": "mse:ListClusters", "Resource": "acs:mse:*:*:*", "Effect": "Allow" }, { "Action": "mse:*", "Resource": "acs:mse:*:*:instance/mse-cn-0pp1j8om80a", "Effect": "Allow" } ], "Version": "1" }
示例二:授予RAM用户对所有实例的读权限。
{ "Statement": [ { "Action": [ "mse:List*", "mse:Query*", "mse:Get*" ], "Resource": "acs:mse:*:*:*", "Effect": "Allow" } ], "Version": "1" }
示例三:授予RAM用户对实例
mse-cn-0pp1j8om80a
中命名空间3fd98c48-a709-4061-bba1-e341d79d681b
的配置读写权限。该场景是一个复杂的场景,要拥有这个细粒度权限需要以下三个层次的权限:
拥有查看实例列表的权限,这样才能从集群列表中看到对应集群。
拥有这个集群的所有读权限,这样可以进入这个实例看到所有的资源。
拥有这个命名空间下面的配置创建和修改的权限。
{ "Version": "1", "Statement": [{ "Action": [ "mse:ListClusters" ], "Resource": [ "acs:mse:*:*:*" ], "Effect": "Allow" }, { "Action": [ "mse:List*", "mse:Query*", "mse:Get*" ], "Resource": [ "acs:mse:*:*:instance/mse-cn-0pp1j8om8" ], "Effect": "Allow" }, { "Action": [ "mse:CreateNacosConfig", "mse:UpdateNacosConfig" ], "Resource": [ "acs:mse:*:*:instance/mse-cn-0pp1j8om8/3fd98c48-a709-4061-bba1-e341d79d681b" ], "Effect": "Allow" } ] }
示例四:授予RAM用户对实例
mse-cn-0pp1j8om80a
中指定DataId的配置读写权限。该场景是一个复杂的场景,要拥有这个细粒度权限需要以下几个层次的权限:
拥有查看实例列表的权限,这样才能从集群列表中看到对应集群。
拥有这个集群的所有读权限,这样进入这个实例可以看到所有的资源。
拥有这个命名空间下面的配置创建和修改的权限。
拥有这个Group下面的配置创建和修改的权限。
资源取值来源:
acs:mse:*:*:instance/${instanceId}/${namespaceId}/${groupId}/${dataId}
{ "Version": "1", "Statement": [{ "Action": [ "mse:ListClusters" ], "Resource": [ "acs:mse:*:*:*" ], "Effect": "Allow" }, { "Action": [ "mse:List*", "mse:Query*", "mse:Get*" ], "Resource": [ "acs:mse:*:*:instance/mse-cn-0pp1j8om8" ], "Effect": "Allow" }, { "Action": [ "mse:CreateNacosConfig", "mse:UpdateNacosConfig" ], "Resource": [ "acs:mse:*:*:instance/mse-cn-0pp1j8om8/3fd98c48-a709-4061-bba1-e341d79d681b/DEFAULT_GROUP/prod.yaml" ], "Effect": "Allow" } ] }
示例五:授予RAM用户对实例
mse-cn-0pp1j8om80a
中指定服务的配置读写权限。该场景是一个复杂的场景,要拥有这个细粒度权限需要以下几个层次的权限:
拥有查看实例列表的权限,这样才能从集群列表中看到对应集群。
拥有这个集群的所有读权限,这样进入这个实例可以看到所有的资源。
拥有这个命名空间下面的配置创建和修改的权限。
拥有这个Group下面的配置创建和修改的权限。
资源取值来源:
acs:mse:*:*:instance/${instanceId}/${namespaceId}/${groupId}/${serviceName}
{ "Version": "1", "Statement": [{ "Action": [ "mse:ListClusters" ], "Resource": [ "acs:mse:*:*:*" ], "Effect": "Allow" }, { "Action": [ "mse:List*", "mse:Query*", "mse:Get*" ], "Resource": [ "acs:mse:*:*:instance/mse-cn-0pp1j8om8" ], "Effect": "Allow" }, { "Action": [ "mse:CreateNacosConfig", "mse:UpdateNacosConfig" ], "Resource": [ "acs:mse:*:*:instance/mse-cn-0pp1j8om8/3fd98c48-a709-4061-bba1-e341d79d681b/DEFAULT_GROUP/test-service" ], "Effect": "Allow" } ] }
在添加权限的授权结果页面上,查看授权信息摘要,并单击完成。
后续操作
使用阿里云账号创建好RAM用户后,即可将RAM用户的登录名称及密码或者AccessKey信息分发给其他用户。其他用户可以按照以下步骤使用RAM用户登录控制台或调用API。
登录控制台
打开RAM用户登录页面。
在RAM用户登录页面,输入RAM用户登录名称,单击下一步,并输入RAM用户密码,然后单击登录。
说明RAM用户登录名称的格式为
<$username>@<$AccountAlias>
或<$username>@<$AccountAlias>.onaliyun.com
。<$AccountAlias>为账号别名,如果没有设置账号别名,则默认值为阿里云账号的ID。在子用户用户中心页面上单击有权限的产品,即可访问控制台。
调用API
使用RAM用户的AccessKey调用API。在代码中使用RAM用户的AccessKey ID和AccessKey Secret即可。