Ограничение доступа к SQL Azure из веб-приложения Azure - PullRequest
0 голосов
/ 09 июля 2019

Как можно ограничить разрешения базы данных SQL Azure при доступе из веб-приложения Azure?

Подробности - я работаю с базой данных SQL Azure и создаю веб-приложение ASP.NET Core. В веб-приложении я поместил строку подключения, которая указывает на базу данных SQL Azure. Строка подключения включает имя пользователя и пароль администратора сервера SQL Azure. Веб-приложение успешно связывается с базой данных и может читать и записывать данные. Теперь, в качестве меры предосторожности, я бы хотел, чтобы веб-приложение никогда не удаляло таблицу базы данных (будь то из-за ошибки в коде или из-за вредоносного внедрения SQL-кода в веб-приложении). Как настроить разрешения для базы данных SQL Azure, чтобы запретить удаление таблиц из веб-приложения?

Я слышал об Azure Active Directory; Я никогда не использовал его, но я понимаю, что это подход к управлению удостоверениями и разрешениями пользователей базы данных. Есть ли что-то похожее для управления разрешением веб-приложения, а не пользователя. Или можно рассматривать веб-приложение как пользователя и назначать ему разрешения / роли? Если так, каков будет правильный подход для реализации этого?

(Кроме того, пока мы обсуждаем эту тему, помимо предотвращения удаления таблиц, существуют ли какие-либо другие операции CRUD, которые вы бы порекомендовали предотвратить с точки зрения безопасности в качестве передового опыта?)

Ответы [ 2 ]

1 голос
/ 09 июля 2019

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

Замените строку подключения приложения новым именем пользователя и паролем без прав администратора.

И все мы знаем, независимо от того, каким образом мы получаем доступ или подключаемся к базе данных SQL Azure, мы должны через учетную запись SQL, администратора сервера или нового не-администратора.

Разные учетные записи SQL Azure имеют разные разрешения на операции базы данных CURD.

Более подробную информацию см. В документе Azure Управление доступом к базе данных SQL и хранилищу данных SQL и предоставление доступа к базе данных .

Когда вы создали нового пользователя, вы можете решить, какие разрешения для базы данных предоставить пользователю. См. Разрешения для базы данных GRANT (Transact-SQL)

В целях безопасности Azure также предоставляет хранилище ключей Azure. Чтобы увидеть: Всегда зашифровано: защита конфиденциальных данных и хранение ключей шифрования в хранилище ключей Azure :

Резюме:

Always Encrypted - это новая технология шифрования данных в базе данных SQL Azure и SQL Server, которая помогает защитить конфиденциальные данные в состоянии покоя на сервере, во время перемещения между клиентом и сервером и во время использования данных. Always Encrypted гарантирует, что конфиденциальные данные никогда не появятся в виде открытого текста в системе базы данных. После настройки шифрования данных только клиентские приложения или серверы приложений, имеющие доступ к ключам, могут получать доступ к открытым текстовым данным.

Надеюсь, это поможет.

0 голосов
/ 10 июля 2019

Есть ли что-то похожее для управления разрешением веб-приложения, а не пользователя.

Да. Это называется управляемой идентичностью. Azure предоставит удостоверение в Azure Active Directory и обеспечит, чтобы только код, выполняющийся в вашем приложении, мог генерировать токены для этого удостоверения. Это дает вам возможность проходить проверку подлинности и подключаться к SQL Server (и другим ресурсам Azure) без использования имени пользователя / пароля или секрета клиента в вашем коде или конфигурации.

См: Управляемые удостоверения Azure AD для ресурсов Azure

Управляемые удостоверения для ресурсов Azure предоставляют службам Azure автоматически управляемая идентификация в Azure Active Directory (Azure AD). Вы можете использовать эту идентификацию для аутентификации в любой службе, которая поддерживает Аутентификация Azure AD без использования учетных данных в вашем коде. Узнайте, как создавать управляемые удостоверения для ресурсов Azure и управлять ими с нашими краткими руководствами и учебными пособиями.

И: Учебник. Защищенное соединение базы данных SQL Azure из службы приложений с использованием управляемого удостоверения

Существуют ли другие операции CRUD, которые вы бы порекомендовали предотвратить с точки зрения безопасности в качестве передового опыта

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

create role ApplicationUser

grant select,insert,update,delete,execute on schema::dbo to ApplicationUser

deny delete on AuditLog to ApplicationUser

(В SQL Server DENY переопределяет любые GRANT, поэтому вы можете предоставлять разрешения на уровне схемы и выборочно разрешения DENY на уровне объекта)

...