MSE支持阿里云账号给RAM用户授予MSE的操作权限,避免因暴露阿里云账号密钥造成的安全风险。本文介绍如何创建RAM用户并授予RAM用户权限,授权后您就可以通过RAM用户使用MSE。
使用场景
某企业开通了微服务引擎MSE服务,由于员工工作职责不同,对资源操作所需权限也不同,现有如下需求:
鉴于安全或信任原因,不希望将云账号密钥直接透露给员工,期望可以为员工相应的账号授予权限。
用户账号只能在授权的前提下操作资源,不需要进行独立的计量计费,所有开销均计入企业账号名下。
随时可以撤销用户账号的权限,也可以随时删除其创建的用户账号。
MSE作为一个托管型产品,有开发和运维两个角色,其中运维人员负责集群的管理、命名空间和权限的管理,而开发人员负责配置和服务管理。
使用说明
本文档内容涉及图中引擎管控链路的访问权限的配置和使用,即阿里云账号授予RAM用户权限后,被授予该权限的RAM用户拥有对控制台(OpenAPI)的相关操作权限。
关于引擎直连链路的访问鉴权配置和使用,即Nacos Client可以通过RAM用户访问MSE的Nacos的具体操作,请参见授权SDK访问。
步骤一:创建RAM用户
使用阿里云账号登录RAM控制台并创建RAM用户。
使用阿里云账号(主账号)或RAM管理员登录RAM控制台。
在左侧导航栏,选择 。
在用户页面,单击创建用户。
在创建用户页面的用户账号信息区域,设置用户基本信息。
登录名称:可包含英文字母、数字、半角句号(.)、短划线(-)和下划线(_),最多64个字符。
显示名称:最多包含128个字符或汉字。
标签:单击,然后输入标签键和标签值。为RAM用户绑定标签,便于后续基于标签的用户管理。
说明单击添加用户,可以批量创建多个RAM用户。
在访问方式区域,选中控制台访问或OpenAPI 调用访问。
控制台访问:完成对登录安全的基本设置,包括自动生成或自定义登录密码、是否要求下次登录时重置密码以及是否要求开启多因素认证。
说明自定义登录密码时,密码必须满足您在设置RAM用户密码强度。
中设置的密码复杂度规则。关于如何设置密码复杂度规则,请参见OpenAPI 调用访问:自动为RAM用户生成访问密钥(AccessKey),支持通过API或其他开发工具访问阿里云。
说明为了保障账号安全,建议仅为RAM用户选择第一种登录方式,避免RAM用户离开组织后仍可以通过访问密钥访问阿里云资源。
单击确定。
步骤二:为RAM用户添加权限
在使用RAM用户之前,需要为其添加相应权限。
使用RAM管理员登录RAM控制台。
在左侧导航栏,选择 。
在用户页面,单击目标RAM用户操作列的添加权限。
您也可以选中多个RAM用户,单击用户列表下方的添加权限,为RAM用户批量授权。
在新增授权面板,选择权限策略。在文本框中输入要添加的权限策略,单击搜索到的权限策略,然后单击确认新增授权。
系统权限策略(粗粒度授权)
微服务引擎MSE目前支持两种粗粒度的系统权限策略。
权限策略名称
说明
AliyunMSEFullAccess
管理微服务引擎MSE的权限,等同于阿里云账号的权限,被授予该权限的RAM用户拥有控制台所有功能的操作权限。
AliyunMSEReadOnlyAccess
微服务引擎MSE的只读权限,被授予该权限的RAM用户具有阿里云账号所有资源的只读权限。
说明建议给运维人员授予AliyunMSEFullAccess权限策略,由运维人员去创建和删除资源。给开发人员授予AliyunMSEReadOnlyAccess权限策略,可以查看这些资源,但是不能删除和创建。如果想更细粒度地控制开发人员的权限,您可使用以下自定义权限策略。
自定义权限策略(细粒度授权)
为了方便您自定义RAM权限策略,本文提供了微服务引擎MSE版的授权映射表。
Action
权限说明
是否为只读类权限
CreateCluster
创建集群
否
DeleteCluster
删除集群
否
QueryClusterDetail
查询集群详情
是
RestartCluster
重启集群
否
RetryCluster
重试集群
否
UpdateCluster
更新集群
否
CreateNacosConfig
创建Nacos配置
否
DeleteNacosConfig
删除Nacos配置
否
DeleteNacosConfigs
批量删除Nacos配置
否
GetNacosConfig
查看Nacos配置
是
GetNacosHistoryConfig
查看Nacos配置历史
是
UpdateNacosConfig
更新Nacos配置
否
UpdateNacosInstance
更新实例
否
DeleteNacosService
删除服务
否
CreateNacosService
创建服务
否
UpdateNacosService
更新服务
否
CreateNacosInstance
创建实例
否
UpdateNacosCluster
更新服务集群
否
以下接口仅支持授权到账号级别,无法支持按实例权限筛选展示。
Action
权限说明
是否为只读类权限
ListClusters
查看集群列表
是
以下接口仅支持授权到实例级别,无法支持细粒度的权限筛选展示。
Action
权限说明
是否为只读类权限
ListNacosConfigs
查看Nacos配置列表
是
ListNacosHistoryConfigs
查看Nacos配置历史列表
是
ListAnsServices
查看所有服务
是
ListAnsServiceClusters
查看某服务的集群
是
ListAnsInstances
查看某服务的实例
是
示例一:授予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即可。