1. 首页 > 国产数据库教程 > OceanBase教程 > 正文

OceanBase教程FG056-OceanBase加密审计配置实战

本文档风哥主要介绍OceanBase数据库加密审计配置相关知识,包括OceanBase加密技术概述、OceanBase SSL加密概念、OceanBase审计功能概念、OceanBase加密方案规划、OceanBase SSL加密配置、OceanBase透明数据加密、OceanBase审计功能配置等内容,风哥教程参考OceanBase官方文档安全加密、审计日志等内容编写,适合DBA人员在学习和测试中使用,如果要应用于生产环境则需要自行确认。

Part01-基础概念与理论知识

1.1 OceanBase加密技术概述

OceanBase数据库提供多层次的安全加密机制,保护数据在传输和存储过程中的安全。更多视频教程www.fgedu.net.cn

OceanBase加密层次:

  • 传输加密(SSL/TLS):保护数据在网络传输过程中的安全
  • 透明数据加密(TDE):保护数据文件在存储介质上的安全
  • 列级加密:保护敏感列数据
  • 备份加密:保护备份数据的安全
  • 密码加密:保护用户密码存储安全

1.2 OceanBase SSL加密概念

# SSL加密概念

1. SSL/TLS协议
– SSL(Secure Sockets Layer)安全套接层
– TLS(Transport Layer Security)传输层安全
– 提供加密、认证、完整性保护

2. SSL加密流程
– 客户端发起SSL连接请求
– 服务端返回证书
– 客户端验证证书
– 协商加密算法
– 建立加密通道
– 加密数据传输

3. SSL证书类型
– CA证书:证书颁发机构证书
– 服务端证书:服务器身份证书
– 客户端证书:客户端身份证书(可选)

4. SSL配置要求
– 需要有效的SSL证书
– 服务端和客户端都需要配置
– 可以选择强制SSL连接

1.3 OceanBase审计功能概念

# 审计功能概念

1. 审计目的
– 记录数据库操作行为
– 追踪数据变更历史
– 满足合规性要求
– 安全事件调查

2. 审计内容
– 用户登录/登出,风哥提示:。
– DDL操作(CREATE、ALTER、DROP)
– DML操作(INSERT、UPDATE、DELETE)
– DCL操作(GRANT、REVOKE)
– 敏感数据访问

3. 审计级别
– 语句级审计:记录SQL语句
– 对象级审计:记录对特定对象的访问
– 用户级审计:记录特定用户的操作

4. 审计存储
– 审计日志存储在系统表中
– 可以配置审计日志保留策略
– 支持审计日志导出

风哥提示:加密和审计是数据库安全的重要组成部分,建议根据业务需求和合规要求合理配置。

Part02-生产环境规划与建议

2.1 OceanBase加密方案规划

# 加密方案规划

1. 传输加密规划
┌─────────────────┬─────────────────────────────────────┐
│ 场景 │ 加密要求 │,学习交流加群风哥微信: itpux-com。
├─────────────────┼─────────────────────────────────────┤
│ 互联网访问 │ 强制SSL加密 │
│ 内网访问 │ 建议使用SSL加密 │
│ 跨机房访问 │ 强制SSL加密 │
│ 管理操作 │ 强制SSL加密 │
└─────────────────┴─────────────────────────────────────┘

2. 存储加密规划
┌─────────────────┬─────────────────────────────────────┐
│ 数据类型 │ 加密要求 │
├─────────────────┼─────────────────────────────────────┤
│ 敏感数据表 │ 启用TDE加密 │
│ 财务数据 │ 启用TDE加密 │
│ 个人信息 │ 列级加密或TDE │
│ 普通业务数据 │ 根据合规要求决定 │
└─────────────────┴─────────────────────────────────────┘

3. 备份加密规划
– 所有备份数据加密存储
– 备份加密密钥单独管理
– 定期验证备份加密有效性

2.2 OceanBase审计策略规划

# 审计策略规划

1. 必审操作
– 用户登录失败
– 权限变更操作(GRANT、REVOKE)
– 用户管理操作(CREATE USER、DROP USER)
– 敏感表访问

