Как я ограничиваю sql полномочия пользователя только для чтения при тихом разрешении выполнения хранимой процедуры?

www.insecure.org является великолепным местом, чтобы начать искать программное обеспечение тестирования уязвимости и конечно Google.

Первое, что пришло на ум несколько инструментов приходят на ум... - nmap - metasploit - святой - комплект отрыжки - защита LAN

Один это для запоминания при обеспечении чего-либо подключенного к сети... Это никогда не может полностью защищаться, пока это не отключается из Интернета. Это кажется на взятие всех соответствующих шагов для не допускания деточек сценария и вероятно большей части автоволшебства h4ck инструменты. Но помните, с правильной мотивацией/талантом/временем нет ничего, что можно сделать для защиты себя от "несанкционированного доступа".

2
задан 9 November 2012 в 19:49
2 ответа

После того, как логика инкапсулирована в хранимую процедуру, разрешения на базовые объекты не требуются. Один из способов выполнить то, что вы хотите сделать, - использовать триггер на столе. Что-то вроде:

create trigger tr_del_tbl on tbl after delete as
begin
    if user_name() = 'foobar' and exists (select 1 from deleted)
        rollback
end

Я бы также использовал для этого роль вместо одного конкретного пользователя. Таким образом, если позже у вас появится другой пользователь, который нуждается в аналогичном лечении, вам не придется изменять триггер; вы просто добавляете их к роли.

1
ответ дан 3 December 2019 в 13:04

Не существует модели, основанной на разрешениях, которая будет делать это, если вы не назначаете права вручную на основе того, что делает хранимая процедура. Ваш единственный выход - это триггеры. Имейте в виду, что это будет работать только в том случае, если не используется EXECUTE AS, который изменил бы способ пользователя, о котором сообщает функция user_name ().

0
ответ дан 3 December 2019 в 13:04

Теги

Похожие вопросы