小编yhe*_*hur的帖子

如何撤销似乎“卡住”登录的 SA 权限?

如果我在这里没有正确使用一些术语,请提前道歉。我不是 DBA,但我是暂时被迫担任这个角色的。

我继承了一个在 SQL Server 2016 Enterprise 上运行的应用程序 - 一个实例用于 PROD,另一个实例用于 TEST。这些实例以“始终开启”的配置进行设置,因此我有一个用于 PROD 的可用性组和一个用于 TEST 的可用性组。每个可用性组中有两台服务器。每个实例都有多个数据库,但每个实例中只有一个数据库实际由应用程序使用 - 其他数据库看起来是为了测试目的而创建的。我只是提到还有其他数据库,以防万一它可能以某种我不知道的方式相关。

我有一个服务帐户的登录名(Windows 身份验证),并且该登录名映射到一些数据库中的同名用户。此服务帐户是 sysadmin 角色的成员。经过 IT 安全审核后,我被告知要删除此帐户的 SA 权限。我认为这不会给应用程序带来任何问题,但当然我想首先删除 TEST 实例中的权限,以便我可以确认应用程序由于某种原因不需要它们。

在测试实例中,我取消了登录的 sysadmin 角色,现在只选中了“公共”框,但我发现我仍然可以作为服务帐户登录并访问它之前有权访问的所有内容。它仍然可以访问主数据库中的所有表(这是我所期望的,因为该帐户已被授予对数据库中 dbo 架构的很多权限),但令我困惑的是它仍然可以查看服务器级别,我认为它会失去。

如果我在以服务帐户身份登录时运行此语句 ( SELECT * FROM fn_my_permissions(NULL, 'server');),则这是我获得的权限列表:

  • 连接SQL
  • 关闭
  • 创建端点
  • 创建任何数据库
  • 创建可用性组
  • 更改任何登录信息
  • 更改任何凭证
  • 更改任何端点
  • 更改任何链接的服务器
  • 改变任何连接
  • 更改任何数据库
  • 改变资源
  • 更改设置
  • 改变轨迹
  • 更改任何可用性组
  • 管理批量操作
  • 验证服务器
  • 外部检修组件
  • 查看任何数据库
  • 查看任何定义
  • 查看服务器状态
  • 创建 DDL 事件通知
  • 创建跟踪事件通知
  • 更改任何事件通知
  • 改变服务器状态
  • 不安全的装配
  • 更改任何服务器审核
  • 创建服务器角色
  • 更改任何服务器角色
  • 更改任何活动会话
  • 连接任何数据库
  • 冒充任何登录
  • 选择所有用户安全
  • 控制服务器

这些对我来说似乎是 SA 级别的权限,但我不明白它们来自哪里,因为 …

sql-server permissions role sa

4
推荐指数
1
解决办法
980
查看次数

标签 统计

permissions ×1

role ×1

sa ×1

sql-server ×1