【问题标题】:After creating a new user in a SQL Server database, the user is able to create and drop tables. Why?在 SQL Server 数据库中创建新用户后,该用户可以创建和删除表。为什么?
【发布时间】:2021-10-11 10:00:33
【问题描述】:

我的 SQL Server 数据库的新用户的权限存在很大问题。新用户看不到任何表,但仍可以删除它们或创建新表。

创建用户的代码:

--Code Start
--This is how I instantiate the new user:

CREATE LOGIN userName WITH PASSWORD 'password';
CREATE USER userName FOR LOGIN userName;

--Furthermore, the user get some roles. So that the user can do at least something:

CREATE ROLE roleExample;
GRANT DELETE, INSERT, SELECT, UPDATE ON dbo.exampleTable TO roleExample;
SP_ADDROLEMEMBER roleExample, userName;

--Code End

在我看来,新用户现在应该只能对 exampleTable 进行操作。但正如我所说,用户也可以创建和删除表。

这就是为什么,我给角色添加了一些约束,新用户得到:

DENY CREATE TABLE TO roleExample AS dbo;

这也无济于事。用户仍然可以在 dbo 中创建表。

这个问题是顺便说一句。与特定架构无关。新用户可以在任何架构中创建和删除表。

我猜默认允许新用户创建或删除表。可悲的是,我不知道如何改变它。

希望你们能帮帮我。

附件是一个示例,您可以在其中看到用户不知道架构,应该在其中创建新表。尽管如此,模式仍然存在,并且在执行此语句后,将创建表。错误消息只是说这个表已经创建,因为我执行了这个语句两次。尽管如此,用户还是无法在 SQL Server Management Studio 中看到自己创建的表。

User does not know schema, but still can create tables in it

【问题讨论】:

  • 我认为您的 [guest] 帐户或数据库的安全设置有问题。虽然这个问题在这里是允许的,但在这种情况下,我认为你会在dba.stackexchange.com得到更好的答案。
  • 检查您的 SQL Server 版本是否有最新的 Service Pack 或累积更新,如果没有,请更新:sqlserverbuilds.blogspot.com
  • 好的,我有点生疏了,但很可能有人已将这些权限授予您数据库中的Public 角色。所以你可能想看看那里。
  • “不知道架构”的事情很可能就像智能感知在创建新对象时不会自动刷新一样。除非您刷新了智能感知缓存,否则您无法将任何内容读入那里的红色波浪线
  • @RBarryYoung 这听起来像是一个可能的解决方案。希望下周我能找到答案。可悲的是,我这周没有时间了……

标签: sql-server access-rights


【解决方案1】:

好的,可能有几件事情,但到目前为止,最有可能的是某人已将某些数据库权限授予public 角色或您的用户都在其中的某个 AD 组。(也有可能,但不太可能是对服务器权限进行了类似的操作)。

要检查数据库权限,请打开 SSMS (SQL Server Management Studio),在“对象资源管理器”窗格中右键单击您的数据库,然后选择“属性”。然后在“数据库属性”窗口中单击左上角列表中的“权限”页面。

如果授予任何用户或角色的任何数据库权限,它们应该出现在上方的列表框中。如果 Public 在那里,请单击它以查看是否已被授予任何数据库范围的权限。所有用户都拥有 Public 角色,因此此处授予的任何内容都会自动授予所有用户。

如果不是,请检查上方列表框中列出的任何其他角色。还要检查任何看起来可能是 AD 组的用户,因为这些用户的工作方式类似于 DB 角色,只是 SQL Server 无法管理它们,也无法从这些界面告诉特定组中的用户。

如果您在这里没有找到任何东西,那么对服务器权限也重复此操作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-21
    • 1970-01-01
    • 2020-09-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多