共用方式為


在 Azure Cosmos DB 中設定 IP 防火牆

適用於:NoSQL MongoDB Cassandra Gremlin Table

為了保護您帳戶中所儲存的資料,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 入口網站上顯示的計量。 使用資料總管時,除了允許 Azure 入口網站存取您的帳戶之外,您還需要更新防火牆設定,以將目前的 IP 位址新增至防火牆規則。 防火牆變更最多可能需要 15 分鐘的時間才能傳播,且防火牆可能會在這段期間有不一致的行為。

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

整體來說,一律需有授權權杖才能存取 Azure Cosmos DB 帳戶。 如果未設定 IP 防火牆和虛擬網路存取控制清單 (ACL),則可使用授權權杖來存取 Azure Cosmos DB 帳戶。 在 IP 防火牆或虛擬網路 ACL 或兩者皆已設定於 Azure Cosmos DB 帳戶之後,只有源自您所指定來源 (且具有授權權杖) 的要求會得到有效回應。

您可以使用 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 位址範圍清單外部的電腦對 Azure Cosmos DB 帳戶的所有要求。 從入口網站瀏覽 Azure Cosmos DB 資源也會遭到封鎖,以確保存取控制的完整性。

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

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

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

  • 特別是適用於 MongoDB 的 API 或適用於 Apache Cassandra 的 API,使用數據總管或 <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位址。

例如:

  • 針對 NoSQL 帳戶的 API,將會新增 [所有] 類別中的 IP 位址。

  • 針對適用於 MongoDB 的 API 帳戶,只會新增來自 AllMongoDB 類別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

舊版中間件IP位址

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

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

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

Azure 環境 IP 位址
Azure 公用 104.42.195.92, 40.76.54.131, 52.176.6.30, 52.169.50.45, 52.187.184.26
Azure 中國 139.217.8.252, 52.176.6.30, 52.169.50.45, 52.187.184.26
Azure US Gov 52.244.48.71, 52.176.6.30, 52.169.50.45, 52.187.184.26

注意

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

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

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

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

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

注意

將 publicNetworkAccess 設定為 Disabled 優先於此 [接受來自 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 Cosmos DB 帳戶相關聯的允許 IP 位址清單。 這確保雲端服務的所有角色執行個體都能存取您的 Azure Cosmos DB 帳戶。

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

這個螢幕擷取畫面顯示 Azure 入口網站中所顯示雲端服務的公用 IP 位址

當您藉由新增角色執行個體來擴增雲端服務時,那些新的執行個體將可自動存取 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 範本指定 ipRules 屬性,其中含有允許的 IP 範圍陣列。 如果將 IP 防火牆設定為已部署的 Azure Cosmos DB 帳戶,請確保 locations 陣列符合目前所部署的項目。 您無法同時修改 locations 陣列和其他屬性。 如需 Azure Cosmos DB 的 Azure Resource Manager 範本詳細資訊和範例,請參閱適用於 Azure Cosmos DB 的 Azure Resource Manager 範本

重要

已在 API 2020-04-01 版中引進 ipRules 屬性。 先前的版本會改為公開 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'

# 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 位址。