針對 Azure 儲存體使用私人端點

您可以將私人端點用於 Azure 儲存體帳戶,以允許虛擬網路 (VNet) 上的用戶端透過 Private Link 安全地存取資料。 對於各個儲存體帳戶服務,私人端點會使用 VNet 位址空間中的個別 IP 位址。 VNet 上的用戶端和儲存體帳戶之間的網路流量會流經 VNet 和 Microsoft 骨幹網路上的私人連結,而消除了在公用網際網路上公開的風險。

注意

私人端點無法用於一般用途 v1 儲存體帳戶。

使用適用於您的儲存帳戶的私人端點,可讓您:

  • 藉由設定儲存體防火牆來封鎖公用端點上用於儲存體服務的所有連線,以保護您的儲存體帳戶。
  • 藉由讓您封鎖從 VNet 外流資料,提高虛擬網路 (VNet) 的安全性。
  • 搭配使用 VPNExpressRoutes 與私人對等互連,安全地從連線至 VNet 的內部部署網路連線到儲存體帳戶。

概念概觀

Azure 儲存體 的私人端點概觀

私人端點是您虛擬網路 (VNet) 中的 Azure 資源適用的特殊網路介面。 當您為儲存體帳戶建立私人端點時,其會在 VNet 上的用戶端與儲存體之間提供安全連線。 私人端點獲指派的 IP 位址來自您 VNet 的 IP 位址範圍。 私人端點與儲存體服務之間的連線會使用安全的私人連結。

VNet 中的應用程式可以使用他們在其他情況下也會使用的相同連接字串和授權機制,透過私人端點順暢地連線至儲存體服務。 私人端點可與儲存體帳戶支援的所有通訊協定搭配使用,包括 REST 和 SMB。

私人端點可以在使用服務端點的子網路中建立。 因此,子網路中的用戶端可以使用私人端點連線至一個儲存體帳戶,同時使用服務端點存取其他帳戶。

當您在 VNet 中為儲存體服務建立私人端點時,便會傳送同意要求給儲存體帳戶擁有者來核准。 如果要求建立私人端點的使用者也是儲存體帳戶的擁有者,則系統會自動核准此同意要求。

儲存體帳戶擁有者可在 Azure 入口網站中透過儲存體帳戶的 [私人端點] 索引標籤,來管理同意要求和私人端點。

提示

如果您想要限定為只能透過私人端點來存取您的儲存體帳戶,請將儲存體防火牆設定為會拒絕或控制透過公用端點的存取。

您可以將儲存體防火牆設定為依預設拒絕透過公用端點的存取,藉以確保您的儲存體帳戶僅接受來自 VNet 的連線。 您不需要有防火牆規則允許流量來自具有私人端點的 VNet,因為儲存體防火牆只會控制透過公用端點的存取。 私人端點會仰賴同意流程,為子網路授與對儲存體服務的存取權。

注意

在儲存體帳戶之間複製 Blob 時,您的用戶端必須具有兩個帳戶的網路存取權。 因此,如果您選擇僅對一個帳戶 (來源或目的地) 使用私人連結,請確定您的用戶端具有另一個帳戶的網路存取權。 若要了解設定網路存取權的其他方式,請參閱設定 Azure 儲存體防火牆和虛擬網路

建立私人端點

若要使用 Azure 入口網站建立私人端點,請參閱 Azure 入口網站中的儲存體帳戶體驗私下連線至儲存體帳戶

若要使用 PowerShell 或 Azure CLI 建立私人端點,請參閱下列其中一篇文章。 兩者皆以 Azure Web 應用程式作為目標服務,但為 Azure 儲存體帳戶建立私人連結的步驟是相同的。

當建立私人端點時,您必須指定儲存體帳戶及其連線的儲存體服務。

對於您需要存取的每項儲存體資源 (亦即BlobData Lake Storage Gen2檔案佇列資料表靜態網站),必須要有個別的私人端點。 在私人端點上,這些儲存體服務會定義為相關儲存體帳戶的目標子資源

如果您為 Data Lake Storage Gen2 儲存體資源建立了私人端點,則也應為 Blob 儲存體資源建立一個私人端點。 這是因為以 Data Lake Storage Gen2 端點為目標的作業可能會重新導向至 Blob 端點。 同樣的,如果您只新增 Blob 儲存體的私人端點,而不是針對 Data Lake Storage Gen2,某些作業 (例如管理 ACL、建立目錄、刪除目錄等) 將會失敗,因為 Gen2 API 需要 DFS 私人端點。 藉由為這兩個資源建立私人端點,可確保所有作業都能順利完成。

提示

為儲存體服務的次要執行個體建立個別的私人端點,可提升 RA-GRS 帳戶的讀取效能。 請務必建立一般用途 v2 (標準或進階) 儲存體帳戶。

若要使用為異地備援儲存體設定的儲存體帳戶對次要區域進行讀取存取,服務的主要和次要執行個體分別要有個別的私人端點。 您無須為容錯移轉的次要執行個體建立私人端點。 私人端點會在容錯移轉之後自動連線至新的主要執行個體。 如需儲存體備援選項的詳細資訊,請參閱 Azure 儲存體備援

連線至私人端點

使用私人端點的 VNet 上的用戶端在用戶端連線至公用端點時,應將相同的連接字串用於儲存體帳戶。 我們依賴 DNS 解析,透過私人連結自動將來自 VNet 的連線路由至儲存體帳戶。

