#CDB中的用户与角色体系

当YashanDB部署为容器数据库(配置参数ENABLE_PLUGGABLE_DATABASE=TRUE)时,为了满足权限的集中管控和租户自治,将自定义创建的用户、角色以及用户配置文件划分为全局和本地两类。

另外,YashanDB内置了以下全局可用的系统用户、角色和用户配置文件。

  • 系统用户(预置用户):

    • 系统管理员:未开启三权分立时,负责数据库系统管理的超级管理员,拥有全部的权限;开启三权分立时,不具有审计、安全管理相关权限。用户名为SYS,初始密码在安装时指定,后续更新密码必须通过yaspwd工具生成和维护。

    • 安全管理员:负责管理数据库的安全机制,例如为其他账号授权。用户名为SECURITOR,初始密码为Cod-2022,首次登录时强制要求更新密码。

    • 审计管理员:负责管理数据库的审计机制,例如创建审计策略、跟踪分析审计日志等,负责追溯其他用户的行为,也包括监督DBA和安全管理员。用户名为AUDITOR,初始密码为Cod-2022,首次登录时强制要求更新密码。

  • 内置角色

    内置管理角色列表如下:

    角色名称 权限描述
    DBA * 未开启三权分立时:具有几乎所有权限(除SHUTDOWN)。
    * 开启三权分立时:权限受限制,无法对未授权的数据库对象(表、索引等)进行DML操作,无法进行GRANT、REVOKE等权限管理操作,具体的权限介绍请查阅三权分立
    AUDIT_ADMIN 具有管理数据库的审计机制的权限,例如创建审计策略、跟踪分析审计日志等。
    SECURITY_ADMIN 具有为其他账号授权、密钥管理、强制访问控制的权限。
    SYSDBA 具有执行SHUTDOWN、备份、BUILD(包括yasrman、yasbak备份工具)的权限。
    SYSOPER 只具有执行SHUTDOWN的权限。
    SYSBACKUP 只具有执行备份、BUILD(包括yasrman、yasbak备份工具)权限。

    将上表中的某个角色授权给一个普通用户后,该用户立即成为具备对应角色所包含的管理权限的管理员,例如被授予DBA角色的用户(简称“DBA用户”)即为数据库管理员。

    内置普通角色列表如下:

    角色名称 权限描述
    PUBLIC 默认无任何权限。
    所有用户都具有PUBLIC角色,为该角色授予的任何权限会将被所有用户拥有。
    请谨慎调整PUBLIC角色的权限,避免引发数据泄漏安全风险,或导致依赖该权限的业务无法进行。
    CONNECT 具有CREATE SESSION权限,赋予CONNECT角色的用户能够登录会话。
    RESOURCE 具有CREATE TABLE、CREATE SEQUENCE、CREATE PROCEDURE、CREATE TRIGGER、CREATE TYPE的权限。
    SELECT_CATALOG_ROLE 具有访问V$与GV$视图的权限。
    AUDIT_VIEWER 具有查看系统审计项视图的权限。
    LBAC_DBA 具有执行行访问控制设置的权限,赋予LBAC_DBA角色的用户能够执行行访问控制的各种设置。
    SYSKM 具有执行钱包操作的权限,赋予SYSKM角色的用户能够执行钱包相关的ADMINISTER KEY MANAGEMENT语句。
  • 内置用户配置文件

    内置的默认用户配置文件名称为DEFAULT,所有参数均为默认值。所有新创建的用户在未指定用户配置文件时默认关联到默认的用户配置文件,受其管控。

# 用户分类

自定义创建的用户可分为全局用户和本地用户。

  • 全局用户:对所有现存容器以及未来新建的PDB均可见的用户,在不同PDB中全局用户可以被授予不同的权限/角色,常用于整个CDB层面的统一运维、管理、审计、备份与恢复等。创建全局用户需连接根容器操作,用户名须以统一前缀标识(默认前缀为C##,可通过COMMON_USER_PREFIX参数修改)。

  • 本地用户:仅某个PDB独有的用户,创建本地用户须直连某个PDB操作,用户名不能采用全局用户的前缀字符串开头。

# 角色分类

自定义创建的角色可分为全局角色和本地角色。

  • 全局角色:对所有现存容器以及未来新建的PDB均可见且可用的角色。创建全局角色须连接根容器操作,角色名须以统一前缀标识(默认前缀为C##,可通过COMMON_USER_PREFIX参数修改)。

    在实际应用中,CDB管理员可以预先创建一系列权限划分明确的全局角色,便于后续进行统一的批量权限配置与管理,简化操作流程。例如,在任意PDB中创建新用户后,均可通过向该用户授予特定全局角色来高效完成授权操作,且只需更新某个全局角色的权限集,便可实现所有PDB中拥有该角色的用户权限的“一键”更新。

  • 本地角色:仅某个PDB独有的角色,便于PDB进行独立的个性化的权限配置与管理。创建本地角色须直连某个PDB操作,其名称不能采用全局角色的前缀字符串开头。

# 用户配置文件分类

为提高管理效率简化运维,自定义创建的用户配置文件可分为全局用户配置文件和本地用户配置文件。

  • 全局用户配置文件:对所有现存容器以及未来新建的PDB均可见且可用的用户配置文件。创建全局用户配置文件须连接根容器操作,其名称须以统一前缀标识(默认前缀为C##,可通过COMMON_USER_PREFIX参数修改)。

    在实际应用中,CDB管理员可以预先创建一系列配置明确的全局用户配置文件,便于后续进行统一的批量密码策略、会话资源以及IP黑白名单配置与管理,简化操作流程。例如,在任意PDB中创建新用户后,均可通过为该用户关联特定全局用户配置文件来高效完成相应配置,且只需更新某个全局用户配置文件的配置,便可“一键”更新所有PDB中关联该用户配置文件的用户的相应配置。

  • 本地用户配置文件:仅某个PDB独有的用户配置文件,便于PDB进行独立的个性化的配置与管理。创建本地用户配置文件须直连某个PDB操作,其名称不能采用全局用户配置文件的前缀字符串开头。

# 场景化权限实践

典型的用户与权限实践方案示例如下:

使用者身份 用户类型 职责 典型权限
SaaS平台DBA 全局用户(c##dba) 负责整个YashanDB系统的健康、备份、恢复、升级。 全局授予DBA、SYSBACKUP角色
SaaS平台审计员 全局用户(c##auditor) 审计所有PDB的行为。 全局授予AUDIT_VIEWER角色
PDB管理员 本地用户(tenant_admin) 负责管理自己PDB内的用户和业务权限。 目标PDB本地授予CREATE USER、CREATE ROLE角色
PDB业务用户 本地用户(app_user) 使用SaaS应用,访问自己PDB的数据。 目标PDB本地授予目标业务表的SELECT、INSERT等权限

# 运维操作的作用域

对全局用户、全局角色以及全局profile的运维管理,例如用户/角色的权限管理、修改profile中的相关的配置等,通常可根据操作场景或配置需求选择如下操作方式:

  • 全局生效:需连接根容器操作并指定container=all,此时执行结果将对根容器以及所有PDB生效。

  • 本地生效:连接目标PDB操作并省略container属性,此时执行结果将仅在执行容器生效。

但对全局用户执行以下操作时,必须连接根容器操作:

  • 更新密码

  • 使密码过期

edit-icon
反馈
coperate-icon
coperate
合作
communication-icon
communicate
交流