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.
Accedere alla pagina di opzione Selezionare la distribuzione SQL nel portale di Azure.
Se non lo si è già fatto, eseguire l’accesso al portale di Azure quando richiesto.
In Database SQL lasciare l'opzione Tipo di risorsa impostata su Database singolo e selezionare Crea.
Nella scheda Dati principali 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, quindi selezionare OK.
In Nome database immettere il nome del database desiderato.
In Server, selezionare Crea nuovo e compilare il modulo per il nuovo server con i valori seguenti:
- Nome del server: immettere un nome del server univoco. I nomi di tutti i server di Azure devono essere univoci a livello globale, non solo univoci all'interno di una sottoscrizione.
- Accesso amministratore server: immettere un nome di accesso amministratore, ad esempio:
azureuser
.
- Password: immettere una password che soddisfi i requisiti, quindi immetterla di nuovo nel campo Conferma password.
- Posizione: selezionare una posizione 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à gestita 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 di Azure az sql server create
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 con solo Microsoft Entra e imposterà un amministratore di Microsoft Entra per il server.
L'account di accesso dell’amministratore SQL verrà creato automaticamente e la password verrà impostata su una password casuale. Poiché la connettività di autenticazione SQL è disabilitata in questa fase di creazione server, l'account di accesso amministratore SQL non verrà usato.
L'amministratore Microsoft Entra del server sarà l'account impostato precedentemente per <AzureADAccount>
, e potrà essere usato per gestire il server.
Nell'esempio, sostituire i valori seguenti:
<subscriptionId>
: l'ID sottoscrizione, reperibile nel portale di Azure
<ResourceGroupName>
: il nome del gruppo di risorse per il server logico
<managedIdentity>
: l’identità gestita assegnata dall'utente. Può essere usata 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 per il server logico univoco
<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 il valore --identity-type
su UserAssigned,SystemAssigned
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 della PowerShell New-AzSqlServer
viene usato per effettuare il provisioning di un nuovo server logico Azure SQL. Il comando seguente eseguirà il provisioning di un nuovo server con un'identità gestita assegnata dall'utente. L'esempio abiliterà anche l'autenticazione con solo Microsoft Entra e imposterà un amministratore di Microsoft Entra per il server.
L'account di accesso dell’amministratore SQL verrà creato automaticamente e la password verrà impostata su una password casuale. Poiché la connettività di autenticazione SQL è disabilitata in questa fase di creazione server, l'account di accesso amministratore SQL non verrà usato.
L'amministratore Microsoft Entra del server sarà l'account impostato precedentemente per <AzureADAccount>
, e potrà essere usato per gestire il server.
Nell'esempio, sostituire i valori seguenti:
<ResourceGroupName>
: il nome del gruppo di risorse per il server logico
<Location>
: posizione del server, ad esempio West US
, o Central US
<ServerName>
: usare un nome per il server logico univoco
<subscriptionId>
: l'ID sottoscrizione, reperibile nel portale di Azure
<managedIdentity>
: l’identità gestita assegnata dall'utente. Può essere usata 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 il valore -IdentityType
su "UserAssigned,SystemAssigned"
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
Le API REST Server: creare o aggiornare possono essere usate per creare un server logico con un'identità gestita assegnata dall'utente.
Lo script seguente esegue il provisioning di un server logico, imposta l'amministratore di Microsoft Entra come <AzureADAccount>
e abilita l'autenticazione basata solo su Microsoft Entra. Verrà anche creato automaticamente l'account di accesso dell’amministratore del server SQL e la password verrà impostata su una password casuale. Poiché la connettività di autenticazione SQL è disabilitata con questo provisioning, l'account di accesso amministratore SQL non verrà usato.
L'amministratore di Microsoft Entra, <AzureADAccount>
, può essere usato per gestire il server al termine del provisioning.
Nell'esempio, sostituire i valori seguenti:
<tenantId>
: è possibile trovarlo andando sul portale di Azure e passando alla risorsa Microsoft Entra ID. Nel riquadro Panoramica dovrebbe essere visualizzato il valore di ID tenant
<subscriptionId>
: l'ID sottoscrizione, reperibile nel portale di Azure
<ServerName>
: usare un nome per il server logico univoco
<ResourceGroupName>
: il 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 trovarlo andando sul portale di Azure e passando alla risorsa Microsoft Entra ID. Nel riquadro Utente, cercare l'utente Microsoft Entra e trovare il relativo ID oggetto
<managedIdentity>
: l’identità gestita assegnata dall'utente. Può essere usata 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"
#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
Nell'esempio precedente viene effettuato il provisioning di un server con solo un'identità gestita assegnata dall'utente. È possibile impostare il valore "type"
su "UserAssigned,SystemAssigned"
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 modello di ARM che crea un server logico database SQL di Azure con un'identità gestita assegnata dall'utente. Il modello aggiunge anche un set di amministratori Microsoft Entra per il server e abilita l’autenticazione con solo Microsoft Entra, ma questo può essere rimosso dall'esempio del modello.
Per ulteriori informazioni e modelli di ARM, vedere Modelli di Resource Manager Azure 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 della risorsa dell'identità gestita assegnata dall'utente, cercare Identità gestite nel portale di Azure. Trovare l'identità gestita e passare a Proprietà. Ad esempio, l'ID della 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')]"
}
}
}
]
}