【问题标题】:Assigning an Active Directory Administrator to an Azure SQL instance through ARM Templates通过 ARM 模板将 Active Directory 管理员分配给 Azure SQL 实例
【发布时间】:2016-10-03 20:00:01
【问题描述】:

是否可以在 ARM 资源模板中将 Active Directory 管理员分配给 Azure SQL 实例?我正在尝试自动部署数据库服务器,但我似乎只能指定本地服务器管理凭据。

        "properties": {
            "administratorLogin": "[parameters('databaseAdministratorLogin')]",
            "administratorLoginPassword": "[parameters('databaseAdministratorPassword')]",
            "version": "12.0"
        },

除此之外,我似乎没有任何地方可以指定特定的 Azure AD 管理员。

【问题讨论】:

    标签: azure azure-resource-manager azure-sql-database azure-sql-server


    【解决方案1】:

    Microsoft 联系了我并提供了一个示例资源模板来完成此操作:

    {
        "$schema": "http://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json#",
        "contentVersion": "1.0.0.0",
        "parameters": {
            "SQL Administrator Login": {
                "type": "String"
            },
            "SQL Administrator Password": {
                "type": "SecureString"
            },
            "AAD Admin Login": {
                "type": "String"
            },
            "AAD Admin ObjectID": {
                "type": "String"
            },
            "AAD TenantId": {
                "type": "String"
            },
            "Location (Region)": {
                "type": "String"
            },
            "Server Name": {
                "type": "String"
            }
        },
        "variables": {},
        "resources": [
            {
                "type": "Microsoft.Sql/servers",
                "name": "[parameters('Server Name')]",
                "apiVersion": "2014-04-01-preview",
                "location": "[parameters('Location (Region)')]",
                "properties": {
                    "administratorLogin": "[parameters('SQL Administrator Login')]",
                    "administratorLoginPassword": "[parameters('SQL Administrator Password')]",
                    "version": "12.0"
                },
                "resources": [
                    {
                        "type": "firewallrules",
                        "name": "AllowAllWindowsAzureIps",
                        "apiVersion": "2014-04-01-preview",
                        "location": "[parameters('Location (Region)')]",
                        "properties": {
                            "endIpAddress": "0.0.0.0",
                           "startIpAddress": "0.0.0.0"
                        },
                        "dependsOn": [
                            "[concat('Microsoft.Sql/servers/', parameters('Server Name'))]"
                        ]
                    },
                    {
                        "type": "administrators",
                        "name": "activeDirectory",
                        "apiVersion": "2014-04-01-preview",
                        "location": "[parameters('Location (Region)')]",
                        "properties": {
                            "administratorType": "ActiveDirectory",
                            "login": "[parameters('AAD Admin Login')]",
                            "sid": "[parameters('AAD Admin ObjectID')]",
                            "tenantId": "[parameters('AAD TenantID')]"
                        },
                        "dependsOn": [
                            "[concat('Microsoft.Sql/servers/', parameters('Server Name'))]"
                        ]
                    }
                ]
            }
        ]
    }
    

    【讨论】:

    • 您知道是否可以创建非管理登录吗?我可以在 ARM 模板中创建角色并将用户分配给这些角色吗?
    • 我认为非管理员登录只是在数据库级别处理。这不是您放入 ARM 模板中的内容,而只是作为数据库架构的一部分。
    • 任何方式来查找 SID(或者只提供用户/组名?)
    • 假设您有权查看用户信息,您应该能够在 Azure 门户、Azure Powershell 或 Azure AD Graph Explorer 中查看此信息。
    【解决方案2】:

    修改: 以上将不会运行,原因是:

    CloudException:部署模板验证失败:'Microsoft.Sql/servers/administrators' 类型在第 '168' 行和第 '9' 列的模板资源 'activeDirectory' 的段长度不正确。 嵌套资源类型的段数必须与其资源名称相同。根资源类型的段长度必须比其资源名称大一。请参阅https://aka.ms/arm-template/#resources 了解使用详情。'。

    {
      "type": "Microsoft.Sql/servers/administrators",
      "name": "[concat(parameters('servers_tbg_backoffice_name'), '/', 'activeDirectory' )]",
      "apiVersion": "2014-04-01-preview",
      //"location": "[parameters('Location (Region)')]",
      "properties": {
        "administratorType": "ActiveDirectory",
        "login": "[parameters('AAD Admin Login')]",
        "sid": "[parameters('AAD Admin ObjectID')]",
        "tenantId": "[parameters('AAD TenantID')]"
      },
      "dependsOn": [
        "[concat('Microsoft.Sql/servers/', parameters('servers_tbg_backoffice_name'))]"
      ]
    },
    

    【讨论】:

    • 您的参数是否有可能在名称中包含/
    猜你喜欢
    • 1970-01-01
    • 2019-07-30
    • 2019-01-22
    • 1970-01-01
    • 2019-01-26
    • 2020-10-27
    • 2020-07-09
    • 1970-01-01
    • 2022-01-04
    相关资源
    最近更新 更多