Упражнение. Классификация данных, динамическое маскирование данных и аудит SQL

Завершено

В этом упражнении вы объедините изученный материал из модуля, чтобы рассмотреть сценарий. Вы узнаете, как добавить новые классификации данных и динамические маски данных, а затем вы увидите различные методы аудита пользователей, которые пытаются просмотреть столбцы, помеченные для классификации данных. Это упражнение объединяет несколько концепций, которые вы уже узнали в модуле об управлении безопасностью.

Настройка классификации и маскирования данных

  1. На портале Azure перейдите к экземпляру Базы данных SQL Azure (не логическому серверу).

  2. На левой панели в разделе Безопасностьвыберите Обнаружение данных & и классификация.

  3. Перейдите на вкладку классификации , а затем выберите Добавить классификацию.

    Снимок экрана, показывающий, как добавить новую классификацию.

    В предыдущем упражнении вы добавили все рекомендуемые классификации столбцов. На этом шаге вы вручную добавляете потенциально конфиденциальный столбец в список классифицированных столбцов.

  4. В таблице "Клиенты SalesLT" классификация "Обнаружение данных &" определила, что FirstName и LastName подлежат классификации, но не MiddleName. Используйте раскрывающийся список, чтобы добавить его сейчас, а затем выберите Добавить классификацию.

    Снимок экрана о том, как добавить классификацию, связанную с именами, для MiddleName.

  5. Выберите Сохранить.

  6. Убедитесь, что классификация была успешно добавлена, просмотрев вкладку Обзор, и убедитесь, что MiddleName теперь отображается в списке классифицированных столбцов в схеме SalesLT.

  7. На панели слева выберите Обзор, чтобы вернуться к общей информации о базе данных.

    Динамическое маскирование данных (DDM) доступно как в SQL Azure, так и в SQL Server. DDM ограничивает воздействие данных путем маскирования конфиденциальных данных непривилегированных пользователей на уровне SQL Server вместо того, чтобы на уровне приложения, где необходимо закодировать эти типы правил. Azure SQL рекомендует элементы для маскировки или вы можете добавлять маски вручную.

    На следующих этапах вы замаскируете столбцы FirstName, MiddleNameи LastName, которые вы рассмотрели на предыдущем шаге.

  8. На портале Azure перейдите в базу данных SQL Azure. На левой панели в разделе Безопасностьвыберите динамическое маскирование данных, а затем выберите Добавить маску.

  9. В выпадающих списках выберите схему SalesLT, таблицу Customer и столбец FirstName. Вы можете просмотреть параметры маскирования, но параметр по умолчанию подходит для этого сценария. Выберите Добавить, чтобы добавить правило маскирования.

    Снимок экрана, как добавить маску для имени.

  10. Повторите предыдущие шаги для промежуточного имени и LastName в этой таблице.

    Теперь у вас есть три правила маскирования, аналогичные приведенным здесь:

    Скриншот с обзором всех правил маскирования.

  11. Выберите Сохранить.

  12. На панели слева выберите пункт Обзор, чтобы вернуться к обзору вашей базы данных.

Получение данных, классифицированных и маскированных

Затем вы имитируете запросы к классифицированным столбцам и изучите динамическое маскирование данных в действии.

  1. Перейдите в SQL Server Management Studio (SSMS),

  2. Чтобы создать новый запрос в базе данных AdventureWorks, щелкните правой кнопкой мыши базу данных, а затем выберите Создать новый запрос.

  3. Выполните следующий запрос, чтобы вернуть классифицированные данные и в некоторых случаях столбцы, помеченные для маскированных данных. Выберите Выполнить, чтобы запустить запрос.

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

    Результат должен отображать первые 10 имен без маскирования. Почему? Так как вы являетесь администратором этого логического сервера Базы данных SQL Azure.

    снимок экрана: результаты SQL-запроса без маски.

  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 имен, но с применением маскирования. Боб не был предоставлен доступ к незамеченной форме этих данных.

    снимок экрана: результаты SQL-запроса с маской.

    Что если, по какой-то причине, Боб нуждается в доступе к именам и получает разрешение на это?

    Вы можете обновить пользователей, исключенных из маскирования, на портале Azure, перейдя в панель динамического маскирования данных, в разделе Безопасность, или вы также можете сделать это с помощью T-SQL.

  5. Щелкните правой кнопкой мыши базу данных AdventureWorks и выберите новый запрос, а затем введите следующий запрос, чтобы позволить Бобу выполнить запрос по именам без маскирования. Выберите Выполнить, чтобы запустить запрос.

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

    Результаты должны содержать полные имена.

    снимок экрана: результаты SQL-запроса без маски.

  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;  
    

    Результаты должны содержать маскированные имена.

    снимок экрана: результаты SQL-запроса с маской.

Проверка журналов аудита в SSMS

