Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Azure devops VSTS秘密变量实际上是否秘密?_Azure Devops_Azure Pipelines_Azure Pipelines Build Task - Fatal编程技术网

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

Azure devops VSTS秘密变量实际上是否秘密?,azure-devops,azure-pipelines,azure-pipelines-build-task,Azure Devops,Azure Pipelines,Azure Pipelines Build Task,VSTS生成定义具有创建秘密变量的选项。这个变量有多秘密?存储特定于一组用户的用户凭据是否安全?其他用户(未经授权的用户)可以解密该变量吗 假设用户具有生成修改访问权限,那么是否可以解密变量?存储的变量与运行生成的代理和生成定义的完整性一样安全 正如您所说,如果用户可以修改生成定义并有权访问机密,他们可以将其传递给PowerShell或Curl任务等。或者如果用户可以控制生成任务的脚本,他们可以迭代所有可用机密(生成系统认为生成任务是可信的) 请考虑对代理的工作目录具有写访问权限的每个人都可以

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


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

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

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

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

YAML生成定义与拉取请求相结合,使您能够更好地控制生成定义的更改/批准流程

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

您必须确保代理池和变量库/生成定义的安全,确保只有有限且受信任的用户才能访问这些资源。(可选)使用短时间后过期的一次性密码或临时授予这些权限

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


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

要获得更多安全性,请使用类似Azure Key Vault的东西,一旦从keyvault检索,它们同样容易受到攻击。