Разрешения базы данных и ORM - PullRequest
1 голос
/ 12 мая 2010

В последнее время я очень часто использую .NET Entity Framework и совершенно не хочу возвращаться к использованию хранимых процедур. Однако был шокирован тем, что компания, для которой я создаю этот проект, придерживалась политики, согласно которой приложениям предоставлялись только учетные записи, которые имели только разрешения на доступ к хранимым процедурам !

По-видимому, они полагают, что существует риск безопасности, связанный с тем, что приложения получают прямой доступ к таблицам / представлениям. Я не понимаю этого.

  1. Мой первый вопрос: может ли кто-нибудь объяснить мне, какой тип угроз безопасности могут представлять приложения, имеющие прямой доступ к базе данных? И
  2. Если это так, есть ли другие решения ORM, которые могут обеспечить обходной путь для этого (я не могу представить никакой логической возможности atm), который позволил бы мне обойти ограничения на учетную запись пользователя, которая будет назначена мне ? ИЛИ неверно ли мое понимание того, что мне нужны прямые разрешения для таблиц и представлений?

Ответы [ 2 ]

2 голосов
/ 12 мая 2010

Когда вы думаете об этом, в определенном контексте ограничение доступа к хранимым процедурам имеет большой смысл.Процедуры предоставляют API и обрабатывают обработку (например, проверяют сложные ограничения), что в принципе хорошо.Нет простого способа объявить ограничения между столбцами, например, «если столбец A равен нулю, столбец B должен быть одним из {X, Y, Z}».Несколько приложений могут использовать API процедур, и все могут извлечь выгоду из процедур, обеспечивающих правильную обработку данных.

Однако, любой, кто пытался написать много логики в базе данных и многологика в языке ООП общего назначения знает, что первые имеют тенденцию приводить к неосуществимой, неразборчивой кодовой блокировке базы данных, в то время как последние обычно признаются как «способ написания сложных приложений / систем».

ХотяПодход API хранимых процедур еще далеко не исчерпан, я был бы искренне удивлен, увидев новый проект, начатый с использованием этого шаблона.ORM далеки от совершенства, но они дают огромные преимущества, которые все больше принимаются как должное: все приложение может быть написано на одном языке (Python, Java, Groovy, Ruby ...), выобычно может переключать СУБД за несколько минут (что творит чудеса, например, когда вы запускаете тесты на hsqldb, но используете postgresql в рабочей среде), упаковка данных из базы данных и в нее намного проще (ORM обычно возвращает объекты домена, скореечем примитивы), есть преимущества кэширования и т. д.

В свете этого вполне допустимо, чтобы приложение имело полный доступ CRUD ко всему в своей базе данных.Кроме того, если у вас есть учетная запись, которая позволяет вызывать только хранимые процедуры, я бы не рекомендовал тратить время на изучение способов обхода прав доступа: лучше использовать свое время для спора о привилегиях доступа к таблице CRUD.

1 голос
/ 12 мая 2010

Идиотское ограниченное мышление - если они не помещают полную логику доступа в базу данных.,

http://weblogs.asp.net/fbouma/archive/2003/11/18/38178.aspx

имеет хорошее объяснение того, почему безопасность НЕ является причиной.Как я уже сказал - если только полная бизнес-логика не проверяет, кто видит, что находится в базе данных ... которая больше не является многоуровневым приложением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...