为什么以及如何以及在何处使用无需登录的用户

Bel*_*nzo 4 sql-server users logins

我一直在寻找原因,如何以及在何处使用无需登录的用户,但我没有找到我的确切问题或任何更接近的问题。我在哪里进行研究(我还阅读了其他帖子,看过 Youtube 视频):

我一直在寻找使我的数据库更安全的方法,最近我知道有一个选项可以在不登录的情况下创建用户。我认为这很好。但是我不明白如何使用它(不是创建,使用),然后经过我的研究,我意识到该用户在冒充另一个用户/角色的同时访问了数据库。我认为没有用户并以某种方式访问​​数据库会很棒。但是当我看到有一个叫做execute的东西时我认为它没有用,因为我为什么要对这个“无需登录”的用户执行查询,因为它是另一个用户?为什么我不使用这个用户的权限?然后我想也许这个用户的权限太多了,所以我就创建了一个权限较少的新...

好吧,我不知道你为什么要创建一个没有登录的用户。这个应该怎么用?这很愚蠢,但我尝试登录并失败了(抱歉,我习惯于使用用户登录,我从没想过创建用户而不登录,我只知道用户登录了某些东西,这就是我的知识所在) .

所以,我不知道为什么要创建这种类型的用户而不是普通用户?我不知道如何(就像我登录一样,我是否只需输入查询并使用它)?我不知道在哪里(例如,我是否需要制作 C# 应用程序,我是否使用命令...)使用?

我的知识只带我到这里,我没有高级 DBA 可以问。如果可能,请用简单的语言解释。

Tib*_*szi 6

想象一下,你有一个人在运行一个应用程序,这需要一定的权限。您确实希望能够记录谁在做什么并查看谁登录到您的 SQL Server。因此,每个人都需要自己的登录名(这可能是为域组创建的一个登录名)。

让这些人使用 SSMS 进行连接并在数据库中玩耍会让您感到不舒服。由于应用程序可能需要对客户表的 DELETE 权限(例如),那么最终用户现在可以从 SSMS 执行此操作。

因此,您无需登录即可创建用户,并让应用程序使用 EXECUTE AS 作为该用户。即,如果没有 EXECUTE AS,最终用户在数据库中根本没有特权(即,您为其创建登录名的潜在 AD 组及其在数据库中的后续用户)。但是当他们完成 EXECUTE AS 时,他们确实有特权。

这是读取安全吗?不,当然不是。但也许比没有可追溯性或让最终用户能够“直接”在数据库中玩耍要好。

应用程序角色呢?是的,这可以更严格,因为它们受密码保护。

另一个用途是当您测试事物时,使用 EXECUTE AS USER。你想玩一些与权限相关的事情,更容易在没有登录的情况下将权限分配给用户,然后进行测试,然后必须为你想要测试的任何内容创建登录名用户。