我有一个客户机-服务器应用程序,其中.NET客户机访问SQL Server2008数据库中的所有数据和存储过程。
有没有办法保护所有这些数据,以便只有我创建和授权的用户才能访问这个特定的数据库?尤其是用户“sa”出现在脑海中。我不喜欢他访问我所有的数据。
发布于 2009-09-17 13:44:23
您不能阻止系统管理员访问数据,也不应该阻止。
但是,除指定的dba外,任何人都不应拥有sa帐户的密码。如果sa没有密码,或者很多人都有密码,那么现在就更改它。如果应用程序通过sa访问,请立即更改。
除此之外,限制访问的最佳方法是从表和视图中删除对所有其他帐户的访问权限(包括select访问权限),并仅允许通过存储的过程进行exec访问。这样,除了指定的管理员之外,任何人都只能做存储的proc所做的事情,而不能做其他的事情。但是,如果您在应用程序或存储过程中使用了任何动态sql,则不能这样做,这就是为什么动态sql不是一个好主意的原因之一。
发布于 2009-09-17 13:43:58
您不能阻止sa或其他系统管理员,因为对整个系统的访问与他们的角色密不可分。您可以尝试对数据进行加密,使其在应用程序之外变得毫无意义,尽管这可能会使未来的报告需求复杂化。
https://stackoverflow.com/questions/1438905
复制相似问题