点击“访问控制”>“权限策略”>“新建”,进入“新建策略”界面,新建策略。
说明对于各项操作权限对应的具体资源、API详见操作权限与API对应关系。
项目 | 描述 |
---|---|
策略名称 | 1~128位字符组成,字符只能包含字母、数字或特殊字符,不包含空格。字母不区分大小写,特殊字符只能是:下划线(_)、中划线(-)、逗号(,)、句点(.)、加号(+)、等号(=)和at符号(@)。 策略名必须唯一。 |
策略描述 | 可选,对策略进行概要描述。 |
策略内容 | 使用可视化策略编辑或JSON编程实现。 |
可视化策略编辑
点击“添加策略语句”,弹出“添加授权语句”对话框,根据需要,对该策略进行权限配置。
项目 描述 选择产品/服务 可以定义选择服务产品的类型:
oos:对象存储。
cloudtrail:操作跟踪。
statistics:统计。
iam:用户身份管理与访问控制服务。
选择效果 对选择操作的效果:
允许:根据选择的操作类别,对选择的操作效果表现为允许。
拒绝:根据选择的操作类别,对选择的操作效果表现为拒绝。
操作类别 选择操作的类别。可以在搜索框中模糊搜索或者精准搜索,搜索出的操作会在操作列表中显示。
操作类别:
Action:对指定的操作匹配。
NotAction:与指定的操作之外的其他操作匹配的策略元素。使用NotAction时:如果使用“允许”效果,则允许未列出的所有适用操作或服务;如果使用“拒绝”效果,则拒绝此类未列出的操作或服务。
操作列表 可以在操作列表中选择需要对操作实行的策略。各服务包含的策略见操作列表。 资源类别 资源是策略生效的实体:
Resource:策略生效的资源。
NotResource:除指定资源外的其他资源,策略生效。
资源 可以指定所有资源,也可以指定特定资源。选特定资源时,必须添加具体的资源ARN。
说明对于statistics,无法选择资源,默认所有资源。
条件 用户策略生效的条件,可选。
注意如果条件值输入的是时间,将需要设置的时间转换为UTC+0时间。
操作列表
产品/服务 描述 OOS 列表:
ListBucket
ListAllMyBucket
GetRegions
读:
ListBucketMultipartUploads
GetBucketAcl
GetBucketLocation
GetBucketPolicy
GetLifecycleConfiguration
GetBucketWebsite
GetBucketCORS
GetBucketLogging
GetObject
ListMultipartUploadParts
GetBucketInventoryConfiguration
写:
DeleteBucket
PutLifecycleConfiguration
PutBucketWebsite
DeleteBucketWebsite
PutBucketCORS
PutBucketLogging
PutObject
DeleteObject
DeleteMultipleObjects
AbortMultipartUpload
PutBucket
PutBucketInventoryConfiguration
权限管理:
PutBucketPolicy
DeleteBucketPolicy
cloudtrail 列表:
DescribeTrails
LookupEvents
读:
GetEventSelectors
GetTrailStatus
写:
PutEventSelectors
StopLogging
CreateTrail
UpdateTrail
DeleteTrail
StartLogging
statistics GetAccountStatistcsSummary iam 列表:
GetAccountSummary
GetLoginProfile
ListAccessKeys
ListUsers
ListUserTags
ListGroups
ListGroupsForUser
ListPolicies
ListAttachedGroupPolicies
ListAttachedUserPolicies
ListEntitiesForPolicy
ListVirtualMFADevices
ListMFADevices
读:
GetUser
GetGroup
GetPolicy
GetAccountPasswordPolicy
GetAccountLoginSecurityPolicy
写:
CreateAccessKey
DeleteAccessKey
UpdateAccessKey
CreateUser
DeleteUser
TagUser
UntagUser
CreateGroup
DeleteGroup
AddUserToGroup
RemoveUserFromGroup
ChangePassword
UpdateAccountPasswordPolicy
DeleteAccountPasswordPolicy
UpdateAccountLoginSecurityPolicy
DeleteAccountLoginSecurityPolicy
CreateVirtualMFADevice
DeleteVirtualMFADevice
EnableMFADevice
DeactivateMFADevice
CreateLoginProfile
DeleteLoginProfile
UpdateLoginProfile
权限:
CreatePolicy
DeletePolicy
AttachUserPolicy
DetachUserPolicy
AttachGroupPolicy
DetachGroupPolicy
条件描述
条件键 运算符 条件值 ctyun:CurrentTime
DateEquals:匹配指定日期。
DateNotEquals:不等于指定日期。
DateLessThan:早于指定日期。
DateLessThanEquals:早于或等于指定日期。
DateGreaterThan:晚于指定日期。
DateGreaterThanEquals:晚于或等于指定日期。
格式为:yyyy-MM-dd’T’HH:mm:ss’Z’。例如:2019-12-18T09:00:00Z。
DateEquals和DateNotEquals精确到天,其他精确到秒。
注意将需要设置的时间转换为UTC+0时间。
ctyun:SourceIp
IpAddress:与指定IP地址或范围匹配。
NotIpAddress:除指定IP地址或范围外的所有IP地址匹配。
IPv4:点分十进制格式。
IPv6:32位16进制数,格式为X:X:X:X:X:X:X:X。
如果指定地址范围,IP地址后加掩码表示,如192.163.1.5/3。
ctyun:userid
StringEquals:精准匹配指定的值,区分大小写。
StringNotEquals:与指定的值不匹配,区分大小写。
StringEqualsIgnoreCase:与指定的值精准匹配,不区分大小写。
StringNotEqualsIgnoreCase:与指定的值不匹配,不区分大小写。
StringLike:与指定的值精准匹配。或通过填充通配符,与指定的值相似,可以包括多字符匹配的通配符 (*) 或单字符匹配的通配符 (?)。区分大小写。
StringNotLike:与指定的值不能进行模糊匹配,区分大小写。
包含数字和小写字母的32位字符。
运算符为StringLike和StringNotLike,可以包含通配符。
ctyun:username
StringEquals:精准匹配指定的值,区分大小写。
StringNotEquals:与指定的值不匹配,区分大小写。
StringEqualsIgnoreCase:与指定的值精准匹配,不区分大小写。
StringNotEqualsIgnoreCase:与指定的值不匹配,不区分大小写。
StringLike:与指定的值精准匹配。或通过填充通配符,与指定的值相似,可以包括多字符匹配的通配符 (*) 或单字符匹配的通配符 (?)。区分大小写。
StringNotLike:与指定的值不匹配,区分大小写。值可以在字符串中的任何位置包括多字符匹配的通配符 (*) 或单字符匹配的通配符 (?)。
区分大小写1~64位字符组成,字符只能包含字母、数字或特殊字符,特殊字符只能是:下划线(_)、中划线(-)、逗号(,)、句点(.)、加号(+)、等号(=)和at符号(@)。
说明运算符为StringLike和StringNotLike,可以包含通配符。
ctyun:UserAgent
StringEquals:精准匹配指定的值,区分大小写。
StringNotEquals:与指定的值不匹配,区分大小写。
StringEqualsIgnoreCase:与指定的值精准匹配,不区分大小写。
StringNotEqualsIgnoreCase:与指定的值不匹配,不区分大小写。
StringLike:与指定的值精准匹配。或通过填充通配符,与指定的值相似,可以包括多字符匹配的通配符 (*) 或单字符匹配的通配符 (?)。区分大小写。
StringNotLike:与指定的值不匹配,区分大小写的无效匹配。或通过填充通配符,与指定的值也不匹配。
字符串,可以包含特殊字符。 ctyun:Referer
StringEquals:精准匹配指定的值,区分大小写。
StringNotEquals:与指定的值不匹配,区分大小写。
StringEqualsIgnoreCase:与指定的值精准匹配,不区分大小写。
StringNotEqualsIgnoreCase:与指定的值不匹配,不区分大小写。
StringLike:与指定的值精准匹配。或通过填充通配符,与指定的值相似,可以包括多字符匹配的通配符 (*) 或单字符匹配的通配符 (?)。区分大小写。
StringNotLike:与指定的值不匹配,区分大小写的无效匹配。或通过填充通配符,与指定的值也不匹配。
字符串,可以包含特殊字符。 ctyun:SecureTransport Bool:布尔匹配。
true。
false。
ctyun:MultiFactorAuthPresent Bool:布尔匹配。
说明只有IAM服务支持此条件键。
true。
false。
ctyun:MultiFactorAuthAge NumericEquals:与指定的值相同。
NumericNotEquals:与指定的值不同,否定匹配。
NumericLessThan:小于指定的值。
NumericLessThanEquals:小于等于指定的值。
NumericGreaterThan:大于指定的值。
NumericGreaterThanEquals:大于等于指定的值。
说明只有IAM服务支持此条件键。
整数形式。 oos:prefix
StringEquals:精准匹配指定的值,区分大小写。
StringNotEquals:与指定的值不匹配,区分大小写。
StringEqualsIgnoreCase:与指定的值精准匹配,不区分大小写。
StringNotEqualsIgnoreCase:与指定的值不匹配,不区分大小写。
StringLike:与指定的值精准匹配。或通过填充通配符,与指定的值相似,可以包括多字符匹配的通配符 (*) 或单字符匹配的通配符 (?)。区分大小写。
StringNotLike:与指定的值不匹配,区分大小写。值可以在字符串中的任何位置包括多字符匹配的通配符 (*) 或单字符匹配的通配符 (?)。
说明本条件键仅对ListBucket生效。
字符串形式。 oos:x-amz-acl
StringEquals:精准匹配指定的值,区分大小写。
StringNotEquals:与指定的值不匹配,区分大小写。
StringEqualsIgnoreCase:与指定的值精准匹配,不区分大小写。
StringNotEqualsIgnoreCase:与指定的值不匹配,不区分大小写。
StringLike:与指定的值精准匹配。或通过填充通配符,与指定的值相似,可以包括多字符匹配的通配符 (*) 或单字符匹配的通配符 (?)。区分大小写。
StringNotLike:与指定的值不匹配,区分大小写。值可以在字符串中的任何位置包括多字符匹配的通配符 (*) 或单字符匹配的通配符 (?)。
说明创建Bucket时,通过使用此条件键可以控制存储桶ACL的类型,本条件键仅对PutBucket生效。
字符串形式。
取值为:
private:私有。
public-read:公共读。
public-read-write:公共读写。
JSON编程授权
可以使用JSON语言对策略内容进行添加。以下列策略为例,说明JSON编程策略的语法结构。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"oos:ListAllMyBuckets",
"oos:GetBucketLocation"
],
"Resource": "arn:ctyun:oos::02elbe4neijs7:* ",
"Condition": {
"DateGreaterThan": {
"ctyun:CurrentTime": "2019-01-16T12:00:00Z"
},
"DateLessThan": {
"ctyun:CurrentTime": "2019-01-16T12:00:00Z"
},
"IpAddress": {
"ctyun:SourceIp": ["192.0.2.0/24", "203.0.113.0/24"]
}
}
}
]
}
JSON编程参数表
参数 含义 值 Version 策略的版本。 2012-10-17。 Statement:策略的授权语句。Statement可以有多个,表示不同的授权结构。 Effect:效果。 定义操作的选择效果。
Allow:允许执行。
Deny:拒绝执行。
说明当同一个Action中的Effect同时包含Allow和Deny时,遵循Deny优先的原则。
Action:对操作的类别显性匹配。
NotAction:与指定的操作之外的其他操作显性匹配。
说明对于一个Statement,Action和NotAction二选一。
定义操作的类别。 格式为“服务名:操作”。
服务名:
oos:对象存储。
cloudtrail:操作跟踪。
statistics:管理API。
iam:访问控制。
操作详见“操作列表”。
Resource:策略生效的资源。
NotResource:除指定资源外,策略生效。
资源类别。 格式可以为
arn:ctyun:service::accountid:resource
arn:ctyun:service::accountid:resourcetype/resource
其中:
service:服务名。
accountid:账户ID。
resource:具体资源。在指定资源时,可以使用通配符,其中*表示字符的任意组合,?表示任何单个字符。例如oos可以表示为:arn:ctyun:oos::accountID:bucket/object,其中bucket和object为用户实际的资源名称。
resourcetype:资源类型。可以使用*表示所有资源类型。根据服务不同,对应的resourcetype不同:iam的resourcetype可以为:user、group、policy、mfa或*;cloudtrail的resourcetype可以为:trail或*;statistics的resourcetype可以为: *。
Condition:条件。 策略生效的条件。 Condition的语法结构如下:
"Condition": {"条件运算符A": {"条件键A":["条件值A1", "条件值A2",…]}, "条件运算符B": {"条件键B":["条件值B1", "条件值B2",…] } }
注意Condition元素可以由多个条件组成。条件包括:条件运算符、条件键和条件值组成,一个条件键可以对应多个条件值。
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 } }