Ниже описано, как создать новый логический сервер Базы данных SQL Azure и новой базы данных с управляемым удостоверением, назначаемым пользователем.
Перейдите на страницу Выберите вариант развертывания SQL на портале Azure.
Если вы еще не вошли на портал Azure, выполните вход при появлении соответствующего запроса.
В разделе Базы данных 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. В области Обзор должен отображаться параметр Идентификатор клиента.
<subscriptionId>
: ваш идентификатор подписки можно найти на портале Azure.
<ServerName>
: используйте уникальное имя логического сервера.
<ResourceGroupName>
: имя группы ресурсов для логического сервера.
<AzureADAccount>
: может быть пользователем или группой Microsoft Entra. Например: DummyLogin
<Location>
: расположение сервера, например westus2
или centralus
.
<objectId>
: можно найти, перейдя в портал Azure и перейдя к ресурсу идентификатора Microsoft Entra. На панели "Пользователь" найдите пользователя 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'
$responce=Invoke-WebRequest -Uri $uri -Method PUT -Headers $authHeader -Body $body -ContentType "application/json"
$responce.statuscode
$responce.content
Ниже приведен пример шаблона ARM, создающего База данных SQL Azure логический сервер с управляемым удостоверением, назначаемым пользователем. Шаблон также добавляет набор администраторов Microsoft Entra для сервера и включает проверку подлинности только для Microsoft Entra, но это можно удалить из примера шаблона.
Дополнительные сведения и шаблоны ARM см. в разделе о шаблонах Azure Resource Manager для Базы данных SQL Azure и Управляемого экземпляра SQL.
Используйте инструкции из разделов о пользовательском развертывании на портале 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"
},
"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')]"
}
}
}
]
}