2. 建议审计操作
– DDL操作(CREATE、ALTER、DROP)
– 数据删除操作(DELETE、TRUNCATE)
– 管理员操作
– 非工作时间访问,学习交流加群风哥QQ113257174。

3. 审计粒度选择
– 生产环境:语句级审计
– 敏感系统:对象级审计
– 高安全要求:用户级审计

4. 审计日志管理
– 设置合理的保留期限
– 定期归档审计日志
– 监控审计日志存储空间
– 配置审计日志告警

2.3 OceanBase合规性要求

# 合规性要求

1. 等保2.0要求
– 数据传输加密
– 数据存储加密
– 操作审计记录
– 身份鉴别

2. 金融行业要求
– 敏感数据加密
– 完整审计日志
– 访问控制
– 数据完整性保护

3. 医疗行业要求
– 患者隐私保护
– 数据加密存储
– 操作可追溯
– 访问日志记录

4. 通用合规建议
– 建立安全管理制度
– 定期安全评估
– 安全事件响应
– 持续安全监控,更多视频教程www.fgedu.net.cn。

生产环境建议:根据行业合规要求选择合适的加密和审计策略,确保满足监管要求。学习交流加群风哥微信: itpux-com

Part03-生产环境项目实施方案

3.1 OceanBase SSL加密配置

3.1.1 生成SSL证书

# 生成SSL证书

# 1. 创建证书目录
$ mkdir -p /ob/app/oceanbase/etc/ssl
$ cd /ob/app/oceanbase/etc/ssl

# 2. 生成CA私钥
$ openssl genrsa 2048 > ca-key.pem

Generating RSA private key, 2048 bit long modulus
……………………..+++
……………………..+++
e is 65537 (0x10001)

# 3. 生成CA证书
$ openssl req -new -x509 -nodes -days 3650 -key ca-key.pem -out ca-cert.pem

You are about to be asked to enter information that will be incorporated
into your certificate request.
Country Name (2 letter code) [AU]:CN
State or Province Name (full name) [Some-State]:Beijing
Locality Name (eg, city) []:Beijing
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Fgedu
Organizational Unit Name (eg, section) []:DBA
Common Name (e.g. server FQDN or YOUR name) []:Fgedu CA
Email Address []:dba@fgedu.net.cn

# 4. 生成服务端私钥,更多学习教程公众号风哥教程itpux_com。
$ openssl req -newkey rsa:2048 -days 3650 -nodes -keyout server-key.pem -out server-req.pem

# 5. 生成服务端证书
$ openssl rsa -in server-key.pem -out server-key.pem
$ openssl x509 -req -in server-req.pem -days 3650 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 -out server-cert.pem

Signature ok
subject=/C=CN/ST=Beijing/L=Beijing/O=Fgedu/OU=DBA/CN=fgedu.net.cn
Getting CA Private Key

# 6. 验证证书
$ openssl verify -CAfile ca-cert.pem server-cert.pem

server-cert.pem: OK

# 7. 设置证书权限
$ chmod 600 *.pem
$ chown admin:admin *.pem

# 8. 查看证书信息
$ openssl x509 -in server-cert.pem -text -noout

Certificate:
Data:
Version: 3 (0x2)
Serial Number: 1 (0x1)
Signature Algorithm: sha256WithRSAEncryption
Issuer: C=CN, ST=Beijing, L=Beijing, O=Fgedu, OU=DBA, CN=Fgedu CA
Validity
Not Before: Jan 20 00:00:00 2024 GMT,from DB视频:www.itpux.com。
Not After : Jan 17 00:00:00 2034 GMT
Subject: C=CN, ST=Beijing, L=Beijing, O=Fgedu, OU=DBA, CN=fgedu.net.cn
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (2048 bit)

3.1.2 配置OceanBase SSL

# 配置OceanBase SSL

# 1. 配置OBServer SSL参数
$ obclient -h192.168.1.101 -P2881 -uroot@sys -p -e ”
ALTER SYSTEM SET ssl_client_authentication=’TRUE’;
ALTER SYSTEM SET ssl_ca=’/ob/app/oceanbase/etc/ssl/ca-cert.pem’;
ALTER SYSTEM SET ssl_cert=’/ob/app/oceanbase/etc/ssl/server-cert.pem’;
ALTER SYSTEM SET ssl_key=’/ob/app/oceanbase/etc/ssl/server-key.pem’;

