标签: security

在 SQL Server 中使用 AD 组与角色

什么是 sql server 安全的最佳实践?使用被授予架构对象权限的 AD 组,还是应该将 AD 组添加到被授予架构对象权限的数据库角色?如果后者是最佳实践,那么使用数据库角色的真正好处是什么?

security permissions sql-server-2012

6
推荐指数
1
解决办法
7623
查看次数

Sql Server 代理是系统管理员角色的一部分,即使 Sql Server 说它不是

我创建了一个除域用户之外没有额外权限的 Windows 帐户,并使用 SQL Server 配置管理器将其设置为 SQL Server 代理服务帐户。

BoL/MSDN 表示该用户应该是 sysadmin 角色的一部分才能工作,但目前我还没有采取任何操作来实现这一点。

我预计该帐户无能为力,但看起来它是......系统管理员!如果您将以下语句放入作业步骤中,它将确认这一点:

IF IS_SRVROLEMEMBER ('sysadmin') = 1 print 'sysadmin'
Run Code Online (Sandbox Code Playgroud)

该作业步骤是一个 t-sql 步骤,所有者为 sa,因此使用 SQL Server 代理服务帐户。

现在回答这个问题。SQL Server 配置管理器似乎做了一些事情,使其成为系统管理员,或者至少在执行该步骤时如此。但同时它不会显示在 GUI 中的系统管理员列表中。

我提出的所有报告或查询(包括 SSMS)均未将此 Windows 帐户列为 sysadmin 角色的一部分。

我有一种感觉,我正在忽略某些东西。

security sql-server permissions sql-server-agent

6
推荐指数
1
解决办法
1212
查看次数

避免系统管理员权限

我将开始道歉,因为这是我的第一篇文章,并查看其他与我自己的情况不太匹配的问题,而且我是一名系统管理员,而不是 DBA,所以我对 SQL 的理解是生疏和有限的。

我的组织经常遇到供应商,他们为了运行他们的应用程序,他们执行我们所说的惰性编程并请求 SA 凭据或要求他们的自定义帐户具有系统管理员权限。我的组织也有数据保护/合规政策,要求我们仅授予所需的访问权限和权利。

最近,我与之合作的一个供应商希望他们的帐户是系统管理员,但它实际上只需要访问一个数据库。如果我们给 AD 帐户(因为他们的应用程序仅适用于 Windows 身份验证)系统管理员权限,我可以使用应用程序的 GUI 来浏览和选择数据库,但如果我们只将同一帐户设置为 DBOwner,我们将找不到任何东西。

有没有办法确定它是否正在尝试轮询其他数据库或确定所需数据库所需的最低权限级别是什么?当我尝试询问供应商时,我被告知:“它需要系统管理员权限,但没关系,因为它只访问一个数据库。” 当涉及到我们的政策时,这是不行的。

感谢您的任何建议。

security sql-server permissions sysdba

6
推荐指数
1
解决办法
593
查看次数

如何向用户定义的服务器角色授予对象权限?

我想创建被授予访问权限的登录名

  • 所有用户数据库
  • 查看所有定义

  • 选择所有表的所有记录

对我来说,将登录名分配给每个数据库并将其添加到自定义 db 角色或每个 db 中的默认 db 角色(如 db_datareader)似乎开销太大。

相反,我尝试使用用户定义的服务器角色。

  • 但是如何将所需的权限分配给用户定义的服务器角色以允许查看所有数据库的任何定义和 db_datareader?

  • 这甚至可能吗?

security sql-server permissions role sql-server-2016

6
推荐指数
1
解决办法
703
查看次数

为特定模式中的用户创建表权限

我想在数据库的 schema1 上向用户 A 授予 Create 、 alter 和 drop 权限。我想这个问题已经被问到了,我发现的是将更改授予架构并将创建表授予用户 A: GRANT ALTER, DELETE, EXECUTE, INSERT, SELECT, UPDATE ON SCHEMA::schema1 TO user A;

