Milvus安全设置

2025-01-14 1,074
Milvus

类型:向量数据库

简介:存储、索引和管理由深度神经网络和机器学习(ML)模型生成的大规模嵌入向量。

Milvus提供了多种安全功能来保障数据安全性,包括启用TLS加密和用户身份验证。通过设置相应的配置,可以确保与Milvus的通信是加密的,并且只有授权用户能够访问系统。

为了更好地管理用户权限,Milvus还支持基于角色的访问控制(RBAC),管理员可以灵活地定义和分配角色与权限。Milvus允许通过配置文件启用或禁用这些安全功能,以满足不同安全需求。本文将详细介绍如何启用 TLS 和用户身份验证,如何创建、管理用户与角色,以及如何处理证书和加密设置。

一、启用Milvus身份验证

TLS 和用户身份验证是两种不同的安全方法。如果在 Milvus 系统中同时启用了用户身份验证和 TLS,则必须提供用户名、密码和证书文件路径。

本页的代码片段使用新的MilvusClient(Python) 与 Milvus 进行交互。用于其他语言的新 MilvusClient SDK 将在未来更新中发布。

要为 Milvus 服务器启用用户身份验证,请在 Milvus 配置文件milvus.yaml 中将 common.security.authorizationEnabled 设置为 true。

Milvus安全设置

1、通过身份验证连接Milvus

启用身份验证后,需要使用用户名和密码连接到 Milvus。默认情况下,启动 Milvus 时会创建root 用户,密码为Milvus 。下面是一个示例,说明如何使用默认root 用户在启用身份验证后连接 Milvus:

Milvus安全设置

2、创建新用户

以默认root 用户身份连接后,可以按以下步骤创建和验证新用户:

Milvus安全设置

3、使用新用户连接 Milvus

使用新创建用户的凭据进行连接:

Milvus安全设置

4、更新用户密码

用以下代码更改现有用户的密码:

Milvus安全设置

如果忘记了旧密码,Milvus 提供了一个配置项,允许将某些用户指定为超级用户。这样,重置密码时就不需要旧密码了。

默认情况下,Milvus 配置文件中的common.security.superUsers 字段为空,这意味着所有用户在重置密码时都必须提供旧密码。不过,你可以将特定用户指定为超级用户,他们不需要提供旧密码。在下面的代码段中,root 和foo 被指定为超级用户。

你应该在管理 Milvus 实例运行的 Milvus 配置文件中添加以下配置项。

Milvus安全设置

5、删除用户

要删除用户,请使用drop_user() 方法。

client.drop_user(user_name="user_1")

要删除用户,你不能是被删除的用户。否则,将引发错误。

6、列出所有用户

列出所有用户。

client.list_users()

7、限制条件

用户名不得为空,长度不得超过 32 个字符。必须以字母开头,且只能包含下划线、字母或数字。

密码必须至少包含 6 个字符,长度不得超过 256 个字符。

二、用户权限角色

Milvus 通过 RBAC 实现细粒度访问控制。可以从创建用户和角色开始,然后为角色分配权限或权限组,最后通过向用户授予角色来管理访问控制。这种方法可确保访问管理的效率和安全性。

1、用户

初始化 Milvus 实例后,会自动生成一个根用户,用于首次连接 Milvus 时进行身份验证。根用户的用户名是root ,密码是Milvus 。根用户的默认角色是admin ,可以访问所有资源。为确保数据安全,请妥善保管根用户的凭据,防止未经授权的访问。

对于日常操作,我们建议创建用户而不是使用根用户。

2、创建用户

下面的示例显示了如何创建用户名为user_1 、密码为P@ssw0rd 的用户。用户名和密码必须遵循以下规则:

  • 用户名:必须以字母开头,只能包含大写或小写字母、数字和下划线;
  • 密码:长度必须为 8-64 个字符,必须包括以下三种字符:大写字母、小写字母、数字和特殊字符。

Milvus安全设置

3、更新密码

创建用户后,如果忘记密码,可以更新密码。

新密码也必须遵循以下规则:

  • 长度必须为 8-64 个字符,并包含以下三个字符:大写字母、小写字母、数字和特殊字符;
  • 下面的示例显示了如何将用户user_1 的密码更新为NewP@ssw0rd 。

Milvus安全设置

4、列出用户

创建多个用户后,可以列出并查看所有现有用户。

Milvus安全设置

下面是一个输出示例。root 是 Milvus 自动生成的默认用户。user_1 是刚刚创建的新用户。

