代码之家  ›  专栏  ›  技术社区  ›  Atul Sureka

VSTS秘密变量实际上是否秘密?

  •  0
  • Atul Sureka  · 技术社区  · 6 年前

    VSTS生成定义具有创建秘密变量的选项。这个变量有多秘密?存储特定于一组用户的用户凭据是否安全?其他用户(未经授权的用户)可以解密该变量吗?

    I came across this article .

    假设用户具有构建修改访问权限,那么是否可以解密变量?

    1 回复  |  直到 6 年前
        1
  •  3
  •   jessehouwing    6 年前

    存储的变量与运行生成的代理以及生成定义的完整性一样安全。

    正如您所说,如果用户可以修改生成定义并有权访问机密,他们可以将其传递给PowerShell或Curl任务等。或者如果用户可以控制生成任务的脚本,他们可以迭代所有可用机密(生成系统认为生成任务是可信的)。

    考虑到在代理的工作目录上有写访问权限的每个人都可以访问在构建代理上执行的构建定义可用的所有秘密。他们可以更改构建任务使用的脚本,从而获得相同级别的信任。在这种情况下,在此更改之后以及在将任务的新版本推送到代理之前运行的任何构建都将受到损害。从理论上讲,每一个构建定义都会“感染”整个系统吗 _tasks 代理的文件夹。防止这种情况的最佳方法是使用托管池或定期重置代理的VM。

    使用变量库可以减少可以将秘密变量添加到构建定义中的人数。

    请记住,Git存储库中构建定义、变量库和脚本的所有更改都会被跟踪。

    访问这些机密的其他方法不适用于Azure DevOps,因为没有人可以访问Azure中的应用层,并且访问受到Microsoft的严格监控。