You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在本地Linux服务器上为MLFLOW启用用户身份认证?

MLFlow 启用用户名密码身份认证方案

MLFlow 原生命令行启动时没有直接的身份认证配置项,可通过以下两种实用方案实现基于用户名密码的Web界面认证:

方案一:Nginx反向代理实现HTTP基本认证(推荐生产环境)

无需修改MLFlow代码,借助Nginx的反向代理能力添加认证,稳定性和性能更优。

操作步骤:

  1. 安装依赖工具

    • Debian/Ubuntu系统:
      sudo apt install nginx apache2-utils
      
    • RHEL/CentOS系统:
      sudo dnf install nginx httpd-tools
      
  2. 创建用户密码文件

    • 初始化密码文件并添加第一个用户(username替换为实际用户名):
      htpasswd -c /etc/nginx/.mlflow_users username
      
    • 添加更多用户时去掉-c参数:
      htpasswd /etc/nginx/.mlflow_users another_user
      
  3. 配置Nginx反向代理

    • 新建Nginx配置文件/etc/nginx/sites-available/mlflow,内容如下:
      server {
          listen 80;
          server_name 你的服务器IP或域名;
      
          location / {
              auth_basic "MLFlow 访问认证";
              auth_basic_user_file /etc/nginx/.mlflow_users;
              proxy_pass http://localhost:5000;
              proxy_set_header Host $host;
              proxy_set_header X-Real-IP $remote_addr;
          }
      }
      
    • 启用配置并重启Nginx:
      sudo ln -s /etc/nginx/sites-available/mlflow /etc/nginx/sites-enabled/
      sudo nginx -t && sudo systemctl restart nginx
      
  4. 启动MLFlow服务器

    • 仅监听本地端口,避免直接暴露:
      mlflow server --backend-store-uri sqlite:///mlflow.db --default-artifact-root ./artifacts --host 127.0.0.1
      
    • 访问服务器80端口,会弹出认证窗口,输入正确的用户名密码即可进入MLFlow界面。

方案二:自定义Flask中间件实现认证(适合测试/轻量场景)

基于MLFlow底层的Flask框架,添加认证中间件,无需额外依赖反向代理。

操作步骤:

  1. 创建认证脚本mlflow_auth.py:

    from flask import request, Response
    import mlflow.server
    from mlflow.server import app as mlflow_app
    
    # 实际场景建议从环境变量/加密存储读取,此处为示例
    VALID_USERS = {
        "user1": "pass123",
        "user2": "pass456"
    }
    
    def verify_credentials(username, password):
        return username in VALID_USERS and VALID_USERS[username] == password
    
    def require_auth():
        return Response(
            "请输入合法的用户名和密码", 401,
            {"WWW-Authenticate": 'Basic realm="MLFlow Server"'}
        )
    
    def auth_middleware(func):
        def wrapper(*args, **kwargs):
            auth = request.authorization
            if not auth or not verify_credentials(auth.username, auth.password):
                return require_auth()
            return func(*args, **kwargs)
        return wrapper
    
    # 为所有MLFlow路由绑定认证逻辑
    for rule in list(mlflow_app.url_map._rules):
        mlflow_app.view_functions[rule.endpoint] = auth_middleware(mlflow_app.view_functions[rule.endpoint])
    
    if __name__ == "__main__":
        mlflow.server.run(
            backend_store_uri="sqlite:///mlflow.db",
            default_artifact_root="./artifacts",
            host="0.0.0.0"
        )
    
  2. 启动带认证的MLFlow服务器:

    python mlflow_auth.py
    
    • 访问服务器5000端口,输入预设的用户名密码即可访问。

注意事项

  • 生产环境优先选方案一,可配合Let's Encrypt添加SSL证书,实现HTTPS加密传输。
  • 方案二中的密码存储仅为示例,实际需使用加密算法(如bcrypt)存储哈希值,避免明文泄露。
  • MLFlow版本更新后,方案二可能需要调整中间件适配逻辑,需留意路由变化。

内容的提问来源于stack exchange,提问作者kuppan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 05:36:08