海量 1 需求 oracle加密函数

1 简介 1.1 目的 早期版本的oracle提供一个包含多个加密函数的包,用户可通过SQL语法调用加密函数,实现数据加密功能。本文主要介绍以下几点: oracle加密包的功能与使用方法 vastbase实现oracle加密包 vastbase加密包的功能与使用方法 本文档可指导开发者、测试者熟悉vastbase加密包特性的功能场景。 本文档的内容已被上传至tapd,tapd上,排版更好看,测试用例更方便复制。建议直接从tapd上查看本文档原文: https://www.tapd.cn/60475194/markdown_wikis/show/#1160475194001007194 1.2 适用范围 vastbase 3.0.8及之后版本。 1.3 术语定义、首字母缩写词和缩略语 DES:Data Encryption Standard,数据加密标准,一种早期通用的加密算法 3DES:Triple DES,基于DES演进的一种早期通用的加密算法 MD5:Message-Digest Algorithm,一种早期通用的数据摘要算法 1.3 参考资料 oracle dbms_obfuscation_toolkit 函数介绍:https://docs.oracle.com/cd/A97630_01/appdev.920/a96590/adgsec04.htm oracle dbms_obfuscation_toolkit 函数参数:https://docs.oracle.com/cd/B10500_01/appdev.920/a96612/d_obtoo2.htm tapd上,本需求文档: https://www.tapd.cn/60475194/markdown_wikis/show/#1160475194001007194 tapd上,本需求的测试用例: https://www.tapd.cn/60475194/markdown_wikis/show/#1160475194001007197 2 支持oracle加密插件dbms_obfuscation_toolkit 2.1 功能简述 早期版本oracle提供7个内置加密函数。早在4年或更早之前的旧版本vastbase中,也提供7个与oracle一致的加密函数,这7个函数,函数名、函数入参与oracle一致,但是,6个函数输出、15个函数参数约束与oracle不一致,本特性将重构这些加密函数,确保函数的输出、约束等与oracle一致。 一、基础知识 加密的原理 加密算法有很多种,不同场景中,适合的加密算法类型不同。对存储数据加密,通常采用对称密码算法,此处主要介绍对称密码算法: 加密原理:输入1个明文,输入1个密钥,对明文和密钥进行一些可逆的运算(比如异或,代换),可得到1个密文。密钥通常是随机生成的 加密算法:DES算法,发布于1977年,已确定为不安全加密算法。3DES算法,调用3次DES算法,生成3个密钥,安全性与DES差别不大,也属于不安全的加密算法。AES算法,发布于2001年,通用的国际标准,替代不安全的DES算法 数据库加密函数 几乎所有数据库,都提供内置加密函数,让用户通过SQL语句调用。最典型的场景如下: -- 假设,数据库提供函数encrypt(明文,密钥,加密算法),输出为密文 -- 用户想表't1'中存储数据'shenkun',则存储的语法如下:(用户自己保管密钥) INSERT INTO t1 VALUES (encrypt('shenkun', '一串随机的密钥', 'aes')); 二、Oracle加密包 早期版本的oracle中,包含1个名为dbms_obfuscation_toolkit的包,提供7个函数,主要实现加密、解密等功能: 版本信息:oracle 8i版本开始提供,oracle 10g版本开始不被推荐使用,由dbms_crypto代替,oracle 21c版本正式移除 函数列表: 生成随机数:desgetkey(seed) -> key 加密:desencrypt(input, key) -> encrypted_data 解密:descdecrypt(input, key) -> decrypted_data 生成随机数:des3getkey(which=>0, seed) -> key 加密:des3encrypt(input, key, which=>0, iv=>012345678abcdef) -> encrypted_data 解密:des3decrypt(input, key, which=>0, iv=>012345678abcdef) -> decrypted_data 哈希:md5(input) -> checksum 函数参数:函数参数有2种数据类型:varchar2, raw。与raw类型相比,如果是varchar2类型,参数名需加上_string后缀。比如,raw类型的入参名为input,则varcha2类型入参名为input_string 函数限制: desgetkey:seed长度最短为80字节 desencrypt:input长度是8字节的整数倍;key最短为8字节,超过8字节的部分被丢弃 descdecrypt:input长度是8字节的整数倍;key最短为8字节,超过8字节的部分被丢弃 des3getkey: seed长度最短为80字节 des3encrypt:input长度是8字节的整数倍;which为0时,key最短为16字节,超过16字节的部分被丢弃;which为1时,key最短为24字节,超过24字节的部分被丢弃 des3dencrypt:input长度是8字节的整数倍;which为0时,key最短为16字节,超过16字节的部分被丢弃;which为1时,key最短为24字节,超过24字节的部分被丢弃 md5:无 参考文档 函数介绍:函数背景、注意事项等:https://docs.oracle.com/cd/A97630_01/appdev.920/a96590/adgsec04.htm 函数参数:参数类型、调用示例等:https://docs.oracle.com/cd/B10500_01/appdev.920/a96612/d_obtoo2.htm 以下是上述函数的调用示例: ...

