之前我们讲了关于 OceanBase 安全审计的《身份鉴别》和《用户管理与访问》两个部分,OceanBase 的安全机制介绍其支持传输加密,今天我们主要来实践一下如何配置传输加密以及验证是否真的加密。
OceanBase 社区版、企业版都可以。
OceanBase 传输加密的开启通过多个配置项配合使用。
alter system set ssl_external_kms_info = '
{
"ssl_mode":"file"
}';
alter system set ssl_client_authentication = 'TRUE';
# 配置为 TRUE 后,MySQL 通信 SSL 即时开启。
由于 OBServer 之间 TCP 连接都是长连接,因此需要重启 OBServer 后 RPC SSL 加密通信才能开启。
# RPC 通信 SSL 需要配置白名单。
# 整个集群都开启。
alter system set _ob_ssl_invited_nodes='ALL';
# 指定 IP 的 OBServer 开启 SSL。
alter system set _ob_ssl_invited_nodes='135.xxx.xx.xx, 128.xxx.xx.xx';
通过 \s
查看。
抓包。
日志检索 rpc connection accept,查看 use_ssl
的值是 True 还是 False。
抓包。
使用了 OBProxy 之后,客户端跟 OceanBase 建立加密连接,实际是跟 OBProxy 建立加密连接,然后 OBProxy 跟 OBServer 再建立加密连接。按照这个理解,前面服务端 OceanBase 集群开启 SSL 客户端认证也是个必要的前提了。
root@proxysys
账号登录。UPDATE proxyconfig.security_config SET CONFIG_VAL= '{"sourceType" : "FILE", "CA" : "certs/ca.pem", "publicKey" : "certs/client-cert.pem", "privateKey" : "certs/client-key.pem"}' WHERE APP_NAME = 'obproxy' and VERSION = '1';
注意:这里配置的公钥和私钥,是前面生成的 Client 端证书,而不是 Server 端的。因为 OBProxy 作为客户端和服务端链路中间重要的一环,是客户端的“服务端”,同时也是 OceanBase 服务端的“客户端”。
检查是否设置成功。
配置客户端和 OBProxy 开启 SSL 连接。
alter proxyconfig set enable_client_ssl=true;
配置 OBProxy 和 OBServer 开启 SSL 连接。
alter proxyconfig set enable_server_ssl=true;
用业务租户的管理员账户登录,设置 SSL 白名单。
alter system set ob_ssl_invited_common_names="obclient";
# 这个参数是租户级别的,需要在要连接的租户里设置,立即生效,不需要重启实例或者集群。
注意:
ob_ssl_invited_common_names
的值要设置成和 Client 端证书 subject 中的cn(common name)
字段一致。
实际配置和验证的过程也踩了几个坑,还是要结合文档多加理解和消化。
[1]
OBServer 传输加密: https://www.oceanbase.com/docs/enterprise-oceanbase-database-cn-10000000000881589
[2]
ODP 传输加密: https://www.oceanbase.com/docs/common-oceanbase-database-cn-10000000001692887
本文关键字:#OceanBase# #加密传输# #安全审计#
阅读推荐
OB 运维 | OceanBase 4.1.0 clog 目录探究
技术分享 | OceanBase 安全审计之用户管理与访问控制
🔗 Github https://github.com/actiontech/sqle
📚 文档 https://actiontech.github.io/sqle-docs/
💻 官网 https://opensource.actionsky.com/sqle/
👥 微信技术交流群:添加管理员微信 ActionOpenSource