MSE支持阿里云账号给RAM用户授予云原生网关的操作权限,避免因暴露阿里云账号密钥造成的安全风险。本文介绍如何创建RAM用户并给RAM用户授权,授权后您就可以通过RAM用户使用MSE云原生网关。
使用场景
某企业开通了微服务引擎MSE云原生网关服务,由于员工工作职责不同,对资源操作所需权限也不同,现有如下需求:
鉴于安全或信任原因,不希望将云账号密钥直接透露给员工,期望可以为员工相应的账号授予权限。
用户账号只能在授权的前提下操作资源,不需要进行独立的计量计费,所有开销均计入企业账号名下。
随时可以撤销用户账号的权限,也可以随时删除其创建的用户账号。
MSE云原生网关作为一个托管型产品有开发和运维两个角色,运维人员负责集群和权限的管理,开发人员负责配置和服务管理。
使用说明
您可以使用阿里云账号通过控制台和API为RAM用户授权,本文介绍如何通过控制台操作。
步骤一:创建RAM用户
使用阿里云账号登录RAM控制台并创建RAM用户。
使用阿里云账号(主账号)或RAM管理员登录RAM控制台。
在左侧导航栏,选择 。
在用户页面,单击创建用户。
在创建用户页面的用户账号信息区域,设置用户基本信息。
登录名称:可包含英文字母、数字、半角句号(.)、短划线(-)和下划线(_),最多64个字符。
显示名称:最多包含128个字符或汉字。
标签:单击,然后输入标签键和标签值。为RAM用户绑定标签,便于后续基于标签的用户管理。
说明单击添加用户,可以批量创建多个RAM用户。
在访问方式区域选中控制台访问或OpenAPI 调用访问。
控制台访问:完成对登录安全的基本设置,包括自动生成或自定义登录密码、是否要求下次登录时重置密码以及是否要求开启多因素认证。
说明自定义登录密码时,密码必须满足您在设置RAM用户密码强度。
中设置的密码复杂度规则。关于如何设置密码复杂度规则,请参见OpenAPI 调用访问:自动为RAM用户生成访问密钥(AccessKey),支持通过API或其他开发工具访问阿里云。
说明为了保障账号安全,建议仅为RAM用户选择一种登录方式,避免RAM用户离开组织后仍可以通过访问密钥访问阿里云资源。
单击确定。
步骤二:为RAM用户添加权限
在使用RAM用户之前,需要为其添加相应权限。
使用RAM管理员登录RAM控制台。
在左侧导航栏,选择 。
在用户页面,单击目标RAM用户操作列的添加权限。
您也可以选中多个RAM用户,单击用户列表下方的添加权限,为RAM用户批量授权。
在新增授权面板,为RAM用户添加权限,然后单击确认新增授权。
选择权限策略类型,在文本框中输入要添加的权限策略关键字,然后单击搜索到的权限策略,将其添加到右侧的已选择列表中。
权限类型包括系统权限策略和自定义权限策略:
系统权限策略(粗粒度授权)
微服务引擎MSE目前支持两种粗粒度的系统权限策略。
权限策略名称
说明
AliyunMSEFullAccess
管理微服务引擎MSE的权限,等同于阿里云账号的权限,被授予该权限的RAM用户拥有控制台所有功能的操作权限。
AliyunMSEReadOnlyAccess
微服务引擎MSE的只读权限,被授予该权限的RAM用户具有阿里云账号所有资源的只读权限。
说明建议给运维人员授予AliyunMSEFullAccess权限策略,由运维人员去创建和删除资源。给开发人员授予AliyunMSEReadOnlyAccess权限策略,可以查看这些资源,但是不能删除和创建。如果想更细粒度地控制开发人员的权限,您可使用以下自定义权限策略。
自定义权限策略(细粒度授权)
如果您需要更细粒度地授权,您可以通过创建自定义策略来进行访问控制。创建自定义策略的具体步骤,请参见创建自定义权限策略。
示例一:授予RAM用户对云原生网关实例gw-8090caa2a3ab447a8bc5fdf3********的只读权限。
{ "Version": "1", "Statement": [ { "Action": [ "mse:Query*", "mse:List*", "mse:Get*", "mse:Select*", "mse:Pull*", "mse:GatewayBlackWhite*", "mse:GatewayHealthCheckList", "mse:GatewayQueryMonitor", "mse:UploadWasmFile" ], "Resource": "acs:mse:*:*:instance/gw-8090caa2a3ab447a8bc5fdf3********", "Effect": "Allow" }, { "Action": [ "mse:QueryDefaultAlertStatus", "mse:ListGatewayZone", "mse:ListUpgradableGatewayVersions", "mse:ListTagResources", "mse:ListGatewayIngressMigrateTask", "mse:ListEventRecords", "mse:GetEventFilterOptions", "mse:GetEventDetail", "mse:GetGatewaySelection", "mse:GetGatewayAlarms", "mse:GetGatewayMigrateNamespacedServices", "mse:GetGatewayIngressMigrateTaskDetail", "mse:GetPluginGuide", "mse:GetRegExpCheck", "mse:GetRegExpTest", "mse:CheckPluginLua" ], "Resource": "acs:mse:*:*:*", "Effect": "Allow" }, { "Action": [ "log:DescribeService", "log:GetProductDataCollection" ], "Resource": "*", "Effect": "Allow" }, { "Action": [ "arms:SearchContactGroup" ], "Resource": "*", "Effect": "Allow" } ] }
示例二:授予RAM用户对云原生网关实例gw-8090caa2a3ab447a8bc5fdf3********的读写权限。
{ "Version": "1", "Statement": [ { "Action": [ "mse:*" ], "Resource": "acs:mse:*:*:instance/gw-8090caa2a3ab447a8bc5fdf3********", "Effect": "Allow" }, { "Action": [ "mse:QueryDefaultAlertStatus", "mse:CreateDefaultAlert", "mse:ListGatewayZone", "mse:ListUpgradableGatewayVersions", "mse:ListEventRecords", "mse:GetEventFilterOptions", "mse:GetEventDetail", "mse:GetGatewaySelection", "mse:GetGatewayAlarms", "mse:GetGatewayMigrateNamespacedServices", "mse:GetPluginGuide", "mse:GetRegExpCheck", "mse:GetRegExpTest", "mse:CheckPluginLua", "mse:*TagResources", "mse:*CustomPlugin", "mse:*GatewayIngressMigrateTask*" ], "Resource": "acs:mse:*:*:*", "Effect": "Allow" }, { "Action": [ "log:DescribeService", "log:GetProductDataCollection" ], "Resource": "*", "Effect": "Allow" }, { "Action": [ "arms:SearchContactGroup" ], "Resource": "*", "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即可。
云原生网关授权映射表
为了方便您自定义RAM权限策略,本文提供了MSE云原生网关的授权映射表。
网关
Action | 权限说明 | 是否为只读类权限 |
AddGateway | 创建按量付费的云原生网关 | 否 |
ListGateway | 查询网关集群列表 | 是 |
GetGatewayDetail | 查看单个网关详情 | 是 |
GetGateway | 查询单个网关信息 | 是 |
ListGatewaySlb | 查询网关入口SLB | 是 |
SelectGatewaySlb | 查询已有的SLB | 否 |
AddGatewaySlb | 新关联一个网关入口SLB | 否 |
DeleteGatewaySlb | 解绑一个网关入口SLB | 否 |
DeleteGateway | 删除按量付费的云原生网关 | 否 |
服务来源
Action | 权限说明 | 是否为只读类权限 |
ListServiceSource | 查询服务来源列表 | 是 |
GetKubernetesSource | 查询已有的ACK集群 | 是 |
GetMseSource | 查询已有的MSE注册中心 | 是 |
AddServiceSource | 关联服务来源 | 否 |
DeleteServiceSource | 解绑服务来源 | 否 |
PullServices | 查询已有的服务列表 | 是 |
ImportServices | 创建或导入服务 | 否 |
ListGatewayService | 查询已订阅服务列表 | 是 |
GetGatewayServiceDetail | 查询服务详情 | 是 |
AddGatewayServiceVersion | 添加服务版本 | 否 |
UpdateGatewayServiceVersion | 更新服务版本 | 否 |
DeleteGatewayServiceVersion | 删除服务版本 | 否 |
UpdateGatewayServiceTrafficPolicy | 修改服务负载均衡策略 | 否 |
路由
Action | 权限说明 | 是否为只读类权限 |
ListGatewayRoute | 查询网关路由列表 | 是 |
AddGatewayRoute | 创建网关路由 | 否 |
ApplyGatewayRoute | 发布网关路由 | 否 |
OfflineGatewayRoute | 下线网关路由 | 否 |
DeleteGatewayRoute | 删除网关路由 | 否 |
GetGatewayRouteDetail | 查询路由详情 | 是 |
GetRateLimit | 查询路由限流配置 | 是 |
AddRateLimit | 增加路由限流配置 | 否 |
UpdateRateLimit | 删除路由限流配置 | 否 |
UpdateGatewayRouteHTTPRewrite | 更新路由重写策略 | 否 |
UpdateGatewayRouteHeaderOp | 更新路由Header设置 | 否 |
UpdateGatewayRouteCORS | 更新路由跨域策略 | 否 |
UpdateGatewayRouteTimeout | 更新路由超时策略 | 否 |
UpdateGatewayRouteRetry | 更新路由重试策略 | 否 |
证书域名
Action | 权限说明 | 是否为只读类权限 |
ListGatewayDomain | 查询关联域名列表 | 是 |
AddGatewayDomain | 关联域名 | 否 |
GetGatewayDomainDetail | 查询域名关联详情 | 是 |
UpdateGatewayDomain | 更新域名关联信息 | 否 |
DeleteGatewayDomain | 解绑关联域名 | 否 |
ListSSLCert | 查询已有证书 | 是 |
AddSSLCert | 关联域名证书 | 否 |
UpdateSSLCert | 更新域名证书 | 是 |
其他
Action | 权限说明 | 是否为只读类权限 |
GetBlackWhiteList | 查询黑白名单 | 是 |
AddBlackWhiteList | 添加黑白名单 | 否 |
UpdateBlackWhiteList | 更新黑白名单 | 否 |
AddGatewayAuth | 添加鉴权 | 否 |
ListGatewayAuth | 查询鉴权列表 | 是 |
UpdateGatewayAuth | 更新鉴权 | 否 |
DeleteGatewayAuth | 删除鉴权 | 否 |
AddAuthResource | 添加鉴权Path | 否 |
DeleteAuthResource | 删除鉴权Path | 否 |