Problema with encryption v SQL
viktor
Дата: 15.09.2000 13:18:25
Help dlya nachinauschego.
Kak funktioniruent views, a imenno option WITH ENCRYPTION. Esli mogno primer.
I vobsche, esli v SQL vozmognost zachifrfat otdelnie poly ot prosmotra ? Nuscho li dly etogo generirovat kluchi schifrovaniy? Vozmogno li chranit dannie SQL na diske v zaschifrovannom vide ?
Ochen nugno.
Zaranee blagodaren. Viktor.K
SergSuper
Дата: 15.09.2000 14:43:02
Во-первых что такое WITH ENCRYPTION. Это когда я написал процедуру или тот же вью и хочу что бы ими могли пользоваться, но не смогли посмотреть исходники.
Если WITH ENCRYPTION не написано, то тексты процедур и видов записываются в системную таблицу(syscomments), из которой Enterprise Menager восстанавливает её текст. Если же оно написано, то исходник туда не записывается, содержимое храниться только в откомпилированном виде. Т.е. на сами данные ENCRYPTION никак не влияет.
Во-вторых мне несколько непонятно зачем шифровать чего-то когда без знания пароля всё равно ничего не прочитать.
Ну и в-третьих есть команды управления доступом к объектам, где можно настроить кто каким объектом и как может распоряжаться. В том числе можно запретить просмотр отдельных полей. Никаких ключей для этого генерировать конечно не надо. В Enterprise Menager-е это например делается кликаньем правой кнопки на нужном объекте, затем All Task/Menage Permission. В языке есть команды GRAND и REVOKE с кучей опций.
С приветом Сергей,
советую немного почитать книжек, это везде описано
viktor
Дата: 16.09.2000 17:06:18
Сергей, Большое спасибо.
Теперь немного ясно.
Я сам не программист. Меня интнересуют только вопросы безопасности.
А именно, необходимо для одного юзера открыть
поля, а для другого их вообще не показывать, наилучший же вариант вообще показать на определенных местах ?????.
Как я правильно понял это делается через управления доступом.
Можно ли поподробнее это описать. Кстати
где можно в Инете по-поводу этого почитать что-то дельное?
С уважением Виктор.К
SergSuper
Дата: 18.09.2000 06:08:25
Я не понял что значит "вообще показать на определенных местах".
Насчет остального:
Допустим у нас есть таблица T с полями F1, F2, F3 и юзеры U1, U2 и U3. Нам надо дать U1 и U2 возможность смотреть колонки F1 и F2. Тогда надо выполнить команду:
GRANT select(F1,F2) on T TO U1,U2
Может я где ошибся, на самом деле вручную обычно такие команды не делаются, в
Enterprise Menager-е есть доволно удобный интерфейс. Это я сейчас что бы написать покопался в хелпе.
Но дело в другом. Вопросы управления доступом довольно сложный(и к тому же важный) и в двух словах это не объяснить. Например есть еще понятие "владелец базы данных", есть группы юзеров, в 7-мом еще появились роли(в которых я сам толком не понимаю) и др. Где найти это описание в сети я не знаю. Если только в хелпе к самому SQL. Но например у нас в Питере книжек по этому хватает, да и лучше это читать на родном языке. Естественно книжка должны быть именно по MS SQL, лучшая книга из тех, которые я видел - это такая черная книжка в мягком переплете, на ней зелеными буквами написано SQL(автора и точного названия не помню). Вообщем я советую не пожалеть стольник и купить.
С приветом Сергей
sergsuper@mail.ru
если чего знаю - отвечу
Ольга
Дата: 27.09.2000 09:58:56
Запрет на уровне доступа к определенным полям в MS SQL-е действительно есть, и реализуется он с помощью команды GRANT..., как было показано выше, или с помощью средств Enterprise Manager-а. Правда, последний способ годится только для сервера 6.5, поскольку в 7.0 вообще забыли обеспечить такую функциональную возможность, а в Enterprise от SQL 2000, который умеет работать с 7.0, кнопочку "Columns" в диалоге работы с правами сделали, а функциональность обеспечить, опять же, забыли. %) То есть она не делает ничего. Кстати, если у кого-нибудь есть фикс, решающий эту проблему, буду очень признательна...
Что же касается доступа на уровне отдельных записей, то это решается с помощью View. Но, на мой взгляд, тут уже недостаточно быть просто администратором сервера, поскольку с данными, как правило, юзеры "общаются" через программы. Другими словами, программа должны "знать" о наличии такого View.
Comander
Дата: 30.11.2000 12:37:30
Насчёт чего бы почитать.
Я бы посоветовал неплохой талмуд: Microsoft SQL Server 7 для профессионалов
авторы: Евгений Мамаев и Алексей Вишневский
Александр Гладченко
Дата: 30.11.2000 16:36:45
Вообще, если необходимо обеспечивать хотя бы мало - мальскую безопасность данных (от НСД), не давайте доступа пользователям к таблицам. Им будет достаточно представлений этих таблиц (View).
А насчёт того, что почитать - читайте рассылку "MS SQL Server - дело тонкое...", там и про доступ и ссылки есть (зря что ли стараюсь). Архивы рассылки здесь:
http://pilgrim.rostov-na-donu.ru/sql
http://mssqlhelp.com.ru
Fompro
Дата: 01.12.2000 18:46:59
Не знаю как кому ... Для более гибкого доступа к данным на уровне пользователей попробуйте использовать SP. Определите для них свои роли на уровне БД, и тасуйте Columns как Вам угодно.
lusbov
Дата: 09.12.2000 08:48:43
Вопрос в догонку?
А можно ли после шифрования представлений и процедур WITH ENCRYPTION вернуть обратно исходный текст???
Заранее благодарен.
SergSuper
Дата: 09.12.2000 09:58:19
Нет. Во всяком случае для 6.5.
Это я уже кстати писал, см. выше, на мой первый ответ.