February 19, 2025 · 10 min · 1956 words · Me

海量 2 需求 profile

1 简介 1.1 目的 vastbase与oracle都支持设置运行参数: vastbase:支持设置集群级guc参数,例如,guc参数failed_login_attempts用于设置’用户密码错误多少次后锁定账户’,该参数对集群中所有用户(非初始用户)都有效。 oracle:也支持failed_login_attempts参数,但是oracle支持为不同用户设置不同的failed_login_attempts值。我们且将此类参数称为用户级参数。 与oracle相比,vastbase的guc参数功能存在2个差异: 作用范围:oracle支持设置用户级参数,vastbase大部分参数都是集群级guc参数 参数个数:23版本的oracle支持18个用户级参数,其中6个可在vastbase找到对应的guc参数 参数取值:vastbase中,6个guc参数的取值范围与oracle profile不同 本文主要介绍以下几点: oracle用户级参数的个数、设置方法 vastbase中对应集群级guc参数的个数、设置方法 vastbase新需求:尽量实现与oracle一致的用户级guc参数 本文档可指导开发者、测试者熟悉vastbase用户级guc配置参数特性 本文档的内容已被上传至tapd,tapd上,排版更好看,测试用例更方便复制。建议直接从tapd上查看本文档原文: https://www.tapd.cn/60475194/markdown_wikis/show/#1160475194001007196 1.2 适用范围 vastbase 3.0.8及之后版本,vastbase用户级参数profile特性接口设计、使用指导等。 1.3 术语定义、首字母缩写词和缩略语 GUC:Grand Unifed Configuralion,postgresql和vastbase的配置参数 1.3 参考资料 原始需求: https://www.tapd.cn/60475194/prong/stories/view/1160475194001074627 tapd上本需求文档链接: https://www.tapd.cn/60475194/markdown_wikis/show/#1160475194001007196 tapd上6个与密码相关的guc参数的使用参考: https://www.tapd.cn/60475194/markdown_wikis/show/#1160475194001007200 oracle 23 profile语法以及相关参数: https://docs.oracle.com/en/database/oracle/oracle-database/23/sqlrf/CREATE-PROFILE.html mysql 8.0 create user语法以及相关参数: https://mysql.net.cn/doc/refman/8.0/en/create-user.html mysql 配置参数列表:https://mysql.net.cn/doc/refman/8.0/en/server-system-variable-reference.html vastbase g100 create user语法以及相关参数: https://docs.vastdata.com.cn/zh_CN/VastbaseG100/V3.0.8/1/6a4766151e29496b9f88cd2d9dd3db2e 2 支持oracle用户级配置profile 2.1 功能简述 【需求来源】桂林银行 需求链接:https://www.tapd.cn/60475194/prong/stories/view/1160475194001074627 需求描述:桂林银行客户指出,目前对于数据库用户的管理方式不够便捷,无法像oracle profile方式为用户赋予一组安全策略。一些属性如密码有效期、密码过期天数、密码尝试次数等也只能全局设定,无法指定用户配置。- 需求范围:桂林银行使用的数据库兼容模式包括oracle和mysql两种兼容模式。 【需求背景】oracle 23的profile功能 通俗来讲,oracle的profle可理解为细粒度的配置参数。1个profile包含1组配置参数,不同用户可使用不同的profile。按上述例子,要单独控制某个用户的密码有效期,操作步骤如下: 创建用户 CREATE USER u1 IDENTIFIED BY "u1.1234"; 创建profile,同时设置用户级参数 此处,以设置密码有效期参数为例: CREATE PROFILE pro1 LIMIT FAILED_LOGIN_ATTEMPTS 10; 设置用户u1使用profile pro1 ...