# 2. 重启OBServer使配置生效
$ ssh admin@192.168.1.101
$ cd /ob/app/oceanbase
$ ./bin/observer -stop
$ ./bin/observer -start

# 3. 验证SSL配置
$ obclient -h192.168.1.101 -P2881 -uroot@sys -p -e ”
SHOW VARIABLES LIKE ‘%ssl%’;

+—————+————————–+
| Variable_name | Value |
+—————+————————–+
| have_openssl | YES |
| have_ssl | YES |
| ssl_ca | /ob/app/oceanbase/… |
| ssl_cert | /ob/app/oceanbase/… |
| ssl_key | /ob/app/oceanbase/… |
+—————+————————–+

# 4. 使用SSL连接
$ obclient -h192.168.1.101 -P2881 -uroot@sys -p \
–ssl-ca=/ob/app/oceanbase/etc/ssl/ca-cert.pem \
–ssl-cert=/ob/app/oceanbase/etc/ssl/client-cert.pem \
–ssl-key=/ob/app/oceanbase/etc/ssl/client-key.pem

Welcome to the OceanBase monitor. Commands end with ; or \g.
Your OceanBase connection id is 12345
Server version: 4.2.1 OceanBase

# 5. 强制SSL连接
$ obclient -h192.168.1.101 -P2881 -uroot@sys -p -e ”
ALTER USER ‘fgedu_app’@’192.168.1.%’ REQUIRE SSL;

Query OK, 0 rows affected

3.2 OceanBase透明数据加密

# 透明数据加密(TDE)配置

# 1. 创建加密表空间(Oracle模式)
$ obclient -h192.168.1.101 -P2881 -usys@fgedu_tenant -p -e ”
— 创建钱包
ALTER SYSTEM SET TDE_KEYSTORE=KEYSTORE IDENTIFIED BY wallet_password;

— 打开钱包
ALTER SYSTEM SET TDE_KEYSTORE=OPEN IDENTIFIED BY wallet_password;

— 创建加密表空间
CREATE TABLESPACE fgedu_encrypted_ts
DATAFILE ‘/ob/fgdata/fgedu_encrypted_ts.dbf’ SIZE 100M
ENCRYPTION USING ‘AES256’
DEFAULT STORAGE(ENCRYPT);

# 2. 创建加密表
$ obclient -h192.168.1.101 -P2881 -usys@fgedu_tenant -p -e ”
CREATE TABLE fgedu_sensitive_data (
id NUMBER PRIMARY KEY,
card_no VARCHAR2(20),
phone VARCHAR2(20),
address VARCHAR2(200)
) TABLESPACE fgedu_encrypted_ts;

# 3. 查看加密状态
$ obclient -h192.168.1.101 -P2881 -usys@fgedu_tenant -p -e ”
SELECT tablespace_name, encrypted
FROM dba_tablespaces
WHERE tablespace_name = ‘FGEDU_ENCRYPTED_TS’;

+———————+———–+
| TABLESPACE_NAME | ENCRYPTED |
+———————+———–+
| FGEDU_ENCRYPTED_TS | YES |
+———————+———–+

# 4. 查看钱包状态
$ obclient -h192.168.1.101 -P2881 -usys@fgedu_tenant -p -e ”
SELECT wrl_type, status, wallet_type
FROM v$encryption_wallet;

+———–+——–+————-+
| WRL_TYPE | STATUS | WALLET_TYPE |
+———–+——–+————-+
| FILE | OPEN | PASSWORD |
+———–+——–+————-+

3.3 OceanBase审计功能配置

# 审计功能配置

# 1. 开启标准审计
$ obclient -h192.168.1.101 -P2881 -uroot@sys -p -e ”
— 开启标准审计
ALTER SYSTEM SET audit_log_policy=’ALL’;

# 2. 配置审计策略
$ obclient -h192.168.1.101 -P2881 -uroot@sys -p -e ”
— 审计所有DDL操作
AUDIT DDL;

