練習 - 資料分類、動態資料遮罩和 SQL 稽核

已完成

在此練習中,您將結合從課程模組學習到的知識,來逐步完成案例。 您將了解如何新增資料分類和動態資料遮罩,然後您會查看各種方法來針對嘗試檢視資料行 (已加上標記來進行資料分類) 的使用者進行稽核。 此練習結合了您在有關管理安全性的課程模組中學到的幾個概念。

設定資料分類和遮罩

  1. 在 Azure 入口網站中,移至 Azure SQL Database 執行個體 (而非邏輯伺服器)。

    Azure 入口網站

  2. 在左側窗格的 [安全性] 下,選取 [資料探索與分類]

  3. 選取 [分類] 索引標籤,然後選取 [新增分類]

    Screenshot of how to add a new classification.

    在上一個練習中,您已新增所有建議的資料行分類。 在此步驟中,您會「手動」將潛在敏感性資料行新增至已分類的資料行清單。

  4. 在 SalesLT Customer 資料表中,已識別 FirstName 和分類數據探索和 LastName 分類,但無法 MiddleName分類 。 請使用下拉式清單立即加以新增,然後選取 [新增分類]

    Screenshot of how to add a name-related classification for MiddleName.

  5. 選取 [儲存]。

  6. 透過檢視 [概觀] 索引標籤,確認 MiddleName 現在顯示於 SalesLT 結構描述底下的已分類資料行清單中,以確認已成功新增分類。

  7. 在左側窗格中,選取 [概觀] 以返回資料庫的概觀。

    動態資料遮罩 (DDM) 同時適用於 Azure SQL 和 SQL Server。 DDM 會藉由在 SQL Server 層級對無特殊權限的使用者遮罩敏感性資料,而不是在必須撰寫這些規則類型程式碼的應用程式層級。 Azure SQL 會建議要遮罩的項目,但您也可以手動新增遮罩。

    在接下來的步驟中,您將遮罩在上一個步驟中檢閱的 FirstNameMiddleNameLastName 資料行。

  8. 在 Azure 入口網站中,移至您的 Azure SQL Database。 在左側窗格上的 [安全性] 下,選取 [動態資料遮罩],然後選取 [新增遮罩]

  9. 在下拉式清單中,選取 [SalesLT] 結構描述、[Customer] 資料表和 [FirstName] 資料行。 您可檢閱遮罩選項,但預設選項適用於此案例。 選取 [新增] 來新增遮罩規則。

    Screenshot of how to add First Name mask.

  10. 針對該資料表中的 MiddleNameLastName 重複前面的步驟。

    您現在有三個遮罩規則,如下所示:

    Screenshot of how to review all masking rules.

  11. 選取 [儲存]。

  12. 在左側窗格中,選取 [概觀] 以返回資料庫的概觀。

擷取已分類和遮罩的資料

接下來,您會模擬有人查詢已分類的資料行,並探索動態資料遮罩的實際運作。

  1. 移至 SQL Server Management Studio (SSMS)。

  2. 若要在 AdventureWorks 資料庫中建立新的查詢,請以滑鼠右鍵按一下資料庫,然後選取 [新增查詢]

  3. 執行下列查詢以傳回已分類的資料,以及在某些情況下傳回標示為已遮罩資料的資料行。 選取 [執行] 以執行查詢。

    SELECT TOP 10 FirstName, MiddleName, LastName
    FROM SalesLT.Customer;
    

    結果應該會顯示 前 10 個名稱,且不會套用任何遮罩。 為何會這樣? 因為您是此 Azure SQL Database 邏輯伺服器的系統管理員。

    Screenshot of SQL query results with no mask.

  4. 在下列查詢中,您會建立新的使用者,並以該使用者的身分執行上述查詢。 您也會使用 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 尚未獲得此資料未遮罩形式的存取權。

    Screenshot of SQL query results with mask.

    如果 Bob 基於某些原因需要存取名稱並取得其擁有權限,會怎麼樣?

    您可在 Azure 入口網站中更新已排除遮罩的使用者 (藉由前往 [安全性] 底下的 [動態資料遮罩] 窗格),但也可以使用 T-SQL 來執行此動作。

  5. 以滑鼠右鍵按一下 [AdventureWorks] 資料庫並選取 [新增查詢],然後輸入下列查詢,以允許 Bob 在沒有遮罩的情況下查詢名稱結果。 選取 [執行] 以執行查詢。

    GRANT UNMASK TO Bob;  
    EXECUTE AS USER = 'Bob';
    SELECT TOP 10 FirstName, MiddleName, LastName
    FROM SalesLT.Customer;
    REVERT;  
    

    您的結果應該會包含全名。

    Screenshot of SQL query results with no mask.

  6. 您也可以在新的查詢中執行下列 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;  
    

    您的結果應該會包含加上遮罩的名稱。

    Screenshot of SQL query results with mask.

檢閱 SSMS 中的稽核記錄

