Azure Cosmos DB 虛擬核心中的資料庫安全性概觀

適用於:NoSQL MongoDB Cassandra Gremlin Table

本文討論 Azure Cosmos DB 提供的資料庫安全性最佳作法和重要功能,協助您防止、偵測及因應資料庫缺口。

Azure Cosmos DB 安全性有哪些新功能?

儲存在所有 Azure 區域之 Azure Cosmos DB 中的文件和備份現在可以使用待用加密。 這些區域內的新舊客戶都會自動套用加密靜止功能。 不需要設定任何項目。 您可以獲得與之前相同的出色延遲、輸送量、可用性和功能,並擁有以下好處:知道資料在待用加密下仍舊安全無虞。 儲存至 Azure Cosmos DB 帳戶的資料會使用服務受控金鑰,以利用 Microsoft 所管理的金鑰來自動進行縝密的加密。 您可以選擇性地選擇藉由使用客戶自控金鑰或 CMK,來利用您管理的金鑰來新增第二層加密。

如何保護我的資料庫?

資料安全性是您、客戶和資料庫提供者之間共同的責任。 根據您選擇的資料庫提供者而定,您承擔的責任也有所不同。 如果您選擇內部部署解決方案,您需要負責從端點保護到硬體實體安全性的一切事項,這並不容易。 如果您選擇平台即服務 (PaaS) 雲端資料庫提供者,例如 Azure Cosmos DB,您關切的領域會大幅縮小。 下圖取自 Microsoft 的雲端運算共同責任 (英文) 技術白皮書,顯示您的責任如何藉助於 PaaS 提供者 (例如 Azure Cosmos DB) 而減輕。

Screenshot that shows customer and database provider responsibilities.

上圖顯示高階雲端安全性元件,但對於您的資料庫解決方案,您需要特別關注哪些項目? 如何比較不同的解決方案?

我們建議採用下列需求檢查清單來比較資料庫系統︰

  • 網路安全性和防火牆設定
  • 使用者驗證和細微的使用者控制
  • 能夠將資料複寫到世界各地以防區域性失敗
  • 從一個資料中心容錯移轉至另一個資料中心的能力
  • 在資料中心內的區域資料複寫
  • 自動資料備份
  • 從備份中還原已刪除的資料
  • 保護並隔離敏感性資料
  • 監視攻擊
  • 回應攻擊
  • 能夠異地隔離資料以遵守資料控管限制
  • 實際保護受保護資料中心內的伺服器
  • 認證

雖然看似明顯,但最新的大規模資料庫缺口提醒我們注意以下這些簡單但很重要的需求:

  • 修補伺服器以保持最新狀態
  • 預設為 HTTPS/TLS 加密
  • 使用強式密碼的系統管理帳戶

Azure Cosmos DB 如何保護我的資料庫?

讓我們回顧一下先前的清單。 Azure Cosmos DB 提供其中多少安全性需求? 每一個。

讓我們詳細探索每一個。

安全性需求 Azure Cosmos DB 的安全性方法
網路安全性 使用 IP 防火牆是保護資料庫的第一道防線。 Azure Cosmos DB 支援原則驅動的 IP 型存取控制,以提供輸入防火牆支援。 IP 型存取控制與傳統資料庫系統所使用的防火牆規則類似。 不過,它們會進行擴充,因此 Azure Cosmos DB 資料庫帳戶虛擬核心叢集只能從核准的一組機器或雲端服務進行存取。 若要深入了解,請參閱 Azure Cosmos DB 防火牆支援

使用 Azure Cosmos DB,您可以啟用特定的 IP 位址 (168.61.48.0)、IP 範圍 (168.61.48.0/8),以及 IP 和範圍的組合。

Azure Cosmos DB 會封鎖此允許清單之外的機器發出的所有要求。 因此,核准的機器和雲端服務發出的要求必須完成驗證程序,才能獲得資源的存取控制。

您可以使用虛擬網路服務標籤來達成網路隔離,並讓一般的網際網路無法存取 Azure Cosmos DB 資源。 建立安全性規則時,請以服務標籤取代特定的 IP 位址。 在規則的正確來源或目的地欄位中指定服務標籤名稱 (例如 AzureCosmosDB),即可允許或拒絕對應服務的流量。
授權 Azure Cosmos DB 使用雜湊式訊息驗證碼 (HMAC) 來進行授權。

