存取點(Access Point)用於簡化大規模共用資料集的資料存取權限控制管理的情境。本文介紹如何建立存取點。
前提條件
如果希望使用網路來源為VPC的存取點,您需要提前建立VPC。具體操作,請參見建立和管理專用網路。
RAM使用者必須擁有以下許可權:
oss:CreateAccessPoint
、oss:GetAccessPoint
、oss:DeleteAccessPoint
、oss:ListAccessPoints
、oss:PutAccessPointPolicy
、oss:GetAccessPointPolicy
、oss:DeleteAccessPointPolicy
、oss:PutBucketPolicy
、oss:GetBucketPolicy
、oss:DeleteBucketPolicy
。具體操作,請參見為RAM使用者授權自訂的權限原則。
情境說明
A作為公司的阿里雲帳號owner(其賬戶UID為137918634953xxxx),其公司需針對統一採集的資料進行巨量資料分析與管理,統一採集的資料存放在儲存空間examplebucket中。examplebucket的使用方涉及10個不同的業務部門,其中:
部門<1~3>僅允許對examplebucket/dir1/下的檔案進行讀取,不可寫入,且允許通過互連網進行訪問。
部門<4>僅允許對examplebucket下的目錄進行讀取和寫入,且允許通過互連網進行訪問。
部門<5~10>僅對examplebucket/dir2/下的檔案進行讀取和寫入,且限制只能通過指定的VPC ID進行訪問。
針對以上情境樣本,該公司的阿里雲帳號owner可以通過存取點功能完成以上需求。
該公司的阿里雲帳號owner可以為部門<1~3>、部門<4>以及部門<5~10>分別建立一個存取點,然後為存取點委派許可權。許可權委派完成後,不同部門可以通過不同的存取點訪問OSS資源。
操作方式
使用OSS控制台
配置存取點基礎資訊。
登入OSS管理主控台。
在左側導覽列,單擊存取點列表。
在存取點列表頁面,單擊建立存取點。
在建立存取點對話方塊,按說明完成以下配置項,然後單擊下一步。
配置項
說明
樣本值
存取點名稱
為存取點命名。存取點命名規範說明如下:
存取點名稱在當前阿里雲帳號單個地區內唯一。
不允許以-ossalias結尾。
只能包括小寫字母、數字和短劃線(-),不能以虛線開頭或結尾。
命名長度為3~19個字元。
部門<1~3>:ap-01
部門<4>:ap-02
部門<5~10>:ap-03
Bucket
下拉選擇需要使用存取點的Bucket。單個Bucket支援建立100個存取點。
examplebucket
網路來源
選擇存取點的網路來源。
互連網:同時支援通過外網或內網訪問Bucket內的資源。
VPC:限制僅支援通過指定的VPC ID訪問Bucket內的資源。選擇該選項後,您需要手動輸入VPC ID。
重要通過存取點限制VPC來源時,需確保選擇的VPC地區與OSS支援的網關終端節點地區相匹配,否則會導致鑒權請求無法關聯至對應的VPC,進而引發鑒權失敗。關於OSS支援的網關終端節點地區,請參見OSS支援的網關終端節點地區。
如果存取點的網路來源設定為VPC,則不支援通過控制台訪問存取點關聯的Bucket內的資源。您可以通過SDK以內網Endpoint的形式進行訪問。
部門<1~3>:互連網
部門<4>:互連網
部門<5~10>:VPC
配置存取點策略。
重要在存取點內配置的存取原則僅作用於從該存取點發出的請求,存取點配置的存取原則對當前Bucket現有的其他訪問方式不造成任何影響。
按圖形策略添加存取點策略
在存取點策略對話方塊,按說明完成以下配置項。
配置項
說明
樣本值
存取點策略
選中按圖形策略添加。
不涉及
存取點ARN
顯示存取點ARN,格式為
acs:oss:region名稱:帳號UID:accesspoint/存取點名稱/object/*
。acs:oss:cn-hangzhou:137918634953xxxx:accesspoint/ap-01/object/*
授權資源
授權整個Bucket或Bucket內的部分資源供存取點訪問。
整個Bucket:授權策略針對整個Bucket生效。
指定資源:授權策略只針對指定的資源生效。您可以配置多條針對指定資源的授權策略。
部門<1~3>:指定資源
部門<4>:整個Bucket
部門<5~10>:指定資源
資源路徑
選擇授權資源為整個Bucket時,資源路徑格式為
accesspoint/存取點名稱/*
。選擇授權資源為指定資源時,按以下說明填寫資源路徑。
針對目錄層級授權
授權訪問目錄下的所有子目錄和檔案時,需在目錄結尾處加上星號(*)。例如授權訪問abc目錄下的所有子目錄和檔案,則填寫為abc/*。
針對指定檔案授權
授權訪問目錄下的指定檔案時,需填寫不包含Bucket名稱在內的檔案的完整路徑,例如授權訪問abc目錄下的myphoto.png檔案,則填寫為abc/myphoto.png。
部門<1~3>:accesspoint/ap-01/object/dir1/*
部門<4>:accesspoint/ap-02/*
部門<5~10>:accesspoint/ap-03/object/dir2/*
授權使用者
僅支援為當前帳號下的RAM使用者授權訪問指定資源。
完成RAM授權時,您需要選中子帳號,然後從下拉式功能表中選擇目標RAM使用者。如果需要授權的RAM使用者較多時,建議直接在搜尋方塊輸入RAM使用者名稱稱關鍵字進行模糊比對。
重要從下拉式功能表中選擇目標RAM使用者時,要求您當前的帳號必須是阿里雲帳號,或擁有此Bucket系統管理權限及RAM控制台ListUsers許可權的RAM使用者,否則無法查看當前帳號的RAM使用者列表。為RAM使用者授予ListUsers許可權的具體操作,請參見為RAM使用者授權。
部門<1~3>:子帳號(UID為26571698800555xxxx)
部門<4>:子帳號(UID為25770968794578xxxx)
部門<5~10>:子帳號(UID為26806658794579xxxx)
授權操作
您可以通過簡單設定和進階設定兩種方式進行授權操作。
簡單設定
選中此項後,您可以結合實際情境按照如下說明配置相應的存取權限。將滑鼠移至上方在每一種存取權限右側對應的
,可擷取各存取權限對應的Action列表。
唯讀(不包含ListObject操作):對相關資源擁有查看和下載的許可權。
唯讀(包含ListObject操作):對相關資源擁有查看、列舉和下載的許可權。
讀/寫:對相關資源有讀和寫入權限。
完全控制:對相關資源有讀、寫、刪除等所有操作許可權。
拒絕訪問:拒絕對相關資源的所有操作。
重要如果針對某使用者同時配置了多條Bucket Policy規則,則該使用者所擁有的許可權是所有Policy規則的疊加。當這些Bucket Policy中包含拒絕存取權限時,遵循拒絕存取權限優先原則。例如針對某使用者第一次設定了唯讀許可權,第二次設定了讀/寫入權限,則該使用者最終的許可權為讀/寫。如果第三次設定了拒絕存取權限,則該使用者最終的許可權為拒絕訪問。
唯讀、讀/寫、完全控制對應的授權效力為Allow,拒絕訪問對應的授權效力為Deny。
進階設定
選中此項後,您需要根據以下說明完成相關配置。
效力:包含允許(Allow)和拒絕(Deny)兩種授權效力。
操作:支援配置所有OSS支援的Action。關於Action分類的更多資訊,請參見RAM Policy。
部門<1~3>:簡單設定下的唯讀(包含ListObject操作)
部門<4>:簡單設定下的讀/寫
部門<5~10>:簡單設定下的讀/寫
單擊提交。
存取點建立完成預計需要10分鐘左右。
存取點建立後,存取點列表頁面將顯示OSS自動建立的存取點別名。
不支援修改、刪除或者禁用存取點別名。
按文法策略添加存取點策略
在存取點策略對話方塊,存取點策略選中按文法策略添加。
在文法策略輸入框中,輸入以下授權策略。
部門<1~3>存取點策略
{ "Version": "1", "Statement": [{ "Effect": "Allow", "Action": [ "oss:GetObject", "oss:GetObjectAcl", "oss:ListObjects", "oss:RestoreObject", "oss:ListObjectVersions", "oss:GetObjectVersion", "oss:GetObjectVersionAcl", "oss:RestoreObjectVersion" ], "Principal": [ "26571698800555xxxx" ], "Resource": [ "acs:oss:cn-hangzhou:137918634953xxxx:accesspoint/ap-01/object/dir1/*" ] },{ "Effect": "Allow", "Action": [ "oss:ListObjects", "oss:GetObject" ], "Principal": [ "26571698800555xxxx" ], "Resource": [ "acs:oss:cn-hangzhou:137918634953xxxx:accesspoint/ap-01" ], "Condition": { "StringLike": { "oss:Prefix": [ "dir1/*" ] } } } ] }
部門<4>存取點策略
{ "Version": "1", "Statement": [{ "Effect": "Allow", "Action": [ "oss:GetObject", "oss:PutObject", "oss:GetObjectAcl", "oss:PutObjectAcl", "oss:ListObjects", "oss:AbortMultipartUpload", "oss:ListParts", "oss:RestoreObject", "oss:ListObjectVersions", "oss:GetObjectVersion", "oss:GetObjectVersionAcl", "oss:RestoreObjectVersion" ], "Principal": [ "25770968794578xxxx" ], "Resource": [ "acs:oss:cn-hangzhou:137918634953xxxx:accesspoint/ap-02/object/*" ] },{ "Effect": "Allow", "Action": [ "oss:ListObjects", "oss:GetObject" ], "Principal": [ "25770968794578xxxx" ], "Resource": [ "acs:oss:cn-hangzhou:137918634953xxxx:accesspoint/ap-02" ], "Condition": { "StringLike": { "oss:Prefix": [ "*" ] } } } ] }
部門<5~10>存取點策略
{ "Version": "1", "Statement": [{ "Effect": "Allow", "Action": [ "oss:GetObject", "oss:PutObject", "oss:GetObjectAcl", "oss:PutObjectAcl", "oss:ListObjects", "oss:AbortMultipartUpload", "oss:ListParts", "oss:RestoreObject", "oss:ListObjectVersions", "oss:GetObjectVersion", "oss:GetObjectVersionAcl", "oss:RestoreObjectVersion" ], "Principal": [ "26806658794579xxxx" ], "Resource": [ "acs:oss:cn-hangzhou:137918634953xxxx:accesspoint/ap-03/object/dir2/*" ] },{ "Effect": "Allow", "Action": [ "oss:ListObjects", "oss:GetObject" ], "Principal": [ "26806658794579xxxx" ], "Resource": [ "acs:oss:cn-hangzhou:137918634953xxxx:accesspoint/ap-03" ], "Condition": { "StringLike": { "oss:Prefix": [ "dir2/*" ] } } } ] }
單擊提交。
存取點建立完成預計需要10分鐘左右。
存取點建立後,存取點列表頁面將顯示OSS自動建立的存取點別名。
不支援修改、刪除或者禁用存取點別名。
通過Bucket Policy為存取點委派許可權。
在存取點列表頁面,單擊已建立的存取點。
在存取點組態管理頁簽,單擊存取點許可權委派。
在存取點許可權委派對話方塊,通過Bucket Policy將Bucket的存取原則委派給存取點。
委派類型
說明
樣本值
oss:DataAccessPointArn
為指定的存取點委派許可權。委派後,僅指定的存取點生效。
oss:DataAccessPointAccount
oss:AccessPointNetworkOrigin
為互連網或Virtual Private Cloud下的存取點委派許可權。委派後,僅指定網路的存取點生效。
說明互連網支援外網和專有雲網路VPC。選擇互連網存取點後,專用網路存取點也會生效。
oss:DataAccessPointAccount
為當前帳號下的所有存取點委派許可權。委派後,帳號下所有的存取點生效。
單擊產生Policy。
使用命令列工具ossutil
您可以使用命令列工具ossutil來建立和配置存取點,ossutil的安裝請參見安裝ossutil。
以下樣本展示了如何為儲存空間
examplebucket
建立存取點名稱為"ap-01"
的存取點。ossutil api create-access-point --bucket examplebucket --create-access-point-configuration "{\"AccessPointName\":\"ap-01\",\"NetworkOrigin\":\"internet\"}"
關於該命令的更多資訊,請參見create-access-point。
以下樣本展示了如何為儲存空間
examplebucket
的存取點"ap-01"
配置策略。ossutil api put-access-point-policy --bucket examplebucket --access-point-name ap-01 --body "{\"Version\":\"1\",\"Statement\":[{\"Action\":[\"oss:PutObject\",\"oss:GetObject\"],\"Effect\":\"Deny\",\"Principal\":[\"27737962156157xxxx\"],\"Resource\":[\"acs:oss:cn-hangzhou:111933544165xxxx:accesspoint/$ap-01\",\"acs:oss:cn-hangzhou:111933544165xxxx:accesspoint/ap-01/object/*\"]}]}"
關於該命令的更多資訊,請參見put-access-point-policy。
相關API
以上操作方式底層基於API實現,如果您的程式自訂要求較高,您可以直接發起REST API請求。直接發起REST API請求需要手動編寫代碼計算簽名。
關於建立存取點的API介面說明,請參見CreateAccessPoint。
關於配置存取點策略的API介面說明,請參見PutAccessPointPolicy。
關於通過Bucket Policy為存取點委派許可權的API介面說明,請參見PutBucketPolicy。
後續步驟
建立存取點後,您需要使用存取點別名進行訪問。具體步驟,請參見使用存取點。
常見問題
存取點的使用權限設定支援IP白名單嗎?
支援。您可以按文法策略添加存取點策略,添加"IpAddress": {"acs:SourceIp": ["xxx"]}
。