跳到主要内容

环境变量与 Secret 变量

在创建或配置算力容器(任务、Jupyter 工作空间)时,可以在「环境变量」区域为执行注入一组 变量名称 / 变量值 形式的环境变量,用于控制容器的行为,例如传入第三方服务的 Token、模型仓库地址等。

每个环境变量都有一个类型,分为明文Secret 两种,由变量右侧是否勾选「Secret」决定。两种类型的区别如下:

明文变量Secret 变量
存储方式明文保存保存后无法再读取明文
页面展示明文显示全程脱敏显示(如 hf••••23
注入方式注入为环境变量,并写入 openbayes_params.json仅作为环境变量注入,不写入 openbayes_params.json

因此,密钥、Token 等不希望被他人读到的内容应设为 Secret 类型;而像超参数这类需要被程序读取或记录的内容用明文类型即可。关于 openbayes_params.json 与明文参数如何被程序读取,参见 parameters

配置环境变量

在容器的创建 / 配置页面找到「环境变量」区域:

  1. 点击「添加环境变量」,填写「变量名称」和「变量值」;
  2. 选择变量类型:默认为明文类型;如果是密钥、Token 等敏感信息,勾选其右侧的「Secret」将其设为 Secret 类型;
  3. 可以添加多个变量,提交后随容器一同保存。

Secret 变量的脱敏与读取

Secret 变量一旦保存,平台不再以明文返回它的值。有编辑权限的成员在页面各处只会看到脱敏后的占位内容:

  • 脱敏后只保留头尾各 2 个字符,中间以 •••• 代替(如 hf••••23);
  • 当原值长度不足 8 位时整体以 •••••• 显示,不泄露真实长度。

没有编辑权限的成员则完全读取不到该值,接口直接返回 null

脱敏值仅用于展示,不是变量的真实值。容器运行时注入的始终是当初保存的原始值。

重启与克隆时的 Secret 处置

是否沿用原 Secret 的真实值,取决于这次操作是重启同一个执行,还是创建一个新的执行

重启工作空间

对已关闭的工作空间再次启动(「快速启动」或「修改配置并启动」,参见 Jupyter 工作空间的重启)属于同一个执行的延续,会沿用上一次保存的 Secret 真实值,无需重新输入

  • 快速启动:直接沿用上一次的全部配置,Secret 的真实值由平台在服务端自动回填。
  • 修改配置并启动:Secret 以脱敏、只读的形式列出并默认沿用。如需更换,点击该变量的「替换」输入新值,点击「取消替换」可恢复为沿用原值。

克隆 / 新建执行

以下操作都会生成一个全新的执行,因此不会带过来原 Secret 的真实值

  • 从公共教程、公共资源克隆;
  • 克隆他人的配置并启动、从自动建模克隆;
  • 从某次执行「继续执行 / 自此克隆」创建新执行。

这些情况下,克隆者本就无法读取原 Secret 的明文,平台也不会把它带到新执行中。页面会保留变量名并提示「原 Secret 值无法保留,请输入新值」,你需要为每个 Secret 变量填写自己的值,或删除不需要的变量后再启动。明文变量则会照常带入新执行。

修改变量类型

变量的类型可以在明文与 Secret 之间切换:

  • 明文改为 Secret:勾选「Secret」即可,已填写的值会作为该 Secret 的值保存。
  • Secret 改为明文:取消勾选「Secret」。由于已保存的 Secret 原值无法再读取,切换后原值会被丢弃,需要重新填写该变量的值(页面会先弹窗确认)。

限制

  • OPENBAYES_(不区分大小写)为平台保留前缀,不可用作自定义环境变量的名称。