每個要求都透過祕密帳戶金鑰的雜湊處理,而後續的 base-64 編碼雜湊會隨著每次呼叫 Azure Cosmos DB 一起傳送。 為了驗證要求,Azure Cosmos DB 會使用正確的祕密金鑰和屬性產生雜湊,然後比較此值與要求中的值。 如果這兩個值相符,即會成功授權作業,並處理要求。 如果兩者不相符,則發生授權失敗,且要求遭到拒絕。

您可以使用主索引鍵資源權杖,更細微地控制資源的存取,例如文件。

若要深入了解,請參閱安全存取 Azure Cosmos DB 資源中的資料
使用者和權限 透過使用帳戶的主要金鑰,建立每個資料庫的使用者資源和權限資源。 資源權杖與資料庫中的權限相關聯,將決定使用者是否能夠存取 (讀寫、唯讀或無法存取) 資料庫中的應用程式資源。 應用程式資源包括容器、文件、附件、預存程序、觸發程序和 UDF。 然後,驗證期間會使用資源權杖來允許或拒絕存取資源。

若要深入了解,請參閱安全存取 Azure Cosmos DB 資源中的資料
Azure Directory 整合 (角色型存取控制) 您也可以在 Azure 入口網站中,藉由使用存取控制 (IAM) 來提供或限制 Azure Cosmos DB 帳戶、資料庫、容器和供應項目 (輸送量) 的存取權。 IAM 提供角色型存取控制,並與 Active Directory 整合。 您可以針對個人和群組使用內建角色或自訂角色。 若要深入了解,請參閱 Active Directory 整合
全域複寫 Azure Cosmos DB 提供現成的全域散發,您只需用現成方式,就能將資料複寫至 Azure 的任何一個全球資料中心。 全球複寫可讓您擴大到全球規模,確保存取世界各地資料時的低延遲性。

在安全性方面,全域複寫可確保資料不受區域性失敗影響。

若要深入了解,請參閱將資料分散到全球
區域性容錯移轉 如果您已將資料複寫至多個資料中心,萬一某個區域資料中心離線,Azure Cosmos DB 會自動轉移您的作業。 您可以使用已複寫資料的區域,建立容錯移轉區域的優先順序清單。

若要深入了解,請參閱 Azure Cosmos DB 的區域性容錯移轉
區域複寫 即使在單一資料中心內,Azure Cosmos DB 也會自動複寫資料來達到高可用性,還可讓您選擇一致性層級。 此覆寫保證所有單一區域帳戶和所有多重區域帳戶具有鬆散的一致性,可達到 99.99% 可用性 SLA,而所有多重區域資料庫帳戶有 99.999% 的讀取可用性。
自動線上備份 Azure Cosmos DB 資料庫會定期備份並儲存至異地備援存放區。

若要深入了解,請參閱使用 Azure Cosmos DB 進行自動線上備份及還原
還原已刪除的資料 您可以使用自動化線上備份復原您不小心刪除的資料,最多可還原意外發生後 30 天內的資料。

若要深入了解,請參閱使用 Azure Cosmos DB 進行自動線上備份及還原
保護並隔離敏感性資料 新功能中所列的區域中的所有資料均已加密靜止。

個人資料和其他機密資料可隔離至特定容器來進行讀寫,或限制為只對特定使用者提供唯讀存取權。
監視攻擊 您可以使用稽核記錄和活動記錄,以監視帳戶的正常和異常活動。 您可以檢視曾在您資源上執行的作業。 此資料包括誰起始作業、作業何時發生、作業的狀態等等。
回應攻擊 您連絡 Azure 支援來報告潛在的攻擊後,就會開始五步驟的事件回應流程。 目標是恢復正常服務安全性和作業。 程序會在偵測到問題並展開調查之後盡快恢復服務。

若要深入了解,請參閱雲端的 Microsoft Azure 安全性回應
異地隔離 Azure Cosmos DB 可確保主權區域 (例如,德國、中國和美國政府) 的資料控管。
受保護的設施 Azure Cosmos DB 中的資料儲存在 Azure 受保護資料中心內的固態硬碟上。

若要深入了解,請參閱 Microsoft 全球資料中心
HTTPS/SSL/TLS 加密 Azure Cosmos DB 的所有連線都支援 HTTPS。 Azure Cosmos DB 支援最高到 1.2 (含) 的 TLS 層級。
伺服器端可能會強制執行最低 TLS 層級。 若要這麼做,請參閱自助式指南 Azure Cosmos DB 中的自助式最低 TLS 版本強制執行
待用加密 所有儲存至 Azure Cosmos DB 的資料都會進行待用加密。 若要深入了解,請參閱 Azure Cosmos DB 待用加密
修補的伺服器 由於 Azure Cosmos DB 是受控資料庫,因此會自動替您管理和修補伺服器。
使用強式密碼的系統管理帳戶 在 Azure Cosmos DB 中不可能存在沒有密碼的系統管理帳戶。

