Oracle Database 23c 中的 DB_DEVELOPER_ROLE
是一个新角色,为数据库开发者提供了必要的基本角色和权限。这个角色比传统的 CONNECT
和 RESOURCE
角色更全面,提供了与最小权限原则相符的权限集,以增强应用程序开发过程中的安全性。
关于 DB_DEVELOPER_ROLE
的一些关键点包括:
- 它包括构建数据模型所需的系统权限和监控及调试应用程序所需的对象权限。
- 它可以在容器数据库(CDB)根或可插拔数据库(PDB)中使用。
- 它启用了如
SODA_APP
(用于处理 JSON 集合)和CTXAPP
(用于创建和删除 Oracle Text 首选项)等角色。
对于数据库开发者来说,这个角色简化了分配必要权限的过程,并通过避免使用 DBA
角色时可能出现的权限过度配置,坚持了安全最佳实践。
执行DB_DEVELOPER_ROLE角色的授予和撤销
要将DB_DEVELOPER_ROLE
授予其他用户或角色,请使用GRANT
语句,就像授予任何角色一样。例如:
GRANT DB_DEVELOPER_ROLE TO shjw;
复制
检查授权状态:
SELECT GRANTED_ROLE FROM DBA_ROLE_PRIVS WHERE GRANTEE='shijw';
复制
撤销DB_DEVELOPER_ROLE角色:
REVOKE DB_DEVELOPER_ROLE FROM pfitch;
复制
对比CONNECT、RESOURCE和DEVELOPER
以下三个部分显示与每个角色相关联的系统、角色和对象权限。
CONNECT角色:
SQL> variable v_role VARCHAR2(30)
SQL> exec :v_role := 'CONNECT';
PL/SQL procedure successfully completed.
SQL>
SQL>
-- System Privileges
SQL> SQL> select sp.privilege
2 from dba_sys_privs sp
3 where sp.grantee = :v_role
4 order by 1;
PRIVILEGE
----------------------------------------
CREATE SESSION
SET CONTAINER
SQL> -- Role Privileges
SQL> select rp.granted_role
2 from dba_role_privs rp
3 where rp.grantee = :v_role
4 order by 1;
no rows selected
SQL> -- Object Privileges
SQL> column privilege format a30
column table_name format a30
SQL> SQL>
SQL> select tp.privilege, tp.table_name
from dba_tab_privs tp
2 3 where tp.grantee = :v_role
4 order by 1, 2;
no rows selected
复制
RESOURCE 角色:
以下是与 RESOURCE 角色关联的系统、角色和对象权限。与 19c 相比,23ai 中向 RESOURCE 角色授予的系统权限多了 7 个。
SQL> variable v_role VARCHAR2(30)
SQL> exec :v_role := 'RESOURCE';
PL/SQL procedure successfully completed.
SQL>
SQL>
SQL> -- System Privileges
SQL> select sp.privilege
2 from dba_sys_privs sp
3 where sp.grantee = :v_role
order by 1; 4
PRIVILEGE
------------------------------
CREATE ANALYTIC VIEW
CREATE ATTRIBUTE DIMENSION
CREATE CLUSTER
CREATE HIERARCHY
CREATE INDEXTYPE
CREATE MATERIALIZED VIEW
CREATE OPERATOR
CREATE PROCEDURE
CREATE PROPERTY GRAPH
CREATE SEQUENCE
CREATE SYNONYM
PRIVILEGE
------------------------------
CREATE TABLE
CREATE TRIGGER
CREATE TYPE
CREATE VIEW
15 rows selected.
SQL> -- Role Privileges
SQL> select rp.granted_role
2 from dba_role_privs rp
3 where rp.grantee = :v_role
4 order by 1;
GRANTED_ROLE
--------------------------------------------------------------------------------
SODA_APP
SQL> -- Object Privileges
SQL> column table_name format a30
SQL>
SQL> select tp.privilege, tp.table_name
2 from dba_tab_privs tp
3 where tp.grantee = :v_role
4 order by 1, 2;
no rows selected
SQL>
复制
以下为19c的信息:
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
SQL> variable v_role VARCHAR2(30)
SQL> exec :v_role := 'RESOURCE';
PL/SQL procedure successfully completed.
SQL> SQL>
SQL> -- System Privileges
SQL> select sp.privilege
2 from dba_sys_privs sp
3 where sp.grantee = :v_role
4 order by 1;
PRIVILEGE
----------------------------------------
CREATE CLUSTER
CREATE INDEXTYPE
CREATE OPERATOR
CREATE PROCEDURE
CREATE SEQUENCE
CREATE TABLE
CREATE TRIGGER
CREATE TYPE
8 rows selected.
SQL> -- Role Privileges
SQL> select rp.granted_role
2 from dba_role_privs rp
3 where rp.grantee = :v_role
4 order by 1;
GRANTED_ROLE
--------------------------------------------------------------------------------
SODA_APP
SQL> -- Object Privileges
SQL> column table_name format a30
SQL>
SQL> select tp.privilege, tp.table_name
2 from dba_tab_privs tp
3 where tp.grantee = :v_role
4 order by 1, 2;
no rows selected
SQL>
复制
DB_DEVELOPER_ROLE 角色:
以下是与 DB_DEVELOPER_ROLE 角色关联的系统、角色和对象权限。
SQL> variable v_role VARCHAR2(30)
SQL> exec :v_role := 'DB_DEVELOPER_ROLE';
PL/SQL procedure successfully completed.
SQL>
SQL>
SQL> -- System Privileges
SQL> select sp.privilege
2 from dba_sys_privs sp
3 where sp.grantee = :v_role
4 order by 1;
PRIVILEGE
------------------------------
CREATE CUBE
CREATE CUBE BUILD PROCESS
CREATE CUBE DIMENSION
CREATE DIMENSION
CREATE DOMAIN
CREATE JOB
CREATE MINING MODEL
CREATE MLE
CREATE SESSION
DEBUG CONNECT SESSION
EXECUTE DYNAMIC MLE
PRIVILEGE
------------------------------
FORCE TRANSACTION
ON COMMIT REFRESH
13 rows selected.
SQL> -- Role Privileges
SQL> select rp.granted_role
from dba_role_privs rp
2 3 where rp.grantee = :v_role
4 order by 1;
GRANTED_ROLE
--------------------------------------------------------------------------------
CTXAPP
RESOURCE
SQL> -- Object Privileges
SQL> column privilege format a30
SQL> column table_name format a30
SQL>
SQL> select tp.privilege, tp.table_name
2 from dba_tab_privs tp
3 where tp.grantee = :v_role
4 order by 1, 2;
PRIVILEGE TABLE_NAME
------------------------------ ------------------------------
EXECUTE DBMS_REDACT
EXECUTE DBMS_RLS
EXECUTE DBMS_TSDP_MANAGE
EXECUTE DBMS_TSDP_PROTECT
EXECUTE JAVASCRIPT
READ V_$PARAMETER
READ V_$STATNAME
SELECT DBA_PENDING_TRANSACTIONS
8 rows selected.
SQL>
复制
总的来说,DB_DEVELOPER_ROLE角色是为了提高数据库开发的安全性和效率而设计的,它确保了开发者能够在一个更安全、更高效的环境中工作。这个角色是对传统 CONNECT和RESOURCE角色的一个重要补充,它提供了一个更加全面和细致的权限集,以支持现代数据库开发的需求。大家如果有什么见解,欢迎评论区交流!
欲知更多精彩内容,请关注下一期公众号!
最后修改时间:2024-09-09 21:20:36
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
写的真好
7月前

