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

如何在MLRun中安全管理作业所需的敏感密钥凭证?

MLRun 作业敏感密钥安全配置方案

直接使用fn.set_env()硬编码明文密钥的方式,会将敏感信息持久化存储在函数定义、导出配置、版本控制记录中,存在明确的泄露风险,推荐使用以下几种MLRun原生支持的安全方案替代:

  • 方案1:使用MLRun项目级密钥(零额外运维成本,最适合常规场景)
    提前通过MLRun CLI或管理UI将敏感密钥存入对应项目的加密密钥存储,全程不要在代码中出现明文值:

    1. 执行CLI命令写入密钥(仅需配置一次,后续同项目作业可复用):
      mlrun project secrets set DBUSER=<你的数据库用户名> DBPASS=<你的数据库密码> --project <你的项目名称>
      
    2. 函数代码中移除明文set_env配置,改为从项目密钥源拉取注入运行时环境:
      import mlrun
      fn = mlrun.code_to_function("db-load",
       kind = "job",
       requirements = ['psycopg2-binary']
      )
      # 从项目密钥存储中拉取对应值注入环境变量,无明文暴露
      fn.set_env_from_secret("DBUSER", secret_key="DBUSER")
      fn.set_env_from_secret("DBPASS", secret_key="DBPASS")
      

    配置完成后,作业运行时会自动拉取解密后的密钥注入Pod环境,业务代码中读取DBUSER/DBPASS环境变量的逻辑不需要做任何修改。

  • 方案2:直接引用Kubernetes原生Secret(适合已有K8s密钥管理体系的场景)
    如果你的团队已经将敏感信息统一存储在Kubernetes Secret资源中,可以直接引用集群内的Secret,密钥值完全不会经过MLRun存储链路:

    1. 提前在MLRun作业运行的命名空间创建好存储数据库凭证的Secret(例如名为db-connection-creds),写入DBUSER、DBPASS对应键值
    2. 函数中配置直接引用K8s Secret注入环境变量:
      fn.set_env_from_secret(
          env_name="DBUSER",
          secret_name="db-connection-creds",
          secret_key="DBUSER"
      )
      fn.set_env_from_secret(
          env_name="DBPASS",
          secret_name="db-connection-creds",
          secret_key="DBPASS"
      )
      

    密钥由Kubernetes在Pod启动阶段直接挂载注入,全程不会在MLRun的函数配置、运行日志中暴露明文。

  • 方案3:对接企业级KMS密钥管理服务(适合高合规要求场景)
    如果有等保、金融级合规要求,可以将MLRun密钥源对接HashiCorp Vault、云厂商托管KMS等专业密钥管理服务,只需要给MLRun作业配置对应KMS的最小读取权限,作业运行时会自动从KMS拉取临时密钥注入环境,不需要在MLRun或K8s中持久化存储敏感值。

注意事项:禁止将包含明文密钥的代码提交到版本控制系统,所有密钥写入操作建议通过CI/CD流水线在部署阶段动态执行,不要将敏感值硬编码在任何业务代码、配置文件中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 02:12:42