文档首页 > > 用户指南> 主题管理> 设置主题策略> 高级模式

高级模式

分享
更新时间: 2019/08/16 GMT+08:00

通过高级模式配置策略语言,可授权云服务或其他用户对主题进行多种操作,如查询主题详情、修改主题、发布消息及删除主题等。

什么是访问策略

访问策略是主题创建者针对主题设置的允许或拒绝其他用户或云服务对主题进行特定操作的一种策略。访问策略的组成如表1所示。

表1 访问策略组成

名称

说明

约束

Version

访问策略规范版本。

目前只支持“2016-09-07”。

Id

策略的唯一标识。

不能为空。

Statement

访问策略是通过Statement语句来定义的。一个访问策略可包含一条或多条Statement语句。通过Statement语句向其他用户或云服务授权对主题的操作。

一个策略至少一条Statement语句。Statement语句的包含的元素,请参见Statement语句的组成

如下所示的访问策略的示例,包含两个Statement语句:“Statement1”和“Statement2”。

{
    "Version": "2016-09-07",
    "Id": "access_policy_01",
    "Statement": [
       {Statement1},
       {Statement2}
    ]
}

Statement语句的组成

如下为修改主题访问策略的示例。Statement语句的组成如表2所示

{
    "Version": "2016-09-07", 
    "Id": "__default_policy_ID", 
    "Statement": [
           //第一个statement语句
        {
            "Sid": "__user_pub_0", 
            "Effect": "Allow", 
            "Principal": {
                "CSP": [
                    "urn:csp:iam::123456789:root",
                    "urn:csp:iam::987654321:root"
                ]
            }, 
            "Action": [
                "SMN:Publish", 
                "SMN:QueryTopicDetail"
            ], 
            "Resource": "urn:smn:regionId:e23bf08ebb924730b452426c60849564:ECM_BKS_Topic"
        }, 
        //第二个statement语句
       {
            "Sid": "__service_pub_0", 
            "Effect": "Allow", 
            "Principal": {
                "Service": [
                    "obs"
                ]
            }, 
            "Action": [
                "SMN:Publish", 
                "SMN:QueryTopicDetail"
            ], 
            "Resource": "urn:smn:regionId:e23bf08ebb924730b452426c60849564:ECM_BKS_Topic"
        }
    ]
}
表2 Statement语句元素说明

元素名称

说明

约束

Sid

Statement语句的ID。

Statement语句ID必须是唯一的,例如statement01、statement02。

Effect

Statement语句的效果。

“Allow”或者“Deny”。

Principal

NotPrincipal

  • Principal:Statement语句作用的对象。
  • NotPrincipal:Statement语句排除作用的对象。

    目前支持“CSP”和“Service”两类对象

    • “CSP”对象指的是其他用户,可以作用于多个用户。
    • “Service”对象指的是云服务,可以作用于多个云服务。

Principal元素和NotPrincipal元素两者任选其一。

选定后,“CSP”对象填写内容的格式为格式为urn:csp:iam::domainId:root,其中domainId为其他用户的“账号ID”,需要线下获取。

“Service”对象填写内容的格式为小写的云服务名称缩写。

Action

NotAction

  • Action:Statement语句作用的操作。
  • NotAction:Statement语句排除作用的操作。

    允许使用通配符来表示一类操作,例如:SMN:Update*、SMN:Delete*。如果只填写“*”,表示Statement语句作用的操作为该资源支持的所有操作。

Action元素和NotAction元素两者任选其一

目前支持的操作有:

  • SMN:UpdateTopic
  • SMN:DeleteTopic
  • SMN:QueryTopicDetail
  • SMN:ListTopicAttributes
  • SMN:UpdateTopicAttribute
  • SMN:DeleteTopicAttributes
  • SMN:DeleteTopicAttributeByName
  • SMN:ListSubscriptionsByTopic
  • SMN:Subscribe
  • SMN:Unsubscribe
  • SMN:Publish

授权操作与SMN接口的映射关系见附录授权操作与SMN接口的映射关系

Resource

NotResource

  • Resource:Statement语句作用的主题。
  • NotResource:Statement语句排除作用的主题。

Resource和NotResource两者任选其一

选定后,填写内容为主题URN。

Condition

Condition元素是Statement语句生效的条件。

可选关键字。

支持的条件运算符和条件关键字

详情请参考Condition元素的组成

Condition元素的组成

Condition元素是Statement语句生效的条件,使用Condition元素可对主题做更细粒度的授权控制,Condition元素组成如表3

表3 Condition元素组成

名称

说明

约束

条件运算符

通过条件运算符匹配字符串、数字和日期时间。

所有的时间均要符合iso-8601规范,条件运算符取值请参见表4

条件关键字

设置条件运算的对象。

不能为空。条件关键字取值请参见表5

满足所有条件运算符是使Statement语句的Effect判定为“Allow”的必要条件,若不满足则Statement语句的Effect判定为“Deny”。

图1所示,Condition元素包含2个“条件运算符”, “condition1”和“condition2”,采用逻辑AND来计算;

其中,“条件运算符condition1”包含2个“条件关键字”,“conditionKey1”和“conditionKey2”,采用逻辑AND来计算;

再者,“条件关键字conditionKey1”包含2个“条件对比值”,“value11”和“value12”,采用逻辑OR来计算。

图1 条件控制逻辑
Condition元素示例如下。
"Condition": {
    "DateLessThan":{
         "csp:CurrentTime":"2016-11-07T15:35:00Z"
    },
    "StringLike": {
         "smn:Endpoint":["*@gmail.com","*@hotmail.com"]
    }
}
表4 Condition元素条件运算符说明

类型

条件运算符

说明

String

StringEquals

字符串匹配,区分大小写

StringNotEquals

字符串否定匹配,区分大小写

StringEqualsIgnoreCase

字符串匹配,不区分大小写

StringNotEqualsIgnoreCase

字符串否定匹配,不区分大小写

StringLike

字符串匹配,此值可包括一个或多个通配符 (*)

StringNotLike

字符串的否定匹配,此值可包括一个或多个通配符 (*)

Numeric

NumericEquals

整数或小数值匹配

NumericNotEquals

整数或小数值否定匹配

NumericLessThan

整数或小数值“小于”匹配

NumericLessThanEquals

整数或小数值“小于或等于”匹配

NumericGreaterThan

整数或小数值“大于”匹配

NumericGreaterThanEquals

整数或小数值“大于或等于”匹配

Date

DateEquals

特定日期匹配

DateNotEquals

特定日期否定匹配

DateLessThan

在特定日期和时间之前匹配

DateLessThanEquals

在特定日期和时间,或之前匹配

DateGreaterThan

在特定日期和时间之后匹配

DateGreaterThanEquals

在特定日期和时间,或之后匹配

Bool

Bool

布尔值匹配

表5 Condition元素条件关键字

条件关键字

说明

csp:CurrentTime

当前时间

smn:Protocol

订阅的协议,该关键字只在SMN:Subscribe操作时有效。

smn:Endpoint

订阅的终端,该关键字只在SMN:Subscribe操作时有效。

分享:

    相关文档

    相关产品

文档是否有解决您的问题?

提交成功!

非常感谢您的反馈,我们会继续努力做到更好!

反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

跳转到云社区