企業在阿里雲上擁有一個核心 OSS Bucket(如 company-data-lake),儲存全公司不同部門(財務、研發、市場)的資料。希望實現企業級中心化資料湖/倉庫的細粒度隔離訪問,需要滿足以下存取控制需求:
私網訪問:所有資料訪問通過阿里雲 VPC 內部網路完成,禁止公網訪問,不希望通過 NAT Gateway產生公網流量費。
許可權隔離:不同部門 VPC 訪問同一個 Bucket,但需要實現首碼(Prefix)層級的隔離。例如:財務 VPC 只能訪問
finance/目錄,研發 VPC 只能訪問dev/目錄。管理解耦:數百人訪問同一 Bucket,通過存取點將許可權管理分散到各業務方,避免在單一 Bucket Policy 中維護數千行策略。
存取控制:限制特定 VPC 只能通過特定的存取點訪問 Bucket。
方案概覽
通過 OSS 存取點(Access Point) 和 VPC 網關終端節點 配合實現:
OSS 存取點:為每個訪問方建立獨立的存取點,通過存取點策略(AP Policy)分別管理各自的許可權,避免在單一 Bucket Policy 中維護複雜的許可權規則。
VPC 網關終端節點:在 VPC 中建立指向 OSS 的網關終端節點,將訪問 OSS 內網網域名稱的請求通過阿里雲內網直達 OSS,無需繞行公網。
訪問鏈路:
ECS 執行個體 → VPC 路由表 → 網關終端節點 → OSS 內網 → 存取點(AP Policy 鑒權)→ Bucket(Bucket Policy 鑒權)操作步驟
第一步:建立 VPC 網關終端節點
通過建立網關終端節點,在 VPC 路由表中自動添加指向 OSS 的路由,使 ECS 執行個體可通過內網訪問 OSS。
在左側導覽列選擇 終端節點 > 網關終端節點。
單擊建立終端節點:
服務類型:選擇阿里雲服務。
服務名稱:選擇
com.aliyun.<region>.oss(例如com.aliyun.cn-hangzhou.oss)。專用網路:選擇業務所在的 VPC。
路由表:勾選需要訪問 OSS 的 ECS 所在交換器綁定的路由表。
建立完成後,VPC 路由表中自動增加一條指向 OSS 的路由。
第二步:建立 OSS 存取點
為每個業務方建立獨立的存取點,實現許可權隔離管理。
登入 OSS 管理主控台。
進入目標 Bucket,在左側菜單選擇存取點 > 建立存取點。
配置存取點參數:
存取點名稱:例如
finance-ap。網路類型:選擇 VPC。
VPC ID:選擇步驟一中已建立網關終端節點的 VPC ID。
配置存取點策略 :授權該存取點允許操作的資源和使用者等。
儲存後,系統產生存取點別名和存取點網域名稱。
第三步:配置策略
依次配置存取點策略、Bucket 策略和 VPC 網關終端節點策略,確保訪問鏈路許可權打通。
1. 配置存取點策略
存取點策略定義通過該存取點進入的流量可以執行的操作。以下樣本授予 ACS:RAM:1234567890123456:role/FinanceRole 通過 finance-ap1 存取點執行 GetObject 和 PutObject 操作:
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Principal": [
"ACS:RAM:1234567890123456:role/FinanceRole"
],
"Action": [
"oss:GetObject",
"oss:PutObject"
],
"Resource": [
"acs:oss:cn-hangzhou:1234567890123456:accesspoint/finance-ap1"
]
}
]
}2. 配置 Bucket 策略(存取點許可權委派)
建立存取點後,通過 Bucket Policy 設定存取點許可權委派,定義哪些存取點可以訪問 Bucket。
存取點許可權委派提供三種類型:
oss:DataAccessPointArn:指定存取點的存取權限委派。oss:DataAccessPointAccount:當前主帳號下所有存取點的存取權限委派。oss:AccessPointNetworkOrigin:指定網路來源的所有存取點存取權限委派。
以下樣本委派財務部門的所有存取點通過 VPC 訪問 Bucket 中 finance/ 首碼下的資料:
{
"Version": "1",
"Statement": [{
"Effect": "Allow",
"Action": [
"oss:*"
],
"Principal": "*",
"Resource": [
"acs:oss:*:137918634953****:company-data-lake/finance/*"
],
"Condition": {
"StringEquals": {
"oss:DataAccessPointArn": [
"acs:oss:cn-hangzhou:1234567890123456:accesspoint/finance-ap1",
"acs:oss:cn-hangzhou:1234567890123456:accesspoint/finance-ap2",
"acs:oss:cn-hangzhou:1234567890123456:accesspoint/finance-ap3"
]
}
}
}]
}更多委派情境的策略配置參見按文法策略添加。
3. 配置 VPC 網關終端節點策略(VPC Policy)
在 VPC 網關終端節點策略中,將存取點綁定的 Bucket 設為允許訪問的目標,實現網路層的存取控制。
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": "oss:*",
"Principal": [
"123456789012****"
],
"Resource": [
"acs:oss:*:*:example-bucket",
"acs:oss:*:*:example-bucket/*"
]
}
]
}注意事項
網域名稱切換:使用存取點後,SDK 或 CLI 中必須使用存取點網域名稱或存取點別名,而非原始Bucket 網域名稱。
錯誤樣本:
my-bucket.oss-cn-hangzhou-internal.aliyuncs.com正確樣本:
finance-ap-xxxx.oss-cn-hangzhou.oss-accesspoint.aliyuncs.com
地區一致性:VPC 網關終端節點、OSS 存取點和 Bucket 必須處於同一個地區。
許可權疊加原則:使用者必須同時滿足 RAM Policy、存取點 Policy 和 Bucket Policy 的許可權才能成功訪問。
Endpoint 類型限制:VPC 網關終端節點僅支援同地區私網訪問。如需跨地區訪問,需使用反向 Proxy或雲企業網(CEN)。
資源限額:單個 UID 可建立的存取點數量有限(1000 個),適用於絕大多數多租戶情境。