2

我们使用的是 SQL Server 2008,并在 Active Directory (AD) 中设置了权限。核心表中的每一行只需要那些有权查看每一行的人才能查看。我可以在每一行上设置行级安全性(每一行包含一个与 AD 组对齐的角色),但是我有以下问题:-

  • 因为这些角色代表国家,所以我有 100 个角色。此外,我有一些用户可以访问多个角色......并且给定用户可以访问的几个角色没有一致地分组(即存在重叠):因此用户角色是多对多关系

在这种情况下(为了启用灵活的模型),我的第一反应是为每个国家创建一个 AD 组,然后在数据库角色中创建分组(对每个国家进行分组)。但是,这将是维护开销 - 例如,有许多工作人员可以访问所有组,因此当一个国家/地区上线时,会创建一个新的 AD 组,这意味着我必须请求将这些用户作为成员添加到新的 AD 组(以及需要将新的全局用户添加到所有组) - 我宁愿有一个可以全面访问的全局组。

有没有人遇到过这种问题。基本上,如果我只有非常精细的 AD 组,我可以在数据库角色级别内容纳多对多,但是我宁愿拥有精细的 AD 组(对于那些需要精细权限的用户)以及用于那些的全局 AD 组需要访问所有行的用户(我只需要添加具有全局访问权限的用户)

4

2 回答 2

2

根据您的描述,如果您有大量用户需要管理,那么创建第三方管理工具或使用身份管理工具来管理您的 AD 组和相应的 SQL 行级安全性将是一个很好的情况。

至于广告组,你想到的我也会做,即

  • 基于国家/地区的 100 个角色
  • 所有国家/地区的 1 个角色 => 包含所有其他 AD 国家/地区组

创建一个工具(如果你有一个理想的身份管理工具),

  • 工具允许您手动将用户分配到他们的国家
  • 工具将国家/地区映射到其相应的 AD 组(身份管理将具有此开箱即用)
  • 工具将国家/地区映射到其相应的 SQL 行安全性
  • 工具定期将国家与 AD 组和 SQL 安全同步(这是为了防止系统管理员手动将用户组分配给用户,身份管理再次将其开箱即用)
于 2013-02-04T12:42:10.747 回答
1

我完成的是:-

  • 每个国家创建一个数据库组(大约 100 个)
  • 为每个分组创建一个数据库组(GLOBAL、EUROPE、APAC、LATINAMERICA、NORTHAMERICA、UK 等)
  • 创建包含所需级别用户的 AD 组(只需要 12 个)
  • 将 AD 组添加为相应数据库角色的成员
  • 在他们所在的各个国家和群体之间创建数据库角色父子关系;例如。英国在欧洲(注意这里允许多对多)
  • 为组中的组创建数据库角色父子关系(注意这里允许多对多)

一些注意事项:-

  • 这里添加的每个数据库角色都需要是数据库用户
  • 当创建数据库角色关系时,所有相关的数据库角色和 AD 组也被引入该关系
  • 现在我可以根据需要在 AD 组级别或单个国家/地区 AD 组级别添加用户
  • 数据库角色和任何关系都是脚本化的
  • IS_MEMBER 子句位于各个国家/地区级别
于 2013-03-17T11:13:19.213 回答