共用方式為


設定 Azure Cosmos DB 的 IP 防火牆

為了保護儲存在您帳戶中的資料,Azure Cosmos DB 會使用秘密型授權模型,搭配強式雜湊型訊息驗證碼 (HMAC)。 此外,Azure Cosmos DB 會使用 IP 型存取控制來確保輸入防火牆安全性。 這種模式類似於傳統資料庫系統的防火牆規則,為您的帳戶增加了另一層安全保障。 使用防火牆,將您的 Azure Cosmos DB 帳戶設定為只允許從一組已核准的機器或雲端服務進行存取。 從這些核准的機器和服務存取儲存在 Azure Cosmos DB 資料庫中的資料,仍然需要呼叫端提供有效的授權權杖。

IP 存取控制

根據預設,如果要求包含有效的授權權杖,則可從網際網路存取您的 Azure Cosmos DB 帳戶。 若要設定 IP 原則型存取控制,使用者必須以 CIDR (無類別網域間路由選擇) 形式提供這組 IP 位址或 IP 位址範圍,以包括為允許存取指定 Azure Cosmos DB 帳戶的用戶端 IP 清單。 套用此組態之後,來自此允許清單之外的機器的任何要求都會收到 403 (禁止) 回應。 當您使用 IP 防火牆時,某些案例可能需要您啟用 Azure 入口網站的存取。 如需詳細資訊,請參閱 允許來自 Azure 入口網站的要求。 將資料總管用於 API for NoSQL、Gremlin 或 Table 帳戶時,您也需要更新防火牆設定,以將目前的 IP 位址新增至防火牆規則。 防火牆變更最多可能需要 15 分鐘才能傳播,而且防火牆在此期間的行為可能會不一致。

將 IP 型防火牆與子網和虛擬網路存取控制結合。 結合它們,即可將存取權限制為任何具有公用 IP 和/或來自虛擬網路內特定子網路的來源。 若要深入了解如何使用子網路和虛擬網路型存取控制,請參閱從虛擬網路存取 Azure Cosmos DB 資源

總而言之,一律需要授權權杖才能存取 Azure Cosmos DB 帳戶。 如果未設定 IP 防火牆和虛擬網路存取控制清單 (ACL),則可使用授權權杖來存取 Azure Cosmos DB 帳戶。 設定 Azure Cosmos DB 帳戶的 IP 防火牆規則或虛擬網路存取清單之後,只有來自允許來源的要求才會運作。 這些要求也必須包含有效的授權權杖才能取得回應。

您可以使用 IP 防火牆來保護 Azure Cosmos DB 帳戶中所儲存的資料。 Azure Cosmos DB 支援 IP 型存取控制,以提供輸入防火牆支援。 使用下列其中一種方法,在 Azure Cosmos DB 帳戶上設定 IP 防火牆:

  • 從 Azure 入口網站
  • 使用 Azure Resource Manager 範本,以宣告方式進行設定
  • 藉由更新 ipRangeFilter 屬性,透過 Azure CLI 或 Azure PowerShell 以程式設計方式進行設定

使用 Azure 入口網站設定 IP 防火牆

若要在 Azure 入口網站 中設定 IP 訪問控制原則,請移至 Azure Cosmos DB 帳戶頁面,然後選取導覽功能表上的 [網路]。 將 [允許存取來源] 值設定為 [選取的網路],然後選取 [儲存]。 如果您尚未新增任何 IP 位址,您也必須 核取方塊,以確認所有 VNet 和 IP 都已封鎖。 如果您變更公用網路存取設定,例如將其關閉或允許所有網路連線,則您之前設定的任何防火牆 IP 位址都會被移除。

Azure 入口網站 中 Azure Cosmos DB 網路防火牆設定的螢幕快照。

當 IP 存取控制開啟時,Azure 入口網站可讓您指定 IP 位址、IP 位址範圍和交換器。 這些參數可啟用對其他 Azure 服務與 Azure 入口網站的存取。 下列各節將提供這些參數的詳細資訊。

注意

當您開啟 Azure Cosmos DB 帳戶的 IP 存取控制時,只有來自允許的 IP 位址的要求才能到達您的帳戶。 如果 IP 位址不在允許清單中,則會封鎖其要求。 除非您允許入口網站存取,否則您也無法在 Azure 入口網站中瀏覽 Cosmos DB 資源。

允許來自 Azure 入口網站的要求

當您以程式設計方式啟用 IP 存取控制原則時,您可能需要將 Azure 入口網站服務的 IP 位址新增至 ipRangeFilter 屬性,才能繼續使用某些入口網站功能。

需要啟用此選項的入口網站案例包括:

  • 特別針對 MongoDB 的 API 或 Apache Cassandra 的 API,使用 Data Explorer 或 https://cosmos.azure.com
  • 針對所有 API,請使用 Azure 入口網站中的下列 Azure Cosmos DB 區段:
    • 瀏覽集合
    • Power BI
    • Azure Synapse

