openGauss源码解析(190)
openGauss源码解析:安全管理源码解析(1)
第9章 安全管理源码解析
openGauss作为新一代自治安全数据库,提供了丰富的数据库基础安全能力,并逐步完善各类高阶安全能力。这些安全能力涵盖了访问登录认证、用户权限管理、审计与追溯及数据安全隐私保护等。本章节将围绕openGauss安全机制进行源码解读,以帮助数据库内核开发者在进行内核开发时正确地理解和使用安全功能接口,持续为产品提供安全保护能力,或基于当前安全能力进一步开发新的安全能力。
9.1 安全管理整体架构和代码概览
不同于数据库其他业务模块,安全管理模块并非逻辑集中的。安全管理模块中的安全能力是分散化的,在数据库整个业务逻辑的不同阶段提供对应的安全能力,从而构建数据库整体纵深安全防御能力。一个完整的安全管理整体架构如图9-1所示。
图9-1 openGauss安全机制体系
虽然整个安全机制是分散化的,但是每一个安全子模块都独立负责了一个完整的安全能力。如安全认证机制模块主要解决用户访问控制、登录通道安全问题;用户角色管理模块解决用户创建及用户权限管理问题。因此整体的安全管理体系架构的代码解读也将根据整个体系的划分来进行描述。
1. 认证机制
认证机制子模块在业务流程上主要包括认证配置文件管理、用户身份识别、口令校验等过程,其核心流程及接口定义如图9-2所示。
图9-2 openGauss安全认证代码接口
2. 用户角色管理
用户角色管理子模块在业务流程上主要包括角色创建、修改、删除、授权和回收。由于openGauss并未严格区分用户和角色,因此用户的管理与角色管理共用一套接口,仅在部分属性上进行区分。角色管理子模块涉及的功能及其对应的接口如图9-3所示。
图9-3 openGauss角色管理代码接口
3. 对象访问控制
对象访问控制子模块在业务流程上主要包括对象授权、对象权限回收以及实际对象操作时的对象权限检查,其核心流程及接口定义如图9-4所示。
图9-4 openGauss对象权限管理代码接口
4. 审计机制
审计机制子模块主要包括审计日志的创建和管理以及数据库的各类管理活动和业务活动的审计追溯。审计日志管理包括新创建审计日志、审计日志轮转、审计日志清理。审计日志追溯包括活动发生时的日志记录以及审计信息查询接口。其核心流程及接口定义如图9-5所示。
图9-5 openGauss审计线程(左)及审计日志记录(右)接口