I passaggi seguenti illustrano il processo di creazione di un nuovo server logico database SQL di Azure e di un nuovo database con un'identità gestita assegnata dall'utente.
Passare alla pagina Selezionare l'opzione di distribuzione SQL nella portale di Azure.
Se non è già stato eseguito l'accesso a portale di Azure, accedere quando richiesto.
In Database SQL lasciare l'opzione Tipo di risorsa impostata su Database singolo e selezionare Crea.
Nella scheda Informazioni di base del modulo Crea database SQL selezionare la Sottoscrizione di Azure corretta in Dettagli del progetto.
In Gruppo di risorse selezionare Crea nuovo, immettere un nome per il gruppo di risorse e selezionare OK.
In Nome database immettere il nome del database desiderato.
In server selezionare Crea nuovo e compilare il modulo Nuovo server con i valori seguenti:
- Nome server: immettere un nome server univoco. I nomi dei server devono essere univoci a livello globale per tutti i server in Azure, non solo univoci all'interno di una sottoscrizione.
- Account di accesso amministratore del server: immettere un nome di accesso amministratore, ad esempio:
azureuser
.
- Password: immettere una password che soddisfi i requisiti della password e immetterla di nuovo nel campo Conferma password .
- Località: selezionare una località dall'elenco a discesa
Selezionare Avanti: Rete nella parte inferiore della pagina.
Nella scheda Rete selezionare Endpoint pubblico in Metodo di connettività.
In Regole del firewall impostare Aggiungi indirizzo IP client corrente su Sì. Lasciare l'opzione Consenti alle risorse e ai servizi di Azure di accedere a questo server impostata su No.
Selezionare Avanti: Sicurezza nella parte inferiore della pagina.
Nella scheda Sicurezza, in Identità, selezionare Configura identità.
Nel riquadro Identità, in Identità assegnata dall'utente, selezionare Aggiungi. Selezionare la sottoscrizione desiderata e quindi in Identità gestite assegnate dall'utente selezionare l'identità gestita assegnata dall'utente desiderata dalla sottoscrizione selezionata. Selezionare quindi il pulsante Seleziona .
In Identità primaria selezionare la stessa identità gestita assegnata dall'utente selezionata nel passaggio precedente.
Nota
Se l'identità gestita assegnata dal sistema è l'identità primaria, il campo Identità primaria deve essere vuoto.
Selezionare Applica.
Selezionare Rivedi e crea nella parte inferiore della pagina
Nella pagina Rivedi e crea, dopo aver rivisto le impostazioni, selezionare Crea.
Il comando dell'interfaccia della riga di comando az sql server create
di Azure viene usato per effettuare il provisioning di un nuovo server logico. Il comando seguente eseguirà il provisioning di un nuovo server con un'identità gestita assegnata dall'utente. L'esempio abiliterà anche l'autenticazione solo Microsoft Entra e imposta un amministratore di Microsoft Entra per il server.
L'account di accesso sql Amministrazione istrator del server verrà creato automaticamente e la password verrà impostata su una password casuale. Poiché la connettività di autenticazione SQL è disabilitata con questa creazione del server, l'account di accesso sql Amministrazione istrator non verrà usato.
L'amministratore di Microsoft Entra sarà l'account impostato per <AzureADAccount>
e può essere usato per gestire il server.
Sostituire i valori seguenti nell'esempio:
<subscriptionId>
: l'ID sottoscrizione è disponibile nel portale di Azure
<ResourceGroupName>
: nome del gruppo di risorse per il server logico
<managedIdentity>
: identità gestita assegnata dall'utente. Può essere usato anche come identità primaria.
<primaryIdentity>
: l'identità primaria da usare come identità del server
<AzureADAccount>
: può essere un utente o un gruppo di Microsoft Entra. Ad esempio, DummyLogin
<AzureADAccountSID>
: ID oggetto Microsoft Entra per l'utente
<ServerName>
: usare un nome univoco del server logico
<Location>
: posizione del server, ad esempio 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
Per altre informazioni, vedere az sql server create.
Nota
Nell'esempio precedente viene effettuato il provisioning di un server con solo un'identità gestita assegnata dall'utente. È possibile impostare l'oggetto --identity-type
su UserAssigned,SystemAssigned
come se si desidera creare entrambi i tipi di identità gestite con il server.
Per controllare lo stato del server dopo la creazione, vedere il comando seguente:
az sql server show --name <ServerName> --resource-group <ResourceGroupName> --expand-ad-admin
Il comando New-AzSqlServer
di PowerShell viene usato per effettuare il provisioning di un nuovo server logico SQL di Azure. Il comando seguente eseguirà il provisioning di un nuovo server con un'identità gestita assegnata dall'utente. L'esempio abiliterà anche l'autenticazione solo Microsoft Entra e imposta un amministratore di Microsoft Entra per il server.
L'account di accesso sql Amministrazione istrator del server verrà creato automaticamente e la password verrà impostata su una password casuale. Poiché la connettività di autenticazione SQL è disabilitata con questa creazione del server, l'account di accesso sql Amministrazione istrator non verrà usato.
L'amministratore di Microsoft Entra sarà l'account impostato per <AzureADAccount>
e può essere usato per gestire il server.
Sostituire i valori seguenti nell'esempio:
<ResourceGroupName>
: nome del gruppo di risorse per il server logico
<Location>
: posizione del server, ad esempio West US
, o Central US
<ServerName>
: usare un nome univoco del server logico
<subscriptionId>
: l'ID sottoscrizione è disponibile nel portale di Azure
<managedIdentity>
: identità gestita assegnata dall'utente. Può essere usato anche come identità primaria
<primaryIdentity>
: l'identità primaria da usare come identità del server
<AzureADAccount>
: può essere un utente o un gruppo di Microsoft Entra. Ad esempio, 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
Per altre informazioni, vedere New-AzSqlServer.
Nota
Nell'esempio precedente viene effettuato il provisioning di un server con solo un'identità gestita assegnata dall'utente. È possibile impostare l'oggetto -IdentityType
su "UserAssigned,SystemAssigned"
come se si desidera creare entrambi i tipi di identità gestite con il server.
Per controllare lo stato del server dopo la creazione, vedere il comando seguente:
Get-AzSqlServer -ResourceGroupName "<ResourceGroupName>" -ServerName "<ServerName>" -ExpandActiveDirectoryAdministrator
I server - Creare o aggiornare l'API REST possono essere usati per creare un server logico con un'identità gestita assegnata dall'utente.
Lo script seguente eseguirà il provisioning di un server logico, imposta l'amministratore di Microsoft Entra come <AzureADAccount>
e abilita l'autenticazione solo Entra di Microsoft. Anche l'account di accesso sql Amministrazione istrator del server verrà creato automaticamente e la password verrà impostata su una password casuale. Poiché la connettività di autenticazione SQL è disabilitata con questo provisioning, l'account di accesso sql Amministrazione istrator non verrà usato.
L'amministratore <AzureADAccount>
di Microsoft Entra può essere usato per gestire il server al termine del provisioning.
Sostituire i valori seguenti nell'esempio:
<tenantId>
: è possibile trovare passando alla portale di Azure e passando alla risorsa ID Microsoft Entra. Nel riquadro Panoramica dovrebbe essere visualizzato l’ID tenant
<subscriptionId>
: l'ID sottoscrizione è disponibile nel portale di Azure
<ServerName>
: usare un nome univoco del server logico
<ResourceGroupName>
: nome del gruppo di risorse per il server logico
<AzureADAccount>
: può essere un utente o un gruppo di Microsoft Entra. Ad esempio, DummyLogin
<Location>
: posizione del server, ad esempio westus2
, o centralus
<objectId>
: è possibile trovare passando alla portale di Azure e passando alla risorsa ID Microsoft Entra. Nel riquadro Utente cercare l'utente Microsoft Entra e trovare il relativo ID oggetto
<managedIdentity>
: identità gestita assegnata dall'utente. Può essere usato anche come identità primaria
<primaryIdentity>
: l'identità primaria da usare come identità del server
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"
#Authetication 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
Nell'esempio precedente viene effettuato il provisioning di un server con solo un'identità gestita assegnata dall'utente. È possibile impostare l'oggetto "type"
su "UserAssigned,SystemAssigned"
come se si desidera creare entrambi i tipi di identità gestite con il server.
Per controllare lo stato del server, è possibile usare lo script seguente:
$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
Di seguito è riportato un esempio di modello di Resource Manager che crea un server logico database SQL di Azure con un'identità gestita assegnata dall'utente. Il modello aggiunge anche un set di amministratori di Microsoft Entra per il server e abilita l'autenticazione solo Entra di Microsoft, ma questo può essere rimosso dall'esempio di modello.
Per altre informazioni e modelli di Resource Manager, vedere Modelli di Azure Resource Manager per database SQL di Azure e Istanza gestita di SQL.
Usa una distribuzione personalizzata nel portale di Azure e crea un modello personalizzato nell'editor. Salva quindi la configurazione dopo aver incollato l'esempio.
Per ottenere l'ID risorsa dell'identità gestita assegnata dall'utente, cercare Identità gestite nella portale di Azure. Trovare l'identità gestita e passare a Proprietà. Un esempio dell'ID risorsa UMI sarà simile 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')]"
}
}
}
]
}