使用 ARM 模板和 Key vault 创建 Azure SQL 的最佳实践是什么

What is the best practice for creating Azure SQL with ARM template and Key vault

当我们使用 ARM 模板创建 Azure SQL 时,我们必须使用参数指定管理员用户名和密码。在同一个 ARM 模板中,我们可以创建密钥保管库并将密钥保管库值用作变量,并在服务器用户名和密码中使用它们。但是为了创建密钥保管库值,我们必须再次在 parameter.json 文件中指定密码。因此,我们失去了为安全数据库凭证提供密钥保管库的意义。据我所知,我们无法在没有管理员用户名和密码的情况下创建 SQL 服务器。我们如何克服这个问题?

我已经在我的环境中进行了测试。

如果您通过管道使用 ARM 模板创建 Key Vault 机密,最佳做法是使用变量组。

转到 DevOps 组织中的项目 --> 展开管道 --> 单击库 --> 单击 + 变量组 --> 提供变量组名称并添加变量 --> 单击保存

转到管道 --> Select 您的管道 --> 单击变量 --> 单击变量组 --> 单击 Link 变量组 --> Select 你的变量组 --> 点击 Link

现在您可以将这些变量传递到您的管道以创建 Key Vault 机密。

您可以使用 Key Vault 机密来创建 Azure SQL。

您可以通过配置 AAD 身份验证创建一个没有用户名和密码的 Azure Sql 服务器。
为了使下面的模板有效,我创建了一个 AAD 组。该组的成员将是 sql 管理员。

main.bicep 文件:

// Azure SQL Server name
param sqlServerName string
// Name of the AAD group that will be sql server administrator
param sqlServerAadAdminGroupName string
// Objectid of the ADD group that will be sql server administrator
param sqlServerAadAdminGroupObjectId string

resource sqlServer 'Microsoft.Sql/servers@2020-11-01-preview' = {
  name: sqlServerName
  location: resourceGroup().location
  properties: {
    version: '12.0'
    minimalTlsVersion: '1.2'
    publicNetworkAccess: 'Enabled'
    administrators: {
      administratorType: 'ActiveDirectory'
      principalType: 'Group'
      login: sqlServerAadAdminGroupName
      sid: sqlServerAadAdminGroupObjectId
      tenantId: subscription().tenantId
      azureADOnlyAuthentication: true
    }
  }
}

您可以使用此 AZ CLI 命令将此二头肌文件转换为手臂模板:

az bicep build --file main.bicep