如果系统权限策略不能满足您的要求,您可以创建自定义权限策略实现最小授权。使用自定义权限策略有助于实现权限的精细化管控,是提升资源访问安全的有效手段。本文介绍ARMS应用监控如何使用自定义权限策略。
什么是自定义权限策略
在基于RAM的访问控制体系中,自定义权限策略是指在系统权限策略之外,您可以自主创建、更新和删除的权限策略。自定义权限策略的版本更新需由您来维护。
创建自定义权限策略后,需为RAM用户、用户组或RAM角色绑定权限策略,这些RAM身份才能获得权限策略中指定的访问权限。
已创建的权限策略支持删除,但删除前需确保该策略未被引用。如果该权限策略已被引用,您需要在该权限策略的引用记录中移除授权。
自定义权限策略支持版本控制,您可以按照RAM规定的版本管理机制来管理您创建的自定义权限策略版本。
操作文档
前提条件
2022年04月01日0点之后开通ARMS的阿里云账号默认支持此功能,2022年04月01日0点之前开通ARMS的阿里云账号需要提交工单开通此功能。
在创建自定义授权策略时,您需要了解授权策略语言的基本结构和语法。更多信息,请参见权限策略基本元素。
已为RAM用户添加系统权限策略ReadOnlyAccess或AliyunARMSReadOnlyAccess,用于登录ARMS控制台。
重要为了实现对ARMS所有功能的只读权限,除了添加AliyunARMSReadOnlyAccess权限策略外,还需要为特定的资源组配置ReadTraceApp权限,否则ARMS将无法展示资源组鉴权下的应用列表。
请确认RAM用户没有添加系统权限策略AliyunARMSFullAccess。
背景信息
ARMS提供粗粒度的系统授权策略,如果这种粗粒度授权策略不能满足您的需要,那么您可以创建自定义授权策略。例如,您想控制RAM用户对某个具体应用的操作权限,您必须使用自定义授权策略才能满足这种细粒度要求。
步骤一:创建自定义权限策略
使用RAM管理员登录RAM控制台。
在左侧导航栏,选择。
在权限策略页面,单击创建权限策略。
在创建权限策略页面,单击脚本编辑页签。在策略文档中编写您的授权策略内容。
授权策略内容中各元素说明,请参见权限策略元素说明。
示例:杭州地域标签为
key0: value01或key0: value02应用的只读权限。{ "Version": "1", "Statement": [ { "Action": [ "arms:ReadTraceApp" ], "Resource": "acs:arms:cn-hangzhou:*:armsapp/*", "Effect": "Allow", "Condition": { "StringEquals": { "arms:tag/key0":[ "value01", "value02" ] } } } ] }单击页面上方的优化策略,然后单击执行,对权限策略内容进行高级优化。
高级权限策略优化功能会完成以下任务:
拆分不兼容操作的资源或条件。
收缩资源到更小范围。
去重或合并语句。
在创建权限策略页面,单击确定。
在创建权限策略对话框,输入策略名称和备注,然后单击确定。
步骤二:添加权限策略
为RAM用户添加权限策略
控制台
RAM控制台提供两种为RAM用户授权的操作入口。两者均支持单个或批量授权,请按操作习惯选择:
从用户页面发起:在用户列表中勾选目标用户后,授权面板会自动选定授权主体。适合“以用户为中心”的视角。
从授权页面发起:需手动选择授权主体,但可看到账号下所有授权记录的总览。适合“以权限为中心”的视角。
大规模批量管理建议:当需要为多名职责相同的 RAM 用户授予相同权限时,建议先将这些用户加入同一用户组,再为用户组授权(控制台路径:身份管理 >用户组),比为每个用户单独授权更易维护。
从用户页面发起
登录RAM控制台
在左侧导航栏选择身份管理 >用户。
在用户页面,找到已经创建好的RAM用户,单击操作列的新增授权。
您也可以选中多个RAM用户,单击用户列表下方的新增授权,为多个RAM用户新增授权。
在新增授权面板,为RAM用户添加权限。
选择资源范围:
账号级别:权限在当前阿里云账号内全部资源生效。适用于通用、无需按资源组隔离的场景。
资源组级别:权限仅在指定资源组内生效。适用于多团队共用一个账号、需按资源组隔离权限的场景。如果RAM用户被授予了资源组级别的权限,该用户登录控制台后,必须在顶部导航栏将资源范围切换到被授权的资源组,才能正常访问和管理该资源组内的资源。
说明系统会自动标识出高风险系统策略(例如:AdministratorAccess、AliyunRAMFullAccess等),这些策略通常包含对所有云资源的完全控制权限或对访问控制(RAM)的完全管理权限等,请谨慎授予。
资源组授权示例,请参见使用资源组限制RAM用户管理指定的ECS实例。
选择授权主体:
授权主体即需要添加权限的RAM用户。如果是从用户页面发起,系统会自动选择当前的RAM用户。如果是从授权页面发起,需要手动选择RAM用户,支持批量选中多个。
选择权限策略:
系统策略:可以直接搜索并选择。搜索技巧:您可以利用搜索框快速定位策略。支持按产品名称(如
ECS、OSS)、权限级别(如ReadOnly、FullAccess)或完整的策略名称进行模糊搜索。例如,为 RAM 用户授予财务管理(费用与成本)权限时,搜索BSS即可找到AliyunBSSFullAccess(管理费用与成本)等财务相关策略。以下列出部分常见云产品对应的系统策略名称,方便快速定位:
云产品
系统策略名称
权限说明
费用与成本(财务管理)
AliyunBSSFullAccess管理费用与成本
云监控
AliyunCloudMonitorReadOnlyAccess只读访问云监控
智能建站
AliyunWebsiteBuildFullAccess管理智能建站
云效
AliyunYunxiaoFullAccess管理云效
百炼
AliyunBailianFullAccess管理百炼
云解析 DNS
AliyunDNSFullAccess管理云解析 DNS
SSL 证书
AliyunYundunCertFullAccess管理 SSL 证书
无影云手机
AliyunECDFullAccess管理无影云手机
工单支持
AliyunSupportFullAccess管理工单
资源中心
AliyunResourceCenterFullAccess管理资源中心
AgentBay
AliyunAgentBayFullAccess管理 AgentBay
云安全中心
AliyunYundunSASFullAccess管理云安全中心
如果搜索不到目标产品的系统策略,可查阅对应云产品的权限文档获取完整列表,也可以创建自定义策略以满足更精细的权限控制需求。
自定义策略:需要先创建自定义权限策略后再来授权。
跨页勾选限制:权限策略列表分页显示,全选操作仅作用于当前页。翻页后,已选策略仍保留在已选列表中,但新页面中的策略不会自动选中,需逐页勾选。
快速授予管理员权限:如需授予管理员权限,可在搜索框中输入
AdministratorAccess搜索并直接勾选,无需逐页勾选。选中该策略时会触发高风险授权提醒。
提交授权:单击确认新增授权。
确认授权绑定操作结果,单击关闭。
从授权页面发起
登录RAM控制台
在左侧导航栏,选择。
在授权页面,单击新增授权。
在新增授权面板,为RAM用户添加权限。具体内容同上。
确认授权绑定操作结果,单击关闭。
通过 RAM 控制台概览页快速开始功能创建的 RAM 用户,系统会根据所选场景自动授予对应的系统策略,无需手动授权:
超级用户:自动授予
PowerUserAccess策略。可管理云服务和资源,但不能管理 RAM 身份及其权限、资源目录和资金账号信息。账号管理员:自动授予
AdministratorAccess策略。可管理所有阿里云资源,包括 RAM 身份和权限。
建议仅在确实需要超级管理员权限时使用上述选项,日常操作请遵循最小权限原则,仅授予具体业务所需的权限。
OpenAPI
授予自定义策略
调用CreatePolicy创建一个自定义策略,可以参考权限策略基本元素和权限策略示例库概览。
调用AttachPolicyToUser为RAM用户授予账号级别的权限,注意此处
PolicyType选择Custom。或者调用AttachPolicy为RAM用户授予资源组级别的权限。
授予系统策略
直接调用AttachPolicyToUser将权限策略绑定至指定RAM用户,注意此处
PolicyType选择System,PolicyName详见系统策略参考。或者调用AttachPolicy为RAM用户授予资源组级别的权限。
为RAM角色添加权限策略
为RAM角色添加权限策略后,您可以使用RAM角色登录ARMS控制台。具体操作,请参见扮演RAM角色。
权限策略元素说明
效果(Effect)
授权效果包括两种:允许(Allow)和拒绝(Deny)。
操作(Action)
Action | 权限说明 |
arms:ReadTraceApp | 应用监控只读权限,用于查看应用概览、接口调用、应用诊断等信息。 |
arms:EditTraceApp | 应用监控编辑权限,即应用自定义配置和设置自定义参数的权限。 |
arms:DeleteTraceApp | 应用监控删除权限,即删除应用的权限。 |
资源(Resource)
用于指定被授权的具体对象。
格式如下:
"Resource": [
"acs:arms:<regionid>:*:armsapp/<appname>"
]请将
<regionid>替换为指定地域ID。如果当前授权针对所有地域,可替换为*。请将
<appname>替换指定应用名称。如果当前授权针对所有应用,可替换为*;如果当前授权针对的应用名称拥有相同前缀,可替换为名称前缀*,例如k8s*。
条件(Condition)
条件块(Condition Block)由一个或多个条件子句构成。一个条件子句由条件操作类型、条件关键字和条件值组成。 
逻辑说明:
条件满足:一个条件关键字可以指定一个或多个值,在条件检查时,如果条件关键字的值与指定值中的某一个相同(OR),即可判定条件满足。
条件子句满足:同一条件操作类型的条件子句下,若有多个条件关键字,所有条件关键字必须同时满足(AND),才能判定该条件子句满足。
条件块满足:条件块下的所有条件子句同时满足(AND)的情况下,才能判定该条件块满足。
应用监控支持通过标签键值对指定被授权的对象。设置应用标签的操作,请参见标签管理。
标签键值对支持的条件操作类型:
StringEquals
StringNotEquals
StringEqualsIgnoreCase
StringNotEqualsIgnoreCase
StringLike
StringNotLike
条件关键字:arms:tag。
条件关键值:标签键值对。
示例:对标签键值对等于key0: value01或key0: value02的应用授权。
"Condition": {
"StringEquals": { //条件操作类型。
"arms:tag/key0":[ //条件关键字
"value01", //条件关键值
"value02"
]
}
}授权信息参考
使用自定义权限策略,您需要了解业务的权限管控需求,并了解ARMS的授权信息。详细内容请参见授权信息。