依預設已內建透過 TLS 和 HMAC 密碼型驗證的安全性。
安全性和資料保護認證 如需最新認證清單,請參閱 Azure 合規性以及具有所有 Azure 認證的最新 Azure 合規性文件,包括 Azure Cosmos DB。

以下螢幕擷取畫面顯示如何使用稽核記錄和活動記錄來監視您的帳戶。 Screenshot that shows activity logs for Azure Cosmos DB.

主要/次要金鑰

主要/次要金鑰可讓資料庫帳戶存取所有系統管理資源。 主要/次要金鑰:

  • 允許存取帳戶、資料庫、使用者和權限。
  • 無法用來提供容器和文件的更細微的存取權。
  • 在帳戶建立期間建立。
  • 可隨時重新產生。

每個帳戶都包含兩個金鑰:主要金鑰和次要金鑰。 雙重金鑰的目的是讓您可以重新產生或輸替金鑰,以持續存取您的帳戶和資料。

主要/次要金鑰有兩個版本:讀寫和唯讀。 唯讀金鑰只允許帳戶上的讀取作業。 不提供存取權來讀取權限資源。

金鑰輪替和重新產生

金鑰輪替和重新產生的程序很簡單。 首先,請確定應用程式一直使用主要金鑰或次要金鑰來存取 Azure Cosmos DB 帳戶。 然後,遵循下一節中的步驟。 若要監視您的帳戶是否有金鑰更新和金鑰重新產生,請參閱使用計量和警示來監視金鑰更新

如果應用程式目前使用主要金鑰

  1. 移至 Azure 入口網站中的 Azure Cosmos DB 帳戶。

  2. 從左側功能表選取金鑰,然後從次要金鑰右邊的省略 (...) 符號選取重新產生次要金鑰

    Screenshot showing how to regenerate the secondary key in the Azure portal when used with the NoSQL API.

  3. 驗證新的次要金鑰是否能針對 Azure Cosmos DB 帳戶保持正常運作。 根據 Azure Cosmos DB 帳戶的大小,重新產生金鑰可能需要一分鐘到數小時不等的時間。

  4. 在應用程式中將主要金鑰取代為次要金鑰。

  5. 回到 Azure 入口網站,並觸發重新產生主要金鑰。

    Screenshot showing how to regenerate the primary key in the Azure portal when used with the NoSQL API.

如果應用程式目前使用次要金鑰

  1. 移至 Azure 入口網站中的 Azure Cosmos DB 帳戶。

  2. 從左側功能表選取金鑰,然後從主要金鑰右邊的省略符號 (...) 選取重新產生主要金鑰

    Screenshot that shows how to regenerate the primary key in the Azure portal when used with the NoSQL API.

  3. 驗證新的主要金鑰是否能針對 Azure Cosmos DB 帳戶保持正常運作。 根據 Azure Cosmos DB 帳戶的大小,重新產生金鑰可能需要一分鐘到數小時不等的時間。

  4. 在應用程式中將次要金鑰取代為主要金鑰。

  5. 回到 Azure 入口網站,並觸發重新產生次要金鑰。

    Screenshot that shows how to regenerate the secondary key in the Azure portal when used with the NoSQL API.

追蹤金鑰重新產生的狀態

在輪替或重新產生金鑰之後,您可以從活動記錄追蹤其狀態。 請使用下列步驟來追蹤狀態。

  1. 登入 Azure 入口網站,然後瀏覽至您的 Azure Cosmos DB 帳戶。

  2. 然後,從左側功能表中選取金鑰。 您應該會在每個金鑰下方看到最後一個金鑰重新產生的日期。

    Screenshot that shows status of key regeneration from the activity log.

    建議您至少每隔 60 天重新產生一次金鑰。 如果上次重新產生的時間超過 60 天,您會看到警告圖示。 此外,您可以看到沒有記錄的金鑰。 如果是這種情況,您的帳戶是在 2022 年 6 月 18 日之前建立,且未註冊日期。 不過,您應該能夠重新產生並查看新金鑰的新上次重新產生日期。

  3. 您應該會看到金鑰重新產生事件及其狀態、發出作業的時間。以及起始重新產生金鑰的使用者詳細資料。 金鑰產生作業會起始狀態為接受。 會變更為已開始,然後在作業完成時變更為已成功

下一步