🔒 认证

您可以配置Chroma在服务器/客户端模式下使用认证。

支持的认证方法:

认证方法基本认证(预先)静态API令牌
描述RFC 7617 基本认证,使用user:password的base64编码Authorization头。静态认证令牌在Authorization: Bearer <token>X-Chroma-Token: <token>头中。
状态AlphaAlpha
服务器端支持AlphaAlpha
客户端/PythonAlphaAlpha
客户端/JSAlphaAlpha

在本指南中,我们将为本地运行的简单Chroma服务器添加认证,使用我们的CLI:

shell

我们还有针对各种部署的专用认证指南:

  • Docker
  • AWS
  • GCP - 即将推出!
  • Azure - 即将推出!

加密的用户:密码认证#

服务器设置#

生成服务器端凭证#

要生成密码哈希,请运行以下命令(您可能需要安装httpasswd):

Command Line

这将为密码admin创建bcrypt密码哈希,为用户admin,并将其放入当前工作目录中的server.htpasswd。它将看起来像admin:<密码哈希>

运行服务器#

设置以下环境变量:

Command Line

并运行Chroma服务器:

Command Line

客户端设置#

我们将使用Chroma的Settings对象在客户端定义认证方法。

python

我们建议设置环境变量CHROMA_CLIENT_AUTH_CREDENTIALS,而不是在代码中指定凭证。

静态API令牌认证#

服务器设置#

例如,如果您希望静态API令牌为“test-token”,请设置以下环境变量。这将设置Authorization: Bearer test-token作为您的认证头。

Command Line

要使用 X-Chroma-Token: test-token 类型的身份验证头,您可以设置 CHROMA_AUTH_TOKEN_TRANSPORT_HEADER 环境变量:

Command Line

然后,运行 Chroma 服务器:

Command Line

要配置多个令牌并将其用于基于角色的访问控制(RBAC),请使用类似 此文件 的文件和以下环境变量:

Command Line

客户端设置#

我们将使用 Chroma 的 Settings 对象在客户端上定义身份验证方法。

python

如果您使用自定义的 CHROMA_AUTH_TOKEN_TRANSPORT_HEADER(如 X-Chroma-Token),请将其添加到您的 Settings 中:

python

我们建议设置环境变量 CHROMA_CLIENT_AUTH_CREDENTIALS 而不是在代码中指定令牌。同样,您可以在客户端构造中读取 CHROMA_AUTH_TOKEN_TRANSPORT_HEADER 的值。