您可以選取 [新增 Azure 入口網站中間件 IP] 選項來啟用存取 Azure 入口網站 的要求,如下列螢幕快照所示:

在 Azure 入口網站 中將中間件IP位址新增至網路的選項螢幕快照。

Azure 入口網站中介軟體 IP 位址會新增至個別清單,如下列螢幕擷取畫面所示。 選取 [儲存] 以將這些位址新增至您的資料庫帳戶。 有關中介軟體 IP 位址的更多詳細資訊,請參閱本文。

Azure 入口網站 中用於網路的中間件IP位址清單螢幕快照。

您可以選取 [ 移除 Azure 入口網站中介軟體 IP] 選項,然後選取 [ 儲存],以移除 Azure 入口網站中介軟體 IP 位址。

Azure 入口網站中介軟體 IP 位址

此處列出 Azure 入口網站中介軟體 IP 位址。 特定資料庫帳戶 API 只需要某些 IP 位址。 當您在入口網站中新增中介軟體 IP 位址時,如先前所述,只會新增帳戶所需的 IP 位址。

例如:

  • 對於 API for NoSQL 帳戶,會新增 [ 全部 ] 類別中的 IP 位址。
  • 對於 API for MongoDB 帳戶,會新增 [ 全部 ] 和 [僅限 MongoDB ] 類別中的 IP 位址。
Azure 公用
資料庫帳戶 API IP 位址
全部 13.91.105.2154.210.172.10713.88.56.14840.91.218.243
僅限 MongoDB 20.245.81.5440.118.23.12640.80.152.19913.95.130.121
僅限 Apache Cassandra 40.113.96.14104.42.11.145137.117.230.240168.61.72.237
由 21Vianet 營運的 Azure
資料庫帳戶 API IP 位址
全部 163.228.137.6143.64.170.142
僅限 MongoDB 52.131.240.99143.64.61.130
僅限 Apache Cassandra 40.73.99.146143.64.62.47
Azure US Gov
資料庫帳戶 API IP 位址
全部 52.247.163.652.244.134.181
僅限 MongoDB 52.244.176.11252.247.148.42
僅限 Apache Cassandra 52.244.50.10152.227.165.24

舊版中間件IP位址

Cosmos DB 入口網站服務最近已轉換為需要新中間件 IP 位址的新基礎結構。 完成該轉換之後,現在可以安全地移除舊基礎結構所使用的舊版IP位址。 如果您的帳戶在防火牆規則中存在舊版中介軟體 IP 位址,則會顯示 [移除 Azure 入口網站舊版中介軟體 IP] 選項。 選取該選項,然後選取 [儲存] 以移除舊版IP位址。

在 Azure 入口網站 中移除舊版中間件IP的選項螢幕快照。

舊版IP位址相依於雲端環境:

Azure 環境 IP 位址
Azure 公用 104.42.195.9240.76.54.13152.176.6.3052.169.50.4552.187.184.26
由 21Vianet 營運的 Azure 139.217.8.25252.176.6.3052.169.50.4552.187.184.26
Azure US Gov 52.244.48.7152.176.6.3052.169.50.4552.187.184.26

注意

如果您在從資料總管連線到 Azure Cosmos DB 帳戶時遇到問題,請檢閱 資料總管疑難排解指南

允許來自全球 Azure 資料中心或 Azure 中其他來源的要求

某些 Azure 服務,例如 Azure 串流分析和 Azure Functions,不會使用固定的 IP 位址。 您仍然可以使用 IP 防火牆來控制這些服務的存取。 若要允許從其他 Azure 資源存取,請選擇 [接受來自 Azure 資料中心內的連線] 選項。 此選項可讓在 Azure 中執行的服務連線到您的 Cosmos DB 帳戶。

選項的螢幕快照,該選項可從 Azure 入口網站的公用 Azure 資料中心內接受連線。

當您啟用此選項時,系統會將 IP 位址 0.0.0.0 新增至允許的 IP 位址清單。 0.0.0.0 IP 位址會限制只能從 Azure 資料中心 IP 範圍向您的 Azure Cosmos DB 帳戶提出要求。 此設定不允許針對任何其他 IP 範圍存取您的 Azure Cosmos DB 帳戶。

注意

將 publicNetworkAccess 設定為 [已停用] 優先於 [接受來自 Azure 資料中心內的連線 ] 選項。 請參閱 blocking-public-network-access-during-account-creation

注意

