我有一个客户端-服务器应用程序,其中 .NET 客户端访问 SQL Server 2008 数据库中的所有数据和存储过程。
有没有办法保护所有这些数据,以便只有我创建和授权的用户才能访问这个特定的数据库?特别是用户“sa”浮现在脑海中。我不喜欢他访问我的所有数据。
我有一个客户端-服务器应用程序,其中 .NET 客户端访问 SQL Server 2008 数据库中的所有数据和存储过程。
有没有办法保护所有这些数据,以便只有我创建和授权的用户才能访问这个特定的数据库?特别是用户“sa”浮现在脑海中。我不喜欢他访问我的所有数据。
您不能阻止系统管理员访问数据,也不应该阻止。
但是,除了指定的 dba 之外,任何人都不应拥有 sa 帐户的密码。如果 sa 没有密码或很多人有密码,请立即更改。如果应用程序通过 sa 访问,请立即更改。
除此之外,您可以最好地限制访问权限是从表和视图中删除对所有其他帐户的访问权限(包括选择访问权限),并且只允许通过存储的过程进行 exec 访问。这样,除了指定的管理员之外的任何人都只能做存储过程所做的事情,而不能做其他事情。但是,如果您在应用程序或存储过程中使用了任何动态 sql,则无法执行此操作,这也是动态 sql 不是一个好主意的原因之一。
您不能阻止 sa 或其他系统管理员,因为访问整个系统对于他们的角色来说是不可或缺的。您可以尝试加密数据,使其在您的应用程序之外毫无意义,尽管它可能会使未来的任何报告需求变得复杂。