前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >技术分享 | OceanBase 安全审计之传输加密

技术分享 | OceanBase 安全审计之传输加密

作者头像
爱可生开源社区
发布2023-09-09 11:13:06
2670
发布2023-09-09 11:13:06
举报
文章被收录于专栏:爱可生开源社区

之前我们讲了关于 OceanBase 安全审计的《身份鉴别》《用户管理与访问》两个部分,OceanBase 的安全机制介绍其支持传输加密,今天我们主要来实践一下如何配置传输加密以及验证是否真的加密。

1环境准备

  1. 企业版 OceanBase 4.1 集群(3 节点) + OBProxy
  2. 配置 CA、服务端、客户端证书

OceanBase 社区版、企业版都可以。

2OBServer 传输加密[1]

2.1 开启加密

OceanBase 传输加密的开启通过多个配置项配合使用。

通过 root 用户登录 sys 租户

指定私钥/证书/CA 证书的获取方式

代码语言:javascript
复制
alter system set ssl_external_kms_info = '
{
"ssl_mode":"file"
}';

配置 MySQL 端口 SSL 通信

代码语言:javascript
复制
alter system set ssl_client_authentication = 'TRUE';
# 配置为 TRUE 后,MySQL 通信 SSL 即时开启。

配置 RPC 通信的 SSL 白名单

由于 OBServer 之间 TCP 连接都是长连接,因此需要重启 OBServer 后 RPC SSL 加密通信才能开启。

代码语言:javascript
复制
# 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'; 

2.2 验证加密

MySQL 端口(2881)

通过 \s 查看。

抓包。

RPC 端口(2882)

日志检索 rpc connection accept,查看 use_ssl 的值是 True 还是 False。

抓包。

3ODP 传输加密[2]

使用了 OBProxy 之后,客户端跟 OceanBase 建立加密连接,实际是跟 OBProxy 建立加密连接,然后 OBProxy 跟 OBServer 再建立加密连接。按照这个理解,前面服务端 OceanBase 集群开启 SSL 客户端认证也是个必要的前提了。

3.1 开启加密

  1. 使用 OBProxy 的 root@proxysys 账号登录。
  2. 设置证书、公钥、私钥。
代码语言:javascript
复制
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 连接。

代码语言:javascript
复制
alter proxyconfig set enable_client_ssl=true;

配置 OBProxy 和 OBServer 开启 SSL 连接。

代码语言:javascript
复制
alter proxyconfig set enable_server_ssl=true;

用业务租户的管理员账户登录,设置 SSL 白名单。

代码语言:javascript
复制
alter system set ob_ssl_invited_common_names="obclient";
# 这个参数是租户级别的,需要在要连接的租户里设置,立即生效,不需要重启实例或者集群。

注意:ob_ssl_invited_common_names 的值要设置成和 Client 端证书 subject 中的 cn(common name) 字段一致。

3.2 验证加密

客户端和 OBProxy 的连接

OBProxy 和 OBServer 的连接

4总结

实际配置和验证的过程也踩了几个坑,还是要结合文档多加理解和消化。

参考资料

[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 运维 | 谁动了我的参数?

OB 运维 | OceanBase 4.1.0 clog 目录探究

OB 运维 | OceanBase 是如何关闭主备线程的?

OB 源码 | 压测时为什么冻结阈值在变化?

技术分享 | OceanBase 安全审计之用户管理与访问控制

技术分享 | OceanBase 安全审计之身份鉴别

SQLE 获取

🔗 Github https://github.com/actiontech/sqle

📚 文档 https://actiontech.github.io/sqle-docs/

💻 官网 https://opensource.actionsky.com/sqle/

👥 微信技术交流群:添加管理员微信 ActionOpenSource

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-08-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 爱可生开源社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1环境准备
  • 2OBServer 传输加密[1]
    • 2.1 开启加密
      • 通过 root 用户登录 sys 租户
      • 指定私钥/证书/CA 证书的获取方式
      • 配置 MySQL 端口 SSL 通信
      • 配置 RPC 通信的 SSL 白名单
    • 2.2 验证加密
      • MySQL 端口(2881)
      • RPC 端口(2882)
  • 3ODP 传输加密[2]
    • 3.1 开启加密
      • 3.2 验证加密
        • 客户端和 OBProxy 的连接
        • OBProxy 和 OBServer 的连接
        • 参考资料
    • 4总结
      • SQLE 获取
      相关产品与服务
      云数据库 MySQL
      腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档