У меня есть вопрос к SQL Server 2008R2, касающийся создания одной строки странным образом.
Ситуация: у меня есть база данных студенческих записей, в которой около 100 студентов могут учиться в определенный день. Они входят в большую часть PII. К сожалению, у них часто возникает необходимость сохранить данные и вернуться позже, чтобы обновить или завершить регистрацию, потому что им нужна та или иная информация. На этом этапе они должны иметь возможность вернуться к своей исходной неполной записи и добавить всю необходимую информацию. Это может произойти в любой момент в течение начальной недели курса, в зависимости от их расписания и сложности, с которой они сталкиваются при получении любой информации, необходимой для заполнения базы данных.
Проблема: у меня есть несколько групп людей, которым необходимо уметь читать и изменять информацию об учениках. Различным сотрудникам необходимо иметь возможность извлекать часть этой информации, руководителям курсов обычно необходимо иметь возможность читать ее для составления статистических отчетов, а преподавателям необходимо постоянно получать к ней доступ, чтобы добавлять оценки и т. Д. Студентам МОЖЕТ потребоваться доступ позже в курсе обновлять информацию, но это не типично. Моя основная проблема заключается в том, что мне нужно, чтобы студенты имели доступ для чтения и записи только к ИХ СТРОКЕ, в то время как инструкторы и другие. необходимо иметь возможность читать и писать во все строки. С интеграцией AD все работает, ЗА ИСКЛЮЧЕНИЕМ того, что один студент потенциально может открыть «файл» (строку) другого студента и просмотреть свою личную информацию.
Как я могу заблокировать одну строку для одного студента, при этом разрешив административному персоналу и преподавателям читать и потенциально писать доступ? Я - шоу одного актера, поэтому мне нужно максимально автоматизировать это, а SQL - не моя сильная сторона. Я рассматривал возможность использования либо сертификатов (у нас есть собственный внутренний ЦС), либо идентификаторов пользователей AD, но я не уверен, как это реализовать, и если это действительно лучший выбор.
В дополнение к комментарию dartonw вы можете рассмотреть возможность использования только хранимых процедур и представлений для доступа к базе данных вместо прямого доступа. Вы можете установить разрешения для SP и View для определенных пользователей. Затем вы можете использовать определенные представления и SP для получения различных наборов результатов.
Тем не менее, я согласен с другими комментаторами, что безопасность на уровне строк в этом выпуске SQL Server Edition должна обрабатываться на уровне приложения, а не на уровне базы данных.