February 19, 2025 · 11 min · 2197 words · Me

海量 3 需求 pg_hba.conf加密

1 需求背景 客户使用vb什么版本? 2215 客户的要求: 2 需求分析 2.1 适配点 在使用vastbase的多个阶段,都可能涉及pg_hba.conf 编译安装 初始化 升级 配置 gs_guc修改pg_hba 手动编辑pg_hba 启动 运维 pg_backup pg_rewind vb_ctl restart 2.2 代码流程 编译 初始化 main # initdb.cpp canonicalize_path # PGDATA find_other_exec # 在gs_initdb bin目录下,查找gaussdb bin # 在$GAUSSHOME/share/postgrsql目录下,检查以下文件是否存在 check_input('postgres.bki, postgres.description, pg_hba.conf.sample, postgresql.conf.sample, ..., system_views.sql, ...') check_locale_encoding init_log gs_getenv_r('GAUSSLOG') canonicalize_path('$PGDATA/PG_VERSION') fprintf(PG_MAJORVERSION = '9.2') setup_config readfile("postgresql.conf.sample") readfile("pg_hba.sample") writefile("pg_hba.conf") bootstrap_template1 write_version_file setup_auth get_set_pwd setup_depend load_plpgsql setup_sysviews 升级 配置 启动 pg_ctl 运行 PostmasterMain # postmaster 线程 InitializeGUCOptions getopt_r load_hba # 加载hba ServerLoop ConnCreate StreamConnection BackendStartup PostgresMain # postgres 线程 InitBackendWorker InitSession CheckAuthentication PerformAuthentication port->protocol_config->fn_authenticate ClientAuthentication hba_getauthmethod check_hba g_instance.libpq_cxt_comm_parsed_hba_lines # 读取缓存的hba if init_user: get_default_auth_method else: check_hostname sendAuthRequest recv_and_check_password_packet # 接收客户端的password crypt_verify for (;;) ReadCommand exec_simple_query('SQL') SIGHUB_handler load_hba 运维 ...

April 1, 2025 · 2 min · 217 words · Me

海量 3 需求 oracle resource

| -| -| -| -| -| -| -| | 1 | FAILED_LOGIN_ATTEMPTS | [1, max] unlimited | failed_login_attempts | [1,1000] | 认证类 | 登录数据库时,如果密码错误次数超过<本参数>,则账号会被锁定,短期内无法再登录 | | 2 | PASSWORD_LOCK_TIME | [1, max] unlimited | password_lock_time | [1,525600]min | 认证类 | 如果因密码错误次数过多,导致账号被锁,将锁定<本参数>的时间 | | 3 | PASSWORD_LIFE_TIME | [1, max] unlimited | password_effect_time | [30,36500]day | 认证类 | 设置或更新用户密码时,超过<本参数>的时间,密码会过期(oracle与vastase表现不同) | | 4 | PASSWORD_GRACE_TIME | - | - | - | 认证类 | 如果密码过期,在<本参数>的时间内,密码仍可使用 | | 5 | PASSWORD_REUSE_TIME | [1, max] unlimited | password_reuse_time | [30, 90]day | 认证类 | 用户设置密码时,如果密码在过去的<本参数>的时间内别用过,则密码不能复用,opengauss [0,3650] | | 6 | PASSWORD_REUSE_MAX | - | password_reuse_max | [1,100] | 认证类 | 用户设置密码时,如果密码已被重复使用过<本参数>的次数,则密码不能复用 | | 7 | INACTIVE_ACCONT_TIME | - | - | - | 认证类 | 如果一个账号在<本参数>的时间内,未登录过,则锁定账号 | | 8 | PASSWORD_VERIFY_FUNCTION | - | - | - | 认证类 | 用户设置密码时,调用<本参数>指定的函数,检查密码是否符合要求 | | 9 | PASSWORD_ROLLOVER_TIME | - | - | - | 认证类 | 新旧密码滚动更新天数 | | 10 | SESSIONS_PER_USER | - | - | - | 资源类 | 1个用户可建立的最大连接数 | | 11 | CPU_PER_SESSION | - | - | - | 资源类 | 1个连接可使用CPU时间数 | | 12 | CPU_PER_CALL | - | - | - | 资源类 | 1个调用(比如1个SQL)可使用CPU时间数 | | 13 | CONNECT_TIME | - | - | - | 资源类 | 1个连接可持续的时间 | | 14 | IDLE_TIME | [1, max] unlimited | session_timeout | [0,86400] | 资源类 | 1个连接空闲时间限制 | | 15 | LOGICAL_READS_PER_CALL | - | - | - | 资源类 | 1次调用(比如1个SQL)允许读写的page数量 | | 16 | LOGICAL_READS_PER_SESSION | - | - | - | 资源类 | 1个连接允许读取的page数量 | | 17 | PRIVATE_SGA | - | - | - | 资源类 | 1个连接可使用的共享内存空间大小 | | 18 | CONPOSITE_LIMIT | - | - | - | 资源类 | 1个连接可可使用的总资源:按cpu时间、连接时间、page读写数等加权求和 | ...

