Упражнение. Управление безопасностью

Завершено

После защиты База данных SQL Azure на уровне сети, проверки подлинности и защиты данных последний шаг — понять, как вы будете управлять безопасностью на постоянной основе. Управление безопасностью включает аудит, мониторинг и классификацию данных.

Аудит

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

В качестве альтернативы подсистеме аудита SQL Server в базе данных SQL Azure предусмотрена функция аудит SQL Azure. Он работает на базе подсистемы аудита SQL Server и так же поддерживает группы действий и действия аудита. Функция аудита отслеживает события базы данных и сервера и записывает события в журнал аудита в хранилище Azure, Log Analytics или в Центры событий Azure. Если выбрать учетную запись хранилища BLOB-объектов Azure, можно сохранять и анализировать результаты в файлах XEvents. Log Analytics позволяет запрашивать журналы на языке запросов Kusto (KQL) и использовать преимущества панелей мониторинга аудита Log Analytics.

Настройка аудита

В предыдущем упражнении по развертыванию База данных SQL вы настроили аудит на уровне сервера, но он также доступен на уровне базы данных. В следующем упражнении вы узнаете, как получить доступ и использовать файлы, отправленные в хранилище BLOB-объектов Azure, KQL и на панели мониторинга Log Analytics.

Выполните следующие действия, чтобы настроить рабочую область Log Analytics:

  1. На портале Azure в строке поиска введите Log Analytics и в результатах выберите Рабочие области Log Analytics. Откроется панель Рабочие области Log Analytics.

  2. Нажмите кнопку создания. Откроется меню "Создать рабочую область Log Analytics".

  3. На вкладке Основные сведения введите указанные ниже значения для каждого параметра.

    Параметр Значение
    Сведения о проекте
    Отток подписок Подписка Concierge
    Группа ресурсов В раскрывающемся списке выберите [группу ресурсов песочницы].
    Сведения об экземпляре
    Имя. Введите azuresql-la.
    Регион Выберите ближайшее к вам расположение в следующем списке.

    Бесплатная песочница позволяет создавать ресурсы в ряде глобальных регионов Azure. При создании ресурсов выберите регион из следующего списка.

    • Западная часть США 2
    • Центрально-южная часть США
    • Центральная часть США
    • Восточная часть США
    • Западная Европа
    • Southeast Asia
    • Восточная Япония
    • Южная Бразилия
    • Юго-Восточная часть Австралии
    • Центральная Индия
  4. Щелкните элемент Просмотр и создание, дождитесь завершения проверки входных данных и щелкните элемент Создать. Подождите, пока ресурс не будет развернут.

  5. Выберите Перейти к ресурсу. Откроется панель обзора для рабочей области Log Analytics.

  6. В портал Azure перейдите в базу данных AdventureWorks.

  7. В разделе меню Безопасность выберите Аудит. Проверьте параметры.

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

  8. Нажмите переключатель, чтобы включить аудит Azure SQL.

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

    • Для подписки в раскрывающемся списке выберите подписку Concierge.
    • Для учетной записи служба хранилища в раскрывающемся списке выберите учетную запись, которая начинается со sql случайной строки букв и чисел.
    • Оставьте тип проверки подлинности служба хранилища в качестве параметра служба хранилища ключей доступа по умолчанию.

    Учетная sql запись хранения используется для сбора файлов журнала XEvent, которые сохраняются в виде коллекции файлов BLOB-объектов в контейнере с именем sqldbauditlogs. Далее в этом занятии вы изучите контейнер и узнаете больше о том, чем файлы журнала отличаются от Log Analytics.

    Совет

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

    Если вы собираетесь проводить аудит рабочей среды, рассмотрите возможность использования отдельной учетной записи хранения для журналов аудита.

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

    • В поле Срок хранения (дни) введите 7.
    • Для параметра Ключ доступа к хранилищу выберите значение Основной.

    Примечание.

    Если вы не видите дополнительные свойства, нажмите кнопку "Сохранить " на панели команд, а затем повторите инструкции по настройке для этой страницы.

  11. Выберите поле проверка Log Analytics и заполните необходимые поля:

    • Для подписки выберите подписку Concierge из раскрывающегося списка.
    • Для Log Analytics выберите рабочую область Log Analytics, созданную ранее в этом упражнении (asuresql-la).
  12. Выберите Сохранить.

    На обработку конфигурации может потребоваться несколько минут.

