本文介紹了通過RAM的權(quán)限管理功能,創(chuàng)建相應(yīng)的權(quán)限策略,從而對(duì)對(duì)象存儲(chǔ)(OSS)進(jìn)行權(quán)限管理,以滿足RAM用戶操作OSS的多種需求。
背景信息
- 使用RAM對(duì)OSS進(jìn)行權(quán)限管理前,請(qǐng)先了解以下系統(tǒng)策略:
- AliyunOSSFullAccess:管理OSS的權(quán)限。
- AliyunOSSReadOnlyAccess:只讀訪問OSS的權(quán)限。
當(dāng)系統(tǒng)策略不能滿足您的需要時(shí),您可以創(chuàng)建自定義策略。
- 使用RAM對(duì)OSS進(jìn)行權(quán)限管理前,請(qǐng)先了解OSS的權(quán)限定義。更多信息,請(qǐng)參見RAM Policy概述。
操作步驟
權(quán)限策略示例
- 示例1:授權(quán)RAM用戶管理一個(gè)名為
myphotos
的存儲(chǔ)空間。{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": "oss:*", "Resource": [ "acs:oss:*:*:myphotos", "acs:oss:*:*:myphotos/*" ] } ] }
- 示例2:授權(quán)RAM用戶列出并讀取一個(gè)存儲(chǔ)空間中的資源。
- 授權(quán)RAM用戶通過OSS SDK或OSS命令行工具列出并讀取一個(gè)存儲(chǔ)空間中的資源。存儲(chǔ)空間名稱為
myphotos
。{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": "oss:ListObjects", "Resource": "acs:oss:*:*:myphotos" }, { "Effect": "Allow", "Action": "oss:GetObject", "Resource": "acs:oss:*:*:myphotos/*" } ] }
- 授權(quán)RAM用戶能夠通過OSS控制臺(tái)進(jìn)行操作。
說(shuō)明 為了操作體驗(yàn)的優(yōu)化,用戶登錄OSS控制臺(tái)時(shí),OSS控制臺(tái)會(huì)額外調(diào)用
ListBuckets
、GetBucketAcl
和GetObjectAcl
,以確定存儲(chǔ)空間屬性是公開還是私有。{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "oss:ListBuckets", "oss:GetBucketStat", "oss:GetBucketInfo", "oss:GetBucketTagging", "oss:GetBucketAcl" ], "Resource": "acs:oss:*:*:*" }, { "Effect": "Allow", "Action": [ "oss:ListObjects", "oss:GetBucketAcl" ], "Resource": "acs:oss:*:*:myphotos" }, { "Effect": "Allow", "Action": [ "oss:GetObject", "oss:GetObjectAcl" ], "Resource": "acs:oss:*:*:myphotos/*" } ] }
- 授權(quán)RAM用戶通過OSS SDK或OSS命令行工具列出并讀取一個(gè)存儲(chǔ)空間中的資源。存儲(chǔ)空間名稱為
- 示例3:授權(quán)RAM用戶通過特定的IP地址訪問OSS。
- 在
Allow
授權(quán)中增加IP限制:允許通過192.168.0.0/16
,172.16.0.1/16
兩個(gè)IP地址段讀取myphotos
中的信息。{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "oss:ListBuckets", "oss:GetBucketStat", "oss:GetBucketInfo", "oss:GetBucketTagging", "oss:GetBucketAcl" ], "Resource": [ "acs:oss:*:*:*" ] }, { "Effect": "Allow", "Action": [ "oss:ListObjects", "oss:GetObject" ], "Resource": [ "acs:oss:*:*:myphotos", "acs:oss:*:*:myphotos/*" ], "Condition":{ "IpAddress": { "acs:SourceIp": ["192.168.0.0/16", "172.16.1.0/16"] } } } ] }
- 在
Deny
授權(quán)中增加IP限制:如果源IP不在192.168.0.0/16
中,則禁止對(duì)OSS執(zhí)行任何操作。{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "oss:ListBuckets", "oss:GetBucketStat", "oss:GetBucketInfo", "oss:GetBucketTagging", "oss:GetBucketAcl" ], "Resource": [ "acs:oss:*:*:*" ] }, { "Effect": "Allow", "Action": [ "oss:ListObjects", "oss:GetObject" ], "Resource": [ "acs:oss:*:*:myphotos", "acs:oss:*:*:myphotos/*" ] }, { "Effect": "Deny", "Action": "oss:*", "Resource": [ "acs:oss:*:*:*" ], "Condition":{ "NotIpAddress": { "acs:SourceIp": ["192.168.0.0/16"] } } } ] }
說(shuō)明 因?yàn)闄?quán)限策略的鑒權(quán)規(guī)則是Deny優(yōu)先,所以訪問者從192.168.0.0/16
以外的IP地址訪問myphotos
中的內(nèi)容時(shí),OSS會(huì)提示沒有權(quán)限。
- 在
- 示例4:OSS目錄級(jí)別的授權(quán)。
假設(shè)用于存放照片的存儲(chǔ)空間名為
myphotos
,該存儲(chǔ)空間下有一些目錄,代表照片的拍攝地,每個(gè)拍攝地目錄下又有年份子目錄。myphotos[Bucket] ├── beijing │ ├── 2014 │ └── 2015 ├── hangzhou │ ├── 2013 │ ├── 2014 │ └── 2015 //授予該目錄只讀權(quán)限 └── qingdao ├── 2014 └── 2015
若要授權(quán)RAM用戶訪問
myphotos/hangzhou/2015/
目錄的只讀權(quán)限。目錄級(jí)別的授權(quán)屬于授權(quán)的高級(jí)功能,根據(jù)使用場(chǎng)景不同,授權(quán)策略的復(fù)雜程度也不同,以下幾種場(chǎng)景可供參考。- 場(chǎng)景1:授予RAM用戶讀取文件內(nèi)容的權(quán)限,不需要列出文件的權(quán)限。
RAM用戶知道文件的完整路徑,可以使用完整的文件路徑直接去讀取文件內(nèi)容,通常會(huì)將這樣的權(quán)限授予應(yīng)用程序。
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "oss:GetObject" ], "Resource": [ "acs:oss:*:*:myphotos/hangzhou/2015/*" ] } ] }
- 場(chǎng)景2:授權(quán)RAM用戶使用OSS命令行工具訪問目錄
myphotos/hangzhou/2015/
并列出目錄中文件的權(quán)限。RAM用戶不清楚目錄中有哪些文件,可以使用OSS命令行工具或API直接獲取目錄信息,通常會(huì)將這樣的權(quán)限授予軟件開發(fā)者。
此場(chǎng)景需要新增
ListObjects
的權(quán)限。{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "oss:GetObject" ], "Resource": [ "acs:oss:*:*:myphotos/hangzhou/2015/*" ] }, { "Effect": "Allow", "Action": [ "oss:ListObjects" ], "Resource": [ "acs:oss:*:*:myphotos" ], "Condition":{ "StringLike":{ "oss:Prefix":"hangzhou/2015/*" } } } ] }
- 場(chǎng)景3: 授予RAM用戶使用OSS控制臺(tái)訪問目錄。
RAM用戶使用可視化的OSS客戶端訪問目錄
myphotos/hangzhou/2015/
,可視化的客戶端類似Windows文件管理器,RAM用戶可以從根目錄開始,一層一層地進(jìn)入要訪問的目錄,此場(chǎng)景是最易用的場(chǎng)景。此場(chǎng)景需要新增以下權(quán)限:
- 列出所有
Bucket
的權(quán)限。 - 列出
myphotos
下目錄的權(quán)限。 - 列出
myphotos/hangzhou
下的目錄的權(quán)限。
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "oss:ListBuckets", "oss:GetBucketStat", "oss:GetBucketInfo", "oss:GetBucketTagging", "oss:GetBucketAcl" ], "Resource": [ "acs:oss:*:*:*" ] }, { "Effect": "Allow", "Action": [ "oss:GetObject", "oss:GetObjectAcl" ], "Resource": [ "acs:oss:*:*:myphotos/hangzhou/2015/*" ] }, { "Effect": "Allow", "Action": [ "oss:ListObjects" ], "Resource": [ "acs:oss:*:*:myphotos" ], "Condition": { "StringLike": { "oss:Delimiter": "/", "oss:Prefix": [ "", "hangzhou/", "hangzhou/2015/*" ] } } } ] }
- 列出所有
- 場(chǎng)景1:授予RAM用戶讀取文件內(nèi)容的權(quán)限,不需要列出文件的權(quán)限。