Milvus项目TLS安全通信配置指南

Milvus项目TLS安全通信配置指南

milvus A cloud-native vector database, storage for next generation AI applications milvus 项目地址: https://gitcode.com/gh_mirrors/mi/milvus

概述

在现代分布式系统中,数据传输安全至关重要。Milvus作为一款高性能向量数据库,支持通过TLS(传输层安全协议)实现客户端与服务器之间的安全通信。本文将详细介绍如何在Milvus中配置TLS安全通信,包括证书准备、服务器配置和客户端连接等完整流程。

TLS认证模式

Milvus支持两种TLS认证模式:

  1. 单向认证:仅服务器向客户端验证身份

    • 服务器需要:server.pem和server.key文件
    • 客户端需要:server.pem文件
  2. 双向认证:客户端和服务器互相验证身份

    • 服务器需要:server.pem、server.key和ca.pem文件
    • 客户端需要:client.pem、client.key和ca.pem文件

证书准备流程

准备工作

确保系统已安装OpenSSL工具:

sudo apt install openssl  # Ubuntu/Debian系统
# 或
yum install openssl      # CentOS/RHEL系统

创建证书配置文件

  1. 新建工作目录并创建配置文件:
mkdir cert && cd cert
touch openssl.cnf gen.sh
  1. 将OpenSSL标准配置复制到openssl.cnf文件中(内容较长,参考原文档)

  2. 创建gen.sh脚本文件,内容如下:

#!/usr/bin/env sh
# 证书参数配置
Country="CN"
State="Shanghai"
Location="Shanghai"
Organization="milvus"
OrganizationUnit="milvus"
CommonName="localhost"

# 生成CA证书
openssl genpkey -algorithm RSA -out ca.key
openssl req -new -x509 -key ca.key -out ca.pem -days 3650 -subj "/C=$Country/ST=$State/L=$Location/O=$Organization/OU=$OrganizationUnit/CN=$CommonName"

# 生成服务器证书
openssl genpkey -algorithm RSA -out server.key
openssl req -new -nodes -key server.key -out server.csr -days 3650 -subj "/C=$Country/O=$Organization/OU=$OrganizationUnit/CN=$CommonName" -config ./openssl.cnf -extensions v3_req
openssl x509 -req -days 3650 -in server.csr -out server.pem -CA ca.pem -CAkey ca.key -CAcreateserial -extfile ./openssl.cnf -extensions v3_req

# 生成客户端证书
openssl genpkey -algorithm RSA -out client.key
openssl req -new -nodes -key client.key -out client.csr -days 3650 -subj "/C=$Country/O=$Organization/OU=$OrganizationUnit/CN=$CommonName" -config ./openssl.cnf -extensions v3_req
openssl x509 -req -days 3650 -in client.csr -out client.pem -CA ca.pem -CAkey ca.key -CAcreateserial -extfile ./openssl.cnf -extensions v3_req

准备证书文件

执行生成脚本:

chmod +x gen.sh
./gen.sh

成功执行后将生成以下文件:

  • CA相关:ca.key、ca.pem、ca.srl
  • 服务器相关:server.key、server.pem、server.csr
  • 客户端相关:client.key、client.pem、client.csr

服务器配置

修改Milvus配置文件config/milvus.yaml

tls:
  serverPemPath: /path/to/server.pem    # 服务器证书路径
  serverKeyPath: /path/to/server.key    # 服务器私钥路径
  caPemPath: /path/to/ca.pem           # CA证书路径

common:
  security:
    tlsMode: 2  # 0:不认证 1:单向认证 2:双向认证

客户端连接示例(Python)

使用Milvus Python SDK建立安全连接:

from pymilvus import connections

# 连接参数
_HOST = '127.0.0.1'
_PORT = '19530'

# 建立TLS连接
connections.connect(
    host=_HOST,
    port=_PORT,
    secure=True,
    client_pem_path="cert/client.pem",  # 客户端证书
    client_key_path="cert/client.key",   # 客户端私钥
    ca_pem_path="cert/ca.pem",          # CA证书
    server_name="localhost"             # 服务器名称(必须与证书CN一致)
)

# 验证连接
print("当前连接:", connections.list_connections())

最佳实践建议

  1. 证书管理

    • 定期更新证书(建议不超过1年)
    • 保护私钥文件权限(建议设置为600)
    • 生产环境建议使用专业CA机构颁发的证书
  2. 安全配置

    • 生产环境务必使用双向认证(tlsMode=2)
    • 禁用不安全的加密套件
    • 定期更新OpenSSL版本
  3. 性能考虑

    • TLS加密会增加约15%的性能开销
    • 对于内网安全环境可考虑不使用TLS
  4. 故障排查

    • 确保证书CN与服务器名称匹配
    • 检查证书有效期
    • 验证证书链完整性

通过以上配置,您可以确保Milvus集群的通信安全,防止数据在传输过程中被窃听或篡改。根据实际安全需求选择合适的认证模式,并遵循证书管理的最佳实践。

milvus A cloud-native vector database, storage for next generation AI applications milvus 项目地址: https://gitcode.com/gh_mirrors/mi/milvus

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卓炯娓

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值