保護您的資料

已完成

現在網路和身分識別存取已安全設定,接下來讓我們考慮如何保護資料,無論資料目前是待用中、移動中,還是正由使用者和系統管理員檢視中。

資料加密

Azure SQL Database 會強制執行加密連線,並提供選項以供額外指定輸入傳輸層安全性 (TLS) 所需的最低版本 (>1.0、>1.1 或 >1.2)。 建議的工作是在用戶端上強制執行加密來避免伺服器協商,並且不要信任伺服器憑證是最佳做法。

透明資料加密

透明資料加密 (TDE) 提供待用資料的加密,且預設會針對 Azure SQL Database 中所有新的資料庫開啟。 您可透過 Azure 入口網站中的參數,針對所有部署選項進行設定,如下所示:

確認 Azure 入口網站上 TDE 已開啟的螢幕擷取畫面。

在伺服器層級上,您也可以選擇使用服務管理的金鑰,或藉由使用客戶自控金鑰選項來使用自備金鑰 (BYOK)。 預設值是讓 Azure 服務管理您的金鑰。 Azure 會自動產生金鑰來加密您的資料庫,並管理金鑰輪替。 您已了解如何使用 Azure 入口網站來執行此動作,但您也可以使用 Azure PowerShell、Azure CLI、Transact-SQL (T-SQL) 或 REST API。

TDE 選項伺服器檢視的螢幕擷取畫面。

使用 TDE 的客戶自控金鑰

或者您可以使用 BYOK,並利用 Azure 金鑰保存庫。 使用客戶自控金鑰的優點如下:

  • 對 TDE 保護裝置使用方式和管理的完整精細控制
  • TDE 保護裝置使用方式的透明度
  • 可在組織內對金鑰和資料的管理實作職責區分
  • Key Vault 系統管理員能撤銷金鑰的存取權,以防止對加密資料庫的存取
  • 在 AKV 中集中管理金鑰
  • 可更加受到終端客戶信任,因為 AKV 設計為 Microsoft 無法看到也無法解壓縮加密金鑰

您也可以利用搭配使用使用者指派的受控識別 (UMI) 與適用於 TDE 的客戶自控金鑰:

  • 藉由建立使用者指派的受控識別,並在建立伺服器或資料庫之前就先授與金鑰保存庫的存取權,就可以具備 Azure SQL 邏輯伺服器的預先授權金鑰保存庫的存取權。
  • 允許建立已啟用 TDE 和 CMK 的 Azure SQL 邏輯伺服器。
  • 允許將相同的「使用者指派受控識別」指派給多部伺服器,而不需為每部 Azure SQL 邏輯伺服器個別開啟系統指派的受控識別,並提供金鑰保存庫的存取權。
  • 提供在伺服器建立時間使用可用的內建 Azure 原則來強制執行 CMK 的功能。

自動金鑰輪替已為使用 TDE 的客戶自控金鑰引進。 啟用時,伺服器會持續檢查金鑰保存庫是否有任何做為 TDE 保護裝置的新版本金鑰。 如果偵測到新版本的金鑰,伺服器上的 TDE 保護裝置會在 60 分鐘內自動輪替為最新的金鑰版本。

Always Encrypted

您也可以利用資料行層級加密,和其在 SQL Server 中一樣,Azure SQL 也會支援此功能。 此程序牽涉到使用敏感性資料的用戶端加密,這會使用永遠不會提供給資料庫系統的金鑰。 此外,用戶端驅動程式會以透明的方式加密查詢參數,並將加密的結果解密。 決定性加密目前可支援為加密資料進行相等比較,包括 JOINGROUP BYDISTINCT 運算子。

具有安全記憶體保護區的 Always Encrypted 啟用就地加密和更豐富的機密查詢,藉以擴展 Always Encrypted 的機密計算功能。 使用安全記憶體保護區的 Always Encrypted 功能現已推出,可供 Azure SQL Database 但尚未支援 Azure SQL 受控執行個體。

動態資料遮罩

有時候,您會想要遮罩或修改特定資料,讓無特殊權限的使用者看不到該資料,但其仍然可執行包含該資料的查詢。 如同在 SQL Server 一樣支援這項功能。 不過,Azure 入口網站中有其他功能和檢視可供查看所要遮罩欄位的建議。

Azure 入口網站中動態資料遮罩建議的螢幕擷取畫面。

讓我們看一下這個範例:資料包含敏感性資訊,例如名字和電子郵件地址。 您可以在 [SQL Database] 設定窗格中選取 [安全性] 之下的 [動態資料遮罩] 功能表,或使用下列 T-SQL 命令,將遮罩套用至 Azure 入口網站中的資料行:

ALTER TABLE Data.Membership ALTER COLUMN FirstName
ADD MASKED WITH (FUNCTION = 'partial(1, "xxxxx", 1)')

ALTER TABLE Data.Membership ALTER COLUMN Email
ADD MASKED WITH (FUNCTION = 'email()')

ALTER TABLE Data.Membership ALTER COLUMN DiscountCode 
ADD MASKED WITH (FUNCTION = 'random(1, 100)')
 
GRANT UNMASK to DataOfficers

從上述命令中,您可看到有多種方式可透過函式來套用遮罩。

例如,如果其指派給 DataOfficers 之類的角色 (僅為舉例,並非官方角色),則某些使用者可能需要能夠檢視已遮罩的資料。 您可以使用下列 T-SQL 命令來向他們授與 UNMASK 權限:

GRANT UNMASK TO DataOfficers

視查詢者而定,結果會如下所示:

具有取消遮罩存取權的使用者範例螢幕擷取畫面。

引進細微動態資料遮罩權限之後,您可以在資料庫層級、結構描述層級、資料表層級或資料行層級,向資料庫使用者、Microsoft Entra 身分識別、Microsoft Entra 群組或資料庫角色授與或撤銷 UNMASK 權限。

資料保護的工作

若要安裝及設定資料保護,您應該:

  • 請確定您的應用程式強制連線加密,並使用與應用程式、用戶端和驅動程式相容的最高 TLS 版本。
  • 評估並啟用 TDE。 這是新資料庫的預設設定,但如果轉移,就可能需要加以啟用。
  • 利用動態資料遮罩
  • 若要獲得進階保護,您可設定具有安全記憶體保護區的 Always Encrypted 功能。

知識檢查

1.

要如何管理誰有權檢視已遮罩的資料?

2.

當對使用 Always Encrypted 所加密的資料進行相等比較時,Azure SQL 目前支援哪些運算子?