March 24, 2025 · 2 min · 317 words · Me

海量 4 需求 scram-sha256

深信服支持pg scram-sha256需求 需求目标 本需求的根本目标时,当vastbase server要求使用sha256算法进行身份认证时,postgresql client能与vastbase server建立连接。 该需求目前仅合入深信服分支 需求分析 身份认证的详细流程有点复杂,此处简要概述为2个阶段: 标识:新建用户时,server计算并存储密码哈希值 鉴别:用户登录时,server向client发送计算密码哈希值的关键信息,client计算并向server发送密码哈希值,server校验其是否符合存储的值 vastbase和postgresql对比,server计算密码哈希值的算法不同,server向client发送关键信息也不同。为解决pg-client能够连接vb-server的问题,需解决问题如下: vb-server计算并存储与pg-server一致的密码哈希值 vb-server向pg-client发送密码哈希值关键信息时,需要pg-server一致 postgreql的标识与鉴别机制,符合标准RFC-5802,涉及的算法与协议,本文统一称为scram-sha256。vastbase涉及的算法与协议,本文统一称为sha256。 需求实现 密码存储:新建用户时,修改存储用户密码的值 修改前:guc参数password_encrypt_type,取值1时,vb-server存储密码的[sha256, md5]值;取值为2时,存储密码的[sha256]值 SELECT rolpassword FORM pgauthid; -- 示例:长度为209 rolpassword -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- sha256af99537f242c661a88acea99ac626a2cf8fe196ac5671db6f02ed6818b420cf84e7ada61d66602c6eb5bf4ced40911d3f51865959784ebc3b0d385ca4c08f3398f05e16268fe9acc95a2d662bf5033b15d53abd1f835c1a3f1e96343a5cbf800ecdfecefade 修改后:guc参数password_encrypt_type,取值1时,vb-server存储密码的[sha256, md5, scram-sha256]值;取值为2时,存储密码的[sha256, scram-sha256]值 SELECT rolpassword FORM pgauthid; -- 示例:长度342 (新增长度:133) rolpassword -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- sha256af99537f242c661a88acea99ac626a2cf8fe196ac5671db6f02ed6818b420cf84e7ada61d66602c6eb5bf4ced40911d3f51865959784ebc3b0d385ca4c08f3398f05e16268fe9acc95a2d662bf5033b15d53abd1f835c1a3f1e963SCRAM-SHA-256$4096:sp5V1hrLKzLsS4HtQgqTuA==$QO/UVdrXxIypzBEGqEuIWe96A80elghFQs25ZbdPsLg=:J4lPXmXPANtTMOkaHokMjmM19K1Di7fU6WRWuZ5VmS0= 认证协议:用户登录时,修改向客户端发送的密码哈希值关键信息 修改前: # 身份认证协议 1. client <-> server : tcp connect 2. client --> server : send [消息类型:0, 协议版本:3.51,连接参数:user_name, databse, ...] 3. server --> client : send [消息类型:R, 哈希算法:10, 系统表存储的密码的算法:2, 计算密码哈希关键信息:salt,token,iteration] 4. client <-> server : # 省略3次交互 修改后: ...

April 3, 2025 · 6 min · 1256 words · Me

海量 5 需求 G100审计

