我们在一家小型制造公司运营SAP Business One - Fourth Shift Edition。进入安装/实施的咨询公司使用“sa”id / pass初始连接到数据库以获取公司列表。从那时起,我必须假设它的sa id / pass用于将客户端软件连接到数据库。这个合适吗?我不知道这些数据存储在哪里...作为ODBC连接?直接在注册表的某个地方?它安全吗?是否更好地在数据库安全性中设置用户网络ID,然后使用“可信连接”设置?或者大多数人在数据库中为每个用户创建一个单独的登录名并在客户端设置中使用它?
似乎最简单的方法是将用户网络登录添加到sql server安全性,以便他们可以使用“可信连接”...但是这样就不会允许任何软件从该计算机连接到数据库?
所以无论如何:设置这个的最佳做法是什么?
答案 0 :(得分:1)
这种用法听起来像是灾难的食谱。
在我看到的大多数安全模型中,无论您如何连接,所有经过身份验证的用户都可以读取第一个查找SP,视图或表。即使应用程序有专用登录,也不是sa。
在不了解SAPs限制的情况下,我无法确定,但我们总是倾向于使用Windows身份验证和Windows Active Directory组。 SQL Server角色允许使用这些组。因此,所有管理都在AD级别完成。根据这些角色锁定数据库 - 即使应用程序具有SQL Server登录或域登录,它也将位于我们创建的数据库角色之一,适当地命名和授予权限。
答案 1 :(得分:0)
这是非常错误的,sa帐户不应该用于一般用途。
应使用单独的(特定于应用程序的)用户帐户,以便:
我也同意Cade Roux的评论。
答案 2 :(得分:0)
Cade ......我不相信你能够在Windows中为“应用程序”赋予角色......
我认为他意味着你将角色分配给用户,然后让应用程序使用该用户帐户。
所以你说的是,如果我有一个“MYDOMAIN / nick”的userId ...那么在AD中你会将MYDOMAIN / nick分配给一个组,其他人使用同一个应用程序,然后在SQL中服务器,您将该组添加到安全性并为其分配角色?
正确。
我担心的是,如果我使用MYDOMAIN / nick登录我的机器...将我的整个机器激活为“信任”到sql server(通过windows authenticatino)...这意味着我可以启动Visual Studio和开始构建我想要的任何应用程序并可能直接连接到数据库并执行我想要的任何内容...这也意味着我可以下载/安装的任何其他应用程序可能有权访问该数据库...正确吗?
是的,这是正确的。因为你(MYDOMAIN / nick)受到信任。 SQL Server不知道您在PC上运行的是什么。
然而,回到原来的问题,你正在谈论的程序不应该在MYDOMAIN / nick连接,它应该用用户名MYDOMAIN / mycustomprogram连接。这是此程序的用户帐户。您可以从您的PC运行该程序,但在这种情况下,它仍将使用用户名MYDOMAIN / mycustomprogram,而不是MYDOMAIN / nick。
然后,您可以在PC上安装第二个程序,然后使用第二个用户名对SQL服务器进行身份验证,例如: MYDOMAIN / mycustomprogram2
因此,在同一台PC上你会有:
在应用程序级别使用这些自定义用户名会覆盖AD身份验证。
这也意味着如果您遇到2个程序之一的问题,或者程序锁定用户帐户等,则很容易诊断。
我了解到SAP客户端会加密其连接信息并将其存储在注册表中。
你在谈论哪个部分的联系?我不知道有任何东西以这种方式存储。
这会回答你的问题吗?
请投票给有用的答案; - )
答案 3 :(得分:0)
我认为这实际上取决于您愿意提供/维护的安全级别。在SAP Business One中,创建新登录需要添加某些特权,例如向数据库和SBO-Common提供db_creator权限,或者访问读/写表以及对存储过程的特定访问,这是一种麻烦。
无论如何,为用户保留sa登录确实是一种不好的做法,但是您可以创建其他用户并在启动应用程序时更改登录用户。软件CD中有安装指南,您可以通过分步指南查看该信息。如果你没有,请问你的伴侣!