#sql-server #azure-sql-database
#sql-server #azure-sql-database
Вопрос:
Я запускаю систему, основанную на базе базы данных SQL Azure.
Несколько разных членов команды должны иметь доступ на чтение к этой базе данных для выполнения задач поддержки и управления.
Однако я обеспокоен тем, что, имея доступ к базе данных, один из них может — из лучших побуждений — экспортировать базу данных и небрежно управлять резервной копией, что приведет к утечке данных.
Как я могу заставить Azure уведомлять меня, если кто-то создает резервную копию базы данных (или, возможно, загружает более X миллионов строк?) У этих людей должен быть доступ к базе данных, я просто хотел бы знать, используют ли они его таким образом, который может создать угрозу безопасности для платформы.
Комментарии:
1. какая у них роль в базе данных? Если у них нет правильного разрешения, невозможно экспортировать базу данных или создать резервную копию. Просто для вашего беспокойства, если у них есть разрешение на чтение или запись данных в базе данных SQL, мы не сможем предотвратить утечку данных.
2. у них есть разрешение на чтение данных. Я знаю, что это означает, что мы не можем предотвратить утечку данных, но я хотел бы получить какое-то предупреждение, которое может указывать на подозрительное событие, например, чтение неоправданно большого количества строк, которые могут указывать на экспорт
3. да, я могу вас понять. Но на данный момент такого предупреждения для экспорта данных или загрузки больших данных нет.
Ответ №1:
Для этого можно использовать расширенные события.
Чтобы настроить ее в Azure, вы можете следовать этому руководству.
Для вашего случая
- Вы создаете сеанс
- Вы выбираете
rpc_completed
событие (docs) и нажимаете Настроить
- На
Global Fields
вкладке вы можете выбрать поля, которые хотите отслеживать. Т.е.: Имя пользователя, sql_text, session_id, database_name, client_* - На
Filter
вкладке вы можете выбрать условие фильтрации. В вашем случае row_count было бы уместно.
Когда злоумышленники умны, извлекают небольшое количество строк и размещают их на странице, это останется незамеченным. Таким образом, вторым фильтром могут быть запросы без предложений WHERE или другой подход, основанный на вашем случае.
Когда расширенные события настроены для записи в blobstorage. У вас будет другой процесс (функция Azure, Runbook, …), который проверит результат и предупредит вас.
Расширенные события часто используются для устранения неполадок, они заменяют SQL profiler. Поэтому включение его на рабочем сервере может повлиять на производительность.
Комментарии:
1. Это выглядит как действительно разумное решение, однако, как вы говорите, оно, похоже, предназначено для отладки, а не для того, чтобы оставить его работающим 24/7 на рабочем сервере. Как бы вы заставили сеанс работать постоянно, будет ли он надежно работать?
2. Вы можете установить флажок, начать сеанс при запуске сервера. Расширенные события встроены в движок, поэтому они очень надежны, а влияние на производительность намного меньше, чем у SQL Profiler.