GRANT CREATE TABLE TO User A;

如果这是正确的,那么 userA 是否也可以在其他模式上创建表?

schema security sql-server permissions

6
推荐指数
2
解决办法
3万
查看次数

运行 sp_Blitz 所需的最低权限

我需要运行sp_BlitzGlenn Berry 的 Dr DMV 并为 SQL 2016 设置一堆 DMV 查询sp_Blitz。BrentOzar.com 上的文档指出“系统管理员权限。sp_Blitz® 检查大量系统级诊断数据。”

sysadmin 真的是所需的最低权限级别还是有人能够以更严格的权限级别运行它?

不确定我是否会在客户端的生产服务器上请求 sysadmin 权限。

security sql-server sql-server-2016 sp-blitz

6
推荐指数
1
解决办法
1346
查看次数

为什么用户无权访问数据库?

我有一个用户ls_readonly应该拥有db_datareader多个数据库的权限。我以为我已经设置好了:

在此处输入图片说明

但是当我连接到服务器ls_readonly并尝试在对象资源管理器中打开数据库时,我收到一个错误:

数据库 wtest 不可访问。(对象浏览器)

我打开一个查询窗口master并尝试运行:

use wtest
Run Code Online (Sandbox Code Playgroud)

这回应:

Msg 916, Level 14, State 1, Line 1
The server principal "ls_readonly" is not able to access the database "wtest" under the current security context.
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

更新:这是一个线索。如果我ls_readonly作为用户从数据库的安全上下文中删除,那么我会转到服务器安全上下文下的用户,并在“用户映射”下授予对数据库的访问权限,然后它开始工作。

可能是该数据库最初是从另一台服务器恢复的,该服务器也有一个ls_readonly用户。我猜那么用户识别不是基于用户名?

security sql-server permissions sql-server-2016

6
推荐指数
3
解决办法
5000
查看次数

6
推荐指数
0
解决办法
680
查看次数

从客户端到服务器的连接上的数据交换是否以纯文本形式通过线路发送?

我有一个新的 SQL Server 2019 本地实例。假设客户端是 SQL Server Management Studio 或任何其他应用程序:

  1. 当客户端使用 SQL Server 身份验证连接到服务器时,连接请求是否以纯文本形式从客户端发送到服务器?换句话说,身份验证凭据是否通过网络公开(纯文本)?换句话说,攻击者可以看到线路上的用户名/密码吗?MSDN 文档(https://learn.microsoft.com/en-us/learn/modules/configure-database-authentication-authorization/3-describe-authentication-identities)说:

Active Directory 身份验证被认为更安全,因为 SQL Server 身份验证允许在通过网络传递时以纯文本形式查看登录信息。

在此输入图像描述

  1. 身份验证之后,假设未配置 TLS,那么查询(示例:SELECT)及其输出是否在网络上以纯文本形式可见?

security sql-server

6
推荐指数
1
解决办法
552
查看次数

具有多个数据库的 SQL Server(每个客户端一个) - 就登录/用户/权限而言,最佳安全实践是什么?

我们有多个 SQL Server,每个 SQL Server 拥有数十个数据库 - 每个客户端一个(在这种情况下,客户端意味着一个客户组织)。这些数据库是通过应用程序访问的,但该应用程序当前使用单个 Windows 登录。因此,这会产生安全风险,即如果存在某些应用程序漏洞,理论上可以访问“其他”客户端的数据库。

处理这种情况的最佳方法是什么?

我们是否应该为每个客户端创建单独的登录名并让应用程序使用单独的登录凭据进行连接?这将降低安全风险,但会产生大量的管理开销(这可能是值得的)。

后续问题是:在这种情况下我们应该使用 Windows AD 安全性还是 SQL Server 身份验证。

我很感激任何建议!

authentication security sql-server multi-tenant

6
推荐指数
2
解决办法
2617
查看次数