— 审计特定表的DML操作
AUDIT SELECT, INSERT, UPDATE, DELETE ON fgedudb.fgedu_user;

— 审计用户登录
AUDIT SESSION;

— 审计权限变更
AUDIT GRANT, REVOKE;

# 3. 查看审计配置
$ obclient -h192.168.1.101 -P2881 -uroot@sys -p -e ”
SELECT * FROM information_schema.INNODB_AUDIT_LOG;

# 4. 查看审计日志
$ obclient -h192.168.1.101 -P2881 -uroot@sys -p -e ”
SELECT
event_time,
user_host,
command_type,
argument
FROM mysql.audit_log
ORDER BY event_time DESC
LIMIT 10;

+———————+——————+————–+——————+
| event_time | user_host | command_type | argument |
+———————+——————+————–+——————+
| 2024-01-20 10:00:00 | fgedu_app[app] | SELECT | SELECT * FROM… |
| 2024-01-20 09:59:00 | root[sys] | ALTER | ALTER USER… |
| 2024-01-20 09:58:00 | fgedu_dba[sys] | CREATE | CREATE TABLE… |
+———————+——————+————–+——————+

# 5. 关闭特定审计
$ obclient -h192.168.1.101 -P2881 -uroot@sys -p -e ”
— 关闭表审计
NOAUDIT SELECT ON fgedudb.fgedu_user;

— 关闭DDL审计
NOAUDIT DDL;

风哥提示:加密和审计配置会影响系统性能,建议根据实际需求合理配置,避免过度配置。学习交流加群风哥QQ113257174

Part04-生产案例与实战讲解

4.1 OceanBase SSL加密配置案例

# 业务场景
– 金融系统生产环境
– 需要强制SSL加密连接
– 客户端证书认证

# 配置过程

1. 生成客户端证书
$ openssl req -newkey rsa:2048 -days 365 -nodes -keyout client-key.pem -out client-req.pem
$ openssl rsa -in client-key.pem -out client-key.pem
$ openssl x509 -req -in client-req.pem -days 365 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 02 -out client-cert.pem

2. 分发客户端证书
$ scp client-cert.pem client-key.pem ca-cert.pem app-server:/app/ssl/

3. 配置强制SSL
$ obclient -h192.168.1.101 -P2881 -uroot@sys -p -e ”
— 强制所有用户使用SSL
UPDATE mysql.user SET ssl_type=’ANY’ WHERE user NOT IN (‘root’, ‘sys’);
FLUSH PRIVILEGES;

4. 应用连接配置
# JDBC连接字符串
jdbc:oceanbase://192.168.1.101:2881/fgedudb?useSSL=true&requireSSL=true&verifyServerCertificate=true&trustCertificateKeyStoreUrl=file:/app/ssl/ca-cert.pem

5. 验证SSL连接
$ obclient -h192.168.1.101 -P2881 -ufgedu_app@fgedu_tenant -p \
–ssl-ca=/app/ssl/ca-cert.pem \
–ssl-cert=/app/ssl/client-cert.pem \
–ssl-key=/app/ssl/client-key.pem \
-e “STATUS”

————–
obclient Ver 2.0.0

Connection id: 12345
Current database: fgedudb
Current user: fgedu_app@fgedu_tenant
SSL: Cipher in use is ECDHE-RSA-AES128-GCM-SHA256
————–

# SSL配置成功

4.2 OceanBase透明加密配置案例

# 业务场景
– 医疗系统患者数据保护
– 需要加密存储敏感数据
– 满足医疗数据安全要求

# 配置过程

1. 配置钱包
$ obclient -h192.168.1.101 -P2881 -usys@fgedu_tenant -p -e ”
— 创建钱包目录
— 在操作系统层面创建:mkdir -p /ob/fgdata/wallet

— 配置钱包
ALTER SYSTEM SET TDE_KEYSTORE=KEYSTORE IDENTIFIED BY Medical@Wallet2024!;
ALTER SYSTEM SET TDE_KEYSTORE=OPEN IDENTIFIED BY Medical@Wallet2024!;

