在 IBM DB2 v.9 windows 上,当有人通过 Server\Administrator 用户连接到数据库时,DB2 数据库会自动接受并授予该用户的所有权限吗?但是,在某些情况下,服务器的环境管理员不需要查看数据库中的所有数据。那么如何防止管理员使用连接数据库呢?
5 回答
在 9.5 和更早版本上,这是不可能的,因为运行您的实例的帐户是 SYSADM。此外,管理员至少可以重置本地帐户密码并获得对它们的访问权限,从而使更改实例所有者帐户毫无用处。
但是,在 9.7 及更高版本上,实例所有者将无法再访问数据。一种选择是升级到 9.7。此外,您可以为应用程序使用的连接设置 AD 帐户。本地管理员不一定能够更改为这些凭据。
尽管如此,管理员最终还是可以访问(通常是未加密的)数据库文件。您可以主要改进安全性的管理方面。
我认为在正常情况下不可能仅仅因为管理员在sysadm
组中。
我能想到(但没有尝试过)的选项包括:
- 将 sysadm 组设置为其他内容(“db2 update dbm cfg using sysadm_group blah”)。执行此操作时检查文档以获取警告和陷阱,因为我确定有一些。
- 停止使用操作系统身份验证。使用不同的安全插件(仅限 8.2 及更高版本)。这会将身份验证和组移动到新位置(例如 LDAP 服务器)。然后,您只是不要将管理员添加到新位置,尤其是不要再次将管理员添加到 sysadm 组。
By default, DB2 databases are created with CONNECT
authority granted to public. If you want to restrict some users from connecting, you need to do
GRANT CONNECT ON DATABASE TO <user1>, <user2>, ...
Then revoke the CONNECT authority from PUBLIC
REVOKE CONNECT ON DATABASE FROM PUBLIC
嗯...很多次我尝试用这个命令撤销,但是当我通过管理员帐户连接到数据库时,DB2 将再次自动授予管理员权限。
我会再试一次以确保。
在 Windows 上,数据库管理器配置参数SYSADM_GROUP
控制谁拥有SYSADM
实例级别的权限。如果SYSADM_GROUP
为空(Windows 上的默认设置),则 DB2 将默认使用本地机器上的 Administrators 组。
要解决此问题,您可以在 Windows 中创建一个新组,然后修改 的值SYSADM_GROUP
以使用此新组。确保运行 DB2 服务的 ID 属于这个新组。进行此更改后,Administrators 组的成员将不再具有SYSADM
权限。
正如 Kevin Beck 所说,您可能还想查看CONNECT
对数据库的权限限制,因为默认情况下该CONNECT
权限被授予 PUBLIC。