桶策略
更新時間 2024-04-28 17:56:31
最近更新時間: 2024-04-28 17:56:31
分享文章
本章節介紹媒體存儲-對象存儲的桶策略。
桶策略的作用范圍為對象存儲桶和桶內的所有對象。天翼云用戶可以通過設置桶策略為不同類型或不同標識的用戶授權桶及桶內對象的操作訪問權限。
桶策略使用場景
- 允許其他天翼云用戶對該桶進行訪問控制時,可以使用桶策略的方式授權相應的讀寫權限。
- 對于不同的用戶,需要對不同的桶有不同的訪問控制需求時,使用桶策略,可以簡單方便地授權給用戶不同的控制權限。
桶策略設置
桶策略包括效力、用戶、資源、操作、條件5個桶策略基本元素共同決定。其中:
- 效力:允許/禁止策略中的操作。
- 用戶:根據填寫的用戶類型和用戶標識信息,向其他天翼云用戶或所有用戶(包括匿名訪問者)配置策略。
- 資源:指定授權策略的資源范圍,可選的資源范圍包括整個存儲桶或指定資源。
- 操作:配置本策略指定的具體操作,包括:存儲桶操作、對象操作。具體可參考下文中的存儲桶操作、對象操作。
- 條件:對符合特定條件的用戶生效,目前支持以IP為條件配置。
存儲桶操作
| Action | 描述 |
|---|---|
| CreateBucket | 賦予創建桶的權限 |
| DeleteBucket | 賦予刪除桶的權限 |
| DeleteBucketPolicy | 賦予刪除桶策略的權限 |
| DeleteBucketWebsite | 賦予刪除桶靜態網站配置信息的權限 |
| GetBucketAcl | 賦予獲取桶ACL配置信息的權限 |
| GetBucketCORS | 賦予獲取桶跨域配置信息的權限 |
| GetBucketPolicy | 賦予獲取桶策略的權限 |
| GetBucketTagging | 賦予查詢桶標簽的權限 |
| GetBucketVersioning | 賦予查詢桶版本控制配置信息的權限 |
| GetBucketWebsite | 賦予查詢靜態網站配置信息的權限 |
| GetLifecycleConfiguration | 賦予查詢桶生命周期的權限 |
| ListAllMyBuckets | 賦予查詢用戶所有桶的權限 |
| ListBucket | 賦予查詢桶部分或全部對象列表的權限 |
| ListBucketMultipartUploads | 賦予查詢桶正在進行的分段上傳的權限 |
| ListBucketVersion | 賦予查詢桶所有版本控制配置信息的權限 |
| ListMultipartUploads | 賦予查詢用戶所有正在進行的分段上傳的權限 |
| PutBucketAcl | 賦予設置桶ACL的權限 |
| PutBucketCORS | 賦予設置桶跨域配置的權限 |
| PutBucketLogging | 賦予設置桶日志信息的權限 |
| PutBucketPolicy | 賦予設置桶策略的權限 |
| PutBucketTagging | 賦予設置桶標簽的權限 |
| PutBucketVersioning | 賦予設置桶版本控制配置的權限 |
| PutBucketWebsite | 賦予設置桶靜態網站配置的權限 |
| PutLifecycleConfiguration | 賦予設置桶生命周期的權限 |
對象操作
| Action | 描述 |
|---|---|
| DeleteObject | 賦予刪除對象的權限 |
| DeleteObjectVersion | 賦予刪除對象指定版本的權限 |
| GetObject | 賦予獲取對象的權限 |
| GetObjectAcl | 賦予查詢對象ACL的權限 |
| GetObjectVersion | 賦予獲取指定版本對象的權限 |
| GetObjectVersionAcl | 賦予獲取指定版本對象的訪問控制列表的權限 |
| PutObject | 賦予上傳對象的權限 |
| PutObjectAcl | 賦予設置對象ACL的權限 |
| PutObjectVersionAcl | 賦予設置指定版本對象ACL的權限 |
桶策略參數說明
桶策略使用JSON格式的數據管理指定用戶對存儲資源可執行的操作,格式定義如下為:
{
"Statement" : [{
statement1
},
{
statement2
},
......
]
}
以下是桶策略具體示例,表示授權給用戶testpolicy對桶bucket1的全部權限:
{
"Version":"2012-10-17",
"Statement":[
{
"Effect":"Allow",
"Action":["* "],
"Principal":{
"AWS":["arn:aws:iam:::user/testpolicy"]
},
"Resource":"arn:aws:s3:::bucket1/* "
}
]
}
Policy由多條statement組成,也可以是一條。每條statement的結構包括下表內容:
| 參數 | 是否必填 | 參數類型 | 說明 | 示例 | 下級對象 |
|---|---|---|---|---|---|
| Version | 是 | String | 版本,描述訪問控制策略的版本信息,當前版本只能是"2012-10-17"。 | 2012-10-17 | |
| Statement | 是 | Array | 語句,描述一項或多項賦權的詳細信息。 | Effect、Action、Principal、Resource、Condition | |
| Effect | 是 | String | 效力,描述語句中權限產生的結果是允許還是禁止,只能是"allow"或"deny"兩種情況。效力屬于必填項。 | Allow | |
| Action | 是 | String | 操作,描述語句中賦予的權限,必填項。 | "s3:GetObject" | |
| Principal | 否 | Container | 委托人,描述策略賦權的實體,例如用戶、用戶組等。 | AWS | |
| AWS | 否 | Array | 媒體存儲用戶。 | "arn:aws:iam:::user/testpolicy","arn:aws:iam:::user/testpolicy2" | |
| Resource | 是 | String | 資源,描述策略授權的具體資源。資源采用六段式描述,段與段之間使用冒號分隔,目前天翼對象存儲s3接口的資源描述方式前三段為固定格式,最后一段位描述存儲空間和對象資源,如 arn:aws:s3:::{BucketName}/{ObjectName}。 在Action中有“桶操作”表中的操作,則Resource中只填寫桶名。 在Action中有“對象操作”表中的操作,則Resource需要填寫“bucketname/objectname”。 |
"arn:aws:s3:::bucket1/* " | |
| Condition | 否 | String | 條件,描述策略生效的約束條件,非必填項,目前支持以IP為條件配置。 | "IpAddress":{“aws:SourceIp":"192.168.5.101/24"} |
桶策略示例
- 示例1:授權給用戶testpolicy和用戶testpolicy2獲取桶bucket1內對象的權限。
{
"Version":"2012-10-17",
"Statement":[
{
"Effect":"Allow",
"Action":["s3:GetObject"],
"Principal":{
"AWS":["arn:aws:iam:::user/testpolicy","arn:aws:iam:::user/testpolicy2"]
},
"Resource":"arn:aws:s3:::bucket1/* "
}
]
}
- 示例2:授權給用戶testpolicy對桶bucket1的全部權限
{
"Version":"2012-10-17",
"Statement":[
{
"Effect":"Allow",
"Action":["* "],
"Principal":{
"AWS":["arn:aws:iam:::user/testpolicy"]
},
"Resource":"arn:aws:s3:::bucket1/* "
}
]
}
- 示例3:授權給用戶testpolicy對桶bucket1的除上傳對象的全部權限
{
"Version":"2012-10-17",
"Statement":[
{
"Effect":"Allow",
"Action":["* "],
"Principal":{
"AWS":["arn:aws:iam:::user/testpolicy"]
},
"Resource":"arn:aws:s3:::bucket1/* "
},
{
"Effect":"Deny",
"Action":["s3:PutObject"],
"Principal":{
"AWS":["arn:aws:iam:::user/testpolicy"]
},
"Resource":"arn:aws:s3:::bucket1/* "
}
]
}
- 示例4:授權給所有用戶(包括匿名用戶)獲取桶內對象test.png的權限。
{
"Version":"2012-10-17",
"Statement":[
{
"Effect":"Allow",
"Action":["s3:GetObject"],
"Principal":{
"AWS":["* "]
}
"Resource":"arn:aws:s3:::bucket1/test.png"
}
]
}
桶策略設置方式
| 操作途徑 | 使用方式 |
|---|---|
| 控制臺 | 可參考:權限管理。控制臺提供桶策略界面化配置,無需編輯代碼。 |
| XstorBrowser | 可參考:配置桶策略。 |
| SDK | 請從SDK概覽頁面選擇進入對應的開發指南查閱。 |