尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

OceanBase ob_admin 工具在 SSL/TLS 加密集群下的连接使用指南:-sintl/-ssm 与 -mbkmi/-mlocal 详解

OceanBase ob_admin 工具在 SSL/TLS 加密集群下的连接使用指南:-sintl/-ssm 与 -mbkmi/-mlocal 详解 OceanBase ob_admin 工具在 SSL/TLS 加密集群下的连接使用指南-sintl/-ssm 与 -mbkmi/-mlocal 详解【免费下载链接】oceanbaseOceanBase is the unified distributed database for the AI era — open-source, multi-model, one engine for your most demanding workloads.项目地址: https://gitcode.com/GitHub_Trending/oc/oceanbase本指南以 tools/ob_admin/README.md 为核心脉络系统讲解 OceanBase 自带的 ob_admin 管理工具在开启了 SSL/TLS 加密的集群中如何正确建立连接包括基本命令行形态、SSL 加密协议选择-sintl国际算法 /-ssm国密算法、证书与私钥获取方式-mlocal本地文件模式 /-mbkmiBKMI 密钥管理模式以及 BKMI 配置文件的完整字段说明。读者读完本文后将能够在加密集群环境下独立配置并运行 ob_admin 各类管理命令并能结合源码理解其 SSL 客户端加载链路。一、ob_admin 工具概览加密集群下的运维入口ob_admin 是 OceanBase 提供的一个运维与问题诊断工具源码位于 tools/ob_admin。它既支持离线解析本地数据文件如dumpsst转储 SSTable、log_tool解析日志、slog_tool解析 slog也支持通过 RPC 远程连接 observer 执行在线管理命令如转储内存表、强制切主、调整租户内存、操作表锁等。当目标集群开启了 SSL/TLS 加密时ob_admin 必须以加密通道连接 observer否则会因证书校验或加密握手失败而无法执行命令。此时需要额外追加两组参数-s指定 SSL 加密协议intl国际算法 /sm国密算法-m指定证书、私钥等加密材料的获取方式local本地文件 /bkmi密钥管理接口。在主程序 main.cpp 的 usage 中同样给出了该用法并特别注明括号内的选项在启用 SSL 时生效ob_admin -h127.0.0.1 -p2883 (-sintl/-ssm -mbkmi/-mlocal) [command]二、基本使用命令行为参数形态速览原文档给出的基本命令格式如下./ob_admin -h127.0.0.1 -p28204 -sintl (-ssm) -mbkmi(-mlocal) your_command参数含义拆解参数含义可选值说明-hobserver 主机地址IP 地址默认值为127.1-pobserver 端口1 ~ 65535默认值为2500超出范围会报port not valid-sintl采用国际加密协议intl对应源码中的SSL_MODE_INTL-ssm采用国密加密协议sm对应SSL_MODE_SM当前暂不支持-mbkmi通过 BKMI 获取 CA 证书、证书和私钥bkmi需要配合obadmin_ssl_bkmi.cfg配置文件-mlocal本地文件模式获取证书local默认模式读取本地wallet/目录your_command具体要执行的命令见各子命令如diag、force_switch_ilog_file等从源码 ob_admin_server_executor.cpp 可以看到完整的选项解析表除上述外还支持参数含义默认值-tRPC 超时时间微秒30000003 秒-SUnix Domain Socket 路径无走 TCP-s的解析逻辑ob_admin_server_executor.cpp为字符串不区分大小写INTL对应国际加密模式SM对应国密模式其余输入一律按INTL处理未传-s时ssl_mode_ SSL_MODE_NONE不启用 SSL。-m的解析逻辑ob_admin_server_executor.cpp为local对应ssl_cfg_mode_ 0bkmi对应ssl_cfg_mode_ 1默认local。三、SSL 模式选择-sintl 与 -ssm根据 OB 集群的加密方式ob_admin 需要选择与之匹配的加密协议-sintl国际加密协议适用于采用国际标准加密算法如 RSA/ECDSA 体系的 TLS 证书的集群是目前的主流默认选择也是 README 示例中的标准用法。-ssm国密加密协议适用于采用国家商用密码算法SM2/SM3/SM4 体系的集群。注意原文档明确标注暂不支持在源码中SSL_MODE_SM分支虽已定义ob_admin_server_executor.cpp但实际使用国密模式前请先确认当前版本是否可用切勿在生产环境贸然启用。在 load_ssl_config 中is_sm标志会一路传递到easy_ssl_ob_config_check与client_.load_ssl_config最终决定底层 easy 框架采用哪套加密算法栈完成握手与双向认证。四、证书获取方式一-mlocal 本地文件模式当采用本地文件模式时操作步骤如下拷贝证书目录将 observer 工作目录下的wallet/文件夹整体拷贝至 ob_admin 可执行文件的同级目录下执行命令./ob_admin -h127.0.0.1 -p28204 -sintl (-ssm) -mlocal your_command即可完成连接。从源码 ob_admin_server_executor.h 可知本地模式实际读取的三个文件是wallet/ca.pem # CA 根证书 wallet/client-cert.pem # 客户端证书 wallet/client-key.pem # 客户端私钥这三个路径与 observer 侧 ob_define.h 中定义的OB_SSL_CA_FILE wallet/ca.pem、OB_SSL_CERT_FILE wallet/server-cert.pem、OB_SSL_KEY_FILE wallet/server-key.pem同属一套wallet/证书目录体系——observer 侧的server-cert.pem是服务端证书ob_admin 作为客户端使用client-cert.pem。同时 observe 中还定义了国密证书文件wallet/SS.cert.pem、wallet/SE.cert.pem等与-ssm国密模式一一对应。在 load_ssl_config 中本地模式直接取用上述三个宏路径随后easy_ssl_ob_config_check会校验 CA、证书与私钥是否匹配源码中该分支错误日志即为Local file mode: key and cert not match。此外还会通过ObSrvNetworkFrame::extract_expired_time检查证书有效期确保证书未过期。五、证书获取方式二-mbkmi 模式与 obadmin_ssl_bkmi.cfg 配置5.1 配置步骤当采用 BKMI密钥管理接口模式时操作步骤如下新建配置文件在 ob_admin 可执行文件的同级目录下新建一个名为obadmin_ssl_bkmi.cfg的文件粘贴配置内容将 BKMI 模式的相关配置内容粘贴到文件中——注意要取两个花括号之间的完整内容包括两个花括号本身执行命令./ob_admin -h127.0.0.1 -p28204 -sintl (-ssm) -mbkmi your_command即可完成连接。5.2 配置文件完整模板原文档给出的obadmin_ssl_bkmi.cfg内容模板如下必须包含两对花括号{ ssl_mode:bkmi, kms_host:, root_cert:, private_key:, PRIVATE_KEY_PHRASE:123456, SCENE:ANT, CALLER:ob_ssl_crypt, CERT_NAME:ob_yanhua_test1, PRIVATE_KEY_NAME:ob_yanhua_test1-app-id-authn-RSA-2048-private, KEY_VERSION:1 }5.3 字段含义参考字段含义说明ssl_modeSSL 配置模式固定为bkmi标识走 BKMI 获取密钥kms_hostKMS 服务地址按实际部署环境填写示例中为空root_certCA 根证书按需填写示例中为空private_key私钥内容按需填写示例中为空PRIVATE_KEY_PHRASE私钥口令示例为123456实际部署务必更换为强口令SCENE场景标识示例为ANTCALLER调用方标识示例为ob_ssl_cryptCERT_NAME证书名称示例为ob_yanhua_test1按实际 BKMI 中申请的证书名填写PRIVATE_KEY_NAME私钥名称示例为ob_yanhua_test1-app-id-authn-RSA-2048-private需与 BKMI 侧注册的私钥名一致KEY_VERSION密钥版本号示例为15.4 源码读取逻辑ob_admin_server_executor.cpp 中的ob_admin_server_read_bkmi_cfg会以只读方式打开当前目录下的obadmin_ssl_bkmi.cfg文件不存在时报OB_FILE_NOT_EXIST日志提示obadmin_ssl_bkmi_cfg.txt is not exist读取内容超过OB_MAX_CONFIG_VALUE_LEN时报OB_BUF_NOT_ENOUGHconfig file is too long。随后ob_admin_server_executor.cpp配置内容被交给share::ObSSLClient进行初始化先ssl_client.init()再check_param_valid()校验 KMS 参数合法性最后从ssl_client中取出get_root_ca()、public_cert_、private_key_三份材料作为后续easy_ssl_ob_config_check与client_.load_ssl_config的输入完成 SSL 双向认证所需的 CA 与客户端证书加载。该分支编译依赖宏OB_BUILD_TDE_SECURITY见 ob_admin_server_executor.cpp即需要开启 TDE/加密安全特性的构建版本才支持 BKMI 模式。六、SSL 连接背后的执行链路源码视角当-h/-S参数出现时主程序 main.cpp 会创建ObAdminServerExecutor其execute()流程ob_admin_server_executor.cpp为parse_command()解析-h/-p/-t/-s/-m/-S及命令串client_.init()初始化网络客户端编译宏OB_BUILD_TDE_SECURITY开启时调用load_ssl_config()按-m分支加载证书材料client_.get_proxy()获取 RPC 代理并设置目标服务器、超时时间租户 ID 从环境变量tenant读取未设置时使用OB_SYS_TENANT_IDob_admin_server_executor.cpp在注册表中按命令名匹配ObAdminRoutine并执行process()。命令注册表定义在 ob_admin_routine.cpp通过DEF_COMMAND宏注册例如diag免密登录并拉起 mysql 客户端ob_admin_routine.cpp、force_switch_ilog_file、dump_memtable、force_set_ls_as_single_replica、modify_tenant_memory、remove_lock等。SSL 配置只影响上述 RPC 通道的加密与认证不影响命令本身的语义。七、注意事项与排障要点国密模式暂不支持-ssm对应的国密协议在文档中标注为暂不支持选择前请先确认版本能力。本地模式证书目录位置wallet/必须放在 ob_admin 可执行文件同级目录且至少包含ca.pem、client-cert.pem、client-key.pem三个文件证书与私钥不匹配时日志会提示Local file mode: key and cert not match。BKMI 配置文件格式obadmin_ssl_bkmi.cfg必须位于 ob_admin 同级目录内容需包含完整的两对花括号字段值需与 BKMI 侧实际注册的证书名、私钥名、版本号一致否则check_param_valid会校验失败。BKMI 模式依赖构建宏只有开启OB_BUILD_TDE_SECURITY的构建才包含 BKMI 分支若使用的二进制未开启该特性-mbkmi将无法生效。端口与超时-p端口必须落在0 port 65536区间-t超时单位为微秒默认 3 秒大结果集命令如转储可适当调大。日志输出ob_admin 默认将日志写到/dev/null如需排查连接问题可设置环境变量OB_ADMIN_LOG_DIR指定日志目录并通过OB_ADMIN_LOG_LEVEL调整日志级别main.cpp注意日志目录不要放在 OceanBase 的 clog 目录下。八、延伸阅读工具入口与命令分发tools/ob_admin/main.cppSSL 参数解析与证书加载tools/ob_admin/server_tool/ob_admin_server_executor.cpp本地证书路径定义tools/ob_admin/server_tool/ob_admin_server_executor.h在线管理命令注册表tools/ob_admin/server_tool/ob_admin_routine.cppobserver 侧 wallet 证书文件定义deps/oblib/src/lib/ob_define.h工具构建集成tools/ob_admin/CMakeLists.txt【免费下载链接】oceanbaseOceanBase is the unified distributed database for the AI era — open-source, multi-model, one engine for your most demanding workloads.项目地址: https://gitcode.com/GitHub_Trending/oc/oceanbase创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表