Ниже описаны шаги по созданию нового логического сервера Azure SQL Database и новой базы данных с назначенным пользователем управляемым удостоверением.
Перейдите в Центр SQL Azure в aka.ms/azuresqlhub.
В меню ресурсов разверните базу данных SQL Azure и выберите базы данных SQL.
Выберите кнопку + Создать и выберите базу данных SQL.
На вкладке Основные сведения формы Создание базы данных SQL в разделе Сведения о проекте выберите подходящую подписку Azure.
В разделе Группа ресурсов щелкните Создать новую, введите имя группы ресурсов и нажмите ОК.
В поле Имя базы данных введите нужное имя базы данных.
В группе Сервер выберите Создать и заполните форму Новый сервер следующим образом:
- В поле Имя сервера введите уникальное имя сервера. Имена серверов должны быть глобально уникальными для всех серверов в Azure, а не только в рамках подписки.
-
Имя для входа администратора сервера. Введите имя для входа администратора, например
azureuser.
-
Пароль. Введите пароль, соответствующий требованиям, а затем введите его еще раз в поле Подтверждение пароля.
-
Расположение. Выберите расположение из раскрывающегося списка.
Это важно
Не включайте личную, чувствительную или конфиденциальную информацию в поле имени пользователя администратора сервера. Данные, введенные в этом поле, не считаются данными клиента.
В нижней части страницы нажмите кнопку Далее: сети.
На вкладке Сеть в разделе Метод подключения выберите Общедоступная конечная точка.
В разделе Правила брандмауэра установите переключатель Добавить текущий IP-адрес клиента в положение Да. Оставьте значение Нет для параметра Разрешить доступ к серверу службам и ресурсам Azure.
Выберите Далее: безопасность доступа в нижней части страницы.
На вкладке "Безопасность" в разделе "Удостоверение" выберите "Настройка удостоверений".
В области удостоверения в разделе "Назначенное пользователем управляемое удостоверение" выберите "Добавить". Выберите нужную подписку, а затем в разделе Управляемые удостоверения, назначенные пользователем выберите нужное управляемое удостоверение из выбранной подписки. Затем щелкните Выбрать.
В разделе Основное удостоверение выберите то же управляемое удостоверение, назначаемое пользователем, которое было выбрано на предыдущем шаге.
Примечание.
Если назначаемое системой управляемое удостоверение является основным удостоверением, поле Основное удостоверение должно быть пустым.
Нажмите кнопку Применить.
В нижней части страницы щелкните Просмотреть и создать.
На странице Просмотр и создание после проверки нажмите кнопку Создать.
Команда Azure CLI az sql server create используется для подготовки нового логического сервера. Следующая команда подготовит новый сервер с назначенным пользователем управляемым удостоверением. В этом примере также будет включена проверка подлинности только для Microsoft Entra и задан администратор Microsoft Entra для сервера.
Имя для входа администратора SQL сервера создается автоматически, а также устанавливается случайный пароль. Так как при создании данного сервера возможность подключения с проверкой подлинности SQL отключена, имя для входа администратора SQL не будет использоваться.
Администратор сервера Microsoft Entra будет учетной записью, которую вы задали для <AzureADAccount>, и может использоваться для управления сервером.
Замените в примере приведенные ниже значения.
-
<subscriptionId>: ваш идентификатор подписки можно найти на портале Azure.
-
<ResourceGroupName>: имя группы ресурсов для логического сервера.
-
<managedIdentity> — управляемое пользователем назначаемое удостоверение. Также может использоваться в качестве основного удостоверения.
-
<primaryIdentity> — основное удостоверение, которое вы хотите использовать в роли идентификатора сервера.
-
<AzureADAccount>: может быть пользователем или группой Microsoft Entra. Например: DummyLogin
-
<AzureADAccountSID>: идентификатор объекта Microsoft Entra для пользователя
-
<ServerName>: используйте уникальное имя логического сервера.
-
<Location>: расположение сервера, например westus или centralus.
subscription_id=<subscriptionId>
resource_group=<ResourceGroupName>
managed_identity=<managedIdentity>
primary_identity=<primaryIdentity>
azure_ad_account=<AzureADAccount>
azure_ad_account_sid=<AzureADAccountSID>
server_name=<ServerName>
location=<Location>
az sql server create \
--assign-identity \
--identity-type UserAssigned \
--user-assigned-identity-id /subscriptions/$subscription_id/resourceGroups/$resource_group/providers/Microsoft.ManagedIdentity/userAssignedIdentities/$managed_identity \
--primary-user-assigned-identity-id /subscriptions/$subscription_id/resourceGroups/$resource_group/providers/Microsoft.ManagedIdentity/userAssignedIdentities/$primary_identity \
--enable-ad-only-auth \
--external-admin-principal-type User \
--external-admin-name $azure_ad_account \
--external-admin-sid $azure_ad_account_sid \
-g $resource_group \
-n $server_name \
-l $location
Дополнительные сведения см. в разделе az sql server create.
Примечание.
В предыдущем примере сервер создается только с управляемым удостоверением, назначенным пользователем. Вы можете задать для --identity-type значение UserAssigned,SystemAssigned, если хотите создать оба типа управляемых удостоверений с сервером.
Чтобы проверить состояние сервера после создания, используйте следующую команду:
az sql server show --name <ServerName> --resource-group <ResourceGroupName> --expand-ad-admin
Команда PowerShell New-AzSqlServer используется для подготовки нового логического сервера Azure SQL. Следующая команда подготовит новый сервер с назначенным пользователем управляемым удостоверением. В этом примере также будет включена проверка подлинности только для Microsoft Entra и задан администратор Microsoft Entra для сервера.
Имя для входа администратора SQL сервера создается автоматически, а также устанавливается случайный пароль. Так как при создании данного сервера возможность подключения с проверкой подлинности SQL отключена, имя для входа администратора SQL не будет использоваться.
Администратор сервера Microsoft Entra будет учетной записью, которую вы задали для <AzureADAccount>, и может использоваться для управления сервером.
Замените в примере приведенные ниже значения.
-
<ResourceGroupName>: имя группы ресурсов для логического сервера.
-
<Location>: расположение сервера, например West US или Central US.
-
<ServerName>: используйте уникальное имя логического сервера.
-
<subscriptionId>: ваш идентификатор подписки можно найти на портале Azure.
-
<managedIdentity> — управляемое пользователем назначаемое удостоверение. Также может использоваться в качестве основного удостоверения.
-
<primaryIdentity> — основное удостоверение, которое вы хотите использовать в качестве удостоверения сервера.
-
<AzureADAccount>: может быть пользователем или группой Microsoft Entra. Например: DummyLogin
$server = @{
ResourceGroupName = "<ResourceGroupName>"
Location = "<Location>"
ServerName = "<ServerName>"
ServerVersion = "12.0"
AssignIdentity = $true
IdentityType = "UserAssigned"
UserAssignedIdentityId = "/subscriptions/<subscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<managedIdentity>"
PrimaryUserAssignedIdentityId = "/subscriptions/<subscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<primaryIdentity>"
ExternalAdminName = "<AzureADAccount>"
EnableActiveDirectoryOnlyAuthentication = $true
}
New-AzSqlServer @server
Дополнительные сведения см. в разделе New-AzSqlServer.
Примечание.
В предыдущем примере сервер создается только с управляемым удостоверением, назначенным пользователем. Вы можете установить для -IdentityType значение "UserAssigned,SystemAssigned", если хотите создать оба типа управляемых удостоверений вместе с сервером.
Чтобы проверить состояние сервера после создания, используйте следующую команду:
Get-AzSqlServer -ResourceGroupName "<ResourceGroupName>" -ServerName "<ServerName>" -ExpandActiveDirectoryAdministrator
REST API создания и обновления серверов можно использовать для создания логического сервера с управляемым удостоверением, назначаемым пользователем.
Следующий сценарий подготавливает логический сервер, задает администратора Microsoft Entra как <AzureADAccount>и включает проверку подлинности только для Microsoft Entra. Имя для входа администратора SQL сервера создается автоматически, а также устанавливается случайный пароль. Поскольку подключение с аутентификацией SQL отключено при этом развертывании, учетные данные администратора SQL не будут использоваться.
Администратор <AzureADAccount> Microsoft Entra может использоваться для управления сервером после завершения развертывания.
Замените в примере приведенные ниже значения.
-
<tenantId>: можно найти, войдя на портал Azure и перейдя к ресурсу Microsoft Entra ID. В области Обзор должен отображаться параметр Идентификатор клиента.
-
<subscriptionId>: ваш идентификатор подписки можно найти на портале Azure.
-
<ServerName>: используйте уникальное имя логического сервера.
-
<ResourceGroupName>: имя группы ресурсов для логического сервера.
-
<AzureADAccount>: может быть пользователем или группой Microsoft Entra. Например: DummyLogin
-
<Location>: расположение сервера, например westus2 или centralus.
-
<objectId>: можно найти, войдя на портал Azure и перейдя к ресурсу Microsoft Entra ID.
На панели "Пользователь" найдите пользователя Microsoft Entra и найдите свой идентификатор объекта
-
<managedIdentity> — управляемое пользователем назначаемое удостоверение. Также может использоваться в качестве основного удостоверения.
-
<primaryIdentity> — основное удостоверение, которое вы хотите использовать в качестве удостоверения сервера.
Import-Module Azure
Import-Module MSAL.PS
$tenantId = '<tenantId>'
$clientId = '1950a258-227b-4e31-a9cf-717495945fc2' # Static Microsoft client ID used for getting a token
$subscriptionId = '<subscriptionId>'
$uri = "urn:ietf:wg:oauth:2.0:oob"
$authUrl = "https://login.windows.net/$tenantId"
$serverName = "<ServerName>"
$resourceGroupName = "<ResourceGroupName>"
Login-AzAccount -tenantId $tenantId
# login as a user with SQL Server Contributor role or higher
# Get a token
$result = Get-MsalToken -RedirectUri $uri -ClientId $clientId -TenantId $tenantId -Scopes "https://management.core.windows.net/.default"
#Authentication header
$authHeader = @{
'Content-Type'='application\json; '
'Authorization'=$result.CreateAuthorizationHeader()
}
# Enable Azure AD-only auth and sets a user-managed identity as the server identity
# No server admin is specified, and only Azure AD admin and Azure AD-only authentication is set to true
# Server admin (login and password) is generated by the system
# The sid is the Azure AD Object ID for the user
# Replace all values in a <>
$body = '{
"location": "<Location>",
"identity": {"type" : "UserAssigned", "UserAssignedIdentities" : {"/subscriptions/<subscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<managedIdentity>" : {}}},
"properties": { "PrimaryUserAssignedIdentityId":"/subscriptions/<subscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<primaryIdentity>","administrators":{ "login":"<AzureADAccount>", "sid":"<objectId>", "tenantId":"<tenantId>", "principalType":"User", "azureADOnlyAuthentication":true }
}
}'
# Provision the server
Invoke-RestMethod -Uri https://management.azure.com/subscriptions/$subscriptionId/resourceGroups/$resourceGroupName/providers/Microsoft.Sql/servers/$serverName/?api-version=2020-11-01-preview -Method PUT -Headers $authHeader -Body $body -ContentType "application/json"
Примечание.
В предыдущем примере сервер создается только с управляемым удостоверением, назначенным пользователем. Вы можете установить для "type" значение "UserAssigned,SystemAssigned", если хотите создать оба типа управляемых удостоверений вместе с сервером.
Чтобы проверить состояние сервера, можно использовать следующий скрипт:
$uri = 'https://management.azure.com/subscriptions/'+$subscriptionId+'/resourceGroups/'+$resourceGroupName+'/providers/Microsoft.Sql/servers/'+$serverName+'?api-version=2020-11-01-preview&$expand=administrators/activedirectory'
$response=Invoke-WebRequest -Uri $uri -Method PUT -Headers $authHeader -Body $body -ContentType "application/json"
$response.statuscode
$response.content
Ниже приведен пример шаблона ARM, который создает логический сервер базы данных Azure SQL с управляемым удостоверением, назначаемым пользователем. Шаблон также добавляет набор администраторов Microsoft Entra для сервера и включает проверку подлинности только для Microsoft Entra, но это можно удалить из примера шаблона.
Дополнительные сведения и шаблоны ARM см. в шаблонах Azure Resource Manager для Базы данных SQL Azure.
Используйте инструкции из разделов о пользовательском развертывании на портале Azure и создании собственного шаблона с помощью редактора. Затем необходимо сохранить конфигурацию после того, как вставлен пример.
Чтобы получить идентификатор ресурса управляемого удостоверения, назначаемого пользователем, выполните поиск по запросу Управляемые удостоверения на портале Azure. Найдите свое управляемое удостоверение и перейдите в раздел Свойства. Пример вашего идентификатора ресурса UMI будет выглядеть так: /subscriptions/<subscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<managedIdentity>.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.1",
"parameters": {
"server": {
"type": "string",
"defaultValue": "[uniqueString('sql', resourceGroup().id)]",
"metadata": {
"description": "The name of the logical server."
}
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]",
"metadata": {
"description": "Location for all resources."
}
},
"aad_admin_name": {
"type": "String",
"metadata": {
"description": "The name of the Azure AD admin for the SQL server."
}
},
"aad_admin_objectid": {
"type": "String",
"metadata": {
"description": "The Object ID of the Azure AD admin."
}
},
"aad_admin_tenantid": {
"type": "String",
"defaultValue": "[subscription().tenantId]",
"metadata": {
"description": "The Tenant ID of the Azure Active Directory"
}
},
"aad_admin_type": {
"defaultValue": "User",
"allowedValues": [
"User",
"Group",
"Application"
],
"type": "String"
},
"aad_only_auth": {
"defaultValue": true,
"type": "Bool"
},
"user_identity_resource_id": {
"defaultValue": "",
"type": "String",
"metadata": {
"description": "The Resource ID of the user-assigned managed identity, in the form of /subscriptions/<subscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<managedIdentity>."
}
},
"AdminLogin": {
"minLength": 1,
"type": "String",
"metadata": {
"description": "Server admin login name."
}
},
"AdminLoginPassword": {
"type": "SecureString"
}
},
"resources": [
{
"type": "Microsoft.Sql/servers",
"apiVersion": "2020-11-01-preview",
"name": "[parameters('server')]",
"location": "[parameters('location')]",
"identity": {
"type": "UserAssigned",
"UserAssignedIdentities": {
"[parameters('user_identity_resource_id')]": {}
}
},
"properties": {
"administratorLogin": "[parameters('AdminLogin')]",
"administratorLoginPassword": "[parameters('AdminLoginPassword')]",
"PrimaryUserAssignedIdentityId": "[parameters('user_identity_resource_id')]",
"administrators": {
"login": "[parameters('aad_admin_name')]",
"sid": "[parameters('aad_admin_objectid')]",
"tenantId": "[parameters('aad_admin_tenantid')]",
"principalType": "[parameters('aad_admin_type')]",
"azureADOnlyAuthentication": "[parameters('aad_only_auth')]"
}
}
}
]
}