Упражнение. Управление безопасностью
После защиты базы данных SQL Azure на уровнях сетевой сети, проверки подлинности и защиты данных необходимо понять, как вы будете управлять безопасностью на постоянной основе. Управление безопасностью включает аудит, мониторинг и классификацию данных.
Аудит
Аудит может помочь вам обеспечить соответствие нормативным требованиям, понять активность базы данных и получить представление о несоответствиях и аномалиях, которые могут указывать на потенциальные нарушения безопасности. В этом действии вы настроите аудит на уровне сервера, хотя он также доступен на уровне базы данных.
В качестве альтернативы аудиту SQL Server в базе данных Azure SQL есть аудит SQL. Он работает на базе аудита SQL Server и, как и SQL Server, поддерживает группы и действия аудита. Функция аудита отслеживает события базы данных и сервера и записывает события в журнал аудита в хранилище Azure, Log Analytics или в Центры событий Azure. Если вы выбираете учетную запись Azure Blob Storage, вы можете сохранять и анализировать результаты в файлах XEvents. С помощью Log Analytics вы разблокируете возможность запрашивать журналы с помощью языка запросов Kusto (KQL) и воспользоваться панелями мониторинга аудита Log Analytics.
Настройка аудита
В предыдущем упражнении по развертыванию базы данных SQL вы настроили аудит на уровне сервера, но он также доступен на уровне базы данных. В будущих упражнениях вы узнаете, как получить доступ и использовать файлы, которые отправляются в хранилище объектов Blob Azure, KQL и панели Log Analytics.
Выполните следующие действия, чтобы настроить рабочую область Log Analytics:
В строке поиска на портале Azure введите Log Analytics, а затем выберите рабочие области Log Analytics из результатов. Появится область рабочих пространств Log Analytics.
Выберите Создать. Появится меню создать рабочую область Log Analytics.
На вкладке Базовые введите следующие значения для каждого параметра.
Настройка Ценность сведения о проекте Подписка Подписка «Консьерж» Группа ресурсов В раскрывающемся списке выберите [группа ресурсов песочницы] Сведения об экземпляре Имя Введите azuresql-la Область Выберите ближайшее к вам расположение из следующего списка Бесплатная песочница позволяет создавать ресурсы в подмножестве глобальных регионов Azure. Выберите регион из следующего списка при создании ресурсов:
- Западная часть США 2
- Южная часть США
- Центральная часть США
- Восточная часть США
- Западная Европа
- Юго-Восточная Азия
- Восточная Япония
- Южная Бразилия
- Юго-Восточная Австралия
- Центральная Индия
Выберите Просмотр и создание, дождитесь проверки входных данных, а затем выберите Создать. Дождитесь развертывания ресурса.
Выберите Перейти к ресурсу. Откроется панель обзора для рабочей области Log Analytics.
На портале Azure перейдите в базу данных AdventureWorks.
В меню в разделе Безопасностьвыберите Аудит. Просмотрите параметры.
Аудит можно применить на уровне сервера, который применяется ко всем базам данных в логическом сервере Базы данных SQL Azure. При применении аудита на уровне базы данных (который будет выполняться в этом уроке), оба аудита выполняются параллельно; один не переопределяет другого.
Выберите переключатель слайда, чтобы включить аудит SQL Azure.
Установите флажок Хранилище, а затем заполните обязательные поля:
- Для подписки в раскрывающемся списке выберите Concierge подписку.
- Для учетной записи хранения в раскрывающемся списке выберите учетную запись, которая начинается с
sql
, за которой следует случайная строка букв и чисел. - Оставьте тип проверки подлинности хранилища по умолчанию ключи доступа к хранилищу.
Учетная запись хранения
sql
используется для сбора файлов журнала XEvent, которые сохраняются как коллекция блоб-файлов в контейнере с именем sqldbauditlogs. В дальнейшем вы просмотрите контейнер, чтобы узнать, как файлы журналов отличаются от Log Analytics.Подсказка
Если вы не видите учетные записи хранения, создайте новую учетную запись. Возможно, вам потребуется обновить страницу через пару минут, прежде чем она появится.
Если вы собираетесь проводить аудит рабочей среды, рассмотрите возможность использования отдельной учетной записи хранения для журналов аудита.
Выберите дополнительные свойства, чтобы развернуть раздел и задать следующие элементы конфигурации.
- Для хранения (дни)введите 7
- Для ключа доступа к хранилищувыберите Первичный.
Заметка
Если вы не видите дополнительные свойства, выберите Сохранить в командной панели и затем повторите инструкции по настройке для этой страницы.
Установите флажок Log Analytics и заполните необходимые поля:
- Для подпискивыберите подписку Concierge в раскрывающемся списке.
- Для Log Analyticsвыберите рабочую область Log Analytics, созданную ранее в этом упражнении (asuresql-la).
Выберите Сохранить.
Для обработки конфигурации может потребоваться несколько минут.
Теперь вы включили аудит для учетной записи хранения и рабочей области Azure Log Analytics. Позже вы узнаете больше о возможностях аудита в SQL Azure. Вы увидите, как анализировать журналы аудита, чтобы просмотреть все изменения, внесенные на протяжении всего модуля, а также некоторые другие интересные варианты использования.
Реестр для Базы данных SQL Azure
Функция реестра предоставляет средства обнаружения вмешательства и криптографическое доказательство возможности обеспечения целостности данных в вашей базе данных. Это доказательство может помочь упростить процесс аудита.
Реестр помогает защитить данные от любого злоумышленника или пользователя с высоким уровнем привилегий, включая администраторов баз данных (DBAs), системных администраторов и администраторов облака. Как и в случае с традиционным реестром, функция сохраняет исторические данные. Когда транзакция в таблице реестра изменяет данные, событие криптографически хэшируется SHA-256 с помощью структуры данных дерева Merkle, которая создает корневой хэш, представляющий все строки в транзакции. Затем транзакции, которые обрабатываются базой данных, также объединяются в хэш SHA-256 с помощью структуры данных дерева Меркла. Результатом является корневой хэш, который формирует блок. Затем блок хэшируется с использованием алгоритма SHA-256, где в качестве входных данных функции хэша используются корневой хэш данного блока и корневой хэш предыдущего блока. Это хэширование формирует блокчейн. Если строка обновляется в базе данных, его предыдущее значение сохраняется и защищается в таблице журнала. Реестр предоставляет хронику всех изменений, внесенных в базу данных с течением времени.
Функции реестра представлены в таблицах в двух формах:
- Обновляемые таблицы реестра, которые позволяют обновлять и удалять строки в таблицах.
- Таблицы реестра только для добавления, которые разрешают вставки только в таблицы.
Обновляемые таблицы реестра и таблицы реестра, доступные только для добавления, обеспечивают доказательство отсутствия вмешательства и возможности цифровой судебной экспертизы.
Упражнение с использованием реестра для базы данных SQL Azure
В упражнении по созданию базы данных SQL Azure мы добавили базу данных с именем myLedgerDatabase
и создали таблицу с именем Account.Balance
. В этом упражнении мы будем вставлять данные, обновлять данные и запрашивать представления журнала и реестра, чтобы увидеть отслеживание, которое происходит и связь между таблицами.
Откройте SSMS и подключитесь к логическому серверу Базы данных SQL Azure.
Щелкните правой кнопкой мыши базу данных
myLedgerDatabase
, и выберите Новый запрос.Добавьте клиента
Nick Jones
с начальным балансом $50.INSERT INTO [Account].[Balance] VALUES (1, 'Jones', 'Nick', 50);
Вставьте имена
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);
Просмотрите обновляемую таблицу реестра
[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
отмечает порядок вставки значений транзакцией.
- Столбец
Обновить баланс
Nick
с50
на100
.UPDATE [Account].[Balance] SET [Balance] = 100 WHERE [CustomerID] = 1;
Просмотрите представление реестра
[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 для Cloud, включая настройку оповещений для Расширенной защиты от угроз. Мы обсудим эти элементы безопасности в следующем разделе и упражнении. Наконец, вы можете использовать Microsoft Defender для облака для мониторинга, управления и получения рекомендаций по всем ресурсам в вашем активе Azure.
Классификация обнаружения данных &
Сервис Data Discovery & Classification создаёт новую парадигму защиты информации для базы данных SQL Azure. Служба направлена на защиту данных, а не только базы данных. Эта парадигма включает:
- Обнаружение и рекомендации по потенциально конфиденциальным данным, которые должны быть классифицированы
- Возможность постоянно добавлять метки в столбцы с помощью атрибутов метаданных
- Возможность аудита и запроса доступа к конфиденциальным данным
Sql Azure предлагает политику SQL Information Protection и политику Microsoft Information Protection в классификации данных, и вы можете выбрать любую из этих политик в зависимости от вашего требования.
Представление портала доступно только для SQL Azure, но SQL Server поддерживает аналогичные функции с помощью мастера в SQL Server Management Studio.
Дополнительные сведения см. в & классификацииобнаружения данных.
Microsoft Defender для облака
Microsoft Defender для облака — это единый пакет для расширенных возможностей безопасности SQL. Он предоставляет одно go-to местоположение для включения и управления двумя основными функциями.
- Оценка уязвимостей
- Расширенная защита от угроз
Оценка уязвимостей
На самом высоком уровне оценка уязвимостей SQL — это служба сканирования, которая обеспечивает видимость состояния безопасности и предоставляет действия для решения любых потенциальных проблем. При настройке периодических повторяющихся проверок служба позволяет службе проверять базы данных каждые семь дней и проверять наличие уязвимостей. Затем вы можете отправить эти отчеты администраторам, владельцам подписок или другим пользователям, которые могут быть уведомлены об изменениях. Для работы этой службы необходимо указать учетную запись хранения, в которой будут храниться результаты.
Расширенная защита от угроз
С помощью Advanced Threat Protection можно обнаруживать и реагировать на потенциальные угрозы по мере их возникновения, получая оповещения системы безопасности об аномальных действиях. Расширенная защита от угроз применяет расширенные технологии мониторинга и машинного обучения, чтобы определить, произошли ли какие-либо из следующих угроз:
- SQL-инъекция
- Уязвимость SQL-инъекции
- Утечка данных
- Небезопасное действие
- Попытка перебора грубой силы
- Аномальный вход клиента
В следующих двух упражнениях вы подробнее изучите возможности и сценарии, которые обеспечивает и защищает Microsoft Defender для облака и SQL Azure в целом.
Безопасность на уровне строк
Row-Level Безопасность позволяет использовать членство в группах или контекст выполнения для управления доступом к строкам в таблице базы данных.
Row-Level Безопасность (RLS) помогает реализовать ограничения доступа к строкам данных. Например, можно убедиться, что работники получают доступ только к этим строкам данных, соответствующим их отделу. Еще одним примером является ограничение доступа к данным клиентов только к данным, соответствующим их компании.
Логика ограничения доступа реализована на уровне базы данных, а не в отрыве от данных на другом уровне приложений. Система базы данных применяет ограничения доступа при каждом попытке доступа с любого уровня. Это делает систему безопасности более надежной и надежной, уменьшая область поверхности системы безопасности.
RLS поддерживает два типа предикатов безопасности.
- фильтра предикаты незаметно фильтруют строки, доступные для операций чтения (SELECT, UPDATE и DELETE)
- блокируют предикаты явно блокируют операции записи (ПОСЛЕ ВСТАВки, ПОСЛЕ ОБНОВЛЕНИЯ, ДО ОБНОВЛЕНИЯ, ПЕРЕД УДАЛЕНИЕм), которые нарушают предикат.