保護您的資料
現在網路和身分識別存取已安全設定,接下來讓我們考慮如何保護資料,無論資料目前是待用中、移動中,還是正由使用者和系統管理員檢視中。
資料加密
Azure SQL Database 會強制執行加密連線,並提供選項以供額外指定輸入傳輸層安全性 (TLS) 所需的最低版本 (>1.0、>1.1 或 >1.2)。 建議的工作是在用戶端上強制執行加密來避免伺服器協商,並且不要信任伺服器憑證是最佳做法。
透明資料加密
透明資料加密 (TDE) 提供待用資料的加密,且預設會針對 Azure SQL Database 中所有新的資料庫開啟。 您可透過 Azure 入口網站中的參數,針對所有部署選項進行設定,如下所示:
在伺服器層級上,您也可以選擇使用服務管理的金鑰,或藉由使用客戶自控金鑰選項來使用自備金鑰 (BYOK)。 預設值是讓 Azure 服務管理您的金鑰。 Azure 會自動產生金鑰來加密您的資料庫,並管理金鑰輪替。 您已了解如何使用 Azure 入口網站來執行此動作,但您也可以使用 Azure PowerShell、Azure CLI、Transact-SQL (T-SQL) 或 REST API。
使用 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 也會支援此功能。 此程序牽涉到使用敏感性資料的用戶端加密,這會使用永遠不會提供給資料庫系統的金鑰。 此外,用戶端驅動程式會以透明的方式加密查詢參數,並將加密的結果解密。 決定性加密目前可支援為加密資料進行相等比較,包括 JOIN
、GROUP BY
和 DISTINCT
運算子。
具有安全記憶體保護區的 Always Encrypted 啟用就地加密和更豐富的機密查詢,藉以擴展 Always Encrypted 的機密計算功能。 使用安全記憶體保護區的 Always Encrypted 功能現已推出,可供 Azure SQL Database 但尚未支援 Azure SQL 受控執行個體。
動態資料遮罩
有時候,您會想要遮罩或修改特定資料,讓無特殊權限的使用者看不到該資料,但其仍然可執行包含該資料的查詢。 如同在 SQL Server 一樣支援這項功能。 不過,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 功能。