點擊“訪問控制”>“權限策略”>“創建”,進入“創建策略”頁面,新建策略。
說明對于各項操作權限對應的具體資源、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:布爾匹配。
說明不建議對GetObject接口設置該條件鍵,否則在OOS控制臺上無法下載、預覽、分享文件和編輯元數據。
true。
false。
ctyun:MultiFactorAuthAge NumericEquals:與指定的值相同。
NumericNotEquals:與指定的值不同,否定匹配。
NumericLessThan:小于指定的值。
NumericLessThanEquals:小于等于指定的值。
NumericGreaterThan:大于指定的值。
NumericGreaterThanEquals:大于等于指定的值。
說明不建議對GetObject接口設置該條件鍵,否則在OOS控制臺上無法下載、預覽、分享文件和編輯元數據。
整數形式,以秒為單位。 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:ListAllMyBucket",
??????????"oos:GetBucketLocation"
??????],
??????"Resource":?"arn:ctyun:oos::02elbe4neijs7:*?",
??????"Condition":?{
??????????"DateGreaterThan":?{
??????????????"ctyun:CurrentTime":?"2019-01-16T00: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?}?}