上云无忧 > 文档中心 > 天翼云对象存储(OOS经典版)I型IAM策略编写规则教程
对象存储
天翼云对象存储(OOS经典版)I型IAM策略编写规则教程

文档简介:
Version Version策略元素用在策略之中,用于定义策略语言的版本,包含在所有策略中的Statement元素之前。 目前OOS IAM在用的策略版本为:2012-10-17,兼容AWS最新策略版本。 如果未包含Version元素,则此值默认为2012-10-17。
*产品来源:中国电信天翼云。免费试用 咨询热线:400-826-7010,为您提供专业的售前咨询,让您快速了解云产品,助您轻松上云! 微信咨询
  免费试用、价格特惠

IAM策略编写规则


Version

Version策略元素用在策略之中,用于定义策略语言的版本,包含在所有策略中的Statement元素之前。

目前OOS IAM在用的策略版本为:2012-10-17,兼容AWS最新策略版本。

如果未包含Version元素,则此值默认为2012-10-17。

Statement

Statement为策略的主要元素,该元素为必填项。Statement中可含一条单独的JSON语句,也可包含由多条语句组成的JSON语句块。每条单独的语句块必须使用大括号{}括起来。每个JSON语句块中包括下列元素:Sid(非必填)、Effect(必填)、Action或NotAction(二选一)、Resource或NotResource(二选一)、Condition(非必填)。

Statement语句的结构如下:


“Statement”: [ {…}, {…}, {…}, …]


例如下例为多个JSON语句块组成的示例:

{

      "Version": "2012-10-17",

      "Statement": [

        {

              "Sid": " AllowGroupToManageTrail",

              "Effect": "Allow",

              "Action": "cloudtrail:*",

              "Resource": "*"

        },

        {

              "Sid": " AllowGroupToSeeBucket",

              "Effect": "Allow",

              "Action": [

                  "oos:GetObject",

                  "oos:ListBucket"

            ],

              "Resource": [

                  "arn:ctyun:oos::10rc2arpn6306:trailbucket",

                  "arn:ctyun:oos::10rc2arpn6306:trailbucket/*"

            ]

        }

    ]

}

Sid

Sid是针对策略语句提供的可选标识符,用户可以为声明数组中的每份声明指定Sid值,Sid值是策略文件ID的子ID。在IAM中,Sid值在JSON策略中必须唯一。

Effect

Effect元素是必需具备的元素,用于指定声明所产生的结果是“允许”还是“显式拒绝”。Effect的有效值为Allow和Deny。在默认情况下,将拒绝访问资源。如要允许访问资源,必须将Effect元素设置为Allow。

Action

Action元素描述将允许或拒绝的指定操作。每个服务有对应的任务操作,用户可以使用相应服务来执行所描述的任务。目前提供的服务有:oos(对象存储)、cloudtrail(操作跟踪)、statistics(统计)和iam。具体每种服务包括的操作详见操作列表。

Action元素的语法结构为:”Action”: “服务:具体操作”。其中具体操作也可以用通配符(*)表示某类操作。

  • 示例1:OOS:获取对象操作。

"Action": "oos:GetObject"

  • 示例2:IAM:创建IAM用户。

"Action": "iam:CreateUser"

  • 示例3:使用通配符(*)表示执行OOS的所有服务

"Action": "oos:*"

示例4:使用通配符(*)表示执行IAM服务中包含AccessKey的操作。

"Action": "iam:*AccessKey*"


NotAction

NotAction元素描述与指定操作列表之外的所有内容显式匹配。使用NotAction时只列出不应匹配的一些操作。使用NotAction时:

  • 如果使用Allow效果,则允许未列出的所有适用操作或服务。

  • 如果使用Deny效果,则拒绝此类未列出的操作或服务。如果想允许某个已列出的操作,则必须显式允许此操作。

  • 示例1:除删除存储桶操作外,允许用户执行OOS其他所有操作。

{

      "Version": "2012-10-17",

      "Statement": [{

"Effect":   "Allow",

"NotAction":   "oos:DeleteBucket",

"Resource":   "arn:ctyun:oos::10rc2arpn6306:*",

      }]

}

  • 示例2:允许用户执行除IAM服务外的所有操作。

{

      "Version": "2012-10-17",

      "Statement": [{

"Effect":   "Allow",

"NotAction":   "iam:*",

"Resource": "*",

    }]

}

  • 示例3:拒绝除oos、cloudtrail和statistics之外的服务。但并不是允许oos、cloudtrail和statistics服务的操作,如果允许oos、cloudtrail和statistics中的某个操作,需要再写新的策略进行显式允许。

