文档首页 > > 用户指南> 权限>

策略

策略

分享
更新时间:2021/04/20 GMT+08:00

“统一身份认证”页面的左侧导航树单击“权限”,可以查看系统权限和自定义策略。

策略内容

给用户组选择策略时,单击策略前面的,可以查看策略的详细内容,以“IAM ReadOnlyAccess”为例。

作用范围:给用户组授予该策略时,选择的授权区域。
  • 全局服务:服务部署时不区分物理区域,为全局级服务。在全局项目中进行授权,访问该服务时,不需要切换区域。包括对象存储服务(OBS)、内容分发网络(CDN)、标签管理服务(TMS)等。
  • 区域级项目:服务部署时通过物理区域划分,为项目级服务。在除全局区域外的其他区域中授权,并且只在授权区域生效,如果需要所有区域都生效,则所有区域都需要进行授权操作,例如弹性云服务器(ECS)。IAM用户访问该服务时,需要先切换到授权区域。
  • 全局级服务/区域级项目:权限可以授予任意区域,包括全局服务和区域级服务,例如FullAccess角色。作用范围为全局服务,授权将对全局服务生效;作用范围为所有项目,授权将对全局服务和所有项目(包括未来创建的项目)生效;作用范围为项目,授权仅对指定项目生效。

策略结构

策略结构包括:Version(策略版本号)和Statement(策略权限语句),其中Statement可以有多个,表示不同的授权项。

图1 策略结构

策略语法

以OBS的自定义策略为例,说明策略的语法。
{
        "Version": "1.1",
        "Statement": [
                {
                        "Effect": "Allow",
                        "Action": [
                                "obs:bucket:ListAllMybuckets",
                                "obs:bucket:HeadBucket",
                                "obs:bucket:ListBucket",
                                "obs:bucket:GetBucketLocation",
                        ],
                        "Condition": {
                                "StringEndWithIfExsits": {
                                       "g:UserName": [
                                               "specialCharactor"
                                       ]
                                },
                                "Bool": {
                                       "g:MFAPresent": [
                                               "true"
                                       ]
                                }
                        },
                        "Resource": [
                                "obs:*:*:bucket:*"
                        ]
                }
        ]
}
表1 参数说明

参数

含义

Version

策略的版本

1.1:策略

Statement:

策略的授权语句

Action:授权项

操作权限

格式为:服务名:资源类型:操作,支持通配符号*,通配符号*表示所有。

示例:

"obs:bucket:ListAllMybuckets":表示查看OBS桶列表权限,其中obs为服务名,bucket为资源类型,ListAllMybuckets为操作。

Effect:作用

定义Action中的操作权限是否允许执行。

  • Allow:允许执行。
  • Deny:不允许执行。
说明:

当同一个Action的Effect既有Allow又有Deny时,遵循Deny优先的原则。

Resource: 资源类型

策略所作用的资源

格式为:服务名:region:domainId:资源类型:资源路径, 通配符号*表示所有。

示例:

  • "obs:*:*:bucket:*": 表示所有的OBS桶。
  • "obs:*:*:object:my-bucket/my-object/*": 表示my-bucket桶my-object目录下的所有对象。

Condition: 条件

使策略生效的特定条件,包括条件键运算符

格式为:条件运算符: {条件名:[条件值1, 条件值2]}。

示例:

"StringEndWithIfExists":{"g:UserName":["specialCharactor"]}:表示当用户输入的用户名以"specialCharactor"结尾时该条statement生效。

  • 条件键

    条件键表示策略语句的 Condition 元素中的键值。分为全局条件键和服务条件键。全局级条件键(前缀为g:)适用于所有操作,详情请参见:表2;服务级条件键(前缀为服务缩写,如obs:)仅适用于对应服务的操作,详情请参见云服务用户指南,如OBS请求条件

表2 全局条件键

全局条件键

类型

说明

g:CurrentTime

时间

接收到鉴权请求的时间。以 ISO 8601 格式表示,例如:2012-11-11T23:59:59Z

g:DomainName

字符串

华为云帐号名称

g:MFAPresent

布尔值

是否使用MFA多因素认证方式获取Token

g:MFAAge

数值

通过MFA多因素认证方式获取的Token的生效时长。该条件需要和g:MFAPresent一起使用

g:ProjectName

