在 Azure Cosmos DB 中設定 IP 防火牆

適用於:NoSQL MongoDB Cassandra Gremlin

為了保護您帳戶中儲存的數據,Azure Cosmos DB 支援使用強式哈希式訊息驗證碼 (HMAC) 的秘密型授權模型。 此外,Azure Cosmos DB 支援輸入防火牆支援的IP型訪問控制。 此模型類似於傳統資料庫系統的防火牆規則,並提供帳戶的額外安全性層級。 使用防火牆,您可以將 Azure Cosmos DB 帳戶設定為只能從核准的一組機器和/或雲端服務存取。 從這些核准的機器和服務集存取儲存在 Azure Cosmos DB 資料庫中的數據,仍然需要呼叫者出示有效的授權令牌。

IP 存取控制

根據預設,只要要求隨附有效的授權令牌,Azure Cosmos DB 帳戶即可從因特網存取。 若要設定 IP 原則型存取控制,用戶必須在 CIDR (無類別網域間路由) 表單中提供一組 IP 位址或 IP 位址範圍,以納入為允許的用戶端 IP 清單,以存取指定的 Azure Cosmos DB 帳戶。 套用此設定之後,來自此允許清單外部計算機的任何要求都會收到 403 (禁止) 回應。 使用IP防火牆時,建議允許 Azure 入口網站存取您的帳戶。 需要存取權,才能允許使用數據總管,以及上 Azure 入口網站 顯示的帳戶擷取計量。 使用數據總管時,除了允許 Azure 入口網站 存取您的帳戶之外,您也需要更新防火牆設定,將目前的IP位址新增至防火牆規則。 請注意,防火牆變更最多可能需要 15 分鐘才能傳播,且防火牆在此期間可能會表現出不一致的行為。

您可以結合IP型防火牆與子網和 VNET 訪問控制。 藉由結合它們,您可以限制對 VNET 內具有公用 IP 和/或特定子網之任何來源的存取。 若要深入瞭解如何使用子網和 VNET 型存取控制,請參閱 從虛擬網路存取 Azure Cosmos DB 資源。

總而言之,存取 Azure Cosmos DB 帳戶一律需要授權令牌。 如果未設定IP防火牆和 VNET 存取控制 清單 (ACL),可以使用授權令牌存取 Azure Cosmos DB 帳戶。 在 Azure Cosmos DB 帳戶上設定 IP 防火牆或 VNET ACL 或兩者之後,只有來自您指定來源的要求(並使用授權令牌)取得有效的回應。

您可以使用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。

顯示如何在 Azure 入口網站 中開啟 [防火牆] 頁面的螢幕快照

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

注意

啟用 Azure Cosmos DB 帳戶的 IP 存取控制原則之後,系統會拒絕從允許 IP 位址範圍清單外的機器對 Azure Cosmos DB 帳戶的所有要求。 也會封鎖從入口網站流覽 Azure Cosmos DB 資源,以確保訪問控制的完整性。

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

當您以程式設計方式啟用IP訪問控制原則時,必須將Azure 入口網站的IP位址新增至ipRangeFilter屬性,以維護存取權。 入口網站 IP 位址如下:

區域 IP 位址
中國 139.217.8.252
US Gov 52.244.48.71
所有其他區域 104.42.195.92,40.76.54.131,52.176.6.30,52.169.50.45,52.187.184.26

您可以選取 [允許從 Azure 入口網站 存取] 選項來啟用存取 Azure 入口網站 的要求,如下列螢幕快照所示:

顯示如何啟用 Azure 入口網站 存取權的螢幕快照

新增 Azure 入口網站 IP 位址

Cosmos DB 入口網站服務正在轉換至 2024 年的新基礎結構。 在此轉換中,啟用防火牆的帳戶將需要允許新的IP位址繼續存取某些入口網站功能,例如數據總管。 此移動也引進適用於 Mongo DB 和 Apache Cassandra API 帳戶的專用 IP 位址。

在此轉換期間,[允許從 Azure 入口網站 存取] 選項會將目前和新的IP位址新增至帳戶防火牆設定(包括這些帳戶的 MongoDB 和 Cassandra 特定位址)完成轉換時,將會提供入口網站選項來移除舊的 IP 位址。

