天蓝色管道:访问秘密变量

for*_*dya 5 azure-devops azure-pipelines

我正在尝试访问秘密变量以将其传递给另一个脚本。

我希望管道中的以下代码能够打印 Value,但它会打印一些文本“xxx”,无论秘密变量的值如何

echo xxx
Run Code Online (Sandbox Code Playgroud)

管道片段

steps:
  - bash: echo This script could use $SYSTEM_ACCESSTOKEN
    env:
      SYSTEM_ACCESSTOKEN: $(System.AccessToken)
Run Code Online (Sandbox Code Playgroud)

Cec*_*SFT 10

如果您想访问秘密变量,可以将其打印到文件中。检查下面的示例:

\n\n
steps:\n- powershell: |\n   $env:var1 | Out-File C:\\Users\\xxx\\Desktop\\Newfolder\\debug.txt\n\n\n  displayName: \'PowerShell Script\'\n  env:\n    var1: $(System.AccessToken)\n
Run Code Online (Sandbox Code Playgroud)\n\n

System.Accesstoken它是为服务标识 \xe2\x80\x9cProject Collection Build Service (account)\xe2\x80\x9d 生成的 PAT 令牌,不需要验证 的值System.AccessToken。另外,如果要将 的值打印System.AccessToken到文件中,则需要Allow scripts to access the OAuth token在代理作业中检查:

\n\n

在此输入图像描述

\n


Vol*_*erK 8

Azure管道将扫描输出并掩盖秘密,您可以简单地将其分割并分成两部分打印。这是一个 bash 示例:

  echo "${MY_SECRET:0:10}" # Print the first 10 characters
  echo "${MY_SECRET:10:100}" # Print character 11 - 100
Run Code Online (Sandbox Code Playgroud)

当然,您应该仅出于调试目的而执行此操作,而不应将其留在管道中。

  • 单行:`echo "MY_SECRET: ${MY_SECRET:0:1} ${MY_SECRET:1:100}"` 如果秘密少于 10 个字符,答案仍然会被屏蔽。 (3认同)

Krz*_*tof 1

这是因为这SYSTEM_ACCESSTOKEN是一个秘密。如果你对不是秘密的变量做同样的事情,你将能够看到价值。