身為系統管理員,您可檢閱及稽核有誰在存取資料庫,特別是已分類的資料。 接下來,您可看一下將要傳送至 Azure Blob 儲存體的稽核檔案。 若記錄跨越多個檔案,則必須做的第一件事就是合併稽核檔案。 您可執行下列動作,以從 SSMS 執行此作業:

  1. 選取 [檔案]>[開啟]>[合併稽核檔案]

    Screenshot of how to open audit files.

  2. 選取新增

    Screenshot of how to add a new file.

  3. 選取 [從 Azure Blob 儲存體中新增],然後選取 [連線]

    Screenshot of how to add from Azure Blob storage.

  4. 使用您在本課程模組中使用的帳戶登入 Azure。

    Screenshot of how to sign in to Azure.

  5. 選取所設定要作為稽核記錄移入目的地的訂用帳戶、儲存體帳戶及 Blob 容器。 儲存體帳戶的開頭應該要是 sql。 容器會命名為 sqldbauditlogs。 如果沒有具備該名稱的容器,且您已建立不同的儲存體帳戶以供稽核,請改用該帳戶。

  6. 選取您的 Azure SQL Database 邏輯伺服器和 AdventureWorks 資料庫。 請確定 [來自] 時間早於開始練習的時間。 選取 [確定]。

  7. 確認視窗可讓您知道正在下載和合併的檔案數目。 選取 [確定]。

  8. 檢閱檔案,然後最後一次選取 [確定]

    現在會顯示所有的稽核記錄。 尋找使用 Bob 來進行遮罩測試的地方。 清單應該會靠近底部。

  9. 選取陳述式,然後在詳細資料窗格上檢閱資訊。 例如,針對 Bob 嘗試檢視已分類資料的其中一個查詢,您可在 data_sensitivity_information 欄位下查看已分類的資料。

  10. 按兩下 [詳細資料] 窗格上的 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 入口網站中的安全性記錄。

  1. 在 Azure 入口網站中移至您的 AdventureWorks 資料庫。 在左側窗格上的 [安全性] 下選取 [稽核],然後選取工作列中的 [檢視稽核記錄] 按鈕。

    您現在應該可以看到事件記錄的查詢、在 [查詢編輯器] 中執行的選項 (透過入口網站執行 T-SQL 查詢),以及 Log Analytics、[檢視] 儀表板等選項。

    Screenshot of how to view audit records.

    您可放心地到處看看,以了解其中的一些選項。

  2. 選取 [Log Analytics]。 您可能需要選取 [重新整理] 以存取 [記錄分析] 按鈕。 如果您看到 [開始使用] 畫面,請選取 [確定]。 這會將您帶到查詢編輯器,但其不是 T-SQL 編輯器。 在此檢視中,您可使用 Kusto 查詢語言 (KQL) 來查詢記錄,此語言可讓 SQL 專業人員輕鬆使用及了解。

    預設查詢會查詢 SQLSecurityAuditEvents 類別。 您現在雖可使用此類別來檢視安全性相關事件,但這項工具也可以用來查詢 Log Analytics 中的其他 Azure 記錄及類別。 在此步驟中,您可尋找 Bob 嘗試向其存取敏感性資訊的陳述式。 如果要取得在 SSMS 中看到的相同資訊,請選取 [>] 以展開詳細資料列。

    可能需要幾分鐘的時間才會在此顯示結果。 您可以再次選取 [執行] 來重新整理查詢。

    在此活動中,不會深入探討如何透過 KQL 查詢記錄,但如果稍後想要知道更多做法,則前述參考中有許多資源。

    在下一個步驟中,您將了解 SQL 安全性如何根據 Log Analytics 來建置儀表板,以供監視及稽核記錄與其他 SQL 活動。 若要返回 [Audit 記錄] 窗格,請選取右上方的 [X] 來關閉 [Log Analytics 查詢] 視窗。

  3. 然後,請選取 [檢視儀表板]

    Screenshot of the log analytics dashboard.

    隨即顯示 [概觀] 儀表板。

  4. 選取 [Azure SQL - 存取敏感性資料],以查看更多詳細資料。

    您可能需要等候 3 到 5 分鐘,然後選取 [重新整理],以讓項目顯示在這裡。

    您可使用下列詳細資訊來了解:

    • 有多少查詢在存取敏感性資料。
    • 正在存取哪些資料類型及敏感性。
    • 哪些主體正在存取敏感性資料。
    • 哪些 IP 正在存取敏感性資料。

    請檢閱這裡提供的內容,以及如何使用此工具來稽核使用情形。 您甚至可以選取其中的每一項,並查看 [記錄分析] 中的相關記錄。

  5. 當完成時,請選取右上方的 [X] 來關閉 [Azure SQL - 存取敏感性資料] 窗格。

  6. 回到稽核儀表板的 [概觀] 窗格,選取 [Azure SQL - 安全性深入解析]

    此儀表板會顯示更多稽核資訊以協助了解資料庫活動,並取得異常之處的見解。 請花幾分鐘的時間檢閱並向下切入這裡的選項。

除了檢視 Azure SQL 服務的這些見解外,您還可以在 Azure 中利用適用於雲端的 Microsoft Defender 來監視、管理及回應整個 Azure 資產中所發生的問題。 如果您想要查看 Azure SQL 適用於雲端的 Defender 以外的可用項目,可以在 Azure 入口網站中搜尋並選取 [適用於雲端的 Microsoft Defender]。 視訂用帳戶層級而定,存取權可能會受到限制,。