Les étapes suivantes décrivent le processus de création d’un serveur logique Azure SQL Database et d’une nouvelle base de données avec une identité managée affectée par l’utilisateur.
Accédez à la page Sélectionner l’option de déploiement SQL dans le portail Azure.
Si vous n’êtes pas déjà connecté au portail Azure, connectez-vous lorsque vous y êtes invité.
Sous Bases de données SQL, laissez Type de ressource défini sur Base de données unique, puis sélectionnez Créer.
Sous l’onglet De base du formulaire Créer une base de données SQL, sous Détails du projet, sélectionnez l’Abonnement Azure souhaité.
Pour Groupe de ressources, sélectionnez Créer, entrez un nom pour votre groupe de ressources, puis sélectionnez OK.
Pour le Nom de la base de données, entrez le nom de base de données souhaité.
Pour Serveur, sélectionnez Créer, puis remplissez le formulaire Nouveau serveur avec les valeurs suivantes :
- Nom du serveur : Entrez un nom de serveur unique. Les noms de serveur doivent être uniques au niveau mondial pour tous les serveurs Azure, et pas seulement au sein d'un abonnement.
- Nom de connexion d’administrateur serveur : entrez le nom de connexion de l’administrateur, par exemple :
azureuser
.
- Mot de passe : entrez un mot de passe qui répond aux exigences de mot de passe, puis réentrez-le dans le champ Confirmer le mot de passe.
- Emplacement : sélectionnez un emplacement dans la liste déroulante
Sélectionnez Suivant : Réseau en bas de la page.
Sous l’onglet Réseau, pour Méthode de connectivité, sélectionnez Point de terminaison public.
Pour Règles de pare-feu, affectez la valeur Oui à Ajouter l’adresse IP actuelle du client. Laissez Autoriser les services et les ressources Azure à accéder à ce serveur avec la valeur Non.
Sélectionnez Suivant : Sécurité en bas de la page.
Sous l’onglet Sécurité, sous Identité, sélectionnez Configurer les identités.
Dans le volet Identité, sous Identité managée affectée par l'utilisateur, sélectionnez Ajouter. Sélectionnez l’Abonnement souhaité, puis sous Identités managées affectées par l’utilisateur, sélectionnez l’identité managée affectée par l’utilisateur souhaitée dans l’abonnement sélectionné. Sélectionnez ensuite le bouton Sélectionner.
Sous Identité principale, sélectionnez la même identité managée affectée par l’utilisateur que celle de l’étape précédente.
Notes
Si l’identité managée affectée par le système est l’identité principale, le champ Identité principale doit être vide.
Sélectionnez Appliquer
Au bas de la page, sélectionnez Vérifier + créer
Dans la page Vérifier + créer, après vérification, sélectionnez Créer.
La commande Azure CLI az sql server create
permet de provisionner un nouveau serveur logique. La commande ci-dessous permet de configurer un nouveau serveur avec une identité managée affectée par l’utilisateur. L’exemple active l’authentification unique Microsoft Entra et définit un administrateur Microsoft Entra pour le serveur.
La connexion de l’administrateur du serveur SQL est automatiquement créée et le mot de passe est défini sur un mot de passe aléatoire. Étant donné que la connectivité de l’authentification SQL est désactivée lors de la création de ce serveur, la connexion administrateur SQL ne sera pas utilisée.
Le serveur Microsoft Entra admin est le compte que vous définissez pour <AzureADAccount>
et peut être utilisé pour gérer le serveur.
Remplacez les valeurs suivantes dans l’exemple :
<subscriptionId>
: votre ID d’abonnement, disponible dans le Portail Azure
<ResourceGroupName>
: nom du groupe de ressources pour votre serveur logique
<managedIdentity>
: l’identité managée affectée par l’utilisateur. Peut également être utilisée comme identité principale.
<primaryIdentity>
: l’identité principale que vous voulez utiliser comme identité de serveur
<AzureADAccount>
: peut être un utilisateur ou un groupe Microsoft Entra. Par exemple, DummyLogin
<AzureADAccountSID>
: L’ID d’objet Microsoft Entra pour le compte d’utilisateur.
<ServerName>
: utiliser un nom de serveur logique unique
<Location>
: emplacement du serveur, tel que westus
ou 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
Pour plus d’informations, voir az sql server create.
Notes
L’exemple ci-dessus configure un serveur avec uniquement une identité managée affectée par l’utilisateur. Vous pouvez définir --identity-type
sur UserAssigned,SystemAssigned
si vous voulez que les deux types d’identités managées soient créés avec le serveur.
Pour vérifier l’état du serveur après sa création, consultez la commande suivante :
az sql server show --name <ServerName> --resource-group <ResourceGroupName> --expand-ad-admin
La commande PowerShell New-AzSqlServer
permet de configurer un nouveau serveur logique Azure SQL. La commande ci-dessous permet de configurer un nouveau serveur avec une identité managée affectée par l’utilisateur. L’exemple active l’authentification unique Microsoft Entra et définit un administrateur Microsoft Entra pour le serveur.
La connexion de l’administrateur du serveur SQL est automatiquement créée et le mot de passe est défini sur un mot de passe aléatoire. Étant donné que la connectivité de l’authentification SQL est désactivée lors de la création de ce serveur, la connexion administrateur SQL ne sera pas utilisée.
Le serveur Microsoft Entra admin est le compte que vous définissez pour <AzureADAccount>
et peut être utilisé pour gérer le serveur.
Remplacez les valeurs suivantes dans l’exemple :
<ResourceGroupName>
: nom du groupe de ressources pour votre serveur logique
<Location>
: emplacement du serveur, tel que West US
ou Central US
<ServerName>
: utiliser un nom de serveur logique unique
<subscriptionId>
: votre ID d’abonnement, disponible dans le Portail Azure
<managedIdentity>
: l’identité managée affectée par l’utilisateur. Peut également être utilisée comme identité principale
<primaryIdentity>
: l’identité principale que vous voulez utiliser comme identité de serveur
<AzureADAccount>
: peut être un utilisateur ou un groupe Microsoft Entra. Par exemple, 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
Pour plus d’informations, consultez New-AzSqlServer.
Notes
L’exemple ci-dessus configure un serveur avec uniquement une identité managée affectée par l’utilisateur. Vous pouvez définir -IdentityType
sur "UserAssigned,SystemAssigned"
si vous voulez que les deux types d’identités managées soient créés avec le serveur.
Pour vérifier l’état du serveur après sa création, consultez la commande suivante :
Get-AzSqlServer -ResourceGroupName "<ResourceGroupName>" -ServerName "<ServerName>" -ExpandActiveDirectoryAdministrator
L’API REST Serveurs - Créer ou mettre à jour peut être utilisée pour créer un serveur logique avec une identité managée affectée par l’utilisateur.
Le script ci-dessous configure un serveur logique, définit l’administrateur Microsoft Entra en tant que <AzureADAccount>
, et active l’authentification unique Microsoft Entra. La connexion de l’administrateur du serveur SQL est aussi automatiquement créée et le mot de passe est défini sur un mot de passe aléatoire. Étant donné que la connectivité de l’authentification SQL est désactivée lors de cet approvisionnement, la connexion administrateur SQL ne sera pas utilisée.
L’administrateur Microsoft Entra <AzureADAccount>
peut être utilisé pour gérer le serveur lorsque l’approvisionnement est terminé.
Remplacez les valeurs suivantes dans l’exemple :
<tenantId>
: Disponible en accédant à votre ressource Microsoft Entra ID dans le portail Azure. Dans le volet Vue d’ensemble, vous devez voir votre ID de locataire.
<subscriptionId>
: votre ID d’abonnement, disponible dans le Portail Azure
<ServerName>
: utiliser un nom de serveur logique unique
<ResourceGroupName>
: nom du groupe de ressources pour votre serveur logique
<AzureADAccount>
: peut être un utilisateur ou un groupe Microsoft Entra. Par exemple, DummyLogin
<Location>
: emplacement du serveur, tel que westus2
ou centralus
<objectId>
: Disponible en accédant à votre ressource Microsoft Entra ID dans le portail Azure. Dans le volet utilisateur, recherchez l’utilisateur Microsoft Entra et recherchez son ID d’objet.
<managedIdentity>
: l’identité managée affectée par l’utilisateur. Peut également être utilisée comme identité principale
<primaryIdentity>
: l’identité principale que vous voulez utiliser comme identité de serveur
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"
Notes
L’exemple ci-dessus configure un serveur avec uniquement une identité managée affectée par l’utilisateur. Vous pouvez définir "type"
sur "UserAssigned,SystemAssigned"
si vous voulez que les deux types d’identités managées soient créés avec le serveur.
Pour vérifier l’état du serveur, vous pouvez utiliser le script suivant :
$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
Voici un exemple de modèle ARM qui crée un serveur logique Azure SQL Database avec une identité managée affectée par l’utilisateur. Le modèle ajoute également un administrateur Microsoft Entra défini pour le serveur, et active l’authentification unique Microsoft Entra, mais cela peut être supprimé du modèle d'exemple..
Pour plus d’informations et découvrir les modèles ARM, consultez Modèles Azure Resource Manager pour Azure SQL Database et Azure SQL Managed Instance.
Utilisez un déploiement personnalisé dans le portail Azure et créez votre propre modèle dans l’éditeur. Ensuite, enregistrez la configuration une fois que vous avez collé l’exemple.
Pour obtenir votre ID de ressource d’identité managée affectée par l’utilisateur, recherchez Identités managées dans le portail Azure. Recherchez votre identité managée, puis accédez à Propriétés. Un exemple de votre ID de ressource UMI ressemblera à /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')]"
}
}
}
]
}