重要

使用相同的連接字串,透過私人端點連線至儲存體帳戶,就像在其他情況下一樣。 請勿使用 privatelink 子網域 URL 連線至儲存體帳戶。

依預設,我們會建立一個附加至 VNet 的私人 DNS 區域,並對私人端點進行必要的更新。 不過,如果您使用的是自己的 DNS 伺服器,則可能需要對 DNS 組態進行額外的變更。 下列 DNS 變更一節描述私人端點所需的更新。

私人端點的 DNS 變更

注意

如需如何為私人端點設定 DNS 設定的詳細資訊,請參閱 Azure 私人端點 DNS 設定

當您建立私人端點時,儲存體帳戶的 DNS CNAME 資源記錄會更新為子網域中具有首碼 privatelink 的別名。 根據預設,我們也會建立對應至 privatelink 子網域的私人 DNS 區域,以及私人端點的 DNS A 資源記錄。

當您從具有私人端點的 VNet 外部解析儲存體端點 URL 時,將會解析為儲存體服務的公用端點。 從裝載私人端點的 VNet 解析時,儲存體端點 URL 會解析為私人端點的 IP 位址。

在上述範例中,從裝載私人端點的 VNet 外部解析時,儲存體帳戶 'StorageAccountA' 的 DNS 資源記錄將是:

名稱 類型
StorageAccountA.blob.core.windows.net CNAME StorageAccountA.privatelink.blob.core.windows.net
StorageAccountA.privatelink.blob.core.windows.net CNAME <儲存體服務公用端點>
<儲存體服務公用端點> A <儲存體服務公用 IP 位址>

如前所述,您可以透過使用儲存體防火牆,拒絕或控制透過公用端點對 VNet 外部的用戶端所做的存取。

由裝載私人端點的 VNet 中的用戶端解析時,StorageAccountA 的 DNS 資源記錄將是:

名稱 類型
StorageAccountA.blob.core.windows.net CNAME StorageAccountA.privatelink.blob.core.windows.net
StorageAccountA.privatelink.blob.core.windows.net A 10.1.1.5

此方法可讓您將相同的連接字串用於裝載私人端點的 VNet 中的用戶端,以及該 VNet 外部的用戶端,以存取儲存體帳戶。

如果您在網路上使用自訂 DNS 伺服器,用戶端必須能夠將儲存體帳戶端點的 FQDN 解析為私人端點 IP 位址。 您應設定 DNS 伺服器,以將私人連結子網域委派給 VNet 的私人 DNS 區域,或為具有私人端點 IP 位址的 StorageAccountA.privatelink.blob.core.windows.net 設定 A 記錄。

提示

使用自訂或內部部署 DNS 伺服器時,您應設定 DNS 伺服器,以將 privatelink 子網域中的儲存體帳戶名稱解析為私人端點 IP 位址。 若要這麼做,您可以將 privatelink 子網域委派給 VNet 的私人 DNS 區域,或在 DNS 伺服器上設定 DNS 區域,然後新增 DNS A 記錄。

儲存體服務的私人端點和相關端點目標子資源的建議 DNS 區域名稱如下:

儲存體服務 目標子資源 區域名稱
Blob 服務 blob privatelink.blob.core.windows.net
Data Lake Storage Gen2 dfs privatelink.dfs.core.windows.net
檔案服務 檔案 privatelink.file.core.windows.net
佇列服務 queue privatelink.queue.core.windows.net
資料表服務 table privatelink.table.core.windows.net
靜態網站 web privatelink.web.core.windows.net

如需有關設定您自己的 DNS 伺服器以支援私人端點的詳細資訊,請參閱下列文章:

定價

如需價格詳細資料,請參閱 Azure Private Link 價格

已知問題

請記住下列與 Azure 儲存體的私人端點有關的已知問題。

具有私人端點的 VNet 中,用戶端的儲存體存取條件約束

具有現有私人端點的 VNet 中的用戶端在存取其他具有私人端點的儲存體帳戶時,會面臨條件約束。 例如,假設 VNet N1 將一個私人端點用於儲存體帳戶 A1 的 Blob 儲存體。 如果儲存體帳戶 A2 在 VNet N2 中有用於 Blob 儲存體的私人端點,則 VNet N1 中的用戶端也必須使用私人端點來存取帳戶 A2 中的 Blob 儲存體。 如果儲存體帳戶 A2 沒有任何用於 Blob 儲存體的私人端點,則 VNet N1 中的用戶端在存取該帳戶中的 Blob 儲存體時可以不使用私人端點。

此條件約束是帳戶 A2 建立私人端點時所做的 DNS 變更所產生的。

在儲存體帳戶之間複製 Blob

只有在使用 Azure REST API,或是採用 REST API 的工具時,才可以使用私人端點在儲存體帳戶之間複製 Blob。 這類工具包括 AzCopy、儲存體總管、Azure PowerShell、Azure CLI 和 Azure Blob 儲存體 SDK。

僅支援以 或 file 記憶體資源端點為目標blob的私人端點。 這包括對 Data Lake Storage Gen2 帳戶的 REST API 呼叫,其中 blob 會明確或隱含地參考資源端點。 尚未支援以 Data Lake 儲存體 Gen2 dfs 資源端點為目標的私人端點。 尚不支援使用網路檔案系統 (NFS) 通訊協定在儲存體帳戶之間進行複製。

下一步