這個選項會將防火牆設定為允許所有來自 Azure 的連線,包括來自 Azure 中所部署之其他客戶訂用帳戶的連線。 此選項所允許的 IP 清單範圍寬鬆,因而限制了防火牆原則的效果。 只有當您的要求不是來自靜態 IP 或虛擬網路中的子網路時,才使用此選項。 由於 Azure 入口網站部署於 Azure 中,因此,選擇此選項就會自動允許從 Azure 入口網站存取。

來自您目前 IP 的要求

為了簡化開發,Azure 入口網站可協助識別用戶端電腦的 IP,並將其新增至允許清單。 您電腦上執行的應用程式可以接著存取 Azure Cosmos DB 帳戶。

入口網站會自動偵測用戶端 IP 位址。 它可能是您電腦的用戶端 IP 位址或網路閘道的 IP 位址。 請務必在將您的工作負載投入生產環境之前移除此 IP 位址。

若要將目前的IP新增至IP清單,請選取 [ 新增目前的IP]。 然後選取儲存

將目前IP位址新增至 Azure 入口網站 中網路功能的選項螢幕快照。

來自雲端服務的要求

在 Azure 中,雲端服務是使用 Azure Cosmos DB 裝載中介層服務邏輯的常見方式。 若要讓雲端服務連線到您的 Azure Cosmos DB 帳戶,請將雲端服務的公用 IP 位址新增至您允許的 IP 清單。 您可以在 Azure 入口網站中更新 IP 存取控制原則來執行此作業。 此步驟可確保雲端服務的所有角色實例都可以存取您的 Azure Cosmos DB 帳戶。

您可以在 Azure 入口網站中擷取雲端服務的 IP 位址,如下列螢幕擷取畫面所示:

螢幕擷取畫面顯示 Azure 入口網站中顯示之雲端服務的公用 IP 位址。 當您藉由新增角色執行個體來相應放大雲端服務時,新的執行個體會自動存取 Azure Cosmos DB 帳戶,因為它們是相同雲端服務的一部分。

來自虛擬機器的要求

您也可以使用虛擬機器虛擬機器擴展集,透過 Azure Cosmos DB 裝載中介層服務。 若要讓虛擬機器連線到您的 Azure Cosmos DB 帳戶,請將其公用 IP 位址新增至允許的清單。 您可以透過更新IP存取控制策略來執行此步驟。 此設定也適用於虛擬機器擴展集。 新增公用 IP 位址之後,虛擬機器就可以存取您的 Cosmos DB 帳戶。

您可以在 Azure 入口網站中擷取虛擬機器的 IP 位址,如下列螢幕擷取畫面所示:

螢幕擷取畫面,顯示 Azure 入口網站中顯示之虛擬機器的公用 IP 位址。

當您將虛擬機器執行個體新增至群組時,它們即可自動存取您的 Azure Cosmos DB 帳戶。

來自網際網路的要求

若要從因特網上的電腦連線到您的 Azure Cosmos DB 帳戶,請將該電腦的 IP 位址或 IP 範圍新增至允許清單。 只有您新增至此清單的電腦才能連線到您的 Cosmos DB 帳戶。

將輸出規則新增至防火牆

若要取得要新增至防火牆設定的輸出 IP 範圍目前清單,請參閱 下載 Azure IP 範圍和服務標籤

若要將清單自動化,請參閱使用服務標籤探索 API

使用 Resource Manager 範本設定 IP 防火牆

若要設定 Azure Cosmos DB 帳戶的存取控制,請確定 Resource Manager 範本指定具有允許 IP 範圍陣列的 ipRules 屬性。 如果為已部署的 Azure Cosmos DB 帳戶設定 IP 防火牆,請確定 locations 陣列符合目前的部署。 您無法同時修改 locations 陣列和其他屬性。 如需適用於 Azure Cosmos DB 的 Azure Resource Manager 範本的詳細資訊和範例,請參閱適用於 Azure Cosmos DB 的 Azure Resource Manager 範本

重要

ipRules 屬性是隨 API 版本 2020-04-01一起引進的。 舊版改用 ipRangeFilter 屬性,這是逗號分隔的 IP 位址清單。

範例顯示如何在 API 2020-04-01 版或更新版本中公開 ipRules 屬性:

{
  "type": "Microsoft.DocumentDB/databaseAccounts",
  "name": "[variables('accountName')]",
  "apiVersion": "2020-04-01",
  "location": "[parameters('location')]",
  "kind": "GlobalDocumentDB",
  "properties": {
    "consistencyPolicy": "[variables('consistencyPolicy')[parameters('defaultConsistencyLevel')]]",
    "locations": "[variables('locations')]",
    "databaseAccountOfferType": "Standard",
    "enableAutomaticFailover": "[parameters('automaticFailover')]",
    "ipRules": [
      {
        "ipAddressOrRange": "13.91.105.215"
      },
      {
        "ipAddressOrRange": "4.210.172.107"
      },
      {
        "ipAddressOrRange": "13.88.56.148"
      },
      {
        "ipAddressOrRange": "40.91.218.243"
      }
    ]
  }
}