Вы включили аудит для учетной записи хранения и рабочей области Azure Log Analytics. Позже вы узнаете подробнее о возможностях аудита в SQL Azure. Вы научитесь анализировать журналы аудита, просматривать все изменения, внесенные в модуль, и использовать их в других полезных целях.

Реестр для База данных SQL Azure

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

Реестр помогает защитить данные от злоумышленников или привилегированных пользователей, включая администраторов баз данных (DBA), системных администраторов и администраторов облака. Как и в обычном реестре, функция сохраняет исторические данные. Когда транзакция в таблице реестра изменяет данные, событие криптографически хэшируется SHA-256 с помощью структуры данных дерева Merkle, которая создает корневой хэш, представляющий все строки в транзакции. Транзакции, обрабатываемые базой данных, затем также хэшируются SHA-256 вместе с помощью структуры данных дерева Merkle. Результатом является корневой хэш, который формирует блок. Затем блок хэшируется SHA-256 с использованием корневого хэша блока вместе с корневым хэшем предыдущего блока в качестве входных данных для хэш-функции. Этот хэш формирует блокчейн. Если строка обновляется в базе данных, ее предыдущее значение сохраняется и защищается в таблице журнала. Реестр обеспечивает ведение хроники всех изменений, вносимых в базу данных с течением времени.

Функции реестра вводятся в таблицы двумя способами:

  • Обновляемые таблицы реестра, которые позволяют обновлять и удалять строки в таблицах.
  • Таблицы реестра только для добавления, которые разрешают вставки только в таблицы.

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

Упражнение с использованием реестра для База данных SQL Azure

В упражнении по созданию База данных SQL Azure мы добавили базу данных с именем myLedgerDatabase и создали таблицуAccount.Balance. В этом упражнении мы будем вставлять данные, обновлять данные и запрашивать представления журнала и реестра, чтобы увидеть отслеживание, которое происходит и связь между таблицами.

  1. Откройте SSMS и подключитесь к База данных SQL Azure логическому серверу.

  2. Щелкните базу данных правой кнопкой myLedgerDatabase мыши и выберите команду "Создать запрос".

  3. Вставьте имя Nick Jones для нового клиента с начальным остатком на счете 50 долл. США.

    INSERT INTO [Account].[Balance]
    VALUES (1, 'Jones', 'Nick', 50);
    
  4. Вставьте имена John Smith, Joe Smith и Mary Michaels для новых клиентов с начальным остатком на счете 500, 30 и 200 долл. США соответственно.

    INSERT INTO [Account].[Balance]
    VALUES (2, 'Smith', 'John', 500),
    (3, 'Smith', 'Joe', 30),
    (4, 'Michaels', 'Mary', 200);
    
  5. Просмотрите обновляемую таблицу реестра [Account].[Balance] и укажите столбцы GENERATED ALWAYS, добавленные в таблицу. Выберите "Выполнить" , чтобы запустить запрос.

    SELECT [CustomerID]
       ,[LastName]
       ,[FirstName]
       ,[Balance]
       ,[ledger_start_transaction_id]
       ,[ledger_end_transaction_id]
       ,[ledger_start_sequence_number]
       ,[ledger_end_sequence_number]
     FROM [Account].[Balance];  
    

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

    • В столбец ledger_start_transaction_id записывается уникальный идентификатор транзакции, связанный с транзакцией, при которой были вставлены данные. Так как John, Joe и Mary были вставлены в рамках одной транзакции, для них указан одинаковый идентификатор транзакции.
    • В столбец ledger_start_sequence_number записывается порядок, в котором значения были вставлены в рамках транзакции.
  6. Смените остаток на счете Nick с 50 на 100.

    UPDATE [Account].[Balance] SET [Balance] = 100
    WHERE [CustomerID] = 1;
    
  7. Просмотрите представление реестра [Account].[Balance] вместе с системным представлением реестра транзакций, чтобы определить пользователей, которые вносили изменения. Нажмите кнопку "Выполнить" , чтобы запустить запрос.

     SELECT
     t.[commit_time] AS [CommitTime] 
     , t.[principal_name] AS [UserName]
     , l.[CustomerID]
     , l.[LastName]
     , l.[FirstName]
     , l.[Balance]
     , l.[ledger_operation_type_desc] AS Operation
     FROM [Account].[Balance_Ledger] l
     JOIN sys.database_ledger_transactions t
     ON t.transaction_id = l.ledger_transaction_id
     ORDER BY t.commit_time DESC;
    

    Остаток на счете клиента Nick успешно изменен на 100 в обновляемой таблице реестра.
    В представлении реестра показано, что обновление таблицы реестра представляет собой действие DELETE для исходной строки со значением 50. После применения соответствующей команды INSERT для новой строки 100 остаток на счете для Nick изменился.

