練習 - 資料分類、動態資料遮罩和 SQL 稽核
在此練習中,您將結合從課程模組學習到的知識,來逐步完成案例。 您將了解如何新增資料分類和動態資料遮罩,然後您會查看各種方法來針對嘗試檢視資料行 (已加上標記來進行資料分類) 的使用者進行稽核。 此練習結合了您在有關管理安全性的課程模組中學到的幾個概念。
設定資料分類和遮罩
在 Azure 入口網站中,移至 Azure SQL Database 執行個體 (而非邏輯伺服器)。
Azure 入口網站
在左側窗格的 [安全性] 下,選取 [資料探索與分類]。
選取 [分類] 索引標籤,然後選取 [新增分類]。
在上一個練習中,您已新增所有建議的資料行分類。 在此步驟中,您會「手動」將潛在敏感性資料行新增至已分類的資料行清單。
在 SalesLT Customer 資料表中,已識別
FirstName
和分類數據探索和LastName
分類,但無法MiddleName
分類 。 請使用下拉式清單立即加以新增,然後選取 [新增分類]。選取 [儲存]。
透過檢視 [概觀] 索引標籤,確認
MiddleName
現在顯示於 SalesLT 結構描述底下的已分類資料行清單中,以確認已成功新增分類。在左側窗格中,選取 [概觀] 以返回資料庫的概觀。
動態資料遮罩 (DDM) 同時適用於 Azure SQL 和 SQL Server。 DDM 會藉由在 SQL Server 層級對無特殊權限的使用者遮罩敏感性資料,而不是在必須撰寫這些規則類型程式碼的應用程式層級。 Azure SQL 會建議要遮罩的項目,但您也可以手動新增遮罩。
在接下來的步驟中,您將遮罩在上一個步驟中檢閱的
FirstName
、MiddleName
和LastName
資料行。在 Azure 入口網站中,移至您的 Azure SQL Database。 在左側窗格上的 [安全性] 下,選取 [動態資料遮罩],然後選取 [新增遮罩]。
在下拉式清單中,選取 [SalesLT] 結構描述、[Customer] 資料表和 [FirstName] 資料行。 您可檢閱遮罩選項,但預設選項適用於此案例。 選取 [新增] 來新增遮罩規則。
針對該資料表中的 MiddleName 和 LastName 重複前面的步驟。
您現在有三個遮罩規則,如下所示:
選取 [儲存]。
在左側窗格中,選取 [概觀] 以返回資料庫的概觀。
擷取已分類和遮罩的資料
接下來,您會模擬有人查詢已分類的資料行,並探索動態資料遮罩的實際運作。
移至 SQL Server Management Studio (SSMS)。
若要在 AdventureWorks 資料庫中建立新的查詢,請以滑鼠右鍵按一下資料庫,然後選取 [新增查詢]。
執行下列查詢以傳回已分類的資料,以及在某些情況下傳回標示為已遮罩資料的資料行。 選取 [執行] 以執行查詢。
SELECT TOP 10 FirstName, MiddleName, LastName FROM SalesLT.Customer;
結果應該會顯示 前 10 個名稱,且不會套用任何遮罩。 為何會這樣? 因為您是此 Azure SQL Database 邏輯伺服器的系統管理員。
在下列查詢中,您會建立新的使用者,並以該使用者的身分執行上述查詢。 您也會使用
EXECUTE AS
來模擬Bob
。 執行EXECUTE AS
陳述式時,工作階段的執行內容會切換到登入或使用者。 這表示系統會針對登入或使用者檢查權限,而不是針對執行EXECUTE AS
命令的人員 (在此案例中為您本人)。 接著會使用REVERT
來停止模擬登入或使用者。您可能會注意到下列命令的前幾個部分,因為其與上一個練習重複。 使用下列命令建立新的查詢,然後選取 [執行] 以執行查詢並觀察結果。
-- Create a new SQL user and give them a password CREATE USER Bob WITH PASSWORD = 'c0mpl3xPassword!'; -- Until you run the following two lines, Bob has no access to read or write data ALTER ROLE db_datareader ADD MEMBER Bob; ALTER ROLE db_datawriter ADD MEMBER Bob; -- Execute as our new, low-privilege user, Bob EXECUTE AS USER = 'Bob'; SELECT TOP 10 FirstName, MiddleName, LastName FROM SalesLT.Customer; REVERT;
結果應該會顯示前 10 大名稱,但有套用遮罩。 Bob 尚未獲得此資料未遮罩形式的存取權。
如果 Bob 基於某些原因需要存取名稱並取得其擁有權限,會怎麼樣?
您可在 Azure 入口網站中更新已排除遮罩的使用者 (藉由前往 [安全性] 底下的 [動態資料遮罩] 窗格),但也可以使用 T-SQL 來執行此動作。
以滑鼠右鍵按一下 [AdventureWorks] 資料庫並選取 [新增查詢],然後輸入下列查詢,以允許 Bob 在沒有遮罩的情況下查詢名稱結果。 選取 [執行] 以執行查詢。
GRANT UNMASK TO Bob; EXECUTE AS USER = 'Bob'; SELECT TOP 10 FirstName, MiddleName, LastName FROM SalesLT.Customer; REVERT;
您的結果應該會包含全名。
您也可以在新的查詢中執行下列 T-SQL 命令,以移除使用者的取消遮罩權限並確認該動作:
-- Remove unmasking privilege REVOKE UNMASK TO Bob; -- Execute as Bob EXECUTE AS USER = 'Bob'; SELECT TOP 10 FirstName, MiddleName, LastName FROM SalesLT.Customer; REVERT;
您的結果應該會包含加上遮罩的名稱。
檢閱 SSMS 中的稽核記錄
身為系統管理員,您可檢閱及稽核有誰在存取資料庫,特別是已分類的資料。 接下來,您可看一下將要傳送至 Azure Blob 儲存體的稽核檔案。 若記錄跨越多個檔案,則必須做的第一件事就是合併稽核檔案。 您可執行下列動作,以從 SSMS 執行此作業:
選取 [檔案]>[開啟]>[合併稽核檔案]。
選取新增。
選取 [從 Azure Blob 儲存體中新增],然後選取 [連線]。
使用您在本課程模組中使用的帳戶登入 Azure。
選取所設定要作為稽核記錄移入目的地的訂用帳戶、儲存體帳戶及 Blob 容器。 儲存體帳戶的開頭應該要是
sql
。 容器會命名為sqldbauditlogs
。 如果沒有具備該名稱的容器,且您已建立不同的儲存體帳戶以供稽核,請改用該帳戶。選取您的 Azure SQL Database 邏輯伺服器和
AdventureWorks
資料庫。 請確定 [來自] 時間早於開始練習的時間。 選取 [確定]。確認視窗可讓您知道正在下載和合併的檔案數目。 選取 [確定]。
檢閱檔案,然後最後一次選取 [確定]。
現在會顯示所有的稽核記錄。 尋找使用 Bob 來進行遮罩測試的地方。 清單應該會靠近底部。
選取陳述式,然後在詳細資料窗格上檢閱資訊。 例如,針對 Bob 嘗試檢視已分類資料的其中一個查詢,您可在
data_sensitivity_information
欄位下查看已分類的資料。按兩下 [詳細資料] 窗格上的 data_sensitivity_information 值。 系統會開啟快顯視窗,因此可更輕鬆地閱讀資料。
以下舉例說明您可能會在
data_sensitivity_information
下看到的內容:<sensitivity_attributes max_rank="20" max_rank_desc="Medium"><sensitivity_attribute label="Confidential - GDPR" label_id="bf91e08c-f4f0-478a-b016-23422b2a65ff" information_type="Name" information_type_id="57845286-7598-22f5-3422-15b24aeb125e" rank="20" rank_desc="Medium"/></sensitivity_attributes>
您接著可將此合併的檔案匯出至 XEL 檔案、CSV 檔案或匯出至資料表,以進行其他分析。 您也可以使用 Azure PowerShell 來查詢擴充事件檔案。
檢閱 Azure 入口網站中的稽核記錄
分析稽核記錄將取決於您的喜好設定。 在本節中,您將會了解如何使用 Log Analytics 來查詢 Azure 入口網站中的安全性記錄。
在 Azure 入口網站中移至您的
AdventureWorks
資料庫。 在左側窗格上的 [安全性] 下選取 [稽核],然後選取工作列中的 [檢視稽核記錄] 按鈕。您現在應該可以看到事件記錄的查詢、在 [查詢編輯器] 中執行的選項 (透過入口網站執行 T-SQL 查詢),以及 Log Analytics、[檢視] 儀表板等選項。
您可放心地到處看看,以了解其中的一些選項。
選取 [Log Analytics]。 您可能需要選取 [重新整理] 以存取 [記錄分析] 按鈕。 如果您看到 [開始使用] 畫面,請選取 [確定]。 這會將您帶到查詢編輯器,但其不是 T-SQL 編輯器。 在此檢視中,您可使用 Kusto 查詢語言 (KQL) 來查詢記錄,此語言可讓 SQL 專業人員輕鬆使用及了解。
預設查詢會查詢
SQLSecurityAuditEvents
類別。 您現在雖可使用此類別來檢視安全性相關事件,但這項工具也可以用來查詢 Log Analytics 中的其他 Azure 記錄及類別。 在此步驟中,您可尋找 Bob 嘗試向其存取敏感性資訊的陳述式。 如果要取得在 SSMS 中看到的相同資訊,請選取 [>
] 以展開詳細資料列。可能需要幾分鐘的時間才會在此顯示結果。 您可以再次選取 [執行] 來重新整理查詢。
在此活動中,不會深入探討如何透過 KQL 查詢記錄,但如果稍後想要知道更多做法,則前述參考中有許多資源。
在下一個步驟中,您將了解 SQL 安全性如何根據 Log Analytics 來建置儀表板,以供監視及稽核記錄與其他 SQL 活動。 若要返回 [Audit 記錄] 窗格,請選取右上方的 [X] 來關閉 [Log Analytics 查詢] 視窗。
然後,請選取 [檢視儀表板]。
隨即顯示 [概觀] 儀表板。
選取 [Azure SQL - 存取敏感性資料],以查看更多詳細資料。
您可能需要等候 3 到 5 分鐘,然後選取 [重新整理],以讓項目顯示在這裡。
您可使用下列詳細資訊來了解:
- 有多少查詢在存取敏感性資料。
- 正在存取哪些資料類型及敏感性。
- 哪些主體正在存取敏感性資料。
- 哪些 IP 正在存取敏感性資料。
請檢閱這裡提供的內容,以及如何使用此工具來稽核使用情形。 您甚至可以選取其中的每一項,並查看 [記錄分析] 中的相關記錄。
當完成時,請選取右上方的 [X] 來關閉 [Azure SQL - 存取敏感性資料] 窗格。
回到稽核儀表板的 [概觀] 窗格,選取 [Azure SQL - 安全性深入解析]。
此儀表板會顯示更多稽核資訊以協助了解資料庫活動,並取得異常之處的見解。 請花幾分鐘的時間檢閱並向下切入這裡的選項。
除了檢視 Azure SQL 服務的這些見解外,您還可以在 Azure 中利用適用於雲端的 Microsoft Defender 來監視、管理及回應整個 Azure 資產中所發生的問題。 如果您想要查看 Azure SQL 適用於雲端的 Defender 以外的可用項目,可以在 Azure 入口網站中搜尋並選取 [適用於雲端的 Microsoft Defender]。 視訂用帳戶層級而定,存取權可能會受到限制,。