Resource

Resource元素指定执行策略的资源,可以指定一个或多个对象。

格式可以为:

    • “Resource”: “arn:ctyun:service::accountid:resource”

    • “Resource”: “arn:ctyun:service::accountid:resourcetype/resource”

其中:

service:服务名;

accountid:账户ID;

  • resource:具体资源。在指定资源时,可以使用通配符,其中*表示字符的任意组合,?表示任何单个字符。

说明:在resource最后部分添加策略变量“${ctyun:username}”指定占位符。当策略执行时,策略变量将被替换为请求本身的用户名。

如下列举例,将含有策略变量的策略附加给多个用户,当用户A发起请求时,username将替换为A的用户名;当用户B发起请求时,username将替换为B的用户名。

{

  "Version":   "2012-10-17",

  "Statement": [

    {

      "Action": [

        "oos:GetObject",

        "oos:PutObject"

      ],

      "Effect": "Allow",

      "Resource":   ["arn:ctyun:oos::123456789012:mybucket/${ctyun:username}/*"]

    }

  ]

}

  • resourcetype:资源类型。

NotResource

NotResource元素指除指定资源列表之外的所有内容显式匹配的策略元素。使用NotResource时,只列出不应匹配的一些资源,而不是包括将匹配的资源列表。使用NotResource时应注意,在此元素中指定的资源是受限的资源,即:

  • 如果使用Allow,则将允许未列出的所有资源,包括所有其他服务中的资源;

  • 如果使用Deny,则拒绝所有未列出资源。

Condition

Condition元素描述允许用户指定策略生效的条件。在Condition元素中,用户可构建表达式,并使用条件运算符将策略中的条件与请求值相匹配。

Condition元素可以由多个条件组成。条件包括:条件运算符、条件键和条件值组成,一个条件键可以对应多个条件值。


Condition的语法结构如下:


“Condition”: {“条件运算符A”: {“条件键A”:[“条件值A1”, “条件值A2”,…]},   “条件运算符B”: {“条件键B”:[“条件值B1”, “条件值B2”,…] } }

说明:条件键不区分大小写。如果条件值是时间,将需要设置的时间转换为UTC+0时区的时间。


若存在多个条件,各个条件之间的约束如下:

  • 存在多个条件运算符,采用逻辑AND评估这些条件;

  • 若一个条件键对应多个条件值,采用逻辑OR评估这些条件值;

  • 必须满足所有条件运算符才能做出允许或者拒绝。如果多个条件中的任何一个不满足,那么策略不生效。

条件键、运算符、条件值见下表:


条件键

运算符

条件值

ctyun:CurrentTime

l DateEquals:匹配指定日期;

l DateNotEquals:不等于指定日期;

l DateLessThan:早于指定日期;

l DateLessThanEquals:早于或等于指定日期;

l DateGreaterThan:晚于指定日期;

l DateGreaterThanEquals:晚于或等于指定日期。

格式为:yyyy-MM-dd’T’HH:mm:ss’Z’。例如:2019-12-18T09:00:00Z

DateEqualsDateNotEquals精确到天,其他精确到秒。

注意:将需要设置的时间转换为UTC+0时间。

ctyun:SourceIp

l IpAddress:与指定IP地址或范围匹配;

l NotIpAddress:除指定IP地址或范围外的所有IP地址匹配。

l IPv4:点分十进制格式

l IPv63216进制数,格式为X:X:X:X:X:X:X:X

如果指定地址范围,IP地址后加掩码表示,如192.163.1.5/3

ctyun:userid

l StringEquals:精准匹配指定的值,区分大小写;

l StringNotEquals:与指定的值不匹配,区分大小写;

l StringEqualsIgnoreCase:与指定的值精准匹配,不区分大小写。

l StringNotEqualsIgnoreCase:与指定的值不匹配,不区分大小写;

l StringLike:与指定的值精准匹配;或通过填充通配符,与指定的值相似,可以包括多字符匹配的通配符 (*) 或单字符匹配的通配符 (?)。区分大小写;

l StringNotLike:与指定的值不匹配,区分大小写的无效匹配。或通过填充通配符,与指定的值也不匹配。

包含数字和小写字母的32位字符串。

运算符为StringLikeStringNotLike可以包含通配符。

ctyun:username

l StringEquals:精准匹配指定的值,区分大小写;

l StringNotEquals:与指定的值不匹配,区分大小写;

l StringEqualsIgnoreCase:与指定的值精准匹配,不区分大小写。

l StringNotEqualsIgnoreCase:与指定的值不匹配,不区分大小写;