1 简介 1.1 目的 审计特性: 功能:收集数据库内的关键事件,例如启动集群、创建对象、查询数据等,根据事件生成与存储审计日志,向用户提供审计日志查询接口。 必要:从客户角度,使用审计特性,主要目的包括:合法合规、安全监控、事故调查等。从内核角度,为满足信创要求,数据库需达到CC标准,在CC标准中,对审计功能提出多项要求。 问题:G100审计特性存在多处设计缺陷,导致功能问题多、性能低、易用性差、可维护性差、可扩展性差等。到目前为止,其中累计识别50+缺陷,仍具有30+未识别缺陷。 历史:openGauss早期版本,华为以色列团队开发审计特性,交付标准为基本功能可用,与商用标准差距大。G100早期版本,由openGauss引入审计特性。在之后版本,G100进行多轮迭代。 本需求的目标是重构审计特性,解决功能、性能、易用性、可维护性、可扩展性等问题,使审计特性达到大规模商用的标准。 1.2 适用范围 G100 3.0.8 psu5以及之后版本 1.3 术语定义、首字母缩写词和缩略语 暂无 1.3 参考资料 原始需求:https://www.tapd.cn/tapd_fe/60475194/story/detail/1160475194001083526 国标查询下载网站: https://openstd.samr.gov.cn/bzgk/gb/index CC标准 《GB/T 20009-2019 信息安全技术 数据库管理系统安全评估准则》 《GB/T 20273-2019 信息安全技术 数据库管理系统安全技术要求》 信创标准 《SJ/T 11939-2024 安全可靠 集中式事务型数据库技术要求》 《T/AIA 016—2023信创产品测评 通用要求》 等保标准 《GB/T 25070-2019》信息安全技术 网络安全等级保护安全设计技术要求》 数据库政府采购标准:https://jx.mof.gov.cn/xxgk/zhengcefagui/202401/t20240105_3925117.htm 标准原文:微盘:https://drive.weixin.qq.com/s?k=AHUAfwdSAA87Z01xB G100审计特性:https://docs.vastdata.com.cn/zh_CN/VastbaseG100/V3.0.8/1/2f4fb0e4adcc49f8b19dd4710f2a6549 G100审计历史客户需求:https://www.tapd.cn/tapd_fe/60475194/story/list?sort_name=created&order=&useScene=storyList&groupType=&conf_id=1160475194001046742&queryToken=fe85cdfc29d23bba423905c15d72d127&page=1 Oracle审计特性:https://docs.oracle.com/en/database/oracle/oracle-database/23/dbseg/part_6.html 开源组件pgaudit:https://www.modb.pro/db/105894 需求分析与整理文档:语雀:https://www.yuque.com/u57264336/oav5h4/tkhcgdilcbpuqm09 2 G100审计功能重构 2.1 功能简述 一、需求背景:审计特性 审计目的:记录数据库内的各种事件,事件包括: 启动、恢复、切换、停止集群 登录、注销账号 创建、修改、删除数据库对象,包括:DATABASE、SCHEMA、TABLE等 插入、更新、删除、查询关系表 … 描述事件:每个事件中,有3个关键要素:<主体><操作><客体> 主体:一般是数据库用户 客体:集群、账号、DATABASE、SCHEMA、TABLE、FUNCTION等 操作:不同的客体,涉及的操作不一样。比如,对于TABLE,操作有:CREATE, INSERT, SELECT等。 审计日志:针对每个事件,收集与主体、操作、客体有关的信息,封装为1条审计日志。通常,1条审计日志中,包括的信息如下: 主体相关:用户名、客户端IP、会话ID等 操作相关:操作的类型、操作的时间、触发操作的SQL语句等 客体相关:客体类型、客体名称、客体属于哪个database、客体属于哪个schema 审计特性:为实现审计功能,在数据库内核中,需实现以下功能: 配置范围:对用户提供接口,配置需审计的事件范围 收集事件:在内核关键代码节点,发现事件,例如:登录用户、创建对象、查询数据等,收集主体、操作、客体相关信息 生成日志:按统一格式组织事件信息,生成审计日志 存储日志:将审计日志存储至磁盘 查询日志:对用户提供接口,查询日志 二、需求背景:G100审计特性(旧版本) G100早期版本,引入openGauss审计特性,但是,该特性存在较多问题,包括: ...

August 27, 2025 · 17 min · 3432 words · Me

海量 8 需求 海康身份认证

