database - 授予 Oracle 用户只读到特定视图
问题描述
我正在尝试在Oracle Database 12c 标准版中创建一个新的数据库用户帐户,该帐户只能访问运行特定视图(我们称之为“MyApp.MyView”)。
我在主应用程序的架构下以管理用户的身份创建了一个视图。我创建了用户(详情如下),但它似乎能够查询应用程序架构中的任何表或视图。我只希望他们能够查询我所做的特定视图。这可以做到吗?
然后,使用 SQLDeveloper,我右键单击 MyView 并将权限授予 MyUser。我可以将其作为 MyUser 进行查询,但我也可以查询任何内容,但我不希望这样。
-- USER SQL
ALTER USER "MyUser"
DEFAULT TABLESPACE "USERS"
TEMPORARY TABLESPACE "TEMP"
ACCOUNT UNLOCK ;
-- QUOTAS
-- ROLES
ALTER USER "MyUser" DEFAULT ROLE "CONNECT";
-- SYSTEM PRIVILEGES
解决方案
下面创建一个具有查询另一个模式中的视图/表所需的最低权限集的用户。如果用户能够查询其他表/视图,那么他们必须通过其他授权或角色在其他地方获得授权。
create user MyUser identified by testpassword account unlock;
grant create session to MyUser;
grant read on MyApp.MyView to MyUser;
推荐阅读
- c - 为什么 __uint8_t 存在?
- google-drive-api - 谷歌驱动网址参数
- sql - SQL SELECT 语句不适用于 DELETE
- assembly - 16 位 8086 程序(bcc)小内存模型不适用于全局变量?
- amazon-web-services - AWS Lambda 多个触发器
- mongodb - MongoDB以数组作为输入查询下限/上限范围
- javascript - 无法读取未定义的属性“地图” - React Custom Hooks / useContext 一个有效/一个无效
- nestjs - 如何在 NestJS 中使用声明函数
- java - 改造调用 BASE_URL 的根 url 而不是完整的 BASE_URL
- google-cloud-platform - 谷歌云转发规则 http -> https 使用 terraform