我正在寻找确保访问存储在 SQL Server 数据库中的数据(通过存储过程访问的数据)的最佳方法)。
公司的用户分为3个实体,这些实体具有关联的 Windows安全组:G_SUBSIDIARY1
,G_SUBSIDIARY2
和G_HOLDING
。
每个应用程序都与 Windows安全组相关联:G_APPLICATION1
,G_APPLICATION2
,G_APPLICATION3
...
这些安全组主要用于控制对专用于每个实体和应用程序的共享文件夹的访问。
存储过程应根据谁请求数据来过滤数据。
作为访问表APPLICATION1_DATA
中数据的示例,您必须是组G_APPLICATION1
的成员。
并且根据您的实体,您将访问数据的不同子集(区分符是数据所属的实体的列)。
要申请授权,我想只依靠 Windows安全组,并使用IS_MEMBER
函数检查当前用户(通过 Windows身份验证进行身份验证)分别属于IS_MEMBER("COMPANY\G_APPLICATION1")
和IS_MEMBER("COMPANY\G_SUBSIDIARY1")
。
我看到的主要优点是只需要管理一个对象,并且如果以后添加或删除用户,则在数据库端是透明的。
但是我想知道这种方法是否有缺点,并且相反,如果使用这些安全组,使用 SQL Server角色是否会有一些优势。
它将增加一些维护以使其保持最新状态,但这可能是值得的...