Наблюдение

Существует два аспекта мониторинга и управления безопасностью:

  • Уровень Azure
  • Уровень базы данных или сервера

В Azure можно применять такие средства, как журналы действий и аудит управления доступом на основе ролей.

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

Корпорация Майкрософт рекомендует настроить Microsoft Defender для облака, включая настройку оповещений для Расширенной защиты от угроз. Мы обсудим эти элементы безопасности в следующем разделе и упражнении. Наконец, вы можете использовать Microsoft Defender для облака для мониторинга и получения рекомендаций, а также управления ими для всех ресурсов в среде Azure.

Обнаружение и классификация данных

Служба обнаружения данных и классификации формирует новую парадигму защиты информации для База данных SQL Azure. Служба предназначена для защиты данных, а не только базы данных. Эта парадигма включает:

  • Обнаружение и рекомендации по потенциально конфиденциальным данным, которые должны быть классифицированы
  • Возможность постоянно добавлять метки в столбцы с помощью атрибутов метаданных
  • Возможность аудита и запроса доступа к конфиденциальным данным

Sql Azure предлагает политику SQL Information Protection и политику Microsoft Information Protection в классификации данных, и вы можете выбрать любую из этих политик в зависимости от вашего требования.

Представление портала доступно только для SQL Azure, но в SQL Server аналогичные функции можно использовать с помощью мастера в SQL Server Management Studio.

Дополнительные сведения см. в разделе "Обнаружение и классификация данных".

Microsoft Defender для облака

Microsoft Defender для облака — это универсальный пакет для расширенных возможностей безопасности SQL. Эта служба предоставляет единый центр для включения двух основных возможностей и управления ими:

  • Оценка уязвимости
  • Расширенная защита от угроз

Оценка уязвимости

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

Расширенная защита от угроз

Расширенная защита от угроз позволяет выявлять потенциальные угрозы и реагировать на них по мере их возникновения, поскольку выдает оповещения системы безопасности об аномальных действиях. Расширенная защита от угроз применяет расширенные технологии мониторинга и машинного обучения, чтобы определить, произошли ли какие-либо из следующих угроз:

  • Атака путем внедрения кода SQL
  • Уязвимость к атакам путем внедрения кода SQL
  • Кража данных
  • Небезопасное действие
  • Атака методом подбора
  • Аномальный вход в клиент

В следующих двух упражнениях вы узнаете больше о возможностях и сценариях, используемых Microsoft Defender для облака и Azure SQL в целом.

Безопасность на уровне строк

Безопасность на уровне строк позволяет использовать членство в группе или контекст выполнения для управления доступом к строкам в таблице базы данных.

Функция безопасности на уровне строк (RLS) помогает реализовать ограничения на доступ к строкам данных. Например, вы можете предоставить работникам доступ только к тем строкам данных, которые связаны с работой их отдела. Еще один пример — предоставление доступа для клиентов только к тем данным, которые относятся к их компании.

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

Безопасность на уровне строк поддерживает два типа предикатов безопасности.

  • Предикаты фильтра автоматически фильтруют строки, доступные для операций чтения (SELECT, UPDATE и DELETE)
  • Блокируют предикаты явно блокируют операции записи (ПОСЛЕ ВСТАВки, ПОСЛЕ ОБНОВЛЕНИЯ, ДО ОБНОВЛЕНИЯ, ПЕРЕД УДАЛЕНИЕм), которые нарушают предикат

Проверка знаний

1.

Каким из следующих способов можно отслеживать события, связанные с безопасностью, в базе данных SQL Azure?