重庆思庄oracle技术分享-常用角色选项

18 阅读2分钟

常用角色选项 sql

-- 授予多个角色 ROLES = (CONNECT, RESOURCE, DBA)

-- 或自定义角色 ROLES = (PDB_ADMIN_ROLE, CONNECT)

角色 作用 是否必须 CONNECT 基本连接权限(CREATE SESSION) 通常需要 DBA 数据库管理员角色(全权) 可选,强大权限 PDB_DBA PDB 专属 DBA 角色(12c+) 推荐 RESOURCE 资源创建权限(表、序列等) 可选

为什么需要 ROLES 参数?······························································

  1. 简化管理

    避免 PDB 创建后再手动授权

    一键完成管理员用户的权限配置

  2. 安全控制 sql

-- 安全建议:使用最小权限原则 ROLES = (CONNECT, PDB_DBA) -- 而非完全 DBA

-- 限制权限 ROLES = (CONNECT) -- 仅能连接,无其他权限

  1. 应用容器特殊需求

对于 Application Container: sql

-- 应用容器的 ADMIN USER 需要特定权限管理应用 CREATE PLUGGABLE DATABASE app_container AS APPLICATION CONTAINER ADMIN USER app_admin IDENTIFIED BY password ROLES = (CONNECT, DBA); -- 通常需要 DBA 权限管理应用

实际执行流程·····················································································

  1. PDB 创建时自动执行 sql

-- Oracle 在创建 PDB 后内部执行类似: ALTER SESSION SET CONTAINER = appli; CREATE USER admini IDENTIFIED BY app_123; GRANT CONNECT TO admini; -- 其他必要权限...

  1. 验证结果 sql

-- 连接到新 PDB ALTER SESSION SET CONTAINER = appli;

-- 查看用户权限 SELECT * FROM dba_role_privs WHERE grantee = 'ADMINI';

-- 结果: -- GRANTEE GRANTED_ROLE ADMIN_OPTION DEFAULT_ROLE -- ADMINI CONNECT NO YES

重要注意事项···················································································

  1. 默认行为

    如果不指定 ROLES:用户只有 CREATE SESSION 权限

    可能需要后续手动授权更多角色

  2. 角色作用范围 sql

-- 这些角色是 PDB 本地角色 -- 不是 CDB 级别的公共角色 -- 只在当前 PDB 内有效

  1. 权限限制 sql

-- 不能授予 CDB 级别角色 ROLES = (CDB_DBA) -- 错误!CDB_DBA 是根容器角色

-- 不能授予不存在的角色 ROLES = (MY_CUSTOM_ROLE) -- 需确保角色已存在

  1. 后续管理 sql

-- 创建后可修改权限 ALTER SESSION SET CONTAINER = appli; GRANT RESOURCE TO admini; REVOKE CONNECT FROM admini; -- 如果需要