字符串

项目名称

g:ServiceName

字符串

服务名称

g:UserId

字符串

IAM用户ID

g:UserName

字符串

IAM用户名

  • 运算符

    运算符与条件键、条件值一起构成完整的条件判断语句,当请求信息满足该条件时,策略才能生效,详情请参见:运算符。运算符可以增加后缀“IfExists”,表示对应请求值为空或满足条件的请求值均使策略生效,如“StringEqualsIfExists”表示请求值为空或请求值等于条件值均使策略生效。

表3 运算符(字符串型运算符,如未增加说明,不区分大小写。)

运算符

类型

说明

StringEquals

字符串

请求值等于条件值(区分大小写)

StringNotEquals

字符串

请求值不等于条件值(区分大小写)

StringEqualsIgnoreCase

字符串

请求值等于条件值

StringNotEqualsIgnoreCase

字符串

请求值不等于条件值

StringLike

字符串

请求值包含条件值

StringNotLike

字符串

请求值不包含条件值

StringStartWith

字符串

请求值以条件值开头

StringEndWith

字符串

请求值以条件值结尾

StringNotStartWith

字符串

请求值不以条件值开头

StringNotEndWith

字符串

请求值不以条件值结尾

StringEqualsAnyOf

字符串

可配置多个条件值,请求值与任意一个条件值相同(区分大小写)

StringNotEqualsAnyOf

字符串

可配置多个条件值,请求值与所有条件值都不同(区分大小写)

StringEqualsIgnoreCaseAnyOf

字符串

可配置多个条件值,请求值与任意一个条件值相同

StringNotEqualsIgnoreCaseAnyOf

字符串

可配置多个条件值,请求值与所有条件值都不同

StringLikeAnyOf

字符串

可配置多个条件值,请求值包含任意一个条件值

StringNotLikeAnyOf

字符串

可配置多个条件值,请求值不包含所有条件值

StringStartWithAnyOf

字符串

可配置多个条件值,请求值以任意一个条件值开头

StringEndWithAnyOf

字符串

可配置多个条件值,请求值以任意一个条件值结尾

StringNotStartWithAnyOf

字符串

可配置多个条件值,请求值不以任意一个条件值开头

StringNotEndWithAnyOf

字符串

可配置多个条件值,请求值不以任意一个条件值结尾

NumberEquals

数值

请求值等于条件值

NumberNotEquals

数值

请求值不等于条件值

NumberLessThan

数值

请求值小于条件值

NumberLessThanEquals

数值

请求值小于或等于条件值

NumberGreaterThan

数值

请求值大于条件值

NumberGreaterThanEquals

数值

请求值大于或等于条件值

NumberEqualsAnyOf

数值

可配置多个条件值,请求值与任意一个条件值相同

NumberNotEqualsAnyOf

数值

可配置多个条件值,请求值与所有条件值都不同

DateLessThan

时间

请求值早于条件值

DateLessThanEquals

时间

请求值早于或等于条件值

DateGreaterThan

时间

请求值晚于条件值

DateGreaterThanEquals

时间

请求值晚于或等于条件值

Bool

布尔值

请求值等于条件值

IpAddress

IP地址

请求值在条件值所设置的IP地址范围内

NotIpAddress

IP地址

请求值不在条件值所设置的IP地址范围内

IsNullOrEmpty

空值

请求值为null或者空字符串

IsNull

空值

请求值为null

IsNotNull

空值

请求值不为null

检查规则

用户在发起访问请求时,系统根据用户被授予的访问策略中的action进行鉴权判断。检查规则如下:

图2 系统鉴权逻辑图

  

  1. 用户发起访问请求。
  2. 系统在用户被授予的策略中寻找请求对应的action,优先寻找Deny指令。如果找到一个适用的Deny指令,系统将返回Deny决定。
  3. 如果没有找到Deny指令,系统将寻找适用于请求的任何Allow指令。如果找到一个Allow指令,系统将返回Allow决定。
  4. 如果找不到Allow指令,最终决定为Deny,鉴权结束。
分享:

    相关文档

    相关产品

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

提交成功!非常感谢您的反馈,我们会继续努力做到更好!
反馈提交失败,请稍后再试!

*必选

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

字符长度不能超过200

提交反馈 取消

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

智能客服提问云社区提问