Назначение администратора Active Directory экземпляру Azure SQL с помощью шаблонов ARM

#azure #azure-resource-manager #azure-sql-database #azure-sql-server

#лазурный #azure-resource-manager #azure-sql-database #azure-sql-server #azure

Вопрос:

Можно ли назначить администратора Active Directory экземпляру SQL Azure в шаблоне ресурсов ARM? Я пытаюсь автоматизировать развертывание сервера базы данных, но, похоже, я могу указать только учетные данные администрирования локального сервера.

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

Похоже, что я нигде не могу указать конкретного администратора Azure AD, кроме этого.

Ответ №1:

Корпорация Майкрософт обратилась ко мне и предоставила образец шаблона ресурса для достижения этой цели:

 {
    "$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'))]"
                    ]
                }
            ]
        }
    ]
}
  

Комментарии:

1. Вы знаете, возможно ли создать вход без администратора? Могу ли я создавать роли и назначать пользователя этим ролям в шаблоне ARM?

2. Я думаю, что логины, не являющиеся администраторами, обрабатываются только на уровне базы данных. Это не то, что вы бы поместили в шаблон ARM, а скорее просто было бы частью схемы базы данных.

3. есть ли способ найти идентификатор SID (или просто указать имя пользователя / группы?)

4. Предполагая, что у вас есть разрешения на просмотр сведений о пользователе, вы должны иметь возможность просматривать эту информацию на портале Azure, Azure Powershell или через Azure AD Graph Explorer.

Ответ №2:

Изменение: вышеуказанное не будет запущено из-за:

CloudException: ошибка проверки шаблона развертывания: «Ресурс шаблона «ActiveDirectory» для типа «Microsoft.Sql / servers / administrators» в строке «168» и столбце «9» имеет неправильную длину сегмента. Вложенный тип ресурса должен иметь одинаковое количество сегментов в качестве имени ресурса. Корневой тип ресурса должен иметь длину сегмента на единицу больше, чем его имя ресурса.Пожалуйста, смотрите 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'))]"
  ]
},
  

Комментарии:

1. Есть ли вероятность, что один из ваших параметров имеет a / в имени?