二头肌:创建随机字符串

问题描述

我来自 terraform 背景和 AWS。现在我正在使用带有 Azure 的 Bicep,所以请耐心等待 :)

terraform 中,我们使用 random_password 资源创建随机密码。然后,我们将其作为值存储在 AWS Systems Manager Parameter Store 中。这使我们能够拥有安全的(足够……)密码,这些密码在我们不必输入甚至不知道密码的情况下创建并存储在某个安全数据库中。如果有人需要知道密码,它就会被记录下来。可爱的;)

现在...

我如何用二头肌做这样的事情?我只找到 uniqueString() 函数。但这只会创建 13 个字符长的随机字符串,并且没有任何“特殊”字符,例如 !@#$%&*()-_=+[]{}<>:? 等。

出于非常明显的原因,我不想在我的代码中有某种声明,它将秘密设置为一些清晰可读的值。这就是我们在 terraform 中使用 random_password 的原因。

在 Bicep 中解决此问题的正确方法是什么?

我找到了博文 "Automatically generate a password for an Azure SQL database with ARM template" by Vivien Chevallier,但这并不好,IMO。为了规避uniqueString()函数的缺点,使其符合密码复杂性规则,此人添加了常量前缀“P”和后缀“x!”。这会降低密码的质量,因为现在有 3 个已知字符。满分 16 分。

解决方法

uniqueString() 根本不是用来生成密码的,而是用来生成资源名称的。

据我所知,没有专门构建的方法可以在 Bicep/ARM 模板中生成密码。 我们所做的是使用密码生成器生成具有足够长度和复杂性的密码,并将这些密码存储在 Azure DevOps 变量组中作为机密。 然后我们将它们作为安全字符串参数传递给模板,因此它们不会被记录到任何地方。 我们也不会将这些生成的密码存储在其他任何地方,它们会在生成并存储在 Azure DevOps 中后被丢弃。

,

这不受二头肌支持,并且没有基于 request in their repo 的此类计划。

这不是我们想要生成的加密安全密码,基于资源类型的各种限制最好在部署脚本中处理,或者通过使用密钥保管库来生成密码。

>