1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.

SQL роли и права

Тема в разделе "Программирование", создана пользователем Mikle, 20.12.07.

  1. Mikle

    Mikle Активный участник

    1.321
    0
    Есть БД.
    скриптом создается некая роль Role1.
    Есть необходимость проставить для роли право только на чтение всех таблиц БД... Можно ли это сделать скриптом не перебирая системный список таблиц?
    Есть ли возможность сделать что-то типа
    GRANT SELECT ON ALLTABLES TO Role1???
     
  2. AlTk

    AlTk Читатель

    10.692
    0
    Mikle,
    что-то у меня подозрение, что такое сделать нельзя.
    с другой стороны наверняка есть встроенная группа "читателей"ю может можно пользователя включить в нее?
     
  3. Mikle

    Mikle Активный участник

    1.321
    0
    ДА группа есть но задача немного усложняется: нужны еще права на запуск всех процедур...

    Щас копаю таблицу системную таблицу sysprotects... По-моему с ее помощью можно замутить подобное, но не уверен...
     
  4. AlTk

    AlTk Читатель

    10.692
    0
    Mikle,
    аккуратнее с системными таблицами - в инструкции сказано, что никто не гарантирует сохранения их структуры при переходе с верси на версию и скрипты просто-напросто могут не работать.

    ПС. а зачем нужно динамическое добавление пользователей???
     
  5. Mikle

    Mikle Активный участник

    1.321
    0
    AlTk,
    обновление на разрабатываемое ПО будет поставляться к пользователю дистанционно, т.е. пакетом. грубо говоря пользователю надо будет запустить ехе-шник, а он автоматом создаст необходимых юзеров на БД...
    Причем у пользователя уже есть наша БД, в которой етсь куча процедур... И вот вновь создаваемый юзер должен получить права на чтение всех таблиц в БД и на запуск всех процедур.

    Т.е. создается пользователь читатель базы (но не исправлятель :) )
    Надеюсь хорошо объяснил...

    С системными таблицами то понятно... Но иногда так проще... Но вот сервак не дает редактировать таблицу sysprotect... Хотя все права настраиваются через нее :(((((
     
  6. AlTk

    AlTk Читатель

    10.692
    0
    Mikle,
    так для этого же есть группы.
    пусть добавят пользователя в группу и все. а группе назначьте права вы сами скриптом и никакого динамического указания прав нет.
     
  7. Mikle

    Mikle Активный участник

    1.321
    0
    так прально группе тоже надо назначить права на чтение всех таблиц и запуск процедур :)
    Вопрос как скриптом это сделать не перечисляя всех тыблиц и процедуров?
     
  8. AlTk

    AlTk Читатель

    10.692
    0
    Mikle,
    никак.

    добавлено через 32 секунды
    да и не нужно это
     
  9. Mikle

    Mikle Активный участник

    1.321
    0
    AlTk,
    а почему не нужно? А как ты предлагаешь создать сриптом роль читателя таблиц и запускателя процедур без перечисления их поименно?
    Или есть какой другой вариант, как ограничить пользователя в правах?

    З.Ы.: пока рассматривю вариант ограничения прав на клиенте: так как все формы по редактированию базы наследуются от одного родителя, то прикрутил ограничение по имени пользователя на родителе в момент попытки редактирования... Но хотелось бы это разрулить на серваке...
     
  10. AlTk

    AlTk Читатель

    10.692
    0
    Mikle,
    "... прикрутил ограничение по имени пользователя на родителе в момент попытки редактирования ..."
    а вот за это по рукам бьют и в угол ставят.

    Mikle,
    я же уже говорил, что перечислять нужно поименно. никакой динамики.
     
  11. Mikle

    Mikle Активный участник

    1.321
    0
    AlTk,
    согласен бьют... а вот с углами не задача - там уже всюду шкафы стоят... Но куда деваться - первый релиз уйдет таким (время ограничено), а вот второй уже будет с человеческим лицом. Прийдется пользоваться статикой :( А так хотелось

    З.Ы.: кстати все-таки удалось ввести динамику: все имена процедур подгружаются из системной таблицы в темповую, затем курсором по темповой перебираются записи и для каждого имени формируется разрешение на чтение для этого пользователя... Понимаю, извращение, но направление интересное, буду оптимизировать...
     
  12. AlTk

    AlTk Читатель

    10.692
    0
    Mikle, да дело не в том удастся или нет ввести динамику, я не понимаю зачем это делать - структура схемы БД - это статическая структура. зачем Вам вводить рантаймовскую динамику для метаинформации.
    сделали изменения в бд - сгенерировали нужный скрипт.
     
  13. Mikle

    Mikle Активный участник

    1.321
    0
    AlTk,
    ну так какждый раз при изменении БД формировать новый скрипт для прав роли а так меняется только срипт обновления БД

    А тем более надо учесть, что с БД работает и соотв. обновляет не один человек...
     
    Последнее редактирование: 21.12.07
  14. AlTk

    AlTk Читатель

    10.692
    0
    Mikle,
    "... ну так какждый раз при изменении БД формировать новый скрипт для прав роли ..."
    ДА.

    "... обновляет не один человек ..."
    по рукам и в угол.
     
  15. pegas

    pegas Участник

    311
    0
    для MSSQL 2005 можно дать права на выполнение всех процедур
    GRANT EXECUTE TO ...
    или, что идеологически более правильно, на выполнение процедур схемы
    GRANT EXECUTE ON SCHEMA
     
  16. Mikle

    Mikle Активный участник

    1.321
    0
    pegas,
    немного не понял, так как дать права на выполнение всех процедур?
    Можно ли это сделать на 2000 серваке? В поисках вообще нет GRANT EXECUTE по 2000 серваку