l StringLike:与指定的值精准匹配;或通过填充通配符,与指定的值相似,可以包括多字符匹配的通配符 (*)或单字符匹配的通配符 (?)。区分大小写;

l StringNotLike:与指定的值不匹配,区分大小写的无效匹配。或通过填充通配符,与指定的值也不匹配。

1~64位字符串组成,字符只能包含字母、数字或特殊字符,特殊字符只能是:下划线(_)、中划线(-)、逗号(,)、句点(.)、加号(+)、等号(=)和at符号(@)。

说明:运算符为StringLikeStringNotLike可以包含通配符。

ctyun:UserAgent

l StringEquals:精准匹配指定的值,区分大小写;

l StringNotEquals:与指定的值不匹配,区分大小写;

l StringEqualsIgnoreCase:与指定的值精准匹配,不区分大小写。

l StringNotEqualsIgnoreCase:与指定的值不匹配,不区分大小写;

l StringLike:与指定的值精准匹配;或通过填充通配符,与指定的值相似,可以包括多字符匹配的通配符 (*) 或单字符匹配的通配符 (?)。区分大小写;

l StringNotLike:与指定的值不匹配,区分大小写的无效匹配。或通过填充通配符,与指定的值也不匹配。

字符串,可以包含特殊字符。

ctyun:Referer

l StringEquals:精准匹配指定的值,区分大小写;

l StringNotEquals:与指定的值不匹配,区分大小写;

l StringEqualsIgnoreCase:与指定的值精准匹配,不区分大小写。

l StringNotEqualsIgnoreCase:与指定的值不匹配,不区分大小写;

l StringLike:与指定的值精准匹配;或通过填充通配符,与指定的值相似,可以包括多字符匹配的通配符 (*)或单字符匹配的通配符 (?)。区分大小写;

l StringNotLike:与指定的值不匹配,区分大小写的无效匹配。或通过填充通配符,与指定的值也不匹配。

字符串,可以包含特殊字符。

ctyun:SecureTransport

Bool:布尔匹配。

l true

l false

ctyun:MultiFactorAuthPresent

Bool:布尔匹配。

说明:只有IAM服务支持此条件键。

l true

l false

ctyun:MultiFactorAuthAge

l NumericEquals:与指定的值相同;

l NumericNotEquals:与指定的值不同,否定匹配;

l NumericLessThan:小于指定的值;

l NumericLessThanEquals:小于等于指定的值;

l NumericGreaterThan:大于指定的值;

l NumericGreaterThanEquals:大于等于指定的值。

说明:只有IAM服务支持此条件键。

整数形式。

oos:prefix

l StringEquals:精准匹配指定的值,区分大小写;

l StringNotEquals:与指定的值不匹配,区分大小写;

l StringEqualsIgnoreCase:与指定的值精准匹配,不区分大小写。

l StringNotEqualsIgnoreCase:与指定的值不匹配,不区分大小写;

l StringLike:与指定的值精准匹配;或通过填充通配符,与指定的值相似,可以包括多字符匹配的通配符 (*) 或单字符匹配的通配符 (?)。区分大小写;

l StringNotLike:与指定的值不匹配,区分大小写。值可以在字符串中的任何位置包括多字符匹配的通配符 (*) 或单字符匹配的通配符 (?)

字符串形式。

说明:本条件键仅对ListBucket生效。

oos:x-amz-acl

l StringEquals:精准匹配指定的值,区分大小写;

l StringNotEquals:与指定的值不匹配,区分大小写;

l StringEqualsIgnoreCase:与指定的值精准匹配,不区分大小写。

l StringNotEqualsIgnoreCase:与指定的值不匹配,不区分大小写;

l StringLike:与指定的值精准匹配;或通过填充通配符,与指定的值相似,可以包括多字符匹配的通配符 (*) 或单字符匹配的通配符 (?)。区分大小写;

l StringNotLike:与指定的值不匹配,区分大小写。值可以在字符串中的任何位置包括多字符匹配的通配符 (*) 或单字符匹配的通配符 (?)

字符串形式。

取值为:

l private:私有

l public-read:只读

l public-read-write:公有

说明:创建Bucket时,通过使用此条件键可以控制存储桶ACL的类型,本条件键仅对PutBucket生效。


说明:在Condition元素中添加策略变量“${ctyun:username}”指定占位符。当策略执行时,策略变量将被替换为请求本身的用户名。

示例:将含有策略变量的策略附加给多个用户,当用户A发起请求时,条件键oos:prefix将根据用户A的username进行判断;当用户B发起请求时,条件键oos:prefix将根据用户B的username进行判断。

