![](/img/trans.png)
[英]Add/get secret to Azure Keyvault with Azure powershell task in Azure devops
[英]How to get keyvault secret output in Azure DevOps
我有秘密dbname = "DatabaseName"的 kv 。
在 Azure DevOps 中,我正在使用两个任务,一个是从 Key Vault 读取机密,第二个是 Azure Write-Host $(dbname)
我的代码行
日志中的 Output 是***
。
我想将DatabaseName
设为 output。
我唯一发现的是
$DWH = "$(dbname)"
Write-Host "$($DWH.ToCharArray() -join ' ' )"
D atabase N ame
是数据库名称。
是否有可能获取DatabaseName
而不是***
或 Database D atabase N ame
?
根据文档,微软从日志中屏蔽了秘密变量,因此您无法正常打印。
您可以安装从 Key Vault读取机密扩展程序,该扩展从 Key Vault 读取机密并将它们存储在常规变量中(而不是像 Microsoft 内置任务那样的机密变量)。
根据文档,可以拆分秘密和 output 子字符串:
我们努力掩盖秘密出现在 Azure 管道 output 中,但您仍然需要采取预防措施。 永远不要像 output 那样回应秘密。 一些操作系统记录命令行 arguments。 永远不要在命令行上传递秘密。 相反,我们建议您将您的秘密 map 放入环境变量中。
我们从不掩盖秘密的子串。 例如,如果将“abc123”设置为机密,则不会从日志中屏蔽“abc”。 这是为了避免在太细的级别上掩盖秘密,使日志不可读。 因此,机密不应包含结构化数据。 例如,如果 "{ "foo": "bar" }" 设置为机密,则不会从日志中屏蔽 "bar"。
这是 bash 中的一个示例,它可能会转移到 Powershell:
- task: Bash@3
inputs:
targetType: inline
script: |
# let's say the secret is Passw0rd
# Direct output is masked:
echo $MYSECRET
# OUTPUTS "***"
# Concatenated output is masked:
echo "ABC$MYSECRET DDD"
# outputs "ABC*** DDD"
# Experimenting with substrings:
firstPart=${MYSECRET::-2}
secondPart=${MYSECRET: -2}
# Substrings are displayed:
echo $firstPart
# outputs "Passw0"
echo $secondPart
# outputs "rd"
# Substrings concatenated with other strings are displayed:
echo "$firstPart-$secondPart"
# outputs "Passw0-rd"
# Directly concatenated substrings are masked:
echo "$firstPart$secondPart"
# outputs "***"
# Secrets can be written to a file:
echo "$MYSECRET" > test.txt
# Secrets are even masked when being displayed as part of a file:
cat test.txt
# outputs "***"
env:
MYSECRET: $(my_secret) # This is defined in a variable group
- task: PublishPipelineArtifact@1
inputs:
targetPath: 'test.txt' # This pipeline artifact contains the secret unmasked
artifact: 'TestArtifact'
publishLocation: 'pipeline'
displayName: 'Publish PipelineRunData artifact'
因此,我们有两种选择来获取秘密:
从安全角度来看可能并不理想,但了解系统的局限性非常重要:有权修改管道的任何人都可能访问管道使用的机密。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.