授予用户 select 列权限,条件是用户只能访问与其 id 列相关的列 - Oracle pl/sql
grant select column privileges to user on condition that users can only access column related to their id column - Oracle pl/sql
我得到了一些 tables:
Book(bookId, libraryId, bookName, bookType);
BookType(bookType, typeName);
库(LibrayId);
用户(UserId);
BookBorrowed(BorrowId, LibraryId, UserId);
BorrowDetail(BorrowId, bookId)
以及在 sqlDeveloper、C##DG.
中创建的用户
如何 GRANT privileges(select) ON BookBorrowed and User with UserId = 1(C##DG can only see and use SELECT the data on the 2 table 其 UserId 列为 1)?.
你们能给我举些例子吗?
非常感谢。
没有您可以授予或撤销的列级权限。您需要为这些类型的过滤器或限制实施虚拟专用数据库策略。看这里:https://docs.oracle.com/en/database/oracle/oracle-database/19/dbseg/using-oracle-vpd-to-control-data-access.html#GUID-06022729-9210-4895-BF04-6177713C65A7
正确的 Oracle 解决方案是 Virtual Private Database。
如果这不是一个选项,另一种方法是定义视图,例如:
create view userBookBorrowed
as select * from bookBorrowed bb
join users u on (u.userid = bb.userid)
where u.username = USER;
然后只授予用户访问视图的权限,而不是 table。
我得到了一些 tables:
Book(bookId, libraryId, bookName, bookType);
BookType(bookType, typeName);
库(LibrayId);
用户(UserId);
BookBorrowed(BorrowId, LibraryId, UserId);
BorrowDetail(BorrowId, bookId)
以及在 sqlDeveloper、C##DG.
中创建的用户如何 GRANT privileges(select) ON BookBorrowed and User with UserId = 1(C##DG can only see and use SELECT the data on the 2 table 其 UserId 列为 1)?.
你们能给我举些例子吗?
非常感谢。
没有您可以授予或撤销的列级权限。您需要为这些类型的过滤器或限制实施虚拟专用数据库策略。看这里:https://docs.oracle.com/en/database/oracle/oracle-database/19/dbseg/using-oracle-vpd-to-control-data-access.html#GUID-06022729-9210-4895-BF04-6177713C65A7
正确的 Oracle 解决方案是 Virtual Private Database。
如果这不是一个选项,另一种方法是定义视图,例如:
create view userBookBorrowed
as select * from bookBorrowed bb
join users u on (u.userid = bb.userid)
where u.username = USER;
然后只授予用户访问视图的权限,而不是 table。