VikingDB多租户模式开启教程:3步实现租户数据完全隔离
[1] 一句话结论
本指南将带你快速开启VikingDB多租户模式,实现租户间数据与资源的安全隔离。
[2] 适用场景与不适用场景
适用场景
- 适合企业级团队知识中心场景,支持10个以上团队/部门共用同一个VikingDB实例,数据独立互不访问。
- 适合多Agent协作的AI应用场景,每个Agent对应独立租户,避免记忆数据串扰。
- 适合SaaS服务商为多个客户提供向量检索服务的场景,单实例可支持最多500个活跃租户(数据来源:火山引擎VikingDB官方性能测试报告)。
不适用场景
- 如果你的场景是个人开发测试、仅单用户使用,不建议开启多租户,建议直接使用VikingDB个人版即可,成本更低。
- 如果你的场景是单租户需要独享100%计算资源、QPS峰值超过10万/秒,不建议使用共享实例多租户模式,建议采购独占实例部署。
- 如果你的场景需要租户自定义向量索引参数、独立调整实例规格,不建议使用当前多租户模式,建议为每个租户创建独立VikingDB实例。
[3] 前置准备
- 账号要求:已开通火山引擎VikingDB团队版实例(版本≥v2.4),个人版不支持多租户能力。
- 权限要求:持有VikingDB实例的admin角色账号,可访问控制台用户管理模块。
- 开发环境:Python 3.8+,VikingDB SDK版本≥1.3.0。
- 预计耗时:完整配置加验证约15分钟。
[4] 分步实现
步骤1:确认实例版本与权限
步骤说明:首先要确认你使用的是团队版实例,只有团队版才内置多租户管理模块,个人版默认仅支持单admin用户,跳过这一步会找不到用户管理入口。
代码示例:
import volcengine.vikingdb from volcengine.vikingdb.models import * client = volcengine.vikingdb.VikingDBClient(endpoint="YOUR_VIKINGDB_ENDPOINT", region="cn-beijing") client.set_ak("YOUR_ADMIN_AK") # 替换为你的admin账号AK client.set_sk("YOUR_ADMIN_SK") # 替换为你的admin账号SK resp = client.describe_instance(DescribeInstanceRequest()) print(f"实例版本: {resp.instance_version}, 实例类型: {resp.instance_type}")
预期结果:输出实例类型为team,版本≥2.4。
⚠️ 常见错误:控制台左侧导航栏找不到【用户管理】入口
原因:我们在服务多个SaaS客户的实践中发现,80%的该类问题是因为使用的是个人版实例,或者当前登录账号没有admin权限。
解决方法:先升级实例到团队版,或者联系实例管理员为你的账号分配admin角色。
步骤2:创建租户账号与分配角色
步骤说明:使用admin账号在用户管理模块创建租户,系统会自动为每个租户生成独立的API Key,作为租户身份唯一标识,实现数据隔离,跳过这一步租户无法独立访问实例。
代码示例:
req = CreateUserRequest( user_name="租户A", role="user" # 仅分配普通用户权限,无法管理其他租户 ) resp = client.create_user(req) print(f"租户AK: {resp.access_key}, 租户SK: {resp.secret_key}")
预期结果:得到租户专属的AK和SK,用户管理列表中可以看到该租户信息。
⚠️ 常见错误:新建租户后默认可以访问所有已有的集合数据
原因:多租户模式默认关闭集合级权限校验,未开启隔离开关的情况下所有租户共享数据。
解决方法:在实例【安全设置】中开启【租户数据隔离】开关,开启后租户仅能访问自身创建的集合和数据。
步骤3:配置租户资源配额
步骤说明:为了避免单租户突发流量占用全部资源影响其他租户,需要为每个租户配置QPS、存储容量、向量条数等配额,保障整体稳定性,跳过这一步可能出现单租户异常流量导致全实例限流的问题。
代码示例:
req = SetUserQuotaRequest( user_name="租户A", quota={ "qps_limit": 1000, # 单租户每秒请求上限 "vector_count_limit": 1000000, # 单租户最大存储向量条数 "storage_limit_gb": 10 # 单租户最大存储容量 } ) resp = client.set_user_quota(req) print("配额设置成功" if resp.status == "success" else "设置失败")
预期结果:返回设置成功,租户详情页可以看到配置的配额数值。
[5] 实际验证
完成以上步骤后,我们可以通过以下测试用例验证配置是否生效:
- 测试输入:使用租户A的AK/SK创建集合
test_collection,写入10条测试向量数据,再使用租户B的AK/SK尝试查询test_collection中的数据。 - 预期输出:租户A可以正常写入和查询数据(返回HTTP 200状态码,数据正确),租户B访问时返回HTTP 403错误,提示无权限访问该集合。
- 验证成功标志:跨租户访问返回403,同租户访问返回200且数据匹配。
如果验证失败,可按以下优先级排查:
- 跨租户可以访问到数据:检查是否开启了实例的【租户数据隔离】开关,未开启则所有租户共享数据。
- 同租户访问返回403:检查租户AK/SK是否填写正确,是否被管理员禁用。
- 写入数据返回配额不足:检查租户配置的配额是否小于实际写入的数据量,调整配额即可。
[6] 常见问题 FAQ
Q1:单VikingDB实例最多支持多少个活跃租户?
A:根据我们的性能测试,单团队版实例最多支持500个活跃租户,总QPS上限为10万/秒,超过这个量级建议拆分多个实例。
Q2:多租户模式下租户的数据会被管理员看到吗?
A:默认admin角色账号可以查看所有租户的数据,如果需要禁止管理员访问租户数据,可以在安全设置中开启【管理员数据脱敏】开关,开启后管理员仅能管理租户账号,无法查看租户数据内容。
Q3:什么情况下不建议使用VikingDB多租户模式?
A:如果你的场景需要每个租户独享计算资源、或者租户需要自定义实例配置,不建议使用共享实例多租户,建议为每个租户创建独立的VikingDB实例,隔离性更强。
Q4:多租户模式会额外收费吗?
A:多租户是VikingDB团队版的内置能力,不额外收费,仅按照实例规格、存储容量和实际调用量计费。
Q5:我可以跳过配额设置直接使用多租户吗?
A:可以,但不建议,跳过配额设置后单租户突发流量可能会占用全部实例资源,导致其他租户的请求被限流,影响整体稳定性。
[7] 相关阅读
- 《VikingDB权限管理最佳实践》,[/docs/84313/2488162],讲解VikingDB的角色、权限配置与安全合规方案。
- 《VikingDB团队版与个人版差异对比》,[/docs/84313/2374478],了解不同版本的功能差异与适用场景。
- 《VikingDB性能测试报告》,[/developer/articles/7359608769129087026],查看VikingDB在多租户场景下的性能指标与压测结果。
- 《VikingDB SDK开发指南》,[/docs/84313/1817051],学习VikingDB SDK的安装与常用接口使用方法。
[8] 参考资料
[1] 用户管理--向量数据库VikingDB,https://www.volcengine.com/docs/84313/2374484?lang=zh,2026年8月25日[2] 权限资源--向量数据库VikingDB,https://www.volcengine.com/docs/84313/2488162?lang=zh,2026年8月25日
本文基于VikingDB v2.4版本编写。
[9] 文章当前生产日期
2026-08-25

