Los pasos siguientes describen el proceso para crear una base de datos y un servidor lógico de Azure SQL Database con una identidad administrada asignada por el usuario asignada.
Vaya a la página Seleccione una opción de implementación de SQL en Azure Portal.
Si aún no ha iniciado sesión en Azure Portal, hágalo cuando se le solicite.
En Bases de datos SQL, deje Tipo de recurso establecido en Base de datos única y seleccione Crear.
En la pestaña Básico del formulario Create SQL Database, en Detalles del proyecto, seleccione la suscripción de Azure correcta.
En Grupo de recursos, seleccione Crear nuevo, especifique un nombre válido para el grupo de recursos y seleccione Aceptar.
En Nombre de base de datos, escriba el nombre que desee.
En Servidor, seleccione Crear nuevo y rellene el formulario Nuevo servidor con los valores siguientes:
- Nombre del servidor: escriba un nombre de servidor único. Los nombres de los servidores deben ser globalmente únicos en todos los servidores de Azure, no solo únicos dentro de una suscripción.
- Inicio de sesión del administrador del servidor: escriba un nombre de inicio de sesión de administrador, por ejemplo,
azureuser
.
- Contraseña: escriba una contraseña que cumpla los requisitos de contraseña y escríbala de nuevo en el campo Confirmar contraseña.
- Ubicación: seleccione una ubicación en la lista desplegable.
Seleccione Siguiente: Redes en la parte inferior de la página.
En la pestaña Redes, en Método de conectividad, seleccione Punto de conexión público.
En Reglas de firewall, establezca Agregar dirección IP del cliente actual en Sí. Deje la opción Permitir que los servicios y recursos de Azure accedan a este grupo de servidores establecida en No.
Seleccione Siguiente: Seguridad en la parte inferior de la página.
En la pestaña Seguridad, en Identidad, seleccione Configurar identidades.
En el panel Identidad, en Identidad administrada asignada por el usuario, seleccione Agregar. Seleccione la Suscripción deseada y, a continuación, en Identidades administradas asignadas por el usuario, seleccione la identidad administrada asignada por el usuario deseada en la suscripción seleccionada. Después, seleccione el botón Seleccionar.
En Identidad principal, seleccione la misma identidad administrada asignada por el usuario seleccionada en el paso anterior.
Nota:
Si la identidad administrada asignada por el sistema es la identidad principal, el campo Identidad principal debe estar vacío.
Seleccione Aplicar.
En la parte inferior de la página, seleccione Revisar y crear.
En la página Revisar y crear, después de revisar, seleccione Crear.
El comando de la CLI de Azure az sql server create
se usa para aprovisionar un nuevo servidor lógico. El comando siguiente aprovisionará un nuevo servidor con una identidad administrada asignada por el usuario. El ejemplo también habilitará la autenticación solo de Microsoft Entra y establecerá un administrador de Microsoft Entra para el servidor.
El inicio de sesión de administrador de SQL del servidor se creará automáticamente y la contraseña se establecerá en una contraseña aleatoria. Puesto que la conectividad de autenticación de SQL está deshabilitada con la creación de este servidor, no se usará el inicio de sesión de administrador de SQL.
El administrador de Microsoft Entra de servidor será la cuenta que establezca para <AzureADAccount>
y se puede usar para administrar el servidor.
Reemplace los valores siguientes del ejemplo:
<subscriptionId>
: su identificador de suscripción se puede encontrar en Azure Portal.
<ResourceGroupName>
: nombre del grupo de recursos para el servidor lógico.
<managedIdentity>
: la identidad administrada asignada por el usuario. También se puede usar como la identidad principal.
<primaryIdentity>
: la identidad principal que desea usar como identidad de servidor.
<AzureADAccount>
: puede ser un usuario o grupo de Microsoft Entra. Por ejemplo: DummyLogin
<AzureADAccountSID>
: id. de objeto de Microsoft Entra del usuario.
<ServerName>
: use un nombre de servidor lógico único.
<Location>
: ubicación del servidor, como westus
o 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
Para más información, consulte az sql server create.
Nota:
En el ejemplo anterior se aprovisiona un servidor con una identidad administrada asignada por el usuario únicamente. Puede establecer el valor --identity-type
en UserAssigned,SystemAssigned
si desea que ambos tipos de identidades administradas se creen con el servidor.
Para comprobar el estado del servidor después de la creación, vea el siguiente comando:
az sql server show --name <ServerName> --resource-group <ResourceGroupName> --expand-ad-admin
El comando de PowerShell New-AzSqlServer
se usa para aprovisionar un nuevo servidor lógico de Azure SQL. El comando siguiente aprovisionará un nuevo servidor con una identidad administrada asignada por el usuario. El ejemplo también habilitará la autenticación solo de Microsoft Entra y establecerá un administrador de Microsoft Entra para el servidor.
El inicio de sesión de administrador de SQL del servidor se creará automáticamente y la contraseña se establecerá en una contraseña aleatoria. Puesto que la conectividad de autenticación de SQL está deshabilitada con la creación de este servidor, no se usará el inicio de sesión de administrador de SQL.
El administrador de Microsoft Entra de servidor será la cuenta que establezca para <AzureADAccount>
y se puede usar para administrar el servidor.
Reemplace los valores siguientes del ejemplo:
<ResourceGroupName>
: nombre del grupo de recursos para el servidor lógico.
<Location>
: ubicación del servidor, como West US
o Central US
<ServerName>
: use un nombre de servidor lógico único.
<subscriptionId>
: su identificador de suscripción se puede encontrar en Azure Portal.
<managedIdentity>
: la identidad administrada asignada por el usuario. También se puede usar como la identidad principal.
<primaryIdentity>
: la identidad principal que desea usar como identidad de servidor.
<AzureADAccount>
: puede ser un usuario o grupo de Microsoft Entra. Por ejemplo: 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
Para más información, consulte New-AzSqlServer.
Nota:
En el ejemplo anterior se aprovisiona un servidor con una identidad administrada asignada por el usuario únicamente. Puede establecer el valor -IdentityType
en "UserAssigned,SystemAssigned"
si desea que ambos tipos de identidades administradas se creen con el servidor.
Para comprobar el estado del servidor después de la creación, vea el siguiente comando:
Get-AzSqlServer -ResourceGroupName "<ResourceGroupName>" -ServerName "<ServerName>" -ExpandActiveDirectoryAdministrator
La API REST Servidores: creación o actualización se puede usar para crear un servidor lógico con la identidad administrada asignada por el usuario.
El script siguiente aprovisionará un servidor lógico, establecerá el administrador de Microsoft Entra como <AzureADAccount>
y habilitará la autenticación solo de Microsoft Entra. El inicio de sesión de administrador de SQL del servidor también se creará automáticamente y la contraseña se establecerá en una contraseña aleatoria. Puesto que la conectividad de autenticación de SQL está deshabilitada con este aprovisionamiento, no se usará el inicio de sesión de administrador de SQL.
El administrador de Microsoft Entra, <AzureADAccount>
, se puede usar para administrar el servidor una vez completado el aprovisionamiento.
Reemplace los valores siguientes del ejemplo:
<tenantId>
: se puede encontrar si va a Azure Portal, en el recurso de Microsoft Entra ID. En el panel Información general, debe ver el Identificador de inquilino.
<subscriptionId>
: su identificador de suscripción se puede encontrar en Azure Portal.
<ServerName>
: use un nombre de servidor lógico único.
<ResourceGroupName>
: nombre del grupo de recursos para el servidor lógico.
<AzureADAccount>
: puede ser un usuario o grupo de Microsoft Entra. Por ejemplo: DummyLogin
<Location>
: ubicación del servidor, como westus2
o centralus
.
<objectId>
: se puede encontrar si va a Azure Portal, en el recurso de Microsoft Entra ID. En el panel Usuario, busque el usuario Microsoft Entra y su identificador de objeto.
<managedIdentity>
: la identidad administrada asignada por el usuario. También se puede usar como la identidad principal.
<primaryIdentity>
: la identidad principal que desea usar como identidad de servidor.
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"
Nota:
En el ejemplo anterior se aprovisiona un servidor con una identidad administrada asignada por el usuario únicamente. Puede establecer el valor "type"
en "UserAssigned,SystemAssigned"
si desea que ambos tipos de identidades administradas se creen con el servidor.
Para comprobar el estado del servidor, puede usar el siguiente script:
$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
Este es un ejemplo de una plantilla de ARM que crea un servidor lógico de Azure SQL Database con una identidad administrada asignada por el usuario. La plantilla también agrega un conjunto de administradores de Microsoft Entra para el servidor y habilita la Autenticación solo de Microsoft Entra, pero se puede eliminar del ejemplo de plantilla.
Para más información y las plantillas de ARM, consulte Plantillas de Azure Resource Manager para Azure SQL Database y SQL Managed Instance.
Use una implementación personalizada en Azure Portal y cree su propia plantilla en el editor. A continuación, guarde la configuración una vez pegada en el ejemplo.
Para obtener el Id. de recurso de la identidad administrada asignada por el usuario, busque Identidades administradas en Azure Portal. Busque su identidad administrada y vaya a Propiedades. Un ejemplo de Id. de recurso para la UMI tendrá un aspecto similar a /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')]"
}
}
}
]
}