本文討論如何使用自助式 API,為您的 Cosmos DB 帳戶強制執行最低傳輸層安全性 (TLS) 通訊協定版本。
最低 TLS 版本強制執行在 Azure Cosmos DB 中的運作方式
Cosmos DB 的多租用戶本質要求服務符合每個使用者的存取和安全性需求。 為了達成此目的,Cosmos DB 會在 應用層強制執行最低 TLS 通訊協定,而不是在 TLS 運作的網路堆疊中較低層。 此強制執行會根據客戶在特定資料庫帳戶上設定的設定,對該帳戶任何已驗證的要求執行。
整個服務的最低接受版本是 TLS 1.2。 您可以根據每個帳戶來變更此選取範圍,如下一節所述。
如何為 Cosmos DB 資料庫帳戶設定最低 TLS 版本
從 Azure Cosmos DB 資源提供者 API 2022-11-15 版開始,每個 Cosmos DB 資料庫帳戶都會公開新的屬性,稱為 minimalTlsVersion。 它會接受下列值:
-
Tls12用於將最低版本設定為 TLS 1.2
新帳戶的預設值為 Tls12。
重要
從 2025 年 8 月 31 日起,所有 Cosmos DB 資料庫帳戶都必須使用傳輸層安全性 (TLS) 1.2 或更高版本,因為 TLS 1.0 和 1.1 的支援已淘汰。
自 2025 年 3 月 31 日起, 已針對 Azure Cosmos DB 啟用 TLS 1.3 的支援。
使用 Azure 入口網站設定最低 TLS 通訊協定
此自助功能可在 Azure 入口網站中建立和編輯帳戶時使用。 Azure Cosmos DB 帳戶會強制執行 TLS 1.2 通訊協定。 不過,根據選取的 API 種類,Azure Cosmos DB 也支援下列 TLS 通訊協定。
- MongoDB:TLS 1.2
- Cassandra:TLS 1.2
- 數據表、SQL 和圖形: TLS 1.2
建立帳戶時設定最低 TLS 通訊協定的步驟
如果您使用只支援 TLS 1.2 的 API 種類,您會在 [ 網络] 索引 標籤中注意到 TLS 通訊協定已停用。
如果您使用可接受多個 TLS 通訊協定的 API 種類,則可以流覽至 [ 網路] 索引 標籤,並使用 [ 最小傳輸層安全性通訊協定 ] 選項。 只要按下拉式清單並選取所需的通訊協定,即可變更選取的通訊協定。
設定您的帳戶之後,您可以在 [ 檢閱 + 建立 ] 索引標籤的 [ 網络] 底下檢閱選取的 TLS 通訊協定設定為您指定的。
編輯帳戶時設定最低 TLS 通訊協定的步驟
在 Azure 入口網站上瀏覽至 Azure Cosmos DB 帳戶。
從提要欄位功能表中選取 [ 網路功能 ],然後選取 [ 連線能力] 索引卷 標。
您會發現 [ 最小傳輸層安全性通訊協定 ] 選項。 如果您使用僅支援 TLS 1.2 的 API 種類,則會發現此選項已停用。 否則,您可以按兩下所需的 TLS 通訊協定來選取所需的 TLS 通訊協定。
變更 TLS 通訊協議之後,請選取 [ 儲存 ]。
儲存之後,您會收到成功通知。 不過,這項變更在設定更新完成後最多可能需要 15 分鐘才會生效。
透過 Azure CLI 設定
若要使用 Azure CLI 進行設定,請使用下列命令:
rg="myresourcegroup"
dbName="mycosmosdbaccount"
minimalTlsVersion="Tls12"
az cosmosdb update -n $dbName -g $rg --minimal-tls-version $minimalTlsVersion
透過 Azure PowerShell 進行設定
若要使用 Azure PowerShell 進行設定,請使用下列命令:
$minimalTlsVersion = "Tls12"
Update-AzCosmosDBAccount -ResourceGroupName myresourcegroup -Name mycosmosdbaccount -MinimalTlsVersion $minimalTlsVersion
透過 ARM 範本進行設定
若要使用 ARM 範本來設定此屬性,請更新現有的範本,或為目前的部署匯出新範本,然後將 "minimalTlsVersion" 新增至 databaseAccounts 資源的屬性 (使用所需的最低 TLS 版本值)。 下列範例會使用 參數,示範具有此屬性設定的基本 Azure Resource Manager 範本。
{
{
"type": "Microsoft.DocumentDB/databaseAccounts",
"name": "mycosmosdbaccount",
"apiVersion": "2022-11-15",
"location": "[parameters('location')]",
"kind": "GlobalDocumentDB",
"properties": {
"consistencyPolicy": {
"defaultConsistencyLevel": "[parameters('defaultConsistencyLevel')]",
"maxStalenessPrefix": 1,
"maxIntervalInSeconds": 5
},
"locations": [
{
"locationName": "[parameters('location')]",
"failoverPriority": 0
}
],
"locations": "[variable('locations')]",
"databaseAccountOfferType": "Standard",
"minimalTlsVersion": "[parameters('minimalTlsVersion')]",
}
}
}
重要
當您使用此屬性重新部署時,請確定您包含帳戶和子資源的其他屬性。 請勿如原樣部署此範本,否則會重設所有帳戶屬性。
針對新帳戶
您可以使用上述 ARM 範本,或使用 Azure CLI 或 Azure PowerShell 來建立具有屬性設定的帳戶 minimalTlsVersion :
az cosmosdb create --name <CosmosDBAccountName> \
--resource-group <ResourceGroupName> \
--kind GlobalDocumentDB \
--locations regionName=<Region> \
--minimal-tls-version "Tls12"
New-AzCosmosDBAccount `
-ResourceGroupName "<YourResourceGroupName>" `
-Name "<YourCosmosDBAccountName>" `
-Location "<AzureRegion>" `
-Kind GlobalDocumentDB `
-EnableAutomaticFailover $true `
-MinimalTlsVersion "Tls12"
如何驗證最低 TLS 版本強制執行
由於 Cosmos DB 會在應用程式層強制執行最低 TLS 版本,因此檢查特定 TLS 版本的服務是否接受交握的傳統 TLS 掃描器並不夠可靠,不足以測試 Cosmos DB 中的強制執行。 若要驗證強制執行,請參閱官方的開放原始碼 cosmos-tls-scanner 工具。
您也可以使用 Azure CLI 或 Azure PowerShell 取得 minimalTlsVersion 屬性目前的值。
透過 Azure CLI 取得目前的值
若要使用 Azure CLI 取得屬性目前的值,請執行下列命令:
subId=$(az account show --query id -o tsv)
rg="myresourcegroup"
dbName="mycosmosdbaccount"
az rest --uri "/subscriptions/$subId/resourceGroups/$rg/providers/Microsoft.DocumentDB/databaseAccounts/$dbName?api-version=2022-11-15" --method GET
透過 Azure PowerShell 取得目前的值
若要使用 Azure PowerShell 取得屬性目前的值,請執行下列命令:
Get-AzCosmosDBAccount -ResourceGroupName myresourcegroup -Name mycosmosdbaccount