Реализация элементов управления соответствием для конфиденциальных данных
Реализация элементов управления соответствием после миграции базы данных важна, чтобы обеспечить безопасность и соответствие данных соответствующим нормативным требованиям. Миграция в новую среду, например SQL Azure, представляет новые возможности и функции безопасности.
Обзор аудита сервера и баз данных
Аудит SQL Azure отслеживает события базы данных, записывая их в журнал аудита, хранящийся в учетной записи служба хранилища Azure, рабочей области Log Analytics или Центрах событий. Кроме того, он упрощает обеспечение соответствия нормативным требованиям, анализ шаблонов действий и обнаружение отклонений, которые могут потенциально указывать на нарушения безопасности.
Вы можете определить политики на уровне сервера или базы данных. Политики сервера автоматически охватывают все новые и существующие базы данных в Azure.
- Включение аудита сервера активирует аудит для базы данных независимо от параметров его отдельных параметров аудита.
- Вы можете включить аудит на уровне базы данных, что позволяет одновременно сосуществовать как сервер, так и политики баз данных.
- Аудит доступных только для чтения реплик включен автоматически.
Рекомендуется не включать аудит сервера и аудит базы данных вместе, за исключением следующих сценариев.
Для конкретной базы данных требуется отдельная учетная запись хранения, период хранения или рабочая область Log Analytics.
Аудит необходим для конкретной базы данных с уникальными типами событий или категориями, отличными от других на сервере.
Во всех остальных случаях рекомендуется включить только аудит на уровне сервера и отключить аудит на уровне базы данных для всех баз данных.
По умолчанию политика аудита для Базы данных SQL включает следующий набор групп действий.
Группа действий | Определение |
---|---|
BATCH_COMPLETED_GROUP | Аудит всех запросов и хранимых процедур, выполняемых в базе данных. |
SUCCESSFUL_DATABASE_AUTHENTICATION_GROUP | Это означает, что субъект успешно выполнил вход в базу данных. |
FAILED_DATABASE_AUTHENTICATION_GROUP | Это означает, что субъект не смог выполнить вход в базу данных. |
Чтобы включить аудит для всех баз данных на сервере Azure SQL, выберите Аудит в разделе Безопасность основной колонки для вашего сервера.
На странице Аудит можно задать назначение для журнала аудита и выбрать, следует ли отслеживать операции инженеров службы поддержки Майкрософт в том же назначении, что и для журнала аудита Azure SQL, или выбрать для них другое назначение.
Вы можете просматривать журналы аудита работы службы поддержки Майкрософт в рабочей области Log Analytics, выполняя следующий запрос:
AzureDiagnostics
| where Category == "DevOpsOperationsAudit"
Внимание
службы аудита База данных SQL Azure и Управляемый экземпляр SQL Azure были точно настроены для оптимальной доступности и производительности. Однако следует отметить, что в условиях исключительно высокого уровня активности или значительного сетевого перегрузки некоторые проверенные события могут не регистрироваться.
Аудит меток конфиденциальности
В сочетании с классификацией данных вы можете отслеживать доступ к конфиденциальным данным. Аудит SQL Azure был улучшен, чтобы включить новое поле в журнал data_sensitivity_information
аудита.
Это поле содержит данные о метках конфиденциальности для результатов запроса, что дает простой способ заносить в журналы и отслеживать доступ к конфиденциальным столбцам.
Аудит подразумевает отслеживание и сохранение событий, происходящих в ядре СУБД. Аудит Azure SQL упрощает действия по настройке, необходимые для его включения, а следовательно упрощает отслеживание действий с базами данных в Базе данных SQL и Управляемом экземпляре SQL.
Динамическое маскирование данных
Динамическое маскирование данных работает путем маскирования данных, чтобы ограничить его воздействие. Он позволяет пользователям, которые не нуждаются в доступе к конфиденциальной информации, чтобы просмотреть столбец, но не фактические данные. Динамическое маскирование данных работает на уровне презентации, а незамаскированные данные остаются видимыми для пользователей с высоким уровнем привилегий.
Динамическое маскирование данных обеспечивает преимущество минимального изменения приложения или базы данных. Его можно настроить удобно с помощью портал Azure или с помощью T-SQL.
Столбцы Телефон Number и EmailAddress скрыты от пользователя DDMDemo, имеющего разрешение только SELECT
на таблицу. Пользователю разрешено просматривать последние четыре цифры номера телефона, так как он замаскирован с помощью функции partial, которая заменяет все остальные цифры в столбце. Эта маскировка считается пользовательской функцией. Помимо T-SQL, если вы используете База данных SQL Azure, можно создать правила динамической маскировки в портал Azure.
Чтобы добавить правило маскирования, перейдите в базу данных в портал Azure и выберите динамическое маскирование данных в разделе "Безопасность" основной колонки базы данных.
Динамическое маскирование данных поддерживает следующие шаблоны маскирования.
Функция маскирования | Определение | Пример для T-SQL |
---|---|---|
По умолчанию | Полностью маскирует данные в столбце, не предоставляя пользователю даже частей этого значения. Пользователь увидит XXXX вместо строковых значений, 0 вместо чисел и 01.01.1900 вместо дат. | ALTER TABLE [Customer] ALTER COLUMN Address ADD MASKED WITH (FUNCTION = 'default()') |
Кредитная карта | Маскирует все значение, кроме последних четырех символов. Это маскирование может быть полезно для агентов службы клиентов, которые должны просмотреть последние четыре цифры номера кредитной карта, но кто не должен видеть весь номер. Данные отображаются в обычном формате номера кредитной карты: XXXX-XXXX-XXXX-1234. | ALTER TABLE [Customer] ALTER COLUMN Address ADD MASKED WITH (FUNCTION = 'partial(0,"XXXX-XXXX-XXXX-",4)') |
Эл. почта | Только первая буква и конечный суффикс домена не маскируются; например, "aXXX@XXXXXXX.com" | ALTER TABLE [Customer] ALTER COLUMN Email ADD MASKED WITH (FUNCTION = 'email()') |
Число | Этот формат маскирования следует использовать для числовых столбцов. Вместо фактического значения в этом случае отображается случайное число. При каждом новом запросе отображается другое число. | ALTER TABLE [Customer] ALTER COLUMN [Month] ADD MASKED WITH (FUNCTION = 'random(1, 12)') |
Специальная строка | С помощью этого параметра можно маскировать текст любым значением и отображать пользовательское число символов с любого конца замаскированного значения. Если длина маскируемого значения равна или меньше количеству символов, указываемых маской, отображается только маскированные символы. | ALTER TABLE [Customer] ALTER COLUMN [PhoneNumber] ADD MASKED WITH (FUNCTION = 'partial(1,"XXXXXXX",0)') |
Чтобы пользователи могли получать незамаскированные данные из столбцов, для которых определена маскировка, необходимо явно предоставить UNMASK
разрешение.
Примечание.
Вы можете определить маскированные данные, применяя вывод на основе результатов. При использовании маскирования данных следует также ограничить возможность пользователей выполнять нерегламентированные запросы.
Поэтому рекомендуется объединить динамическое маскирование данных с другими функциями безопасности, такими как аудит, шифрование и безопасность на уровне строк для повышения защиты конфиденциальных данных.
Вариант использования
Маскирование данных — это простая и упрощенная функция, и она идеально подходит для многих сценариев, в том числе:
маскирование данных от пользователей приложения, которые не имеют прямого доступа к базе данных;
ограничение доступа к конфиденциальной информации определенной группой пользователей;
предоставление маскированных данных внешним поставщикам, если вам нужно одновременно защитить конфиденциальную информацию и сохранять связи между элементами данных;
Экспортируйте копию рабочей базы данных в более низкую среду для целей разработки, используя пользователя, который не имеет
UNMASK
разрешения. Экспортированные данные отображаются в маскируемом формате.
Импорт и экспорт данных
Копирование данных из маскированного столбца в другую таблицу с помощью SELECT INTO
или INSERT INTO
приведет к тому, что целевая таблица будет содержать маскированные данные.
Если пользователь без UNMASK
привилегий запускает SQL Server Import and Export, экспортированный файл данных содержит маскированные данные, а импортированная база данных будет содержать неактивно маскированные данные.