在实际项目中,可能存在其它系统需要访问我们自己系统数据的情况,但由于安全原因我们并不能把自己表内数据全部暴漏给别人,此时需要对表内数据做权限控制。
场景模拟
数据库用户TEST有一张 employee 表,表结构、测试数据如下:
其中每条数据都有一个 department_id ,此时有其它系统想要访问 employee 表中属于自己 department_id 的数据(比如:要查找 department_id = '001' 的数据)
解决方案:
1,在 TEST 中创建视图,该视图只能查看 department_id = '001' 的数据
2,创建一个新用户 SUBTEST ,授予该用户查看步骤1中新建视图的权限
3,新用户 SUBTEST 新建同义词 employee 指向步骤1中新建视图
实际操作
1,在 TEST 中创建视图 v_employee
查询看看
此时该视图已经满足了其它用户的数据访问需求
2,创建一个新用户 SUBTEST 并授权
grant SELECT on "TEST"."v_employee" to "SUBTEST";
grant CREATE SYNONYM to "SUBTEST";
SUBTEST 用户查询TEST 中视图 v_employee
此时 SUBTEST 已经可以查看到视图中的数据
3,新用户 SUBTEST 新建同义词 employee
4,测试结果
此时 SUBTEST 可以直接使用原表名查询数据,这个时候我们只需要将新建的 SUBTEST 用户和密码告诉其它系统,其它系统可以使用原表名查询自己需要的数据。
文章
阅读量
获赞