全部產品
Search
文件中心

Virtual Private Cloud:VPC私網訪問雲端服務

更新時間:Nov 21, 2025

VPC內的執行個體訪問雲端服務時(例如訪問Object Storage Service),如果通過公網訪問,可能會存在資料安全風險、公網網路品質不穩定等問題,同時公網訪問也會產生公網流量成本。

為瞭解決這些問題,阿里雲提供了VPC內通過私網訪問雲端服務的能力,確保訪問請求保留在阿里雲的內網中,從而獲得更高的安全性、更穩定的網路效能和更優的成本控制。

本文將介紹兩種主流的VPC私網訪問方案:網關終端節點和私網串連(PrivateLink)。

工作原理

網關終端節點

私網串連(PrivateLink)

網關終端節點可以理解為VPC在訪問特定雲端服務時的一個“虛擬網關”。

以OSS為例,工作過程如下:

  1. 建立網關終端節點時,需要選擇VPC、路由表、要訪問的雲端服務。

  2. 網關終端節點完成建立後,系統會自動在選中的路由表裡,增加一個自訂路由條目:目標網段為一個系統首碼列表(裡麵包含OSS 在該地區的 VIP 網段),下一跳為建立的網關終端節點。

  3. 路由表所綁定的交換器內的ECS執行個體,在訪問OSS內網網域名稱時,VPC會將訪問請求路由到網關終端節點,並通過阿里雲內網直接到達OSS,無需繞行公網。

私網串連(PrivateLink)像是在VPC和目標服務之間建立了一條“私密隧道”。

以OSS為例,工作過程如下:

  1. 使用PrivateLink需要先建立介面終端節點。建立介面終端節點時,需要選擇VPC、安全性群組、可用性區域與交換器、要訪問的雲端服務。

  2. 介面終端節點完成建立後,系統會自動在每個選中的交換器裡建立一個擁有私網IP的終端節點彈性網卡(ENI),作為訪問服務的唯一入口。

  3. ECS執行個體在訪問終端節點網域名稱時,如果符合安全性群組規則,所有訪問請求都將經過終端節點彈性網卡,並通過阿里雲內網直接到達OSS,無需繞行公網。

為了讓您更直觀地選擇,下表總結了兩種方案的主要區別:

特性

網關終端節點

私網串連 (PrivateLink)

應用情境

結合網關終端節點的終端節點策略與OSS的Bucket授權策略,可以降低未授權訪問風險,實現雙向鑒權:

  • 源端控制:VPC側僅允許該VPC訪問指定Bucket,不允許該VPC訪問其他Bucket。

  • 目的端控制:OSS側僅允許指定VPC訪問該Bucket,不允許其他VPC訪問。

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的使用者,可以分別歸屬於不同的阿里雲帳號。

注意網關終端節點僅在部分地區支援

  1. 建立網關終端節點並配置終端節點策略。

    1. 前往專用網路控制台-網關終端節點頁面,單擊建立終端節點

    2. 選擇地區並自訂終端節點名稱,終端節點類型保持為網關終端節點

    3. 終端節點服務選中阿里雲服務,並選中Object Storage Service的終端節點服務。

    4. 選中VPC並勾選路由表。

      網關終端節點完成建立後,系統會自動在選中的路由表裡,增加一個自訂路由條目:目標網段為一個系統首碼列表(裡麵包含OSS 在該地區的 VIP 網段),下一跳為建立的網關終端節點。

    5. 配置終端節點策略:文法與存取控制RAM產品的權限原則語言相同。

      策略樣本

      下面的樣本表示:VPC僅允許帳號ID為1746xxxxxx的使用者,訪問名稱為examplebucket的Bucket,進行OSS相關操作。

      {
        "Version": "1",
        "Statement":
          [
            {
              "Effect": "Allow",
              "Action": "oss:*",
              "Resource": ["acs:oss:*:*:examplebucket",
                           "acs:oss:*:*:examplebucket/*"],
              "Principal": ["1746xxxxxx"]
            }
          ]
      }
    6. 建立完成後,可以在關聯路由表的自訂路由條目中,查看到一條系統自動添加的、下一跳指向網關終端節點的路由條目。

  2. 配置OSS的bucket授權策略。

    1. 前往OSS控制台-Bucket頁面,單擊需要配置授權的Bucket名稱。

    2. 左側導航選擇許可權控制 > Bucket授權策略。單擊按文法策略添加,單擊編輯

    3. 配置Bucket授權策略:文法與存取控制RAM產品的權限原則語言相同。

      策略樣本

      下面的樣本表示:

      1. 策略1:拒絕所有帳號,從除了執行個體ID為vpc-bp******的VPC外的其他VPC,訪問名稱為examplebucket的Bucket,進行OSS相關操作。

        OSS的Action匯總請參見RAM Policy。Deny策略建議盡量避免配置Action為*,以免導致Bucket所有者在OSS控制台也無法訪問Bucket。
      2. 策略2:僅允許帳號ID為1746xxxxxx的使用者,從執行個體ID為vpc-bp******的VPC,訪問名稱為examplebucket的Bucket,進行OSS相關操作。

      {
        "Version": "1",
        "Statement":
          [
            {
              "Effect": "Deny",
              "Action": ["oss:ListObjects","oss:GetObject","oss:PutObject","oss:DeleteObject"],
              "Resource": ["acs:oss:*:*:examplebucket",
                           "acs:oss:*:*:examplebucket/*"],
              "Principal": ["*"],
      	"Condition": {
      	  "StringNotEquals": {
                  "acs:SourceVpc": [
      	      "vpc-bp******"
      	    ]
      	  }
      	}
            },{
              "Effect": "Allow",
              "Action": ["oss:*"],
              "Resource": ["acs:oss:*:*:examplebucket",
                           "acs:oss:*:*:examplebucket/*"],
              "Principal": ["1746xxxxxx"],
      	"Condition": {
      	  "StringEquals": {
                  "acs:SourceVpc": [
      	      "vpc-bp******"
      	    ]
      	  }
      	}
            }
          ]
      }

    4. 策略配置完成後單擊儲存

  3. 驗證存取原則。

    注意如果訪問OSS的帳號是RAM帳號,則RAM帳號本身需要授予OSS相關Bucket的操作許可權,否則可能導致訪問失敗。
    1. 使用授權帳號,在授權VPC訪問授權Bucket時,訪問成功。

    2. 若帳號、VPC或Bucket任意一個未授權,則訪問失敗。

