带有随机密码和密码的 SQL Server ARM 模板保存到 Key Vault

Posted

技术标签:

【中文标题】带有随机密码和密码的 SQL Server ARM 模板保存到 Key Vault【英文标题】:SQL Server ARM Template with random password and password save to Key Vault 【发布时间】:2020-11-09 22:57:13 【问题描述】:

我正在寻找 ARM 模板来部署 Azure SQL Server,并生成随机密码,然后将该密码保存到密钥保管库中。

如果你们中有人遇到过这样的 ARM 模板,请告诉我。

【问题讨论】:

【参考方案1】:

@LeonYue

您的链接的问题是下面的作者代码:

"sqlserverAdminPassword": "[concat('P', uniqueString(resourceGroup().id, '224F5A8B-51DB-46A3-A7C8-59B0DD584A41'), 'x', '!')]",

查看 uniqueString 的定义是:

根据提供的值创建确定性哈希字符串 参数。

https://docs.microsoft.com/en-us/azure/azure-resource-manager/templates/template-functions-string#uniquestring

这意味着密码不是随机的,并且可以计算出正确的参数。

您可以通过为每个部署插入一个新的 Guid 来解决此问题,但您的密码也将在每次部署时更新。

"parameters": 
  "newGuid": 
    "type": "string",
    "defaultValue": "[newGuid()]"
  


"variables": 
  "sqlserverAdminPassword": "[concat(uniqueString(guid(resourceGroup().id, deployment().name)), parameters('newGuid'), 'Tg2%')]"

https://docs.microsoft.com/en-us/azure/azure-resource-manager/templates/template-functions-string#guid

newGuid 被添加为参数,因为这是使用此函数的唯一方式。

此函数只能用于参数的默认值。

https://docs.microsoft.com/en-us/azure/azure-resource-manager/templates/template-functions-string#newguid

【讨论】:

【参考方案2】:

请参考本教程:Automatically generate a password for an Azure SQL database with ARM template:

它谈到了如何创建一个 ARM 模板,该模板将使用自动生成的密码创建一个 Azure SQL 数据库。

您可以在此处下载示例 ARM 模板解决方案:

    Download full sources Browse the GitHub repository

您想和 Key Vault 中的密码相同,您可以学习:Set and retrieve a secret from Azure Key Vault using an ARM template。

【讨论】:

感谢您的建议。我已经看过这个帖子了。我需要将相同的密码放入 KeyVault,而不是从 Key Vault 中获取。所以上面的 Key Vault 模板将不起作用。你也可以告诉我密码字符串中的这个随机数是什么 - '224F5A8B-51DB-46A3-A7C8-59B0DD584A41')谢谢 @Mohammed 博客告诉我们。字符串“224F5A8B-51DB-46A3-A7C8-59B0DD584A41”只是一个例子。我们可以使用 ARM 模板函数 uniqueString 根据作为参数提供的值创建确定性哈希字符串。我找到了博客并分享给你,希望对你有帮助。我无法帮你弄清楚,因为我只知道 ARM 模板但不擅长它。 如果我的回答对您有帮助,希望您可以投票或接受它作为答案(点击答案旁边的复选标记,将其从灰色切换为已填充。)。这对其他社区成员可能是有益的。谢谢。 该问题要求输入随机密码,但该示例是确定性的,因此可重现,它不安全。 因生成确定性且因此可预测的密码而不是随机密码而被否决!请参阅 uniqueString 文档:docs.microsoft.com/en-us/azure/azure-resource-manager/templates/…

以上是关于带有随机密码和密码的 SQL Server ARM 模板保存到 Key Vault的主要内容,如果未能解决你的问题,请参考以下文章

SQL server 密码在哪里修改

[Sql-Server]密码盐和哈希值使用啥数据类型以及啥长度?

SQL Server备份账号和密码

SQL server 2000数据库的用户sa的密码忘了怎么办

随机密码生成器 Swift 3?

SQL Server的安装登录(用登录和密码)连接失败的问题