本需求包含6个小需求: 身份认证:创建用户:CREATE/SET USER .. PASSWORD ..,密码可以只设置2类字符 身份认证:创建用户:CREATE/SET [角色] USER ..,角色支持指定SUPERUSER和NOSUPERUSER 身份认证:查看用户:SELECT .. FROM pg_user,普通用户可查询pg_user视图(仅pg兼容性) 身份认证:登录用户:SET ROLE new_user [PASSWORD ..],new_user是会话用户时,可以不指定PASSWORD 访问控制:Database权限:普通用户可访问template1数据库(仅pg兼容性) 访问控制:Schema权限:普通用户可在public下执行CREATE操作(仅pg兼容性) 描述 身份认证:创建用户 变更:用户密码可以只包含2类字符 -- password_polcy取值不同,密码需包含的字符种类数不同,为1时需3类,需2时需4类,为3时需2类 ALTER SYSTEM SET password_policy OT 3; -- 修改取值范围[0,2]为[0,3] CREATE USER u1 PASSWORD 'password1'; -- 此时,密码可以只含2类字符 ALTER USER old_user PASSWORd 'password1'; 身份认证:创建用户 变更:可以指定SUPERUSER角色 CREATE USER u1 SUPERUSER PASSWORD ..; -- 支持设置 SUPERUSER 角色 ALTER USER u1 NOSUPERUSER ..; -- 支持取消 SUPERUSER 角色 ALTER USER old_user SUPERUSER ..; 身份认证:查看用户 变更:普通用户可查询pg_user视图(仅pg兼容性) ...

June 30, 2025 · 7 min · 1446 words · Me

海量 9 需求 E100审计

1 简介 1.1 目的 审计是重要的安全特性,功能是收集数据库内的事件,例如创建对象、查询数据等,根据事件生成与存储审计日志,并向用户提供查询审计日志的接口。 在303.7版本,E100首次引入审计特性,本文介绍E100审计特性的对外接口、功能约束、使用方式等信息。 1.2 适用范围 E100,303.7及之后的版本 1.3 术语定义、首字母缩写词和缩略语 无 1.3 参考资料 G100审计特性:https://docs.vastdata.com.cn/zh_CN/VastbaseG100/V3.0.8/1/2f4fb0e4adcc49f8b19dd4710f2a6549 Oracle审计特性:https://docs.oracle.com/en/database/oracle/oracle-database/23/dbseg/part_6.html 开源组件pgaudit:https://www.modb.pro/db/105894 G100审计重构方案:https://doc.weixin.qq.com/doc/w3_AdwAfAa7AFkCNFLkO0AXJSUK7CICd?scode=AHUAfwdSAA8DKRU1G1AdwAfAa7AFk&version=4.1.38.6011&platform=win pg 14完整语法:https://www.postgresql.org/docs/14/sql-commands.html 2 E100审计特性 2.1 功能简述 【审计特性】 审计特性,主要功能是记录数据库内的各种事件,并向用户提供查询事件的接口。事件包括: 启动、恢复、切换、停止集群 登录、注销账号 创建、修改、删除数据库对象,包括:DATABASE、SCHEMA、TABLE等 插入、更新、删除、查询关系表 … 【审计事件】 数据库内发生的事件,都可描述为<主体><操作><客体> 主体:一般是数据库用户 客体:集群、账号、数据对象等 操作:针对不同客体,操作类型不一样。比如,对于TABLE,操作类型有:CREATE, INSERT, SELECT等。 【审计日志】 发生事件时,审计特性会收集事件中的信息,将事件封装审计日志,审计日志中的关键内容包括: 主体信息:用户名 操作信息:操作类型、操作时间、操作的SQL语句等 客体信息:客体类型、客体名称、客体属于哪个database、客体属于哪个schema 【审计流程】 使用审计特性时,主要包括以下几个流程: 配置审计功能:用户提前配置审计范围,即配置哪些事件需被审计。 生成审计日志:用户操作数据库时,产生审计事件,例如创建表、删除表等。内核收集事件信息,生成审计日志。 存储审计日志:内核存储审计日志至磁盘。 查询审计日志:用户查询审计日志,内核从磁盘读取审计日志。 删除审计日志 一个简单示例如下图所示: -- 1. 配置审计功能:确定哪些事件需审计 -- 2. 生成审计日志:用户执行SQL,产生事件<用户><创建><表>,根据事件生成日志 CREATE TABLE t1 (c1 INT, c2 TEXT); -- 3. 存储审计日志:内核自动存储日志 -- 4. 查询审计日志 SELECT * FROM pg_audit_log(); -- 预期输出(横向输出) -[ RECORD 1 ]--------------------------------- scope | subject | u1 -- 主体信息:用户名 optype | create -- 操作信息:create操作 optime | 2025-07-18 18:15:17.400009+08 -- 操作时间 opresult | object | table -- 客体信息:客体类型 objdb | postgres -- 客体信息:客体属于哪个database objnsp | public -- 客体信息:客体属于哪个schema objname | t1 -- 客体信息:客体名称 opxid | optid | pid | sql | create table t1(c1 int); -- 触发操作的SQL extra | 【友商对比】 对比oracle、opengauss/g100、pgaudit ...