以下是任何早於 2020-04-01以下 API 版本的相同範例:

{
  "type": "Microsoft.DocumentDB/databaseAccounts",
  "name": "[variables('accountName')]",
  "apiVersion": "2019-08-01",
  "location": "[parameters('location')]",
  "kind": "GlobalDocumentDB",
  "properties": {
    "consistencyPolicy": "[variables('consistencyPolicy')[parameters('defaultConsistencyLevel')]]",
    "locations": "[variables('locations')]",
    "databaseAccountOfferType": "Standard",
    "enableAutomaticFailover": "[parameters('automaticFailover')]",
    "ipRangeFilter":"13.91.105.215,4.210.172.107,13.88.56.148,40.91.218.243"
  }
}

使用 Azure CLI 設定 IP 存取控制原則

下列命令示範如何使用 IP 存取控制來建立 Azure Cosmos DB 帳戶:

# Create an Azure Cosmos DB account with default values and IP firewall enabled
resourceGroupName='MyResourceGroup'
accountName='mycosmosaccount'
ipRangeFilter='192.168.221.17,183.240.196.255,40.76.54.131'

# Ensure there are no spaces in the comma-delimited list of IP addresses or CIDR ranges.
az cosmosdb create \
    -n $accountName \
    -g $resourceGroupName \
    --locations regionName='West US 2' failoverPriority=0 isZoneRedundant=False \
    --locations regionName='East US 2' failoverPriority=1 isZoneRedundant=False \
    --ip-range-filter $ipRangeFilter

使用 PowerShell 設定 IP 存取控制原則

下列指令碼說明如何使用 IP 存取控制來建立 Azure Cosmos DB 帳戶:

# Create an Azure Cosmos DB account with default values and IP Firewall enabled
$resourceGroupName = "myResourceGroup"
$accountName = "mycosmosaccount"
$ipRules = @("192.168.221.17","183.240.196.255","40.76.54.131")

$locations = @(
    @{ "locationName"="West US 2"; "failoverPriority"=0; "isZoneRedundant"=False },
    @{ "locationName"="East US 2"; "failoverPriority"=1, "isZoneRedundant"=False }
)

# Make sure there are no spaces in the comma-delimited list of IP addresses or CIDR ranges.
$CosmosDBProperties = @{
    "databaseAccountOfferType"="Standard";
    "locations"=$locations;
    "ipRules"=$ipRules
}

New-AzResource -ResourceType "Microsoft.DocumentDb/databaseAccounts" `
    -ApiVersion "2020-04-01" -ResourceGroupName $resourceGroupName `
    -Name $accountName -PropertyObject $CosmosDBProperties

針對 IP 存取控制原則的問題進行疑難排解

您可以使用下列選項,針對 IP 存取控制原則問題進行疑難排解:

Azure 入口網站

為您的 Azure Cosmos DB 帳戶啟用 IP 存取控制原則會封鎖來自允許的 IP 位址範圍清單之外的機器的所有要求。 若要啟用入口網站資料平面作業,例如瀏覽容器和查詢文件,請使用入口網站中的 [防火牆] 窗格明確允許 Azure 入口網站存取。

軟體開發套件

當您使用軟體開發套件 (SDK) 從不在允許清單中的機器存取 Azure Cosmos DB 資源時,會傳回一般 403 禁止回應 ,而不會產生額外的詳細資料。 檢查您帳戶允許的 IP 清單,並確定正確的原則設定已套用至您的 Azure Cosmos DB 帳戶。

已封鎖要求中的來源 IP

在您的 Azure Cosmos DB 帳戶上啟用診斷記錄,以檢視每個要求和回應。 防火牆相關的訊息會以 403 傳回碼進行記錄。 藉由篩選這些訊息,您就能看到已封鎖要求的來源 IP。 請參閱 Azure Cosmos DB 診斷記錄

要求來自具有已啟用 Azure Cosmos DB 之服務端點的子網路

來自已啟用 Azure Cosmos DB 服務端點的虛擬網路中子網路的要求,會將虛擬網路和子網身分識別傳送至 Azure Cosmos DB 帳戶。 這些要求沒有來源的公用 IP,因此 IP 篩選器會予以拒絕。 若要允許來自虛擬網路中特定子網路的存取,請新增如何針對 Azure Cosmos DB 帳戶設定虛擬網路和子網路型存取中所述的存取控制清單。 套用防火牆規則最多可能需要 15 分鐘的時間,且防火牆可能會在這段期間有不一致的行為。

允許位址清單中的私人 IP 位址

使用包含私人 IP 位址的允許位址清單建立或更新 Azure Cosmos DB 帳戶會失敗。 請確定清單中未指定任何私人 IP 位址。