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

'dbo' user should not be used for normal service operation

当我扫描我的数据库时,它显示了像 VA1143 这样的结果之一 'dbo' 在 漏洞评估扫描 中,用户不应该用于正常的服务操作

他们建议"Create users with low privileges to access the DB and any data stored in it with the appropriate set of permissions."

我已经浏览了关于所有表格的相同信息,但还没有得到正确的建议。您能否提出您的想法,或者我必须在哪里创建用户并获得许可。因为我们的数据库中只有一个模式结构。

在设计和构建数据库时,安全的主要机制之一必须是“least privilege principal”。这意味着您只授予绝对必要的权限。任何应用程序都不需要成为数据库所有者才能运行。此角色应高度限制为仅限管理类型。相反,您为应用程序创建了一个更有限的角色。它可以包括对每个 table、所有过程的访问,但它不能执行诸如删除数据库之类的操作。

这是对您的系统进行深度防御的第一步,以便正确和适当地保护它。它有助于解决从简单访问到 SQL 注入的所有级别的安全问题。这就是为什么它被包含在漏洞评估中的原因。这是一个真正的漏洞。

关于"Create users with low privileges to access the DB and any data stored in it with the appropriate set of permissions.",首先要知道的就是Database-Level Roles.

创建低权限用户表示使用没有alter database权限

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

例如,下面是为 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 使用登录名和用户帐户

希望对您有所帮助。