自定义授权

自定义授权可以满足用户个性化的授权策略需求,RAM控制台提供了可视化配置和脚本配置两种配置方式。本文为您介绍授权的基本概念、使用场景、基本步骤和授权的语法、示例。

使用场景

由于系统策略的授权粒度比较粗,很多时候并不能满足您的细粒度权限控制的需求,此时可以基于RAM Policy实现自定义授权。

例如您的业务需要某一个RAM用户只有查询直播截图配置的权限,就可以通过自定义授权进行实现。

授权操作

此处我们将通过两个示例,介绍如何进行自定义授权。

示例1,授权查询直播截图配置

如您现在业务需要给一个RAM用户只授权查询直播截图配置的权限,则可以参考以下5步进行实现:

  1. 进入创建权限策略页面,选择服务:媒体服务->视频直播

  2. 展开读操作列表,输入DescribeLiveSnapshotConfig(查询直播截图配置接口)进行筛选,选中筛选结果。

  3. 点击继续编辑基本信息

  4. 输入权限策略名称,点击确定。

  5. 创建RAM用户并授权新建的权限策略,具体操作可参见创建RAM用户并授权

完成之后通过创建的RAM用户调用DescribeLiveSnapshotConfig接口,会返回正确的数据。调用其他的接口会提示用户无权限。

示例2,授权查询直播截图配置(限制IP)

在示例1中已经实现了对查询直播截图配置接口的权限控制。若此时您还想在其基础之上进行颗粒度更细的控制,例如限制IP,则可以参考以下5步进行实现:

  1. 进入权限策略列表页面,查询出在示例1中创建的权限策略。

  2. 点击权限策略名称,进入权限策略详情页。

  3. 点击修改策略内容进入修改页,并选择可视化编辑页签。

  4. 点击条件选项,进行添加条件。条件键选择acs:SourceIp,运算符选择IpAddress,条件值输入IP地址

  5. 点击继续编辑基本信息,之后点击确定。

完成之后,只有调用接口的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. 进入权限策略列表页面,查询出在示例1中创建的权限策略。

  2. 点击权限策略名称,进入权限策略详情页。

  3. 点击修改策略内容进入修改页,并选择脚本编辑页签。

  4. 在acs:SourceIp内增加IP127.0.0.2。

  5. 点击继续编辑基本信息,之后点击确定,便完成了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个步骤进行授权操作:

  1. 进入创建权限策略页面,选择服务:媒体服务->视频直播

  2. 展开写操作列表,输入AddLiveAppSnapshotConfig(添加直播截图配置接口)进行筛选,选中筛选结果。

  3. 在资源选项中,选择指定资源,然后添加资源。账号输入*,资源输入domainA。重复操作添加domainB。

  4. 点击继续编辑基本信息

  5. 输入权限策略名称,点击确定。权限策略描述如下:

    {
        "Version": "1",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": "live:AddLiveAppSnapshotConfig",
                "Resource": [
                    "acs:cdn:*:*:domain/domainA",
                    "acs:cdn:*:*:domain/domainB"
                ]
            }
        ]
    }
  6. 对RAM用户授权创建的权限策略。

完成操作之后,授权的RAM用户只能对domainA与domainB两个域名进行添加直播截图配置。

说明

因各接口支持的资源控制格式不尽相同,所以在进行颗粒度较细的权限配置时,建议您通过可视化编辑进行配置。