如果系统权限策略不能满足您的要求,您可以创建自定义权限策略实现最小授权。使用自定义权限策略有助于实现权限的精细化管控,是提升资源访问安全的有效手段。本文介绍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用户管理指定的ECS实例。
选择授权主体。
授权主体即需要添加权限的RAM用户。系统会自动选择当前的RAM用户。
选择权限策略。
权限策略是一组访问权限的集合,分为以下两种。支持批量选中多条权限策略。
单击确认新增授权。
单击关闭。
为RAM角色添加权限策略
使用RAM管理员登录RAM控制台。
在左侧导航栏,选择 。
在角色页面,单击目标RAM角色操作列的新增授权。
您也可以选中多个RAM角色,单击角色列表下方的新增授权,为RAM角色批量授权。
在新增授权面板,为RAM角色授权。
选择资源范围。
账号级别:权限在当前阿里云账号内生效。
资源组级别:权限在指定的资源组内生效。
说明指定资源组授权生效的前提是该云服务及资源类型已支持资源组,详情请参见支持资源组的云服务。
选择授权主体。
授权主体即需要添加权限的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的授权信息。详细内容请参见授权信息。