OceanBase教程FG130-OceanBase数据安全与审计
本文档风哥主要介绍OceanBase数据安全与审计,包括数据安全的概念与意义、审计的概念与意义、安全机制、安全规划、审计规划、安全策略、安全实施方案、审计实施方案、安全与审计集成、实战案例等内容,风哥教程参考OceanBase官方文档数据安全、审计等内容编写,适合DBA人员和运维工程师在学习和工作中使用。更多视频教程www.fgedu.net.cn
Part01-基础概念与理论知识
1.1 数据安全的概念与意义
数据安全是指保护数据不被未授权访问、修改、删除或泄露的能力。数据安全的意义包括:
- 保护数据完整性:确保数据的准确性和一致性
- 保护数据机密性:确保数据不被未授权访问
- 保护数据可用性:确保数据在需要时能够被访问
- 合规要求:满足行业和法规的合规要求
- 企业声誉:避免因数据泄露而损害企业声誉
1.2 审计的概念与意义
审计是指对系统操作和数据访问进行记录和分析的过程。审计的意义包括:
- 追踪操作:记录系统操作和数据访问
- 检测异常:发现异常操作和数据访问
- 合规要求:满足行业和法规的合规要求
- 责任追溯:在发生安全事件时能够追溯责任
- 安全改进:根据审计结果改进安全措施
1.3 安全机制
OceanBase的安全机制包括:
- 用户认证:验证用户身份
- 权限控制:控制用户对数据和操作的访问权限
- 数据加密:对数据进行加密存储
- 审计日志:记录系统操作和数据访问
- 网络安全:保护网络传输安全
Part02-生产环境规划与建议
2.1 安全规划
安全规划的考虑因素:
- 安全目标:确定系统的安全目标,如保护数据机密性、完整性和可用性
- 安全风险:识别系统面临的安全风险
- 安全措施:设计和实施安全措施,如用户认证、权限控制、数据加密等
- 安全测试:定期进行安全测试,如漏洞扫描、渗透测试等
- 安全培训:对用户和管理员进行安全培训
,风哥提示:。
推荐的安全规划:
- 多层安全:实施多层安全措施,如网络安全、应用安全、数据安全等
- 最小权限:遵循最小权限原则,只授予用户必要的权限
- 定期审计:定期进行安全审计,发现和解决安全问题
- 安全更新:及时更新系统和软件,修补安全漏洞
2.2 审计规划
审计规划的考虑因素:
- 审计目标:确定审计的目标,如追踪操作、检测异常等
- 审计范围:确定审计的范围,如用户操作、数据访问等
- 审计方法:选择审计方法,如日志记录、监控等
- 审计存储:确定审计日志的存储方式和保留期限
- 审计分析:确定审计日志的分析方法和工具
推荐的审计规划:
- 全面审计:对系统操作和数据访问进行全面审计
- 实时监控:对审计日志进行实时监控,及时发现异常
- 定期分析:定期分析审计日志,发现安全趋势和问题
- 长期存储:长期存储审计日志,满足合规要求
,学习交流加群风哥微信: itpux-com。
2.3 安全策略
安全策略的内容包括:
- 用户管理策略:包括用户创建、修改、删除等
- 权限管理策略:包括权限分配、回收等
- 密码策略:包括密码长度、复杂度、过期时间等
- 数据加密策略:包括加密算法、密钥管理等
- 审计策略:包括审计范围、存储、分析等
推荐的安全策略:
- 强密码策略:要求密码长度至少8位,包含大小写字母、数字和特殊字符
- 定期密码更新:要求用户每90天更新一次密码
- 多因素认证:对敏感操作实施多因素认证
- 数据加密:对敏感数据进行加密存储
- 全面审计:对所有操作和数据访问进行审计
Part03-生产环境项目实施方案
3.1 安全实施方案
3.1.1 安全实施步骤
## 1. 环境准备
– 配置OceanBase数据库:
$ obclient -h192.168.1.10 -P2881 -uroot@sys -p -e “CREATE DATABASE fgedudb;”
$ obclient -h192.168.1.10 -P2881 -uroot@sys -p -e “CREATE USER fgedu IDENTIFIED BY ‘password’;”
$ obclient -h192.168.1.10 -P2881 -uroot@sys -p -e “GRANT ALL PRIVILEGES ON fgedudb.* TO fgedu;”
## 2. 用户管理
– 创建用户:
$ obclient -h192.168.1.10 -P2881 -uroot@sys -p -e “CREATE USER fgedu01 IDENTIFIED BY ‘Password123!’;”
$ obclient -h192.168.1.10 -P2881 -uroot@sys -p -e “CREATE USER fgedu02 IDENTIFIED BY ‘Password123!’;”
$ obclient -h192.168.1.10 -P2881 -uroot@sys -p -e “CREATE USER fgedu03 IDENTIFIED BY ‘Password123!’;”
– 分配权限:,学习交流加群风哥QQ113257174。
$ obclient -h192.168.1.10 -P2881 -uroot@sys -p -e “GRANT SELECT, INSERT, UPDATE, DELETE ON
fgedudb.fgedu_order TO fgedu01;”
$ obclient -h192.168.1.10 -P2881 -uroot@sys -p -e “GRANT SELECT ON fgedudb.fgedu_order TO fgedu02;”
$ obclient -h192.168.1.10 -P2881 -uroot@sys -p -e “GRANT SELECT, INSERT ON fgedudb.fgedu_user TO fgedu03;”
– 查看用户权限:
$ obclient -h192.168.1.10 -P2881 -uroot@sys -p -e “SHOW GRANTS FOR fgedu01;”
$ obclient -h192.168.1.10 -P2881 -uroot@sys -p -e “SHOW GRANTS FOR fgedu02;”
$ obclient -h192.168.1.10 -P2881 -uroot@sys -p -e “SHOW GRANTS FOR fgedu03;”
## 3. 密码策略
– 配置密码策略:
$ obclient -h192.168.1.10 -P2881 -uroot@sys -p -e “ALTER SYSTEM SET password_strength_policy = ‘MEDIUM’
TENANT ‘sys’;”
$ obclient -h192.168.1.10 -P2881 -uroot@sys -p -e “ALTER SYSTEM SET password_min_length = 8 TENANT ‘sys’;”
$ obclient -h192.168.1.10 -P2881 -uroot@sys -p -e “ALTER SYSTEM SET password_expire_days = 90 TENANT ‘sys’;”
– 测试密码策略:
$ obclient -h192.168.1.10 -P2881 -uroot@sys -p -e “CREATE USER test_user IDENTIFIED BY ‘123456’;”
# 输出:
# ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
## 4. 数据加密
– 配置TDE加密:
$ obclient -h192.168.1.10 -P2881 -uroot@sys -p -e “ALTER SYSTEM SET tde_method = ‘AES-256’ TENANT ‘sys’;”
$ obclient -h192.168.1.10 -P2881 -uroot@sys -p -e “ALTER SYSTEM SET tde_key_rotation_interval = 86400 TENANT
‘sys’;”
– 创建加密表:
$ obclient -h192.168.1.10 -P2881 -uroot@fgedudb -p -e “CREATE TABLE fgedu_secure_data (id INT PRIMARY KEY,
data VARCHAR(255)) ENCRYPTION=’Y’;”
– 插入数据:
$ obclient -h192.168.1.10 -P2881 -uroot@fgedudb -p -e “INSERT INTO fgedu_secure_data VALUES (1, ‘sensitive
data’);”
– 验证数据:
$ obclient -h192.168.1.10 -P2881 -uroot@fgedudb -p -e “SELECT * FROM fgedu_secure_data;”
## 5. 网络安全,更多视频教程www.fgedu.net.cn。
– 配置防火墙:
$ firewall-cmd –permanent –add-port=2881/tcp
$ firewall-cmd –permanent –add-port=2882/tcp
$ firewall-cmd –reload
– 配置SSL:
– 生成证书:
$ openssl req -newkey rsa:2048 -nodes -keyout server.key -out server.csr
$ openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
– 配置OceanBase:
$ obclient -h192.168.1.10 -P2881 -uroot@sys -p -e “ALTER SYSTEM SET ssl_cert = ‘/ob/certs/server.crt’ TENANT
‘sys’;”
$ obclient -h192.168.1.10 -P2881 -uroot@sys -p -e “ALTER SYSTEM SET ssl_key = ‘/ob/certs/server.key’ TENANT
‘sys’;”
$ obclient -h192.168.1.10 -P2881 -uroot@sys -p -e “ALTER SYSTEM SET ssl_ca = ‘/ob/certs/ca.crt’ TENANT
‘sys’;”
## 6. 测试验证
– 测试用户权限:
– 使用fgedu01用户:
$ obclient -h192.168.1.10 -P2881 -ufgedu01 -pPassword123! -e “INSERT INTO fgedudb.fgedu_order VALUES
(100001, 123456, 100.00, NOW());”
# 输出:
# Query OK, 1 row affected (0.01 sec)
– 使用fgedu02用户:
$ obclient -h192.168.1.10 -P2881 -ufgedu02 -pPassword123! -e “INSERT INTO fgedudb.fgedu_order VALUES
(100002, 123457, 200.00, NOW());”
# 输出:
# ERROR 1142 (42000): INSERT command denied to user ‘fgedu02’@’%’ for table ‘fgedu_order’
– 测试数据加密:
$ obclient -h192.168.1.10 -P2881 -uroot@fgedudb -p -e “SELECT * FROM fgedu_secure_data;”
# 输出:
# +—-+—————-+
# | id | data |
# +—-+—————-+
# | 1 | sensitive data |
# +—-+—————-+,更多学习教程公众号风哥教程itpux_com。
– 测试SSL连接:
$ obclient -h192.168.1.10 -P2881 -uroot@sys -p –ssl-ca=/ob/certs/ca.crt –ssl-cert=/ob/certs/client.crt
–ssl-key=/ob/certs/client.key -e “SELECT 1;”
# 输出:
# +—+
# | 1 |
# +—+
# | 1 |
# +—+
3.2 审计实施方案
3.2.1 审计实施步骤
## 1. 环境准备
– 配置OceanBase数据库:
$ obclient -h192.168.1.10 -P2881 -uroot@sys -p -e “CREATE DATABASE fgedudb;”
$ obclient -h192.168.1.10 -P2881 -uroot@sys -p -e “CREATE USER fgedu IDENTIFIED BY ‘password’;”
$ obclient -h192.168.1.10 -P2881 -uroot@sys -p -e “GRANT ALL PRIVILEGES ON fgedudb.* TO fgedu;”
## 2. 审计配置
– 启用审计:
$ obclient -h192.168.1.10 -P2881 -uroot@sys -p -e “ALTER SYSTEM SET audit_trail = ‘DB’ TENANT ‘sys’;”
$ obclient -h192.168.1.10 -P2881 -uroot@sys -p -e “ALTER SYSTEM SET audit_file_dest = ‘/ob/audit’ TENANT
‘sys’;”,from DB视频:www.itpux.com。
– 配置审计策略:
$ obclient -h192.168.1.10 -P2881 -uroot@sys -p -e “CREATE AUDIT POLICY fgedu_audit_policy PRIVILEGES CREATE,
ALTER, DROP, INSERT, UPDATE, DELETE;”
$ obclient -h192.168.1.10 -P2881 -uroot@sys -p -e “AUDIT POLICY fgedu_audit_policy BY fgedu01, fgedu02,
fgedu03;”
## 3. 审计监控
– 查看审计日志:
$ obclient -h192.168.1.10 -P2881 -uroot@sys -p -e “SELECT * FROM oceanbase.__all_audit_record WHERE
tenant_name = ‘fgedudb’ ORDER BY event_time DESC LIMIT 10;”
– 配置审计日志清理:
$ obclient -h192.168.1.10 -P2881 -uroot@sys -p -e “ALTER SYSTEM SET audit_record_keep_days = 90 TENANT
‘sys’;”
## 4. 审计分析
– 分析审计日志:
$ obclient -h192.168.1.10 -P2881 -uroot@sys -p -e “SELECT user_name, command_name, count(*) as count FROM
oceanbase.__all_audit_record WHERE tenant_name = ‘fgedudb’ GROUP BY user_name, command_name ORDER BY count
DESC;”
– 检测异常操作:
$ obclient -h192.168.1.10 -P2881 -uroot@sys -p -e “SELECT user_name, event_time, command_name, sql_text FROM
oceanbase.__all_audit_record WHERE tenant_name = ‘fgedudb’ AND command_name IN (‘DROP’, ‘ALTER’) ORDER BY
event_time DESC;”
## 5. 审计集成
– 配置ELK Stack:
– 安装Elasticsearch:
$ yum install -y elasticsearch
$ systemctl start elasticsearch
$ systemctl enable elasticsearch
– 安装Logstash:
$ yum install -y logstash
$ cat > /etc/logstash/conf.d/oceanbase.conf << 'EOF' input { file { path=> “/ob/audit/*.log”
start_position => “beginning”
}
}
filter {
grok {
match => {
“message” => “%{TIMESTAMP_ISO8601:timestamp} \[%{DATA:thread}\] \[%{DATA:level}\] \[%{DATA:module}\]
\[%{DATA:user}\] \[%{DATA:command}\] \[%{DATA:sql}\]”
}
}
}
output {
elasticsearch {
hosts => [“localhost:9200”]
index => “oceanbase-audit-%{+YYYY.MM.dd}”
}
}
EOF
$ systemctl start logstash
$ systemctl enable logstash
– 安装Kibana:
$ yum install -y kibana
$ systemctl start kibana
$ systemctl enable kibana
## 6. 测试验证
– 执行操作:
– 使用fgedu01用户:
$ obclient -h192.168.1.10 -P2881 -ufgedu01 -pPassword123! -e “INSERT INTO fgedudb.fgedu_order VALUES
(100001, 123456, 100.00, NOW());”
– 使用fgedu02用户:
$ obclient -h192.168.1.10 -P2881 -ufgedu02 -pPassword123! -e “SELECT * FROM fgedudb.fgedu_order;”
– 查看审计日志:
$ obclient -h192.168.1.10 -P2881 -uroot@sys -p -e “SELECT user_name, event_time, command_name, sql_text
FROM oceanbase.__all_audit_record WHERE tenant_name = ‘fgedudb’ ORDER BY event_time DESC LIMIT 10;”
– 查看ELK Stack:
– 浏览器访问:http://服务器IP:5601
– 查看Kibana仪表盘
– 分析审计日志
3.3 安全与审计集成
3.3.1 安全与审计集成步骤
## 1. 环境准备
– 配置OceanBase数据库:
$ obclient -h192.168.1.10 -P2881 -uroot@sys -p -e “CREATE DATABASE fgedudb;”
$ obclient -h192.168.1.10 -P2881 -uroot@sys -p -e “CREATE USER fgedu IDENTIFIED BY ‘password’;”
$ obclient -h192.168.1.10 -P2881 -uroot@sys -p -e “GRANT ALL PRIVILEGES ON fgedudb.* TO fgedu;”
## 2. 安全配置
– 创建用户:
$ obclient -h192.168.1.10 -P2881 -uroot@sys -p -e “CREATE USER fgedu01 IDENTIFIED BY ‘Password123!’;”
$ obclient -h192.168.1.10 -P2881 -uroot@sys -p -e “CREATE USER fgedu02 IDENTIFIED BY ‘Password123!’;”
– 分配权限:
$ obclient -h192.168.1.10 -P2881 -uroot@sys -p -e “GRANT SELECT, INSERT, UPDATE, DELETE ON
fgedudb.fgedu_order TO fgedu01;”
$ obclient -h192.168.1.10 -P2881 -uroot@sys -p -e “GRANT SELECT ON fgedudb.fgedu_order TO fgedu02;”
– 配置密码策略:
$ obclient -h192.168.1.10 -P2881 -uroot@sys -p -e “ALTER SYSTEM SET password_strength_policy = ‘MEDIUM’
TENANT ‘sys’;”
$ obclient -h192.168.1.10 -P2881 -uroot@sys -p -e “ALTER SYSTEM SET password_min_length = 8 TENANT ‘sys’;”
$ obclient -h192.168.1.10 -P2881 -uroot@sys -p -e “ALTER SYSTEM SET password_expire_days = 90 TENANT ‘sys’;”
– 配置数据加密:
$ obclient -h192.168.1.10 -P2881 -uroot@sys -p -e “ALTER SYSTEM SET tde_method = ‘AES-256’ TENANT ‘sys’;”
$ obclient -h192.168.1.10 -P2881 -uroot@fgedudb -p -e “CREATE TABLE fgedu_secure_data (id INT PRIMARY KEY,
data VARCHAR(255)) ENCRYPTION=’Y’;”
## 3. 审计配置
– 启用审计:
$ obclient -h192.168.1.10 -P2881 -uroot@sys -p -e “ALTER SYSTEM SET audit_trail = ‘DB’ TENANT ‘sys’;”
$ obclient -h192.168.1.10 -P2881 -uroot@sys -p -e “ALTER SYSTEM SET audit_file_dest = ‘/ob/audit’ TENANT
‘sys’;”
– 配置审计策略:
$ obclient -h192.168.1.10 -P2881 -uroot@sys -p -e “CREATE AUDIT POLICY fgedu_audit_policy PRIVILEGES CREATE,
ALTER, DROP, INSERT, UPDATE, DELETE;”
$ obclient -h192.168.1.10 -P2881 -uroot@sys -p -e “AUDIT POLICY fgedu_audit_policy BY fgedu01, fgedu02;”
## 4. 安全与审计集成
– 配置监控告警:
– 安装Prometheus和Grafana:
$ wget
https://github.com/prometheus/prometheus/releases/download/v2.40.0/prometheus-2.40.0.linux-amd64.tar.gz
$ tar -xzf prometheus-2.40.0.linux-amd64.tar.gz
$ mv prometheus-2.40.0.linux-amd64 /ob/prometheus
$ wget https://github.com/grafana/grafana/releases/download/v9.3.6/grafana-9.3.6.linux-amd64.tar.gz
$ tar -xzf grafana-9.3.6.linux-amd64.tar.gz
$ mv grafana-9.3.6.linux-amd64 /ob/grafana
– 配置Prometheus:
$ cat > /ob/prometheus/prometheus.yml << 'EOF' global: scrape_interval: 15s scrape_configs: -
job_name: 'oceanbase' static_configs: - targets: ['192.168.1.10:9100'] EOF - 启动Prometheus和Grafana: $ cd
/ob/prometheus $ ./prometheus --config.file=prometheus.yml & $ cd /ob/grafana $ ./bin/grafana-server
--homepath=/ob/grafana & - 配置安全监控脚本: $ cat> /ob/scripts/security_monitor.sh << 'EOF' #!/bin/bash #
security_monitor.sh # from:www.itpux.com.qq113257174.wx:itpux-com # web: `http://www.fgedu.net.cn` # 检查用户登录
check_login() { echo "检查用户登录:" obclient -h192.168.1.10 -P2881 -uroot@sys -p
-e "SELECT user_name, event_time, client_ip FROM oceanbase.__all_audit_record WHERE tenant_name = 'fgedudb' AND command_name = 'LOGIN' ORDER BY event_time DESC LIMIT 10;"
} # 检查异常操作 check_abnormal() { echo "检查异常操作:" obclient -h192.168.1.10 -P2881 -uroot@sys -p
-e "SELECT user_name, event_time, command_name, sql_text FROM oceanbase.__all_audit_record WHERE tenant_name = 'fgedudb' AND command_name IN ('DROP', 'ALTER') ORDER BY event_time DESC LIMIT 10;"
} # 检查权限变更 check_permission() { echo "检查权限变更:" obclient -h192.168.1.10 -P2881 -uroot@sys -p
-e "SELECT user_name, event_time, command_name, sql_text FROM oceanbase.__all_audit_record WHERE tenant_name = 'fgedudb' AND command_name IN ('GRANT', 'REVOKE') ORDER BY event_time DESC LIMIT 10;"
} # 主函数 main() { check_login check_abnormal check_permission } main EOF - 设置脚本权限: $ chmod +x
/ob/scripts/security_monitor.sh - 执行安全监控: $ /ob/scripts/security_monitor.sh ## 5. 测试验证 - 执行操作: -
使用fgedu01用户: $ obclient -h192.168.1.10 -P2881 -ufgedu01 -pPassword123!
-e "INSERT INTO fgedudb.fgedu_order VALUES (100001, 123456, 100.00, NOW());" - 使用fgedu02用户: $
obclient -h192.168.1.10 -P2881 -ufgedu02 -pPassword123! -e "SELECT * FROM fgedudb.fgedu_order;" -
执行安全监控: $ /ob/scripts/security_monitor.sh - 查看监控: - 浏览器访问:http://服务器IP:3000 - 查看Grafana仪表盘 - 检查安全指标
Part04-生产案例与实战讲解
4.1 数据安全实战案例
## 案例背景
– 生产环境:OceanBase 4.0集群
– 业务类型:金融核心业务
– 需求:保护敏感数据,确保数据安全
## 实施步骤
### 1. 环境准备
– 配置OceanBase数据库:
$ obclient -h192.168.1.10 -P2881 -uroot@sys -p -e “CREATE DATABASE fgedudb;”
$ obclient -h192.168.1.10 -P2881 -uroot@sys -p -e “CREATE USER fgedu IDENTIFIED BY ‘password’;”
$ obclient -h192.168.1.10 -P2881 -uroot@sys -p -e “GRANT ALL PRIVILEGES ON fgedudb.* TO fgedu;”
### 2. 用户管理
– 创建用户:
$ obclient -h192.168.1.10 -P2881 -uroot@sys -p -e “CREATE USER fgedu_admin IDENTIFIED BY
‘Admin123!’;”
$ obclient -h192.168.1.10 -P2881 -uroot@sys -p -e “CREATE USER fgedu_user IDENTIFIED BY
‘User123!’;”
$ obclient -h192.168.1.10 -P2881 -uroot@sys -p -e “CREATE USER fgedu_readonly IDENTIFIED BY
‘Readonly123!’;”
– 分配权限:
$ obclient -h192.168.1.10 -P2881 -uroot@sys -p -e “GRANT ALL PRIVILEGES ON fgedudb.* TO
fgedu_admin;”
$ obclient -h192.168.1.10 -P2881 -uroot@sys -p -e “GRANT SELECT, INSERT, UPDATE, DELETE ON
fgedudb.fgedu_customer TO fgedu_user;”
$ obclient -h192.168.1.10 -P2881 -uroot@sys -p -e “GRANT SELECT ON fgedudb.fgedu_customer TO
fgedu_readonly;”
### 3. 数据加密
– 配置TDE加密:
$ obclient -h192.168.1.10 -P2881 -uroot@sys -p -e “ALTER SYSTEM SET tde_method = ‘AES-256’
TENANT ‘sys’;”
– 创建加密表:
$ obclient -h192.168.1.10 -P2881 -uroot@fgedudb -p -e “CREATE TABLE fgedu_customer (id INT
PRIMARY KEY, name VARCHAR(100), id_card VARCHAR(18), phone VARCHAR(11), balance DECIMAL(10,2))
ENCRYPTION=’Y’;”
– 插入数据:
$ obclient -h192.168.1.10 -P2881 -uroot@fgedudb -p -e “INSERT INTO fgedu_customer VALUES (1,
‘张三’, ‘110101199001011234’, ‘13800138000’, 10000.00);”
$ obclient -h192.168.1.10 -P2881 -uroot@fgedudb -p -e “INSERT INTO fgedu_customer VALUES (2,
‘李四’, ‘110101199001011235’, ‘13800138001’, 20000.00);”
### 4. 安全测试
– 测试用户权限:
– 使用fgedu_user用户:
$ obclient -h192.168.1.10 -P2881 -ufgedu_user -pUser123! -e “INSERT INTO fgedudb.fgedu_customer
VALUES (3, ‘王五’, ‘110101199001011236’, ‘13800138002’, 30000.00);”
# 输出:
# Query OK, 1 row affected (0.01 sec)
– 使用fgedu_readonly用户:
$ obclient -h192.168.1.10 -P2881 -ufgedu_readonly -pReadonly123! -e “INSERT INTO
fgedudb.fgedu_customer VALUES (4, ‘赵六’, ‘110101199001011237’, ‘13800138003’, 40000.00);”
# 输出:
# ERROR 1142 (42000): INSERT command denied to user ‘fgedu_readonly’@’%’ for table
‘fgedu_customer’
– 测试数据加密:
$ obclient -h192.168.1.10 -P2881 -uroot@fgedudb -p -e “SELECT * FROM fgedu_customer;”
# 输出:
# +—-+——+——————+————-+———+
# | id | name | id_card | phone | balance |
# +—-+——+——————+————-+———+
# | 1 | 张三 | 110101199001011234 | 13800138000 | 10000.00 |
# | 2 | 李四 | 110101199001011235 | 13800138001 | 20000.00 |
# | 3 | 王五 | 110101199001011236 | 13800138002 | 30000.00 |
# +—-+——+——————+————-+———+
### 5. 安全监控
– 配置安全监控脚本:
$ cat > /ob/scripts/security_check.sh << 'EOF' #!/bin/bash # security_check.sh #
from:www.itpux.com.qq113257174.wx:itpux-com # web: `http://www.fgedu.net.cn` # 检查用户权限
echo "检查用户权限:" obclient -h192.168.1.10 -P2881 -uroot@sys -p
-e "SHOW GRANTS FOR fgedu_admin;" obclient -h192.168.1.10 -P2881 -uroot@sys -p
-e "SHOW GRANTS FOR fgedu_user;" obclient -h192.168.1.10 -P2881 -uroot@sys -p
-e "SHOW GRANTS FOR fgedu_readonly;" # 检查加密表 echo "检查加密表:" obclient -h192.168.1.10 -P2881
-uroot@fgedudb -p -e "SHOW CREATE TABLE fgedu_customer;" # 检查敏感数据 echo "检查敏感数据:" obclient
-h192.168.1.10 -P2881 -uroot@fgedudb -p
-e "SELECT id, name, SUBSTRING(id_card, 1, 6) || '******' || SUBSTRING(id_card, 13) AS masked_id_card, SUBSTRING(phone, 1, 3) || '****' || SUBSTRING(phone, 8) AS masked_phone, balance FROM fgedu_customer;"
EOF - 执行安全检查: $ /ob/scripts/security_check.sh ## 案例总结 - 成功实施了数据安全措施,包括用户管理、权限控制和数据加密 -
验证了用户权限的有效性 - 验证了数据加密的有效性 - 确保了敏感数据的安全 - 提高了系统的安全性
4.2 审计实战案例
## 案例背景
– 生产环境:OceanBase 4.0集群
– 业务类型:电商业务
– 需求:审计系统操作和数据访问,确保合规性
## 实施步骤
### 1. 环境准备
– 配置OceanBase数据库:
$ obclient -h192.168.1.10 -P2881 -uroot@sys -p -e “CREATE DATABASE fgedudb;”
$ obclient -h192.168.1.10 -P2881 -uroot@sys -p -e “CREATE USER fgedu IDENTIFIED BY
‘password’;”
$ obclient -h192.168.1.10 -P2881 -uroot@sys -p -e “GRANT ALL PRIVILEGES ON fgedudb.* TO
fgedu;”
### 2. 审计配置
– 启用审计:
$ obclient -h192.168.1.10 -P2881 -uroot@sys -p -e “ALTER SYSTEM SET audit_trail = ‘DB’
TENANT ‘sys’;”
$ obclient -h192.168.1.10 -P2881 -uroot@sys -p -e “ALTER SYSTEM SET audit_file_dest =
‘/ob/audit’ TENANT ‘sys’;”
– 配置审计策略:
$ obclient -h192.168.1.10 -P2881 -uroot@sys -p -e “CREATE AUDIT POLICY
fgedu_audit_policy PRIVILEGES CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT;”
$ obclient -h192.168.1.10 -P2881 -uroot@sys -p -e “AUDIT POLICY fgedu_audit_policy BY
fgedu;”
### 3. 审计测试
– 执行操作:
– 创建表:
$ obclient -h192.168.1.10 -P2881 -ufgedu -ppassword -e “CREATE TABLE fgedu_product (id
INT PRIMARY KEY, name VARCHAR(100), price DECIMAL(10,2));”
– 插入数据:
$ obclient -h192.168.1.10 -P2881 -ufgedu -ppassword -e “INSERT INTO fgedu_product VALUES
(1, ‘商品1’, 100.00);”
– 更新数据:
$ obclient -h192.168.1.10 -P2881 -ufgedu -ppassword -e “UPDATE fgedu_product SET price =
150.00 WHERE id = 1;”
– 查询数据:
$ obclient -h192.168.1.10 -P2881 -ufgedu -ppassword -e “SELECT * FROM fgedu_product;”
– 删除数据:
$ obclient -h192.168.1.10 -P2881 -ufgedu -ppassword -e “DELETE FROM fgedu_product WHERE
id = 1;”
### 4. 审计分析
– 查看审计日志:
$ obclient -h192.168.1.10 -P2881 -uroot@sys -p -e “SELECT user_name, event_time,
command_name, sql_text FROM oceanbase.__all_audit_record WHERE tenant_name = ‘fgedudb’
ORDER BY event_time DESC LIMIT 10;”
# 输出:
#
+———–+———————+————-+———————————————+
# | user_name | event_time | command_name | sql_text |
#
+———–+———————+————-+———————————————+
# | fgedu | 2026-01-01 12:05:00 | DELETE | DELETE FROM fgedu_product WHERE id = 1 |
# | fgedu | 2026-01-01 12:04:00 | SELECT | SELECT * FROM fgedu_product |
# | fgedu | 2026-01-01 12:03:00 | UPDATE | UPDATE fgedu_product SET price = 150.00 WHERE
id = 1 |
# | fgedu | 2026-01-01 12:02:00 | INSERT | INSERT INTO fgedu_product VALUES (1, ‘商品1’,
100.00) |
# | fgedu | 2026-01-01 12:01:00 | CREATE | CREATE TABLE fgedu_product (id INT PRIMARY
KEY, name VARCHAR(100), price DECIMAL(10,2)) |
#
+———–+———————+————-+———————————————+
– 分析审计日志:
$ obclient -h192.168.1.10 -P2881 -uroot@sys -p -e “SELECT command_name, count(*) as
count FROM oceanbase.__all_audit_record WHERE tenant_name = ‘fgedudb’ GROUP BY
command_name ORDER BY count DESC;”
# 输出:
# +————-+——-+
# | command_name | count |
# +————-+——-+
# | SELECT | 2 |
# | INSERT | 1 |
# | UPDATE | 1 |
# | DELETE | 1 |
# | CREATE | 1 |
# +————-+——-+
### 5. 审计监控
– 配置审计监控脚本:
$ cat > /ob/scripts/audit_monitor.sh << 'EOF' #!/bin/bash # audit_monitor.sh #
from:www.itpux.com.qq113257174.wx:itpux-com # web: `http://www.fgedu.net.cn` # 查看审计日志
echo "最近10条审计日志:" obclient -h192.168.1.10 -P2881 -uroot@sys -p
-e "SELECT user_name, event_time, command_name, sql_text FROM oceanbase.__all_audit_record WHERE tenant_name = 'fgedudb' ORDER BY event_time DESC LIMIT 10;"
# 分析操作类型 echo "\n操作类型统计:" obclient -h192.168.1.10 -P2881 -uroot@sys -p
-e "SELECT command_name, count(*) as count FROM oceanbase.__all_audit_record WHERE tenant_name = 'fgedudb' GROUP BY command_name ORDER BY count DESC;"
# 检查异常操作 echo "\n异常操作:" obclient -h192.168.1.10 -P2881 -uroot@sys -p
-e "SELECT user_name, event_time, command_name, sql_text FROM oceanbase.__all_audit_record WHERE tenant_name = 'fgedudb' AND command_name IN ('DROP', 'ALTER') ORDER BY event_time DESC;"
EOF - 执行审计监控: $ /ob/scripts/audit_monitor.sh ## 案例总结 -
成功实施了审计措施,包括启用审计、配置审计策略和分析审计日志 - 验证了审计的有效性 - 分析了系统操作和数据访问 - 确保了系统的合规性 - 提高了系统的安全性
4.3 安全与审计集成实战案例
## 案例背景
– 生产环境:OceanBase 4.0集群
– 业务类型:金融核心业务
– 需求:集成安全与审计措施,确保数据安全和合规性
## 实施步骤
### 1. 环境准备
– 配置OceanBase数据库:
$ obclient -h192.168.1.10 -P2881 -uroot@sys -p -e “CREATE DATABASE fgedudb;”
$ obclient -h192.168.1.10 -P2881 -uroot@sys -p -e “CREATE USER fgedu IDENTIFIED
BY ‘password’;”
$ obclient -h192.168.1.10 -P2881 -uroot@sys -p -e “GRANT ALL PRIVILEGES ON
fgedudb.* TO fgedu;”
### 2. 安全配置
– 创建用户:
$ obclient -h192.168.1.10 -P2881 -uroot@sys -p -e “CREATE USER fgedu_finance
IDENTIFIED BY ‘Finance123!’;”
$ obclient -h192.168.1.10 -P2881 -uroot@sys -p -e “CREATE USER fgedu_hr
IDENTIFIED BY ‘Hr123!’;”
– 分配权限:
$ obclient -h192.168.1.10 -P2881 -uroot@sys -p -e “GRANT SELECT, INSERT, UPDATE,
DELETE ON fgedudb.fgedu_finance TO fgedu_finance;”
$ obclient -h192.168.1.10 -P2881 -uroot@sys -p -e “GRANT SELECT ON
fgedudb.fgedu_finance TO fgedu_hr;”
– 配置数据加密:
$ obclient -h192.168.1.10 -P2881 -uroot@sys -p -e “ALTER SYSTEM SET tde_method =
‘AES-256’ TENANT ‘sys’;”
$ obclient -h192.168.1.10 -P2881 -uroot@fgedudb -p -e “CREATE TABLE
fgedu_finance (id INT PRIMARY KEY, employee_id INT, salary DECIMAL(10,2), bonus
DECIMAL(10,2)) ENCRYPTION=’Y’;”
### 3. 审计配置
– 启用审计:
$ obclient -h192.168.1.10 -P2881 -uroot@sys -p -e “ALTER SYSTEM SET audit_trail
= ‘DB’ TENANT ‘sys’;”
$ obclient -h192.168.1.10 -P2881 -uroot@sys -p -e “ALTER SYSTEM SET
audit_file_dest = ‘/ob/audit’ TENANT ‘sys’;”
– 配置审计策略:
$ obclient -h192.168.1.10 -P2881 -uroot@sys -p -e “CREATE AUDIT POLICY
fgedu_audit_policy PRIVILEGES CREATE, ALTER, DROP, INSERT, UPDATE, DELETE,
SELECT;”
$ obclient -h192.168.1.10 -P2881 -uroot@sys -p -e “AUDIT POLICY
fgedu_audit_policy BY fgedu_finance, fgedu_hr;”
### 4. 安全与审计集成
– 配置集成监控脚本:
$ cat > /ob/scripts/security_audit_monitor.sh << 'EOF' #!/bin/bash #
security_audit_monitor.sh # from:www.itpux.com.qq113257174.wx:itpux-com # web:
`http://www.fgedu.net.cn` # 检查用户权限 echo "检查用户权限:" obclient -h192.168.1.10
-P2881 -uroot@sys -p -e "SHOW GRANTS FOR fgedu_finance;" obclient
-h192.168.1.10 -P2881 -uroot@sys -p -e "SHOW GRANTS FOR fgedu_hr;" # 检查加密表
echo "\n检查加密表:" obclient -h192.168.1.10 -P2881 -uroot@fgedudb -p
-e "SHOW CREATE TABLE fgedu_finance;" # 查看审计日志 echo "\n最近10条审计日志:" obclient
-h192.168.1.10 -P2881 -uroot@sys -p
-e "SELECT user_name, event_time, command_name, sql_text FROM oceanbase.__all_audit_record WHERE tenant_name = 'fgedudb' ORDER BY event_time DESC LIMIT 10;"
# 分析操作类型 echo "\n操作类型统计:" obclient -h192.168.1.10 -P2881 -uroot@sys -p
-e "SELECT command_name, count(*) as count FROM oceanbase.__all_audit_record WHERE tenant_name = 'fgedudb' GROUP BY command_name ORDER BY count DESC;"
# 检查异常操作 echo "\n异常操作:" obclient -h192.168.1.10 -P2881 -uroot@sys -p
-e "SELECT user_name, event_time, command_name, sql_text FROM oceanbase.__all_audit_record WHERE tenant_name = 'fgedudb' AND command_name IN ('DROP', 'ALTER') ORDER BY event_time DESC;"
EOF - 执行集成监控: $ /ob/scripts/security_audit_monitor.sh ### 5. 测试验证 - 执行操作: -
使用fgedu_finance用户: $ obclient -h192.168.1.10 -P2881 -ufgedu_finance
-pFinance123!
-e "INSERT INTO fgedudb.fgedu_finance VALUES (1, 1001, 10000.00, 5000.00);"
$ obclient -h192.168.1.10 -P2881 -ufgedu_finance -pFinance123!
-e "UPDATE fgedudb.fgedu_finance SET salary = 12000.00 WHERE id = 1;" -
使用fgedu_hr用户: $ obclient -h192.168.1.10 -P2881 -ufgedu_hr -pHr123!
-e "SELECT * FROM fgedudb.fgedu_finance;" $ obclient -h192.168.1.10 -P2881
-ufgedu_hr -pHr123!
-e "UPDATE fgedudb.fgedu_finance SET salary = 15000.00 WHERE id = 1;" # 输出:
# ERROR 1142 (42000): UPDATE command denied to user 'fgedu_hr' @'%' for
table 'fgedu_finance' - 执行集成监控: $ /ob/scripts/security_audit_monitor.sh ##
案例总结 - 成功集成了安全与审计措施,包括用户管理、权限控制、数据加密和审计 - 验证了安全措施的有效性 - 验证了审计措施的有效性 -
确保了数据安全和合规性 - 提高了系统的整体安全性
Part05-风哥经验总结与分享
5.1 数据安全与审计最佳实践
数据安全与审计的最佳实践:
- 多层安全:实施多层安全措施,如网络安全、应用安全、数据安全等
- 最小权限:遵循最小权限原则,只授予用户必要的权限
- 强密码策略:要求密码长度至少8位,包含大小写字母、数字和特殊字符
- 定期密码更新:要求用户每90天更新一次密码
- 数据加密:对敏感数据进行加密存储
- 全面审计:对所有操作和数据访问进行审计
- 实时监控:对审计日志进行实时监控,及时发现异常
- 定期分析:定期分析审计日志,发现安全趋势和问题
- 安全培训:对用户和管理员进行安全培训
- 定期演练:定期进行安全演练,提高应对安全事件的能力
5.2 常见安全问题与解决方案
常见安全问题与解决方案:
- 弱密码:
- 原因:用户使用弱密码,容易被破解
- 解决方案:实施强密码策略,要求密码长度至少8位,包含大小写字母、数字和特殊字符
- 权限滥用:
- 原因:用户拥有过多权限,可能导致权限滥用
- 解决方案:遵循最小权限原则,只授予用户必要的权限
- 数据泄露:
- 原因:敏感数据未加密,容易被泄露
- 解决方案:对敏感数据进行加密存储
- 审计缺失:
- 原因:未启用审计,无法追踪操作
- 解决方案:启用审计,对所有操作和数据访问进行审计
- 安全意识薄弱:
- 原因:用户和管理员安全意识薄弱,容易导致安全事件
- 解决方案:对用户和管理员进行安全培训,提高安全意识
5.3 安全与审计 checklist
安全与审计 checklist:
- 用户管理:
- 是否创建了合适的用户?
- 是否分配了最小权限?
- 是否实施了强密码策略?
- 数据安全:
- 是否对敏感数据进行了加密?
- 是否实施了数据访问控制?
- 是否定期备份数据?
- 审计:
- 是否启用了审计?
- 是否配置了全面的审计策略?
- 是否定期分析审计日志?
- 监控:
- 是否建立了安全监控机制?
- 是否及时发现和处理安全事件?
- 是否定期进行安全测试?
- 培训:
- 是否对用户和管理员进行了安全培训?
- 是否定期更新安全知识?
- 是否建立了安全意识教育机制?
itpux-com
OceanBase视频:www.itpux.com
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