Как администратору, вам может потребоваться проверить и провести аудит того, кто обращается к базам данных и, в частности, обращаются к классифицированным данным. Затем вы можете просмотреть файлы аудита, отправляемые в хранилище BLOB-объектов Azure. Первое, что необходимо сделать, — объединить файлы аудита, если журналы охватывают несколько файлов. Это можно сделать из SSMS, выполнив следующие действия:

  1. Выберите файл>Открыть>Объединить файлы аудита.

    Снимок экрана о том, как открыть файлы аудита.

  2. Выберите Добавить.

    снимок экрана: добавление нового файла.

  3. Выберите Добавить из хранилища BLOB-объектов Azure, затем выберите Подключить.

    Снимок экрана, как добавить из Azure Blob storage.

  4. Войдите в Azure с учетной записью, используемой для этого модуля.

    Снимок экрана, показывающий, как войти в Azure.

  5. Выберите подписку, учетную запись хранения и контейнер BLOB-объектов, в который вы настроили отправку журналов аудита. Учетная запись хранения должна начинаться с sql. Контейнер будет называться sqldbauditlogs. Если контейнер с таким именем отсутствует, вы создали другую учетную запись хранения для аудита; используйте это вместо этого.

  6. Выберите логический сервер базы данных SQL Azure и базу данных AdventureWorks. Убедитесь, что время раньше времени, когда вы начали упражнения. Нажмите кнопку ОК.

  7. Окно подтверждения позволяет узнать, сколько файлов загружаются и объединяются. Нажмите ОК.

  8. Просмотрите файлы, а затем нажмите кнопку ОК последний раз.

    Теперь отображаются все журналы аудита. Найдите, где вы тестировались с маскированием с Бобом. Список должен находиться в нижней части.

  9. Выберите заявление, а затем просмотрите информацию на панели с деталями. Например, для одного из запросов, в которых Боб пытается просмотреть классифицированные данные в поле 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

Анализ журналов аудита зависит от вашего предпочтения. В этом разделе вы узнаете, как запрашивать журналы безопасности на портале Azure с помощью Log Analytics.

  1. На портале Azure перейдите в базу данных AdventureWorks. На левой панели в разделе Безопасностьвыберите аудит, а затем нажмите кнопку Просмотреть журналы аудита на панели задач.

    Теперь вы сможете просмотреть запрос записей событий, параметры для выполнения в Редакторе запросов (выполнение запросов T-SQL через портал), параметры для Log Analytics, панели мониторинга и многое другое.

    снимок экрана, где показано, как просматривать записи аудита.

    Чувствуйте себя свободно, чтобы осмотреться и понять, какие есть варианты.

  2. Выберите Log Analytics. Возможно, вам потребуется выбрать Обновить, чтобы получить доступ к кнопке Log Analytics. Если вы видите экран Начало работы, нажмите ОК. Это перенаправляет вас в редактор запросов, но это не редактор T-SQL. В этом представлении можно запрашивать журналы с помощью языка запросов Kusto (KQL), который предназначен для специалистов ПО SQL для легкого использования и понимания.

    Запрос по умолчанию запрашивает категорию SQLSecurityAuditEvents. Хотя вы можете использовать эту категорию для просмотра инцидентов, связанных с безопасностью, это средство также можно использовать для запроса других журналов и категорий Azure в Log Analytics. На этом шаге вы можете найти утверждения, в которых Боб пытался получить доступ к конфиденциальной информации. Чтобы получить ту же информацию, что и в SSMS, разверните подробности строки, выбрав кнопку >.

    Это может занять несколько минут, чтобы результаты отображались здесь. Вы можете обновить запрос, выбрав Выполнить еще раз.

    В этой деятельности вы не будете углубляться в запросы журналов с использованием KQL, но в ранее упомянутых ссылках есть много ресурсов, если вы захотите практиковаться позже более подробно.

    На следующем шаге вы узнаете, как служба безопасности SQL создала панель мониторинга на основе Log Analytics, чтобы отслеживать журналы и выполнять аудит журналов и других действий SQL. Чтобы вернуться к панели записей аудита , закройте окно запроса Log Analytics, выбрав X в правом верхнем углу.

  3. Выберите Просмотреть панель мониторинга.

    снимок экрана панели аналитики журналов.

    Отображается обзорная панель.

  4. Выберите SQL Azure — доступ к конфиденциальным данным, чтобы просмотреть дополнительные сведения.

    Может потребоваться ждать три–пять минут и выбрать Обновить, чтобы элементы отображались здесь.

    Эти подробные сведения можно использовать, чтобы узнать следующее:

    • Сколько запросов обращается к конфиденциальным данным.
    • Какие типы данных и их чувствительности получают доступ.
    • Какие субъекты обращаются к конфиденциальным данным.
    • Какие IP-адреса обращаются к конфиденциальным данным.

    Ознакомьтесь с доступными здесь сведениями и способами аудита использования с помощью этого средства. Вы даже можете выбрать каждый из этих журналов и просмотреть связанные журналы в Log Analytics.

  5. По завершении закройте область Azure SQL — доступ к конфиденциальным данным, выбрав X в верхнем правом углу.

  6. Вернитесь на панель обзора панели мониторинга аудита, выберите Azure SQL — Аналитика безопасности.

    На этой панели мониторинга отображаются дополнительные сведения об аудите, которые помогут вам понять активность базы данных и получить представление об аномалиях. Провести несколько минут, просматривая и изучая варианты здесь.

Помимо просмотра этих аналитических сведений для служб SQL Azure, находясь в Azure, вы можете использовать Microsoft Defender для Cloud, чтобы осуществлять мониторинг, управление и реагирование на проблемы, возникающие в пределах ваших ресурсов в Azure. Если вы хотите узнать, что доступно за пределами Azure SQL Defender для облака, можно найти и выбрать Microsoft Defender для облака на портале Azure. Доступ может быть ограничен в зависимости от уровня подписки.