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

如何防止Azure DevOps Pipeline脚本中的Tenant ID被自动审查

解决Azure DevOps Pipeline中Tenant ID被日志审查屏蔽的问题

我之前也碰到过一模一样的情况——Azure DevOps的日志系统会自动识别Azure相关的敏感标识符(比如Tenant ID、订阅ID这类格式的字符串),并自动替换成***,哪怕这些内容是从Key Vault获取的Secret的一部分。既然你暂时不考虑安全问题,这里有几个可以绕过这个审查的方法:

方法1:拆分字符串后分段输出

把包含Tenant ID的URL拆成多个部分,分别用Write-Host输出(配合-NoNewline参数保证内容连贯),这样日志审查器就不会识别出完整的Tenant ID字符串:

$var = Get-AzKeyVaultSecret -VaultName $(vaultname) -Name $(secretname) -AsPlainText
# 按Tenant ID所在的位置拆分字符串
$urlParts = $var -split 'online.com/'
# 分段输出
Write-Host $urlParts[0] -NoNewline
Write-Host 'online.com/' -NoNewline
Write-Host $urlParts[1]

方法2:对Tenant ID进行微小字符干扰

在Tenant ID字符串中插入一个不可见的空白字符(比如零宽空格),让审查器无法匹配到标准的Tenant ID格式,同时不影响内容的可读性:

$var = Get-AzKeyVaultSecret -VaultName $(vaultname) -Name $(secretname) -AsPlainText
# 在Tenant ID中插入零宽空格
$unredactedVar = $var -replace "([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})", '$1`u{200B}'
Write-Host $unredactedVar

注:零宽空格在日志里是不可见的,只会让审查器的匹配逻辑失效。

方法3:通过字符数组重组输出

将字符串转换为字符数组后再重新拼接,绕过审查器的字符串匹配逻辑:

$var = Get-AzKeyVaultSecret -VaultName $(vaultname) -Name $(secretname) -AsPlainText
# 转成字符数组再重组
$output = -join $var.ToCharArray()
Write-Host $output

补充说明

Azure DevOps的这个自动审查是内置的安全机制,它会扫描日志中符合Azure敏感标识符格式的字符串并自动屏蔽。上面的方法都是利用审查逻辑的局限性来绕过屏蔽,再次提醒你注意:这种做法会将敏感的Tenant ID暴露在公开日志中,存在安全风险,请谨慎使用。

内容的提问来源于stack exchange,提问作者Dustin Sollick

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 10:32:27