VPC內的執行個體訪問雲端服務時(例如訪問Object Storage Service),如果通過公網訪問,可能會存在資料安全風險、公網網路品質不穩定等問題,同時公網訪問也會產生公網流量成本。
為瞭解決這些問題,阿里雲提供了VPC內通過私網訪問雲端服務的能力,確保訪問請求保留在阿里雲的內網中,從而獲得更高的安全性、更穩定的網路效能和更優的成本控制。
本文將介紹兩種主流的VPC私網訪問方案:網關終端節點和私網串連(PrivateLink)。
工作原理
網關終端節點 | 私網串連(PrivateLink) |
網關終端節點可以理解為VPC在訪問特定雲端服務時的一個“虛擬網關”。 以OSS為例,工作過程如下:
| 私網串連(PrivateLink)像是在VPC和目標服務之間建立了一條“私密隧道”。 以OSS為例,工作過程如下:
|
為了讓您更直觀地選擇,下表總結了兩種方案的主要區別:
特性 | 網關終端節點 | 私網串連 (PrivateLink) |
應用情境 | 結合網關終端節點的終端節點策略與OSS的Bucket授權策略,可以降低未授權訪問風險,實現雙向鑒權:
| VPC通過私網安全訪問雲端服務的標準方案,相比網關終端節點支援更多雲端服務類型、更多進階能力。 |
適用服務類型 | 目前僅適用於Object Storage Service。 | 適用於眾多阿里雲一方服務以及使用者自建服務(含ISV提供的服務)。 |
VPC側安全能力 | 僅支援終端節點策略。 | 支援安全性群組、網路ACL、終端節點策略。 |
組網能力 | 不支援複雜組網。可能存在雲端服務地址(100.x.x.x網段)衝突的問題。 | 支援複雜組網。結合VPC對等串連/雲企業網、Express Connect/VPN網關產品,可以實現跨地區、混合雲組網。 |
營運能力 | 無 | 支援流日誌,便於審計與故障排查。 |
費用 | 免費 | 收取執行個體費、流量處理費。 使用者自建服務支援選擇服務使用方付費或服務提供者付費。 |
網關終端節點
結合網關終端節點的終端節點策略與OSS的Bucket授權策略,可以降低未授權訪問風險,實現雙向鑒權:
源端控制:VPC側僅允許該VPC訪問指定Bucket,不允許該VPC訪問其他Bucket。
目的端控制:OSS側僅允許指定VPC訪問該Bucket,不允許其他VPC訪問。
控制台
建立網關終端節點並配置授權策略
開啟網關終端節點的VPC、授權Bucket、在VPC內訪問OSS的使用者,可以分別歸屬於不同的阿里雲帳號。
注意網關終端節點僅在部分地區支援。
建立網關終端節點並配置終端節點策略。
前往專用網路控制台-網關終端節點頁面,單擊建立終端節點。
選擇地區並自訂終端節點名稱,終端節點類型保持為網關終端節點。
終端節點服務選中阿里雲服務,並選中Object Storage Service的終端節點服務。
選中VPC並勾選路由表。
網關終端節點完成建立後,系統會自動在選中的路由表裡,增加一個自訂路由條目:目標網段為一個系統首碼列表(裡麵包含OSS 在該地區的 VIP 網段),下一跳為建立的網關終端節點。
配置終端節點策略:文法與存取控制RAM產品的權限原則語言相同。
建立完成後,可以在關聯路由表的自訂路由條目中,查看到一條系統自動添加的、下一跳指向網關終端節點的路由條目。
配置OSS的bucket授權策略。
前往OSS控制台-Bucket頁面,單擊需要配置授權的Bucket名稱。
左側導航選擇許可權控制 > Bucket授權策略。單擊按文法策略添加,單擊編輯。
配置Bucket授權策略:文法與存取控制RAM產品的權限原則語言相同。
策略配置完成後單擊儲存。
驗證存取原則。
注意如果訪問OSS的帳號是RAM帳號,則RAM帳號本身需要授予OSS相關Bucket的操作許可權,否則可能導致訪問失敗。
使用授權帳號,在授權VPC訪問授權Bucket時,訪問成功。
若帳號、VPC或Bucket任意一個未授權,則訪問失敗。
修改權限原則
可以通過修改權限原則,調整授權VPC、授權Bucket或授權帳號範圍。
調整授權VPC:前往OSS控制台-Bucket頁面,單擊目標Bucket名稱,左側導航選擇許可權控制 > Bucket授權策略,調整現有授權策略的
Condition欄位,增減可訪問Bucket的VPC。調整授權Bucket:
前往專用網路控制台-網關終端節點頁面,單擊目標網關終端節點執行個體ID,選擇終端節點策略頁簽,調整現有授權策略的
Resource欄位,增減VPC可訪問的Bucket。前往OSS控制台-Bucket頁面,單擊目標Bucket名稱,左側導航選擇許可權控制 > Bucket授權策略,調整現有授權策略的
Resource欄位,增減可被訪問的Bucket資源。如果涉及多個Bucket,在每個Bucket裡均需要進行操作。
調整授權帳號:
注意如果訪問OSS的帳號是RAM帳號,則RAM帳號本身需要授予OSS相關Bucket的操作許可權,否則可能導致訪問失敗。
前往專用網路控制台-網關終端節點頁面,單擊目標網關終端節點執行個體ID,選擇終端節點策略頁簽,調整現有授權策略的
Principal欄位,增減可在VPC內訪問Bucket的帳號。前往OSS控制台-Bucket頁面,單擊目標Bucket名稱,左側導航選擇許可權控制 > Bucket授權策略,調整現有授權策略的
Principal欄位,增減可在VPC內訪問Bucket的帳號。如果涉及多個Bucket,在每個Bucket裡均需要進行操作。
綁定/解除綁定路由表
可以通過網關終端節點綁定/解除綁定路由表,控制VPC內哪些交換器通過網關終端節點訪問雲端服務。
前往專用網路控制台-網關終端節點頁面,單擊目標網關終端節點執行個體ID。
在關聯的路由表頁簽:
綁定新的路由表:單擊關聯路由表。綁定完成後,可以在關聯路由表的自訂路由條目中,查看到一條系統自動添加的、下一跳指向網關終端節點的路由條目。
解除綁定已有路由表:單擊已關聯路由表右側的解除關聯。解除綁定後,系統添加的路由條目將會被自動移除。
刪除網關終端節點
刪除網關終端節點前,您需要先解除綁定所有已關聯的路由表。
解除綁定所有已關聯的路由表。
前往專用網路控制台-網關終端節點頁面,單擊目標網關終端節點執行個體右側的刪除。
(可選)由於Bucket中仍然存在Bucket授權策略,會限制其他VPC無法訪問該Bucket。如需調整,可以前往OSS控制台-Bucket頁面,單擊目標Bucket名稱,左側導航選擇許可權控制 > Bucket授權策略,調整或刪除僅允許從指定VPC訪問的策略。
API
網關終端節點:
建立網關終端節點並配置終端節點策略:調用CreateVpcGatewayEndpoint介面。
建立時需要傳入終端節點服務名稱欄位
ServiceName,可以通過調用ListVpcEndpointServicesByEndUser介面,查詢可使用的終端節點服務。PolicyDocument欄位用於配置終端節點策略,文法與存取控制RAM產品的權限原則語言相同。
修改網關終端節點策略:調用UpdateVpcGatewayEndpointAttribute介面,傳入
PolicyDocument欄位。綁定路由表:調用AssociateRouteTablesWithVpcGatewayEndpoint介面。
解除綁定路由表:調用DissociateRouteTablesFromVpcGatewayEndpoint介面。
刪除網關終端節點:調用DeleteVpcGatewayEndpoint介面。
OSS Bucket:
配置OSS的bucket授權策略:調用PutBucketPolicy介面。
修改Bucket授權策略:調用PutBucketPolicy介面,傳入JSON形式的權限原則。
刪除Bucket授權策略:調用DeleteBucketPolicy介面。
Terraform
配置網關終端節點:
Resources:alicloud_vpc_gateway_endpoint
注意刪除網關終端節點前,您需要先解除綁定所有已關聯的路由表。
provider "alicloud" {
region = "cn-hangzhou"
}
resource "alicloud_vpc_gateway_endpoint" "default" {
gateway_endpoint_name = "gateway-endpoint-name" # 網關終端節點名稱
service_name = "com.aliyun.cn-hangzhou.oss" # OSS服務名稱
vpc_id = "vpc-bp******" # 網關終端節點所屬VPC
route_tables = ["vtb-bp******","vtb-bp******"] # 關聯的路由表ID
# 終端節點策略
policy_document = <<EOF
{
"Version": "1",
"Statement":
[
{
"Effect": "Allow",
"Action": "oss:*",
"Resource": ["acs:oss:*:*:examplebucket","acs:oss:*:*:examplebucket/*"],
"Principal": ["1746******"]
}
]
}
EOF
}配置OSS的bucket授權策略:
Resources:alicloud_oss_bucket_policy
provider "alicloud" {
region = "cn-hangzhou"
}
resource "alicloud_oss_bucket_policy" "default" {
bucket = "examplebucket" # Bucket名稱
policy = jsonencode({
Version = "1"
Statement = [
{
Effect = "Deny"
Action = [
"oss:ListObjects",
"oss:GetObject",
"oss:PutObject",
"oss:DeleteObject"
]
Principal = [
"*"
]
Resource = [
"acs:oss:*:*:examplebucket",
"acs:oss:*:*:examplebucket/*"
]
Condition = {
StringNotEquals = {
"acs:SourceVpc" = [
"vpc-bp******" # 請替換為實際的VPC ID
]
}
}
},{
Effect = "Allow"
Action = [
"oss:*"
]
Principal = [
"1746xxxxxx" # 請替換為實際的阿里雲帳號ID
]
Resource = [
"acs:oss:*:*:examplebucket",
"acs:oss:*:*:examplebucket/*"
]
Condition = {
StringEquals = {
"acs:SourceVpc" = [
"vpc-bp******" # 請替換為實際的VPC ID
]
}
}
}
]
})
} 私網串連(PrivateLink)
參考PrivateLink相關文檔:
訪問阿里雲服務:通過PrivateLink私網訪問OSS。
訪問使用者自建服務(含ISV提供的服務):通過PrivateLink跨VPC私網訪問ALB、通過PrivateLink跨VPC私網訪問NLB。
訪問網路虛擬設備:通過GWLB快速實現IPv4流量的安全檢測。
更多資訊
計費說明
網關終端節點功能免費。
私網串連(PrivateLink)請參見私網串連計費說明。
支援的地區
地區 | 網關終端節點支援的地區 |
亞太地區-中國 | 華東1(杭州)、華東2(上海)、華北1(青島)、華北2(北京)、華北3(張家口)、華北5(呼和浩特)、華南1(深圳)、華北6(烏蘭察布)、華南2(河源)、華南3(廣州)、西南1(成都)、中國香港 |
亞太地區-其他 | 日本(東京)、新加坡、馬來西亞(吉隆坡)、印尼(雅加達) |
歐美地區 | 德國(法蘭克福)、英國(倫敦)、美國(矽谷)、美國(維吉尼亞) |
中東 | 阿聯酋(杜拜) |
私網串連(PrivateLink)請參見支援私網串連的地區和可用性區域。
配額
網關終端節點配額:
針對同一種雲端服務,一個VPC只能綁定一個網關終端節點,一個VPC路由表也只能關聯一個網關終端節點。
一個網關終端節點可以關聯多個VPC路由表。
私網串連(PrivateLink)請參見配額。