暂无图片
暂无图片
暂无图片
暂无图片
1
暂无图片

Oracle 23ai新特性—DB_DEVELOPER_ROLE

原创 Digital Observer 2024-09-09
106

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角色的一个重要补充,它提供了一个更加全面和细致的权限集,以支持现代数据库开发的需求。大家如果有什么见解,欢迎评论区交流!

欲知更多精彩内容,请关注下一期公众号!
20240829843b2ff5afa24080984a6139b9f68d42.jpg

最后修改时间:2024-09-09 21:20:36
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

IT邦德
暂无图片 暂无图片
7月前
评论
暂无图片 0
写的真好
7月前
暂无图片 点赞
评论