July 18, 2025 · 8 min · 1655 words · Me

分享编写需求/设计文档的个人经验

1 简介 1.1 分享的主题 分享一些编写需求、设计文档经验 1.2 分享的背景 背景:我写的需求文档,(相对)还算详细,所以有此次分享 308.1,profile功能的需求文档:https://www.tapd.cn/60475194/markdown_wikis/show/#1160475194001007196 根因:前公司流程繁重,被迫养成这种习惯。 分享的内容:可分享的干货不多,我觉得,在写文档的过程中,大部分人想的很详细,只是没有编写到文档中,毕竟每个人都有自己的编写风格。所以,本文的重点,是介绍前公司流程与要求,并以我做过的需求为例,为大家提供一点参考。 分享人经历:交过10+个不算小的需求,完整写过10+次需求与设计文档,格式与海量的接近。 分享的局限:交付的需求,主要是安全方向,也涉及SQL、存储等多个模块,所以,本文主要以安全需求的角度写,其他模块的需求不一定适用。 1.3 前公司的流程 与海量相比,前公司的交付流程,几乎一样: 客户:提出需求 产品、项目、测试、架构等:审核需求 开发:撰写需求/设计文档 各角色:评审需求/设计文档 开发:编写代码 … 其中,在4.评审需求/设计文档环节,前公司区别较大: 一、评审人员多 编号 角色 评审人 目的 1 开发 安全组、SQL组、存储组、运维组、.. 避免影响其他模块,协助发现风险 2 测试 测试人、测试组长 学习新需求,识别测试重点 3 架构 架构设计 避免影响其他模块,确保后向兼容 4 资料 资料优化、资料审核 学习新需求 5 用例 用例审核 确保各种check可看护功能 6 其他 流程提升 - 二、评审通过难 组内评审 线上评审:上述所有角色会上评审,不过,一般很多人会议冲突,关键靠线下评审 线下评审(关键流程):各类角色共10+必选评审人,通过在线需求文档、设计文档了解需求,提出疑问,提出意见。开发分析解决后,找提出人确认意见,才算闭环。最后,所有必选评审人评审通过,才算完成流程。 在这种流程中,需求与设计文档,要满足很多要求: 普适:考虑到其他组开发、测试、资料等角色,不熟悉本领域的基础知识,所以,需要详细介绍相关原理,很多原理需要从头介绍 完整:要充分例举所有可能涉及风险,否则,评审人会认为未考虑到 举例:做了1个需求,可以为表设置加密属性,需要考虑:系统表、用户表(atore表、ustore表、分区表、临时表、toast表、unlogged表、segment表、hashbuckent表、物化视图…) 2 需求文档写作思路 2.1 分析过程 首先,客户提出需求,很多需求不够清晰。 示例: profile原始需求: 目前对于数据库用户的管理方式不够便捷,无法像Oracle为用户赋予一组安全策略。一些属性如密码有效期、密码过期天数、密码尝试次数等也只能全局设定,无法指定用户配置。 然后,以我的个人习惯,分析需求的流程如下: ...

July 15, 2025 · 2 min · 413 words · Me

海量 10 需求 SSL协议

