首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Powershell的日志中未显示的值

Powershell的日志中未显示的值
EN

Stack Overflow用户
提问于 2021-03-09 17:56:36
回答 2查看 55关注 0票数 0

我正在Azure Devops的Azure Powershell任务中执行以下代码:

代码语言:javascript
复制
$secret="<<SecretValue>>"
$AppId="<<ClientId>>"
$tenantid="<<TenantId>>"

$cred = New-Object System.Management.Automation.PSCredential ($AppId, (ConvertTo-SecureString $secret –ASPlainText –Force))
Connect-AzureRMAccount -ServicePrincipal -Credential $cred -Tenant $tenantId

$KeyVaultSecret= (Get-AzureKeyVaultSecret -vaultName '<<KVName>>' -name '<<SecretName>>').SecretValueText
write-host " Value: $KeyVaultSecret"

在作业执行之后,该值不会在作业执行中显示,但是在通过本地系统powershell执行时,相同的代码会显示该值。

Devops输出:

本地系统输出:

为什么Azure Devops中没有值的原因?

EN

回答 2

Stack Overflow用户

发布于 2021-03-09 18:20:45

在Azure DevOps管道中,默认情况下,根据this documentation (“重要”注释部分)尝试删除输出提要中的秘密。

这可能是没有显示在输出中的原因。

还有另一种通过变量组从KeyVault获取秘密的方法。Here is the documentation for how to set that up

票数 0
EN

Stack Overflow用户

发布于 2021-03-10 11:23:54

我认为这是一种正确的行为。Azure DevOps有自己的安全策略,旨在保护您的秘密和敏感信息。

如果Azure DevOps允许从密钥库在控制台日志中打印机密的实际值,则任何有权查看管道日志的人都可以获得机密。显然,这会使你的秘密面临被轻易泄露的风险。

当你直接在你的本地系统上执行脚本时,Azure DevOps的安全策略不会应用到你的本地系统,也可能没有任何其他安全策略,因为Azure会应用到你的本地系统,所以你可以将秘密值打印到输出日志中。

你可以尝试在你的系统上安装自托管代理,以在Azure DevOps上的管道中运行脚本。如果保密值仍然是隐藏的,就像我上面提到的,这是Azure DevOps的安全策略。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66544626

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档