代码之家  ›  专栏  ›  技术社区  ›  Ryan

如何在ARM(JSON)模板中的Azure漏洞评估基线定义中指定多行?

  •  0
  • Ryan  · 技术社区  · 4 年前

    我正在尝试将一些Azure漏洞评估基线定义添加到我的ARM模板中。我的ARM模板使用JSON。不过,我找不到任何关于如何指定某些VA基线定义的文档,即需要在基线中有多行的定义。

    具体来说,我正在尝试为VA2109添加一个基线定义。我可以找到关于如何定义一般意义上的基线VA条目的文档,它在这里。。。

    https://docs.microsoft.com/en-us/azure/templates/microsoft.sql/servers/databases/vulnerabilityassessments/rules/baselines?tabs=json

    然后我可以在这里找到VA2109的描述。。。

    https://docs.microsoft.com/en-us/azure/azure-sql/database/sql-database-vulnerability-assessment-rules#authentication-and-authorization

    但它们都没有告诉我如何包含多个用户角色映射。例如,下面是我目前拥有的功能,它可以让我指定用户应该具有数据编写器角色。但是,我还想指定用户应该具有数据读取器和ddl管理员角色。

    {
      "type": "Microsoft.Sql/servers/databases/vulnerabilityAssessments/rules/baselines",
      "apiVersion": "2021-02-01-preview",
      "name": "[concat(variables('sqlServerName'), '/', variables('databaseName'), '/default/VA2109/Default')]",
      "dependsOn": [
        "[resourceId('Microsoft.Sql/servers/databases', variables('sqlServerName'), variables('databaseName'))]"
      ],
      "properties": {
        "baselineResults": [
          {
            "result": ["wibuser", "db_datawriter"]
          }
        ]
      }
    }
    

    我找到了一个使用PowerShell的示例。在PowerShell中,您可以只提供和数组。PowerShell示例可以在此处找到。。。

    https://docs.microsoft.com/en-us/powershell/module/sqlserver/new-sqlvulnerabilityassessmentbaseline?view=sqlserver-ps#example-2--create-a-new-security-check-baseline-manually

    所以我调整了我的ARM来做同样的事情,但它抛出了一个错误,说ARM模板无效。我试过的调整后的ARM看起来如下。。。

    {
      "type": "Microsoft.Sql/servers/databases/vulnerabilityAssessments/rules/baselines",
      "apiVersion": "2021-02-01-preview",
      "name": "[concat(variables('sqlServerName'), '/', variables('databaseName'), '/default/VA2109/Default')]",
      "dependsOn": [
        "[resourceId('Microsoft.Sql/servers/databases', variables('sqlServerName'), variables('databaseName'))]"
      ],
      "properties": {
        "baselineResults": [
          {
            "result": [
              ["wibuser", "db_datawriter"],
              ["wibuser", "db_datareader"]
            ]
          }
        ]
      }
    }
    

    有人知道在使用ARMJSON时如何在VA基线资源中指定多行吗?或者可能知道在哪里可以找到所有这些VA定义的文档?

    0 回复  |  直到 4 年前
        1
  •  1
  •   akrabi    4 年前

    请注意,baselineResults是一个行数组。
    您需要将每一行作为JSON对象添加到该数组中。

    此外,请注意,每个结果行都应包括所有列,因此还应包括“主体类型”和“身份验证类型”行。

    它应该是这样的:

    {
      "type": "Microsoft.Sql/servers/databases/vulnerabilityAssessments/rules/baselines",
      "apiVersion": "2021-02-01-preview",
      "name": "[concat(variables('sqlServerName'), '/', variables('databaseName'), '/default/VA2109/Default')]",
      "dependsOn": [
        "[resourceId('Microsoft.Sql/servers/databases', variables('sqlServerName'), variables('databaseName'))]"
      ],
      "properties": {
        "baselineResults": [
          {
            "result":  ["wibuser", "db_datawriter", "SQL_USER", "NONE"]
          },
          {
            "result":  ["wibuser", "db_datareader", "SQL_USER", "NONE"]
          }
        ]
      }
    }
    

    我为“主体类型”和“身份验证类型”行添加了伪值,请填写您自己的

    推荐文章