2. 创建主密钥
$ obclient -h192.168.1.101 -P2881 -usys@fgedu_tenant -p -e ”
ALTER SYSTEM SET TDE_KEY=MK1 IDENTIFIED BY Medical@Wallet2024!
WITH BACKUP IDENTIFIED BY Backup@Key2024!;

3. 创建加密表空间
$ obclient -h192.168.1.101 -P2881 -usys@fgedu_tenant -p -e ”
CREATE TABLESPACE fgedu_medical_ts
DATAFILE ‘/ob/fgdata/fgedu_medical_ts.dbf’ SIZE 1G AUTOEXTEND ON
ENCRYPTION USING ‘AES256’
DEFAULT STORAGE(ENCRYPT);

4. 创建敏感数据表
$ obclient -h192.168.1.101 -P2881 -usys@fgedu_tenant -p -e ”
CREATE TABLE fgedu_patient_info (
patient_id NUMBER PRIMARY KEY,
name VARCHAR2(50),
id_card VARCHAR2(18),
phone VARCHAR2(20),
address VARCHAR2(200),
medical_history CLOB
) TABLESPACE fgedu_medical_ts;

5. 验证加密状态
$ obclient -h192.168.1.101 -P2881 -usys@fgedu_tenant -p -e ”
SELECT
t.table_name,
ts.tablespace_name,
ts.encrypted
FROM dba_tables t
JOIN dba_tablespaces ts ON t.tablespace_name = ts.tablespace_name
WHERE t.table_name = ‘FGEDU_PATIENT_INFO’;

+——————-+———————+———–+
| TABLE_NAME | TABLESPACE_NAME | ENCRYPTED |
+——————-+———————+———–+
| FGEDU_PATIENT_INFO| FGEDU_MEDICAL_TS | YES |
+——————-+———————+———–+

# 透明加密配置成功

4.3 OceanBase审计功能配置案例

# 业务场景
– 金融系统审计要求
– 需要记录所有敏感操作
– 满足监管合规要求

# 配置过程

1. 开启审计功能
$ obclient -h192.168.1.101 -P2881 -uroot@sys -p -e ”
— 开启审计
ALTER SYSTEM SET audit_log_policy=’ALL’;
ALTER SYSTEM SET audit_log_format=’JSON’;

2. 配置审计策略
$ obclient -h192.168.1.101 -P2881 -uroot@sys -p -e ”
— 审计所有用户登录
AUDIT SESSION;

— 审计敏感表操作
AUDIT SELECT, INSERT, UPDATE, DELETE ON fgedudb.fgedu_account;
AUDIT SELECT, INSERT, UPDATE, DELETE ON fgedudb.fgedu_transaction;

— 审计DDL操作
AUDIT CREATE TABLE, ALTER TABLE, DROP TABLE;
AUDIT CREATE USER, ALTER USER, DROP USER;

— 审计权限变更
AUDIT GRANT, REVOKE;

— 审计数据导出
AUDIT SELECT INTO OUTFILE;

3. 配置审计日志存储
$ obclient -h192.168.1.101 -P2881 -uroot@sys -p -e ”
— 设置审计日志保留期(90天)
ALTER SYSTEM SET audit_log_retention=90;

— 设置审计日志文件大小
ALTER SYSTEM SET audit_log_max_size=100M;

4. 查看审计日志
$ obclient -h192.168.1.101 -P2881 -uroot@sys -p -e ”
SELECT
DATE_FORMAT(event_time, ‘%Y-%m-%d %H:%i:%s’) as event_time,
user_host,
command_type,
LEFT(argument, 100) as sql_text
FROM mysql.audit_log
WHERE event_time > DATE_SUB(NOW(), INTERVAL 1 DAY)
ORDER BY event_time DESC
LIMIT 20;

+———————+——————+————–+—————————————-+
| event_time | user_host | command_type| sql_text |
+———————+——————+————–+—————————————-+
| 2024-01-20 10:00:00 | fgedu_app[app] | SELECT | SELECT * FROM fgedu_account WHERE… |
| 2024-01-20 09:59:00 | fgedu_dba[sys] | ALTER | ALTER USER fgedu_app IDENTIFIED BY… |
| 2024-01-20 09:58:00 | root[sys] | CREATE | CREATE TABLE fgedu_audit_test… |
+———————+——————+————–+—————————————-+

