'dbo'用户不应该用于正常的服务操作。

问题描述 投票:0回答:2

当我扫描我的数据库时,它显示了一个结果,如VA1143'dbo'用户不应该被用于正常的服务操作,在我的数据库中。脆弱性评估扫描

他们建议 "创建具有低权限的用户,以适当的权限集访问数据库和存储在其中的任何数据"。

我已经浏览了关于相同的所有表格,但还不能得到正确的建议。请你提出你的想法,或者我必须在哪里创建用户并授予权限。由于我们的DB中只有一个模式结构。

sql sql-server azure-sql-database mssql-jdbc
2个回答
1
投票

关于 "创建具有低权限的用户,以适当的权限设置来访问数据库和存储在其中的任何数据。",首先你应该知道的就是 数据库级角色.

创建低权限的用户是指使用不具有改变数据库的权限。

当我们为数据库创建用户时,我们需要授予它角色来控制它对数据库的权限。

例如,下面是为SQL数据库创建一个只读用户的代码。

--Create login in master DB
USE master
CREATE LOGIN reader WITH PASSWORD = '<enterStrongPasswordHere>';

--create user in user DB
USE Mydatabase
CREATE USER reader FOR LOGIN reader;  
GO
--set the user reader as readonly user
EXEC sp_addrolemember 'db_datareader', 'reader';

更多细节,请参考:

  1. 授权数据库访问认证用户使用登录和用户账户访问SQL数据库和Azure Synapse Analytics。

希望能帮到你。


1
投票

在设计和构建数据库时,安全的主要机制之一必须是"最低权利人". 这意味着你只给予绝对必要的权限。任何应用程序都不应该需要成为数据库所有者才能运行。这个角色应该高度限制在只有管理类型。相反,你为应用程序创建一个更有限的角色。它可以包括对每一张表、所有程序的访问,但它不能做诸如,放弃数据库的事情。

这是对你的系统进行深度防御的第一步,以便正确、恰当地保护它的安全。它可以帮助解决从简单的访问到SQL注入的所有级别的安全问题。这就是为什么它被列为漏洞评估的一部分。这是一个真正的漏洞。

© www.soinside.com 2019 - 2024. All rights reserved.