azure - 二头肌:创建随机字符串
问题描述
我来自 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个。
解决方案
uniqueString() 根本不是用来生成密码的,它是用来生成资源名称的。
据我所知,没有专门构建的方法可以在二头肌/ARM 模板中生成密码。我们所做的是使用密码生成器生成具有足够长度和复杂性的密码,并将这些密码作为机密存储在 Azure DevOps 变量组中。然后我们将它们作为安全字符串参数传递给模板,因此它们不会在任何地方被记录。我们也不会将这些生成的密码存储在其他任何地方,它们在生成它们并将它们存储在 Azure DevOps 中后被丢弃。
推荐阅读
- chat - 更改讨论模块中的“聊天”字样
- html - Html 代码电子邮件:它与 Tryit 编辑器的工作方式不同
- python - 在 buildbot 1.2.0 中取消构建请求
- c# - Moq 不包含 ReturnAsync 的定义?
- asp.net - 是否有 Microsoft.AspNetCore.Mvc.TagHelpers 的 .Net.Standard 替代品
- node.js - 在 Google SearchAnalytics API 中发出 POST 请求时出现 404 错误
- amazon-web-services - 如何在存储桶中选择文件的密钥以最大化 AWS S3 中的性能
- javascript - 使用提交按钮上的按键提交表单,它会触发 onclick 吗?
- angular - Angular Elements/路由器出口
- c# - 在 C# 中将三个子目录中的文件添加到它们自己的列表中