MSE支持阿里云账号给RAM用户授予MSE的操作权限,避免因暴露阿里云账号密钥造成的安全风险。本文介绍如何创建RAM用户并授予RAM用户权限,授权后您就可以通过RAM用户使用MSE。
使用场景
某企业开通了微服务引擎MSE服务,由于员工工作职责不同,对资源操作所需权限也不同,现有如下需求:
- 鉴于安全或信任原因,不希望将云账号密钥直接透露给员工,期望可以为员工相应的账号授予权限。
- 用户账号只能在授权的前提下操作资源,不需要进行独立的计量计费,所有开销均计入企业账号名下。
- 随时可以撤销用户账号的权限,也可以随时删除其创建的用户账号。
- MSE作为一个托管型产品有开发和运维两个角色,运维人员负责做集群的管理、命名空间和权限的管理,开发人员负责配置和服务管理。
使用说明
阿里云账号和RAM用户授权成功后,您就可以通过RAM用户使用MSE的控制台和OpenAPI。
说明 若您希望通过RAM用户使用MSE的客户端,请参见授权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版的授权映射表。
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用户后,即可将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即可。