首页 > 解决方案 > 二头肌:创建随机字符串

问题描述

我来自 Terraform 背景和 AWS。现在我在 Azure 中使用 Bicep,所以请多多包涵 :)

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

现在...

我如何用二头肌做这样的事情?我只是在寻找uniqueString()功能。但这只会创建 13 个字符长的随机字符串,也没有任何“特殊”字符之类!@#$%&*()-_=+[]{}<>:?的。

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

在二头肌中解决这个问题的正确方法是什么?

我找到了 Vivien Chevallier 的博客文章“使用 ARM 模板为 Azure SQL 数据库自动生成密码”,但这并不好,IMO。为了规避该uniqueString()功能的缺点,使其符合密码复杂性规则,该人添加了“ ”的常量前缀和“ P”的后缀x!。这会降低密码的质量,因为现在有 3 个已知字符。16个。

标签: azureinfrastructure-as-codeazure-bicep

解决方案


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

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


推荐阅读