Возможно ли использовать функцию «Всегда зашифровано» с функцией безопасности на уровне строк в SQL Server 2016? И каким-то образом зашифровать строки с помощью разных EncryptionKeys в отношении строк, которые должны быть просмотрены конкретным пользователем?Строчное шифрование SQL Server 2016
ответ
Это помогает. Короткий ответ, сегодня нелегко сделать с AE & RLS.
В настоящее время AE охватывает колонку; вы шифруете весь столбец с помощью специального ключа шифрования столбца (CEK). Вы можете зашифровать несколько столбцов в таблице, каждая из которых имеет свой собственный CEK, но она все еще содержит столбцы. Вы не можете логически группировать строки и шифровать их своими ключами с текущей реализацией AE. Если это действительно важно для вас, вы можете отправить предложение команде через https://connect.microsoft.com/SQLServer/feedback/
При этом, помимо соблюдения некоторых требований к нормативной или корпоративной политике, вы не получите многого от своего текущего предлагаемого дизайна. Если у вас малое количество пользователей (или групп пользователей), следовательно, очень небольшое количество групп строк, вы быстро столкнетесь с распространением СЕК. Нелегко управлять, но все же утомительно и потенциально много работать. Например, каждому пользователю или группе пользователей нужны свои ключи или секрет, чтобы получить доступ к ключу, нажатому на их приложение или рабочую станцию. Сложность и/или много движущихся частей означает больше рисков неудачи. Кроме того, это может быть «весело» в течение аудиторского сезона (в зависимости от вашего аудитора, конечно).
Если я могу пересчитать ваши цели, вы хотите, чтобы обеспечить 1. данные всегда защищены от посторонних глаз 2. авторизованные пользователи позволяют только просматривать данные, они уполномочены видеть
Реализовано правильно, AE соответствует требованиям №1. Без ключа все, что вы видите, - это зашифрованный текст. Конечно, вы можете переборщить его или найти недостатки в алгоритме шифрования или реализации SQL Server, но есть FAR, FAR более простые способы, чем то, что Голливуд хочет, чтобы мы верили.
RLS делает адрес # 2 в большинстве случаев. Реализация выполняется на уровне процессора запросов, поэтому обход RLS чрезвычайно затруднен; в RLS должна быть ошибка, чтобы это было возможно. Если ваш фильтр RLS основан на незашифрованном столбце (и это действительно так), то нет никаких шансов, что кто-то может даже обнюхать ваши секреты из памяти/сети, если ваш клиент не будет скомпрометирован.
Таким образом, оба требования выполнены, хотя у вас есть только 1 CEK. Это делает вашу жизнь намного проще в долгосрочной перспективе с меньшей площадью поверхности для управления. Это почти всегда приводит к созданию более безопасной среды. Имея отдельные ключи, вы приобретаете дополнительный слой, который отлично работает на бумаге для углубленной защиты, но на практике ваши усилия принесут гораздо больше в других областях (например, оповещение, обучение пользователей и т. Д.).
- 1. Поддерживает ли SQL Server 2016 Express всегда шифрование?
- 2. Удалить SQL Server 2016
- 3. Sql Server 2016
- 4. Шифрование хранимой процедуры на сервере Sql 2016
- 5. Шифрование столбцов SQL Server
- 6. Шифрование SQL Server 2005
- 7. SQL Server 2016 CTP2.0 Оценка
- 8. SQL Server 2016 - Каскадная строка
- 9. Установка SQL Server 2016 PolyBase
- 10. SQL Server 2016 RTM Загрузить
- 11. SQL Server 2016 JSON Index
- 12. SQL Server Management Studio 2016
- 13. Индексы в SQL Server 2016
- 14. Возможности аудита SQL Server 2016
- 15. R В SQL Server 2016
- 16. Визуальный дизайнер SQL Server 2016
- 17. Полибаза в SQL Server 2016
- 18. SQL Server 2016 JSON_VALUE синтаксис
- 19. экземпляры экземпляра SQL Server 2016
- 20. Ошибка установки SQL Server 2016
- 21. Шифрование столбца в SQL Server
- 22. SQL Server 2008 Шифрование Потеряли
- 23. Шифрование согласованного столбца SQL Server
- 24. Шифрование столбца SQL Server 2008
- 25. Шифрование столбцов SQL Server 2008
- 26. Где находится диспетчер конфигурации SQL Server в SQL Server 2016
- 27. SQL Server 2016: 233 записей журнала ошибок
- 28. SQL Server 2016 Изменение владельца объекта
- 29. Импорт CSV-файла SQL Server 2016
- 30. SQL Server 2016 Экспресс ошибка установки
Каковы ваши цели? Безопасность всегда зашифрована и уровень уровня - это совершенно разные вещи. RLS фильтрует результирующий набор на основе вашей функции фильтра, поэтому user_x видит только данные, которые ему разрешено видеть. RLS не шифрует пользовательские данные. AE будет шифровать данные пользователя. Независимо от того, что RLS возвращает пользователю, без ключа все пользователи видят зашифрованный текст. При использовании вместе вы должны быть осторожны, как вы пишете функцию RLS. Если это зависит от зашифрованного некоторого столбца AE, производительность вашего приложения, скорее всего, пострадает. Если это не так, то это будет работать с обычными служебными данными AE и ограничениями – SQLmojoe
@SQLmojoe: моя цель подобна ... если пользователь A имеет несколько строк, а у пользователя B есть другие строки ... с RLS мы можем убедиться, что A видит, что только Ароматы и B видят только BRows. Но моя цель заключалась бы в том, чтобы зашифровать Арубы ключом A и BR, чтобы зашифровать другим ключом по B в базе данных. –