【问题标题】:Grant user rights to create new databases but deny rights to existing ones授予用户创建新数据库的权限,但拒绝对现有数据库的权限
【发布时间】:2019-11-26 07:57:58
【问题描述】:

我收到了我们的开发人员的要求,

  • 他们需要一个需要权限才能创建新数据库的新用户
  • 更改那些但不应该能够访问现有的。

这种访问的最佳做法是什么?

授予 dbcreator 并拒绝对现有的访问权限,还是有更好的方法?

【问题讨论】:

标签: sql-server sql-server-2017


【解决方案1】:

默认情况下,SQL Server dbcreator 不授予您访问数据库的权限。看起来可能是这样,因为当您创建一个新数据库时,您(通常,除非另有说明)自动成为该数据库的所有者。并且数据库的所有者可以在该数据库中做任何事情。

但是如果登录具有 dbcreator 的服务器角色,他们仍然可以删除不属于他们的数据库。他们可以创建新数据库或更改现有数据库。

如果您的意图是纯粹允许他们创建新数据库并仅管理这些数据库。您应该只授予他们创建权限。

USE MASTER
GO
GRANT CREATE ANY DATABASE TO Foo
GO

这仍然允许他们对他们创建的数据库运行 ALTER 语句(因为他们是所述数据库的所有者)。但不要对现有数据库运行更改(或删除)语句。

USE MASTER
GO
CREATE DATABASE [OwnedDB] --Succeeds
GO
ALTER DATABASE [OwnedDB] SET RECOVERY SIMPLE WITH NO_WAIT --Succeeds
GO
ALTER DATABASE [UnownedDB] SET RECOVERY SIMPLE WITH NO_WAIT --Fails due to permissions
GO

【讨论】:

  • 谢谢,这正是我需要的!
猜你喜欢
  • 1970-01-01
  • 2018-03-21
  • 2021-02-05
  • 1970-01-01
  • 2014-08-16
  • 1970-01-01
  • 2015-04-24
  • 1970-01-01
  • 2015-02-16
相关资源
最近更新 更多