自定义授权可以满足用户个性化的授权策略需求,RAM控制台提供了可视化配置和脚本配置两种配置方式。本文为您介绍授权的基本概念、使用场景、基本步骤和授权的语法、示例。
使用场景
由于系统策略的授权粒度比较粗,很多时候并不能满足您的细粒度权限控制的需求,此时可以基于RAM Policy实现自定义授权。
例如您的业务需要某一个RAM用户只有查询直播截图配置的权限,就可以通过自定义授权进行实现。
授权操作
此处我们将通过两个示例,介绍如何进行自定义授权。
示例1,授权查询直播截图配置
如您现在业务需要给一个RAM用户只授权查询直播截图配置的权限,则可以参考以下5步进行实现:
进入创建权限策略页面,选择服务:媒体服务->视频直播。
展开读操作列表,输入DescribeLiveSnapshotConfig(查询直播截图配置接口)进行筛选,选中筛选结果。
点击继续编辑基本信息。
输入权限策略名称,点击确定。
创建RAM用户并授权新建的权限策略,具体操作可参见创建RAM用户并授权。
完成之后通过创建的RAM用户调用DescribeLiveSnapshotConfig接口,会返回正确的数据。调用其他的接口会提示用户无权限。
示例2,授权查询直播截图配置(限制IP)
在示例1中已经实现了对查询直播截图配置接口的权限控制。若此时您还想在其基础之上进行颗粒度更细的控制,例如限制IP,则可以参考以下5步进行实现:
进入权限策略列表页面,查询出在示例1中创建的权限策略。
点击权限策略名称,进入权限策略详情页。
点击修改策略内容进入修改页,并选择可视化编辑页签。
点击条件选项,进行添加条件。条件键选择acs:SourceIp,运算符选择IpAddress,条件值输入IP地址。
点击继续编辑基本信息,之后点击确定。
完成之后,只有调用接口的IP地址正确才会返回数据,否则会提示没有权限操作。
若想了解更多自定义授权相关操作,可参见创建自定义权限策略。
授权语法
细心的您可能已经发现,在操作授权的过程中,权限策略详情页中有一个策略内容页签对权限策略进行了描述。以示例2为例,权限策略内容如下:
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": "live:DescribeLiveSnapshotConfig",
"Resource": "*",
"Condition": {
"IpAddress": {
"acs:SourceIp": [
"127.0.0.1"
]
}
}
}
]
}
参数解释如下:
Version
Version定义了Policy的版本,固定设置为1。
Statement
通过Statement描述授权语义,其中可以根据业务场景包含多条语义,每条包含对Action、Effect、Resource 和 Condition的描述。每次请求,系统会逐条依次匹配检查,所有匹配成功的Statement会根据Effect的设置不同分为通过(Allow)、禁止(Deny),其中禁止(Deny)的优先。如果匹配成功的都为通过,该条请求即鉴权通过。如果匹配成功有一条禁止,或者没有任何条目匹配成功,该条请求被禁止访问。
Effect
Effect设置授权效果,授权效果包括两种:允许(Allow)和拒绝(Deny)
Action
直播支持的Action操作与API一一对应,格式为
live:API名称
,如上面示例的直播截图配置接口操作:live:DescribeLiveSnapshotConfig
,注意多个使用英文逗号分隔。通过指定授权的Action列表,就能组合出想要的权限分组。所有可用操作,请参见API概览。
Resource
Resource指代的是Live上面的某个具体的资源或者某些资源(支持通配符*),Resource的规则是
acs:{ramCode}:{region}:{accountId}:{relative}
。Resource也是一个列表,可以有多个Resource。其中ramCode视频直播服务涉及三种:live,cdn,live-interaction。region字段暂不支持,请设置为*
。accountId为账号ID。relative为具体资源,一般设置为*,部分接口支持具体资源控制。当然您也可以直接像以上示例,将resource设置为*。说明通过权限策略可视化配置,会自动匹配接口对应的ramCode。
Condition
Condition代表Policy授权的一些条件,对访问来源等进行限制,为可选项。
支持的条件如下:
Condition
功能
合法取值
acs:SourceIp
指定 IP 地址或网段
普通的IP,支持通配符*
acs:SecureTransport
是否是 HTTPS 协议
true或者false
acs:MFAPresent
用户登录时是否使用了多因素认证
true或者false
acs:CurrentTime
指定合法的访问时间(云端接收到请求的时间)
ISO8601格式,例如:2012-11-11T23:59:59Z
脚本编辑
在您了解授权语法之后,可能已经想到通过脚本编辑来进行权限策略配置。例如我们在示例2的基础之上需要通过脚本编辑增加一个127.0.0.2的IP,则可以参考以下5步通过脚本编辑进行添加:
进入权限策略列表页面,查询出在示例1中创建的权限策略。
点击权限策略名称,进入权限策略详情页。
点击修改策略内容进入修改页,并选择脚本编辑页签。
在acs:SourceIp内增加IP127.0.0.2。
点击继续编辑基本信息,之后点击确定,便完成了IP地址添加。
完成之后,权限策略内容如下:
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": "live:DescribeLiveSnapshotConfig",
"Resource": "*",
"Condition": {
"IpAddress": {
"acs:SourceIp": [
"127.0.0.1",
"127.0.0.2"
]
}
}
}
]
}
版本管理
某些时候,我们在更新权限策略之后,因为一些原因,需要回退到之前的权限策略,就可以通过版本管理实现。具体操作:在权限策略详情页,选择版本管理页签,对回退的目标版本进行设置当前版本操作。
一个权限策略,最多保存5个版本。
进阶使用
此时您已经了解了如何进行自定义授权,若现在有这样一个业务场景:
您对添加直播截图配置接口进行权限控制。
只能对域名A和域名B进行操作。
针对此类授权需求,可通过资源控制参考以下6个步骤进行授权操作:
进入创建权限策略页面,选择服务:媒体服务->视频直播。
展开写操作列表,输入AddLiveAppSnapshotConfig(添加直播截图配置接口)进行筛选,选中筛选结果。
在资源选项中,选择指定资源,然后添加资源。账号输入*,资源输入domainA。重复操作添加domainB。
点击继续编辑基本信息。
输入权限策略名称,点击确定。权限策略描述如下:
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": "live:AddLiveAppSnapshotConfig", "Resource": [ "acs:cdn:*:*:domain/domainA", "acs:cdn:*:*:domain/domainB" ] } ] }
对RAM用户授权创建的权限策略。
完成操作之后,授权的RAM用户只能对domainA与domainB两个域名进行添加直播截图配置。
因各接口支持的资源控制格式不尽相同,所以在进行颗粒度较细的权限配置时,建议您通过可视化编辑进行配置。