Azure 公用
資料庫帳戶 API IP 位址
全部 13.91.105.215, 4.210.172.107, 13.88.56.148, 40.91.218.243
僅限 MongoDB 20.245.81.54, 40.118.23.126, 40.80.152.199, 13.95.130.121
僅限 Apache Cassandra 40.113.96.14, 104.42.11.145, 137.117.230.240, 168.61.72.237
Azure 中國
資料庫帳戶 API IP 位址
全部 163.228.137.6, 143.64.170.142
僅限 MongoDB 52.131.240.99, 143.64.61.130
僅限 Apache Cassandra 40.73.99.146, 143.64.62.47
Azure US Gov
資料庫帳戶 API IP 位址
全部 52.247.163.6, 52.244.134.181
僅限 MongoDB 52.244.176.112, 52.247.148.42
僅限 Apache Cassandra 52.244.50.101, 52.227.165.24

注意

如果您遇到從數據總管連線到 Azure Cosmos DB 帳戶的挑戰,請檢閱 數據總管疑難解答指南

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

如果您從未提供靜態 IP 的服務存取 Azure Cosmos DB 帳戶(例如 Azure 串流分析和 Azure Functions),您仍然可以使用 IP 防火牆來限制存取。 您可以選取 [接受來自 Azure 數據中心 內的連線] 選項,以啟用來自 Azure 內其他來源的存取,如下列螢幕快照所示:

顯示如何接受來自 Azure 資料中心連線的螢幕快照

當您啟用此選項時,IP 位址 0.0.0.0 會新增至允許的IP位址清單。 0.0.0.0 IP 位址會限制來自 Azure 數據中心 IP 範圍之 Azure Cosmos DB 帳戶的要求。 此設定不允許存取 Azure Cosmos DB 帳戶的任何其他 IP 範圍。

注意

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

來自您目前IP的要求

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

入口網站會自動偵測用戶端IP位址。 這可能是您計算機的用戶端IP位址,或網路閘道的IP位址。 請務必先移除此IP位址,再將工作負載帶到生產環境。

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

顯示如何設定目前IP防火牆設定的螢幕快照

來自雲端服務的要求

在 Azure 中,雲端服務是使用 Azure Cosmos DB 裝載仲介層服務邏輯的常見方式。 若要從雲端服務啟用對 Azure Cosmos DB 帳戶的存取,您必須設定 IP 存取,您必須設定 IP 存取,將雲端服務的公用 IP 位址新增至與 Azure Cosmos DB 帳戶相關聯的允許 IP 位址清單。 這可確保雲端服務的所有角色實例都能存取您的 Azure Cosmos DB 帳戶。

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

顯示雲端服務公用IP位址的螢幕快照,其中顯示 Azure 入口網站

當您藉由新增角色實例來相應放大雲端服務時,這些新實例將會自動存取 Azure Cosmos DB 帳戶,因為它們是相同雲端服務的一部分。

來自虛擬機的要求

您也可以使用 虛擬機虛擬機擴展集 ,使用 Azure Cosmos DB 來裝載仲介層服務。 若要設定您的 Azure Cosmos DB 帳戶,使其允許從虛擬機存取,您必須設定虛擬機和/或虛擬機擴展集的公用 IP 位址,以設定 IP 訪問控制原則,作為 Azure Cosmos DB 帳戶的其中一個允許 IP 位址。

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

顯示 Azure 入口網站 中所顯示虛擬機公用IP位址的螢幕快照

當您將虛擬機實例新增至群組時,它們會自動接收 Azure Cosmos DB 帳戶的存取權。

來自因特網的要求

當您從因特網上的計算機存取 Azure Cosmos DB 帳戶時,必須將電腦的用戶端 IP 位址或 IP 位址範圍新增至帳戶的允許 IP 位址清單。

將輸出規則新增至防火牆

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

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

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

若要設定 Azure Cosmos DB 帳戶的訪問控制,請確定 Resource Manager 範本會使用允許的 IP 範圍數位來指定 ipRules 屬性。 如果將IP防火牆設定為已部署的 Azure Cosmos DB 帳戶,請確定 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": "40.76.54.131"
      },
      {
        "ipAddressOrRange": "52.176.6.30"
      },
      {
        "ipAddressOrRange": "52.169.50.45"
      },
      {
        "ipAddressOrRange": "52.187.184.26"
      }
    ]
  }
}

以下是 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":"40.76.54.131,52.176.6.30,52.169.50.45,52.187.184.26"
  }
}

使用 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'

# Make sure 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

當您從不在允許清單中的計算機使用 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位址。

下一步

若要為您的 Azure Cosmos DB 帳戶設定虛擬網路服務端點,請參閱下列文章: