如何为模式创建特定的用户安全性?

问题描述 投票:0回答:1

我是一名初级 DBA,试图找出如何为特定帐户添加特定安全性。

因此,我们有一个数据库,允许分析师创建自己的表/视图并处理数据,而不会对现有的重要数据库产生影响。例如,每个用户将创建自己的视图/表,称为 User1.Address。 user2 可以创建一个与 User2.Address 同名的视图/表。

我怎样才能让用户1可以查看用户2创建的表,但不能更改或删除他们创建的表/视图?

sql sql-server database-administration
1个回答
0
投票

有两种主要方法可以在数据库中实现所需的安全级别:

  1. 授予视图的 SELECT 权限:

此方法涉及为每个用户的表创建视图,并将这些视图的 SELECT 权限授予需要查看数据的其他用户。这确保了数据分离,同时允许受控访问:

步骤:

创建视图:每个用户(User1、User2 等)使用所需的表数据创建自己的视图。 授予对视图的 SELECT 权限:使用如下命令向 User2 授予对 User1 视图的 SELECT 权限,反之亦然: SQL 将 User1_Address_View 上的选择授予给 User2;

  1. 授予带有WITH CHECK OPTION的SELECT:

此方法涉及使用WITH CHECK OPTION 子句授予原始表的 SELECT 权限。这允许用户查看数据,但限制他们修改表结构或删除不符合特定条件的数据:

步骤:

定义检查约束:在表上定义检查约束,根据您的需要限制数据。例如,检查约束可以确保特定用户对行的所有权。 授予带有WITH CHECK OPTION的SELECT:使用WITH CHECK OPTION子句将原始表的SELECT权限授予其他用户,使用如下命令: SQL 将 User1_Address 上的带检查选项的选择授予 User2;

© www.soinside.com 2019 - 2024. All rights reserved.