powershell - 无法在发布管道中打印 Azure-Keyvault 机密
问题描述
我正在尝试使用以下代码从发布管道中检索 Azure-Key 保管库机密。但我无法使用下面的代码打印确切的字符串
(Get-AzKeyVaultSecret -vaultName "keyvalultname" -name "Password").SecretValueText
$Password= (Get-AzKeyVaultSecret -vaultName "keyvalultname" -name "Password").SecretValueText
$Password
Write-Output 'DBPassword is $Password'
Write-Host 'DBPassword is $Password'
if ($Password-eq "Password01")
{
Write-Host "1"
}
else
{
Write-Host "0"
}
Write-Host $($Password.Username)
在上面的代码中,我得到的值是“Password01”。但我可以在 IF 条件下打印 1 。
我得到的输出如下
2019-12-09T14:01:45.9967410Z ***
2019-12-09T14:01:45.9972871Z DBPassword is $Password
2019-12-09T14:01:45.9984181Z DBPassword is $Password
2019-12-09T14:01:45.9992966Z 1
2019-12-09T14:01:46.0026811Z
2019-12-09T14:01:46.0030953Z
解决方案
这是 Azure DevOps 行为,用于屏蔽秘密变量而不打印日志中的值,请参见此处:
我们努力掩盖秘密出现在 Azure Pipelines 输出中,但这并不是万无一失的。永远不要将秘密作为输出回显。一些操作系统记录命令行参数。永远不要在命令行上传递秘密。相反,我们建议您将您的秘密映射到环境变量中。
我们永远不会掩盖秘密的子串。例如,如果将“abc123”设置为机密,则不会从日志中屏蔽“abc”。这是为了避免在太细的级别上掩盖秘密,使日志不可读。因此,机密不应包含结构化数据。例如,如果将 "{ "foo": "bar" }" 设置为机密,则不会从日志中屏蔽 "bar"。
如果将它们打印为字符,则可以垂直打印值:
$Password.ToCharArray()
推荐阅读
- python - 将参数传递给包回调
- algorithm - 如何从运行总数中添加或减去数字,使其遵循随机给定的指令
- wso2 - WSO2 EI - 处理 SFTP 错误并调用故障/错误序列
- angular - 使用 Prisma 和 Apollo 调用多个 GraphQL 突变的正确方法是什么
- html - 如何使 Bootstrap 列占据主要高度?
- rrdtool - RRDTool 数据值(例如最大值)在不同的时间分辨率下是不同的
- java - 如何使用 EventChannel 从本机服务的 BroadcastReciever 接收数据流?
- mysql - 在 MySQL 中将 GenerationType.SEQUENCE 与 Hibernate 一起使用是个好主意吗?
- vb.net - 如何确定一个变量是否大于Visual Basic中的2个其他变量
- agda - 在 Agda 中,我如何证明在 uncons over coinductive list(aka Stream)之后的 cons 是身份?