修改權限原則

可以通過修改權限原則,調整授權VPC、授權Bucket或授權帳號範圍。

  • 調整授權VPC:前往OSS控制台-Bucket頁面,單擊目標Bucket名稱,左側導航選擇許可權控制 > Bucket授權策略,調整現有授權策略的Condition欄位,增減可訪問Bucket的VPC。

  • 調整授權Bucket:

    1. 前往專用網路控制台-網關終端節點頁面,單擊目標網關終端節點執行個體ID,選擇終端節點策略頁簽,調整現有授權策略的Resource欄位,增減VPC可訪問的Bucket。

    2. 前往OSS控制台-Bucket頁面,單擊目標Bucket名稱,左側導航選擇許可權控制 > Bucket授權策略,調整現有授權策略的Resource欄位,增減可被訪問的Bucket資源。如果涉及多個Bucket,在每個Bucket裡均需要進行操作。

  • 調整授權帳號:

    注意如果訪問OSS的帳號是RAM帳號,則RAM帳號本身需要授予OSS相關Bucket的操作許可權,否則可能導致訪問失敗。
    1. 前往專用網路控制台-網關終端節點頁面,單擊目標網關終端節點執行個體ID,選擇終端節點策略頁簽,調整現有授權策略的Principal欄位,增減可在VPC內訪問Bucket的帳號。

    2. 前往OSS控制台-Bucket頁面,單擊目標Bucket名稱,左側導航選擇許可權控制 > Bucket授權策略,調整現有授權策略的Principal欄位,增減可在VPC內訪問Bucket的帳號。如果涉及多個Bucket,在每個Bucket裡均需要進行操作。

綁定/解除綁定路由表

可以通過網關終端節點綁定/解除綁定路由表,控制VPC內哪些交換器通過網關終端節點訪問雲端服務。

  1. 前往專用網路控制台-網關終端節點頁面,單擊目標網關終端節點執行個體ID。

  2. 關聯的路由表頁簽:

    1. 綁定新的路由表:單擊關聯路由表。綁定完成後,可以在關聯路由表的自訂路由條目中,查看到一條系統自動添加的、下一跳指向網關終端節點的路由條目。

    2. 解除綁定已有路由表:單擊已關聯路由表右側的解除關聯。解除綁定後,系統添加的路由條目將會被自動移除。

刪除網關終端節點

刪除網關終端節點前,您需要先解除綁定所有已關聯的路由表。

  1. 解除綁定所有已關聯的路由表。

  2. 前往專用網路控制台-網關終端節點頁面,單擊目標網關終端節點執行個體右側的刪除

  3. (可選)由於Bucket中仍然存在Bucket授權策略,會限制其他VPC無法訪問該Bucket。如需調整,可以前往OSS控制台-Bucket頁面,單擊目標Bucket名稱,左側導航選擇許可權控制 > Bucket授權策略,調整或刪除僅允許從指定VPC訪問的策略。

API

  1. 網關終端節點:

    1. 建立網關終端節點並配置終端節點策略:調用CreateVpcGatewayEndpoint介面。

      1. 建立時需要傳入終端節點服務名稱欄位ServiceName,可以通過調用ListVpcEndpointServicesByEndUser介面,查詢可使用的終端節點服務。

      2. PolicyDocument欄位用於配置終端節點策略,文法與存取控制RAM產品的權限原則語言相同。

    2. 修改網關終端節點策略:調用UpdateVpcGatewayEndpointAttribute介面,傳入PolicyDocument欄位。

    3. 綁定路由表:調用AssociateRouteTablesWithVpcGatewayEndpoint介面。

    4. 解除綁定路由表:調用DissociateRouteTablesFromVpcGatewayEndpoint介面。

    5. 刪除網關終端節點:調用DeleteVpcGatewayEndpoint介面。

  2. OSS Bucket:

    1. 配置OSS的bucket授權策略:調用PutBucketPolicy介面。

    2. 修改Bucket授權策略:調用PutBucketPolicy介面,傳入JSON形式的權限原則。

    3. 刪除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)請參見私網串連計費說明

支援的地區

地區

網關終端節點支援的地區

亞太地區-中國

華東1(杭州)華東2(上海)華北1(青島)華北2(北京)華北3(張家口)華北5(呼和浩特)華南1(深圳)華北6(烏蘭察布)華南2(河源)華南3(廣州)西南1(成都)中國香港

亞太地區-其他

日本(東京)新加坡馬來西亞(吉隆坡)印尼(雅加達)

歐美地區

德國(法蘭克福)英國(倫敦)美國(矽谷)美國(維吉尼亞)

中東

阿聯酋(杜拜)

私網串連(PrivateLink)請參見支援私網串連的地區和可用性區域

配額

網關終端節點配額:

  1. 針對同一種雲端服務,一個VPC只能綁定一個網關終端節點,一個VPC路由表也只能關聯一個網關終端節點。

  2. 一個網關終端節點可以關聯多個VPC路由表。

私網串連(PrivateLink)請參見配額