{

"Version":   "2012-10-17",

"Statement":   [

{

"Action": ["oos:ListBucket"],

"Effect": "Allow",

"Resource":   ["arn:ctyun:oos::123456789012:mybucket"],

"Condition": {"StringLike":   {"oos:prefix": ["${ctyun:username}/*"]}}

}

]

}

  • IfExists条件运算符

IfExists:如果请求的内容中存在关键字,则依照策略所述的条件来处理关键字。如果该关键字不存在,则条件元素的计算结果将为true。

目前仅Bool型和数字类型的运算符支持使用IfExists条件运算符,表达形式:运算符IfExists,例如BoolIfExists、NumericEqualsIfExists。对于…IfExists的使用见示例1和示例2。


示例1

  • 拒绝没有使用MFA认证的控制台请求,不拒绝使用MFA认证的控制台请求和使用密钥的API请求。但如果允许使用MFA认证的控制台请求和使用密钥的API请求,需要再写显性允许语句。

"Effect" : "Deny",

"Condition" : { "Bool" : {   "ctyun:MultiFactorAuthPresent" : false } }


  • 拒绝没有使用MFA认证的控制台请求及使用密钥的API请求,不拒绝MFA认证的控制台请求。但如果允许MFA认证的控制台请求,需要再写显性允许语句。

"Effect" : "Deny",

"Condition" : { "BoolIfExists" : {   "ctyun:MultiFactorAuthPresent" : false } }


示例2

  • 允许使用MFA认证在1800秒内的请求及使用密钥的API请求。

"Effect" : "Allow",

"Condition" : { "   NumericLessThanEqualsIfExists" : { "ctyun:MultiFactorAuthAge " : 1800 } }


  • 允许使用MFA认证在1800秒内的请求,但不允许MFA认证在1800秒以上及没有使用MFA的请求(包括API请求)。

"Effect" : "Allow",

"Condition" : { "   NumericLessThanEquals" : { "ctyun:MultiFactorAuthAge " : 1800 } }


策略变量

在编写策略时,如果不能确定Resource、NotResource或Condition元素中的精确值,可以使用策略变量作为占位符。目前仅支持变量“${ctyun:username}”。当策略执行时,策略变量将被替换为请求本身的用户名。

示例:将含有策略变量的策略附加给多个用户,当用户A发起请求时,username将替换为A的用户名;当用户B发起请求时,username将替换为B的用户名。

{

  "Version":   "2012-10-17",

  "Statement": [

    {

      "Action": [

        "oos:GetObject",

        "oos:PutObject"

      ],

      "Effect": "Allow",

      "Resource":   ["arn:ctyun:oos::123456789012:mybucket/${ctyun:username}/*"]

    }

  ]

}

相似文档
  • Service Service是OOS为注册成功用户提供的服务,该服务为用户提供弹性可扩展的存储空间,用户可以根据自己的业务需要建立1至10个的对象容器(Bucket)。
  • 什么是统计分析 统计分析指用户可以查询指定bucket的使用情况、指定数据域的使用情况。用户可以根据统计分析数据,采取对应的措施。
  • 什么是操作跟踪 操作跟踪用于记录OOS账户的管理事件,并将产生的跟踪日志保存到指定的OOS存储桶中。记录的信息包括用户的身份,请求时间,源IP地址,请求参数以及服务返回的响应元素等。
  • 根用户 用户首次创建CTYUN账户时,最初使用的是一个对账户中所有服务和资源有完全访问权限的登录身份,此身份称为根用户 IAM用户 IAM用户是OOS中的一个实体,该实体代表使用它与OOS进行交互的人员或应用程序,由CTYUN账户在OOS中创建的用户,也称为子用户。默认情况下,全新的IAM用户没有执行任何操作的权限,新用户无权执行任何OOS操作或访问任何OOS资源。
  • OOS对象存储网络中的各个地区,使用统一的OOS API、统计、操作跟踪和IAM API的Endpoint。用户也可以指定使用某个资源池的Endpoint,这样可以直接定位到该资源池。Endpoint列表如下: OOS API Endpoint: oos-cn.ctyunapi.cn,支持HTTP和HTTPS。 统计API Endpoint: oos-cn-mg.ctyunapi.cn,支持HTTP和HTTPS。 操作跟踪API Endpoint:oos-cn-cloudtrail.ctyunapi.cn,支持HTTPS。
官方微信
联系客服
400-826-7010
7x24小时客服热线
分享
  • QQ好友
  • QQ空间
  • 微信
  • 微博
返回顶部