У меня есть богатая клиентская программа, установленная на ПК пользователей, где я хочу начать хранить некоторые пользовательские данные на SQL Azure/SQL Server. Потенциальные пользователи анонимного пользователя будут использовать свое имя, учетную запись электронной почты и пароль, который будет храниться на SQL Azure/SQL Server. Затем они начнут генерировать свои собственные данные. Я ожидаю объемы, возможно, 1000 пользователей.Проблемы с безопасностью, позволяющие анонимным пользователям создавать учетные записи и учетные записи SQL Server?
Есть моменты, когда эти пользователи хотели бы запускать свои собственные запросы против своих собственных данных, но, очевидно, я должен убедиться, что они никогда не смогут просматривать другие данные пользователей.
Я думаю, что лучший способ обеспечить безопасность данных - это каждый пользователь, которому будет выдана собственная учетная запись и пароль SQL Azure. Я настрою пользователя SQL Azure и длинный пароль, который известен только мне, который имеет только права на выполнение нескольких хранимых процедур с соответствующими параметрами, передаваемыми тем СП, которые создадут учетные записи SQL Server, войдут в систему и добавят пользователей к роли, которая Я создал.
Очевидно, что кто-то работает с инструментами отладки, может определить имя пользователя и пароль, но я думаю, что это не имеет большого значения. Если все, что может сделать конкретная учетная запись SQL Azure, это выполнить несколько SP, так что, если вредоносный пользователь начнет это делать. Я разрешу загружать очень ограниченный объем данных до того, как я получу платеж.
Пользователи могут вставить только записи с помощью хранимых процедур, которые используют следующие:
SELECT @uName=SYSTEM_USER
и выбирать только соответствующие родительские записи. Все хранимые процедуры, которые могут выполняться пользователями, должны иметь вышеуказанные требования, чтобы гарантировать, что они могут работать только со своими собственными записями.
Все мнения будут иметь встроенные с ними ИНЕКЕ, такие как
WHERE tbLoginName = SYSTEM_USER.
Я новичок в SQL Server, так что я может отсутствовать некоторые основные понятия, так что я бы признателен за любые и все комментарии.
Любые ограничения на запросы, которые люди могут выбрать для запуска? Только 'SELECT'? Или они могут «DROP», «TRUNCATE», ...? – HABO
Запросы, которые люди увидели бы, будут представлениями, которые я бы позволил им увидеть, какие будут только SELECT. Нет DROP, TRUNCATE или таких. Тем не менее, они также смогут увидеть хранимые процедуры, которые позволят им вставлять записи, конечно. Который, если бы они хотели, они могли выполнить, но они только испортили свои собственные данные. Они не смогут увидеть таблицы. – JimSmythe