评论
相关阅读
Oracle RAC 一键安装翻车?手把手教你如何排错!
Lucifer三思而后行
574次阅读
2025-04-15 17:24:06
【纯干货】Oracle 19C RU 19.27 发布,如何快速升级和安装?
Lucifer三思而后行
521次阅读
2025-04-18 14:18:38
Oracle SQL 执行计划分析与优化指南
Digital Observer
479次阅读
2025-04-01 11:08:44
墨天轮个人数说知识点合集
JiekeXu
467次阅读
2025-04-01 15:56:03
XTTS跨版本迁移升级方案(11g to 19c RAC for Linux)
zwtian
463次阅读
2025-04-08 09:12:48
【ORACLE】记录一些ORACLE的merge into语句的BUG
DarkAthena
446次阅读
2025-04-22 00:20:37
Oracle数据库一键巡检并生成HTML结果,免费脚本速来下载!
陈举超
446次阅读
2025-04-20 10:07:02
【ORACLE】你以为的真的是你以为的么?--ORA-38104: Columns referenced in the ON Clause cannot be updated
DarkAthena
423次阅读
2025-04-22 00:13:51
Oracle 19c RAC更换IP实战,运维必看!
szrsu
408次阅读
2025-04-08 23:57:08
【活动】分享你的压箱底干货文档,三篇解锁进阶奖励!
墨天轮编辑部
395次阅读
2025-04-17 17:02:24