5. 审计报表生成
$ obclient -h192.168.1.101 -P2881 -uroot@sys -p -e ”
— 登录统计
SELECT
DATE(event_time) as date,
COUNT(*) as login_count,
COUNT(DISTINCT user_host) as unique_users
FROM mysql.audit_log
WHERE command_type = ‘Connect’
GROUP BY DATE(event_time)
ORDER BY date DESC;

+————+————-+————–+
| date | login_count | unique_users |
+————+————-+————–+
| 2024-01-20 | 150 | 25 |
| 2024-01-19 | 145 | 23 |
+————+————-+————–+

# 审计配置成功

生产环境建议:审计日志会占用存储空间,建议定期归档和清理。敏感操作的审计策略需要经过安全团队审批。更多学习教程公众号风哥教程itpux_com

Part05-风哥经验总结与分享

5.1 OceanBase加密审计最佳实践

# 加密审计最佳实践

1. 加密配置
– 生产环境强制使用SSL连接
– 敏感数据启用TDE加密
– 备份数据加密存储
– 密钥单独管理,定期更换

2. 审计配置
– 记录所有管理员操作
– 审计敏感数据访问
– 审计权限变更
– 设置合理的保留期

3. 密钥管理
– 使用硬件安全模块(HSM)
– 密钥分级管理
– 定期轮换密钥
– 密钥备份与恢复

4. 日志管理
– 审计日志定期归档
– 审计日志防篡改
– 审计日志分析
– 异常告警配置

5. 性能考虑
– 加密对性能有影响,合理评估
– 审计日志影响写入性能
– 选择合适的加密算法
– 监控加密审计开销

5.2 OceanBase加密问题排查

# 加密问题排查

1. SSL连接问题

检查证书有效性:
openssl x509 -in server-cert.pem -text -noout

检查证书是否过期:
openssl x509 -in server-cert.pem -noout -dates

检查证书链:
openssl verify -CAfile ca-cert.pem server-cert.pem

检查SSL配置:
SHOW VARIABLES LIKE ‘%ssl%’;

2. TDE加密问题

检查钱包状态:
SELECT * FROM v$encryption_wallet;

检查表空间加密状态:
SELECT tablespace_name, encrypted FROM dba_tablespaces;

检查表加密状态:
SELECT table_name, tablespace_name FROM dba_tables;

3. 常见问题解决

SSL连接失败:
– 检查证书路径是否正确
– 检查证书权限是否正确
– 检查证书是否过期

TDE无法访问数据:
– 检查钱包是否打开
– 检查主密钥是否正确
– 检查表空间状态

5.3 OceanBase加密审计常见问题

# 加密审计常见问题及解决

Q1: SSL证书过期如何处理?
A1: 重新生成证书,更新配置,重启服务

Q2: TDE钱包密码忘记怎么办?
A2: 使用备份密钥恢复,或重新创建钱包(数据会丢失)

Q3: 审计日志占用空间过大?
A3: 调整保留期,定期归档,清理过期日志

Q4: 如何查看谁访问了敏感数据?
A4: 查询审计日志,筛选敏感表访问记录

Q5: 加密对性能影响有多大?
A5: 通常有5-15%的性能开销,具体取决于加密算法和数据量

Q6: 如何导出加密表的数据?
A6: 正常导出即可,数据会自动解密

Q7: 审计日志可以修改吗?
A7: 不建议修改,审计日志应具有不可篡改性

Q8: 如何备份加密密钥?
A8: 使用专门的密钥管理系统,或导出到安全介质

Q9: SSL连接慢是什么原因?
A9: 可能是证书验证耗时,或网络延迟

Q10: 审计日志格式有哪些?
A10: 支持JSON、CSV等格式,可根据需要选择

风哥提示:加密和审计是数据库安全的最后防线,必须严格管理。建议建立完善的密钥管理制度和审计日志管理制度。from OceanBase视频:www.itpux.com

本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息