我们使用 SQL Server 2008 并在 Active Directory (AD) 中设置权限。核心表中的每一行只能由有权查看每一行的人员查看。我可以在每一行上设置行级安全性(每行包含与 AD 组对齐的单个角色),但是我遇到以下问题:-
- 因为角色代表国家,所以我有 100 个角色。此外,我有一些用户可以访问多个角色......并且用户可以访问的多个角色没有一致地分组(即存在重叠):因此角色与用户是多对多的关系
在这种情况下(为了启用灵活的模型),我的第一直觉是为每个国家/地区创建一个 AD 组,然后在数据库角色中创建分组(对每个国家/地区进行分组)。然而,这将是一项维护开销 - 例如,有许多工作人员可以访问所有组,因此当一个国家/地区上线时,会创建一个新的 AD 组,这意味着我必须请求将这些用户添加为成员新的 AD 组(以及需要将新的全局用户添加到所有组中) - 我宁愿拥有一个可以全面访问的全局组。
有没有人遇到过这样的问题。基本上,如果我只有非常细粒度的 AD 组,我可以在数据库角色级别中容纳多对多,但是我宁愿拥有细粒度的 AD 组(对于那些需要细粒度权限的用户)以及用于这些用户的全局 AD 组需要访问所有行的用户(我只需要添加具有全局访问权限的用户)
根据您的描述,如果您有大量用户需要管理,那么创建第三方管理工具或使用身份管理工具来管理您的 AD 组和相应的 SQL 行级安全性将是一个很好的情况。
至于AD组,你想到的就是我也会做的,即
- 基于国家/地区的 100 个角色
- 所有国家/地区的 1 个角色 => 包含所有其他 AD 国家/地区组
创建一个工具(如果您有的话,最好是身份管理工具),
- 工具允许您手动将用户分配到他们的国家/地区
- 工具将国家/地区映射到相应的 AD 组(身份管理将立即提供此功能)
- 工具将国家/地区映射到相应的 SQL 行安全性
- 工具定期根据 AD 组和 SQL 安全性同步国家/地区(这是为了防止系统管理员手动将用户组分配给用户,身份管理也会将其开箱即用)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)