1 简介 1.1 目的 在应用与数据库传输数据时,为避免攻击者对数据进行窃听、篡改、伪造、重放等攻击,Vastbase支持采用TLS协议保障数据机密性与完整性。 通过TLS协议,应用传输数据指至服务端路程如下: 建立连接:与数据建立TCP连接 生成密钥(TLS):采用TLS协议协商生成密钥(连接级) 加密数据(TLS):使用密钥加密数据(SQL等) 发送数据:通过TCP协议,发送数据密文至数据库 客户可能采用第三方工具,截取网络流量,获取传输中的SQL等数据,进行流量审计。但是,在使用TLS协议的情况下,网络中的数据是密文形式,无法进行流量审计。为解决该问题,本文介绍如何让第三方工具获取密钥,以解密网络中的数据密文。 1.2 适用范围 本文适用于3.0.8 psu4以之后版本。未来本需求将同步至2.2.15版本。 1.3 术语定义、首字母缩写词和缩略语 SSL: Secure Sockets Layer,于保障网络通信安全的加密协议,早期协议,存在设计缺陷,目前由TLS协议替代。但是,SSL也可不特指SSL协议,可泛指所有通信安全加密协议。同时,由于历史原因,以及前向兼容,数据库中的很多参数与接口采用SSL命令,实际使用的是TLS协议。无需纠结TLS与SSL差异,vastbase中SSL等于TLS。 TLS: Transport Layer Security,更安全的传输加密协议。早期版本1.0,1.1已不安全,主流版本为1.2,1.3。 1.3 参考资料 原始需求:https://www.tapd.cn/tapd_fe/60475194/story/detail/1160475194001084569 openssl支持的所有cipers: https://docs.openssl.org/3.0/man1/openssl-ciphers/ ssl与tls原理:博客写了一点点,没整理 2 TLS协议支持第三方流量审计 2.1 功能简述 【需求现状】 目前,大部分第三方流量审计工具,可在一些特定场景下,解密由TLS协议加密后的数据。以vastbase为例,使用TLS协议分为以下阶段: 生成证书、私钥文件 vastbase端配置证书、私钥文件 vsql端配置证书、私钥文件 vsql连接vastbase 4.1 建立tcp连接 4.2 使用证书校验对方身份 4.3 双发协商选择算法套件:包括密钥生成协议、加密算法等 4.4 双方协商生成密钥 vsql与vastbase传输数据 5.1 发送数据前,使用密钥加密数据 5.2 发送数据密文 在4.3步骤中,可配置不同的密钥生成协议,对于其中一部分协议,在步骤4.4中,第三方工具可获取密钥,第步骤5.2中,第三方工具截取数据密文后,即可解密数据。 但是,4.3步骤中,目前vastbase仅支持2种密钥生成协议,这2种协议都无法让第三方工具获取密钥。 【密钥生成协议】 此处介绍2类常见的密钥生成协议: 一、DHE密钥协商协议 Vastbase目前支持的2种协议,都属于此类协议 client server +-------------------------------------------+----------------------------------- | <-------- 0. 双方随机约定一些参数 ------> | | 1. 生成随机私钥 client_priv | 2. 基于client_priv,计算公钥 client_pub | 3. 发送公钥 client_pub ------------> | 4. 接收公钥 client_pub | 5. 生成随机私钥 server_priv | 6. 基于server_priv,计算公钥 server_pub <------------ | 7. 发送公钥 server_pub | 8. 接收公钥 server_pub | 9. 基于client_priv,server_pub,计算密钥 | 10. 基于server_priv,client_pub,计算密钥 (第9步和第10步,可以计算出相同的密钥) 简单举个例子 client server +-------------------------------------------+----------------------------------- | <----- 0. generate and send (2,11) ----> | | 1. generate 8 | 2. caculate (8 * 2) % 11 = 5 | 3. send 5 ----------> | 4. receive 5 | 5. generate 10 | 6. caculate (10 * 2) % 11 = 9 <------------ | 7. send 9 | 8. receive 9 | 9. key = (8 * 9) % 11 = 6 | 10. key = (10 * 5) % 11 = 6 攻击者:截获网络流量,获取2,11,5,9,无法计算出密钥为6 二、RSA密钥交换协议 该协议支持第三方工具解密流量,客户选择的工具已适配该协议。TLS还支持其他PSK、SRP等协议,但是,由于这些协议比较少见,且客户选择的工具未适配,本次不适配其他协议。 ...

September 3, 2025 · 6 min · 1164 words · Me
心情不好的时候可以点一下 🐱
×
🤖 Doubao AI ×
Hi! 我是你的技术助手。关于代码、架构或 Bug,随时问我!🚀