密钥保管库机密可以通过管道检索和保留吗?
Can key vault secrets be retrieved and retained by a pipeline?
我有一个 API 令牌存储在 Azure Key Vault 中。我想提供对这个 secret 的访问权限,以便它可以在各种管道中使用。但我不一定希望任何人 editing/executing 这些管道能够保留令牌。如果管道只是 echo
es secret 值,那么构建代理日志不会简单地显示它,从而使整个密钥保管库过程成为一个无用的步骤吗?
如果是这样的话,如果我不想相信每个可以创建管道的人,有没有办法保护价值?
这取决于如何检索秘密并将其转化为变量。通常,通过标准 Azure Pipelines 任务检索的机密在显示时将被屏蔽为 ****
。
但是,没有什么可以阻止恶意的人对值进行 base64 编码并打印出来。或者 ROT 编码。或者反过来。或者将字符串分成两半并打印两半。或者 运行 执行此操作的脚本:az keyvault secret show
。依此类推。
如果内存中有明文形式的秘密值,并且人们有能力操纵以明文形式存储秘密的环境,那么获取秘密的明文值就很容易了。在任何情况下对任何计算机都是如此。
如果这是一个问题,目前最好的方法是不要让管道读取机密。如果您的应用程序可以配置为直接与 keyvault 集成并在运行时根据需要检索机密,则无需让管道检索机密作为中间步骤。
我有一个 API 令牌存储在 Azure Key Vault 中。我想提供对这个 secret 的访问权限,以便它可以在各种管道中使用。但我不一定希望任何人 editing/executing 这些管道能够保留令牌。如果管道只是 echo
es secret 值,那么构建代理日志不会简单地显示它,从而使整个密钥保管库过程成为一个无用的步骤吗?
如果是这样的话,如果我不想相信每个可以创建管道的人,有没有办法保护价值?
这取决于如何检索秘密并将其转化为变量。通常,通过标准 Azure Pipelines 任务检索的机密在显示时将被屏蔽为 ****
。
但是,没有什么可以阻止恶意的人对值进行 base64 编码并打印出来。或者 ROT 编码。或者反过来。或者将字符串分成两半并打印两半。或者 运行 执行此操作的脚本:az keyvault secret show
。依此类推。
如果内存中有明文形式的秘密值,并且人们有能力操纵以明文形式存储秘密的环境,那么获取秘密的明文值就很容易了。在任何情况下对任何计算机都是如此。
如果这是一个问题,目前最好的方法是不要让管道读取机密。如果您的应用程序可以配置为直接与 keyvault 集成并在运行时根据需要检索机密,则无需让管道检索机密作为中间步骤。