5、角色

Milvus 提供了一个名为admin 的内置角色,它是一个管理员角色,可以访问所有实例下的资源,并拥有所有操作的权限。为实现更精细的访问管理和增强数据安全性,建议根据需要创建自定义角色。

6、创建角色

下面的示例演示了如何创建名为role_a 的角色。

角色名称必须遵循以下规则:

  • 必须以字母开头,且只能包含大写或小写字母、数字和下划线”。

Milvus安全设置

7、列出角色

创建多个角色后,可以列出并查看所有现有角色。

Milvus安全设置

下面是一个输出示例。admin 是 Milvus 中的默认角色。role_a 是刚刚创建的新角色。

三、启用RBAC

RBAC(基于角色的访问控制)是一种基于角色的访问控制方法。通过 RBAC,可以精细控制用户在 Collections、数据库和实例级别上可以执行的操作,增强数据的安全性。

与传统的用户访问控制模型不同,RBAC 引入了角色的概念。在 RBAC 模型中,先授予角色权限,然后再将这些角色授予用户。然后,用户才能获得权限。

RBAC 模型可以提高访问控制管理的效率。例如,如果多个用户需要同一套权限,就不需要为每个用户手动设置权限。相反,你可以创建一个角色并将该角色分配给用户。如果要调整这些用户的权限,只需调整角色的权限,修改后的权限将应用到所有拥有该角色的用户。

RBAC主要概念:

Milvus安全设置

RBAC 模型中有五个主要组成部分。

  • 资源:可访问的资源实体。Milvus 中的资源分为三个级别–实例、数据库和 Collections;
  • 权限:对 Milvus 资源执行特定操作的权限(如创建 Collection、插入数据等);
  • 权限组:由多个权限组成的组;
  • 角色:角色由权限和资源两部分组成。权限定义了角色可以执行的操作类型,而资源则定义了可以执行操作的目标资源。例如,数据库管理员角色可以对某些数据库执行读、写和管理操作;
  • 用户:用户是指使用 Milvus 的人。每个用户都有一个唯一的 ID,并被授予一个或多个角色。

四、传输中加密

TLS(传输层安全)是一种确保通信安全的加密协议。Milvus 代理使用 TLS 单向和双向验证。

本主题将介绍如何在 Milvus 代理中启用 TLS,用于 gRPC 和 RESTful 流量。

TLS 和用户身份验证是两种不同的安全方法。如果在 Milvus 系统中同时启用了用户身份验证和 TLS,则需要提供用户名、密码和证书文件路径。

1、创建自己的证书

确保已安装 OpenSSL。如果尚未安装,请先构建并安装OpenSSL。

openssl version

如果未安装 OpenSSL。可在 Ubuntu 中使用以下命令安装。

sudo apt install openssl

创建文件

(1)创建gen.sh文件。

mkdir cert && cd cert
touch gen.sh

(2)将以下脚本复制到gen.sh 。

有必要在gen.sh 文件中配置CommonName 。CommonName 指的是客户端在连接时应指定的服务器名称。

gen.sh

gen.sh 文件中的变量对创建证书签名请求文件的过程至关重要。前五个变量是基本的签名信息,包括国家、州、地点、组织、组织单位。在配置CommonName 时需要谨慎,因为它将在客户端与服务器通信时进行验证。

(3)运行gen.sh生成证书

运行gen.sh 文件创建证书。

chmod +x gen.sh
./gen.sh

将创建以下七个文件:ca.key,ca.pem,ca.srl,server.key,server.pem,client.key,client.pem 。

请确保ca.key,ca.pem,ca.srl 安全,以便以后更新证书。server.key 和server.pem 文件由服务器使用,而client.key 和client.pem 文件由客户端使用。

(4)更新证书(可选)

如果想在某些情况下更新证书,例如证书即将过期,可以使用以下脚本。

工作目录中需要ca.key,ca.pem,ca.srl 。

renew.sh

运行renew.sh 文件创建证书。

chmod +x renew.sh
./renew.sh
  • 广告合作

  • QQ群号:4114653

温馨提示:
1、本网站发布的内容(图片、视频和文字)以原创、转载和分享网络内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。邮箱:2942802716#qq.com(#改为@)。 2、本站原创内容未经允许不得转裁,转载请注明出处“站长百科”和原文地址。
Milvus
上一篇: Milvus基本操作
Milvus
下一篇: Milvus存储优化