Följande steg beskriver processen med att skapa en ny logisk Azure SQL Database-server och en ny databas med en användartilldelad hanterad identitet tilldelad.
Bläddra till sidan Välj SQL-distributionsalternativ i Azure-portalen.
Om du inte redan är inloggad på Azure-portalen loggar du in när du uppmanas att göra det.
Under SQL-databaser lämnar du Resurstyp inställd på Enskild databas och väljer Skapa.
På fliken Grundläggande i formuläret Skapa SQL Database går du till Projektinformation och väljer önskad Azure-prenumeration.
För Resursgrupp väljer du Skapa ny, anger ett namn för resursgruppen och väljer OK.
För Databasnamn anger du önskat databasnamn.
För Server väljer du Skapa ny och fyller i formuläret Ny server med följande värden:
- Servernamn: Ange ett unikt servernamn. Servernamn måste vara globalt unika för alla servrar i Azure, inte bara unika i en prenumeration.
- Inloggning för serveradministratör: Ange ett inloggningsnamn för administratör, till exempel:
azureuser
.
- Lösenord: Ange ett lösenord som uppfyller lösenordskraven och ange det igen i fältet Bekräfta lösenord .
- Plats: Välj en plats i listrutan
Välj Nästa: Nätverk längst ned på sidan.
På fliken Nätverk för Anslut ivity-metoden väljer du Offentlig slutpunkt.
För Brandväggsregler anger du Lägg till aktuell klient-IP-adress till Ja. Låt Tillåt Att Azure-tjänster och resurser får åtkomst till den här servern inställt på Nej.
Välj Nästa: Säkerhet längst ned på sidan.
På fliken Säkerhet går du till Identitet och väljer Konfigurera identiteter.
På bladet Identitet går du till Användartilldelad hanterad identitet och väljer Lägg till. Välj önskad prenumeration och under Användartilldelade hanterade identiteter väljer du önskad användartilldelad hanterad identitet från den valda prenumerationen. Välj sedan knappen Välj .
Under Primär identitet väljer du samma användartilldelade hanterade identitet som valdes i föregående steg.
Kommentar
Om den systemtilldelade hanterade identiteten är den primära identiteten måste fältet Primär identitet vara tomt.
Välj Använd
Välj Granska + skapa längst ned på sidan
På sidan Granska + skapa väljer du Skapa när du har granskat.
Azure CLI-kommandot az sql server create
används för att etablera en ny logisk server. Kommandot nedan etablerar en ny server med en användartilldelad hanterad identitet. Exemplet aktiverar även Microsoft Entra-endast autentisering och anger en Microsoft Entra-administratör för servern.
Serverns SQL-administratörsinloggning skapas automatiskt och lösenordet anges till ett slumpmässigt lösenord. Eftersom SQL-autentiseringsanslutningen är inaktiverad när servern skapas används inte SQL-administratörsinloggningen.
Serverns Microsoft Entra-administratör är det konto som du har angett för <AzureADAccount>
och kan användas för att hantera servern.
Ersätt följande värden i exemplet:
<subscriptionId>
: Ditt prenumerations-ID finns i Azure-portalen
<ResourceGroupName>
: Namnet på resursgruppen för den logiska servern
<managedIdentity>
: Den användartilldelade hanterade identiteten. Kan också användas som primär identitet.
<primaryIdentity>
: Den primära identitet som du vill använda som serveridentitet
<AzureADAccount>
: Kan vara en Microsoft Entra-användare eller grupp. Till exempel: DummyLogin
<AzureADAccountSID>
: Microsoft Entra-objekt-ID för användaren
<ServerName>
: Använd ett unikt namn på den logiska servern
<Location>
: Plats för servern, till exempel westus
, eller 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
Mer information finns i az sql server create.
Kommentar
Exemplet ovan etablerar en server med endast en användartilldelad hanterad identitet. Du kan ange --identity-type
till UserAssigned,SystemAssigned
om du vill att båda typerna av hanterade identiteter ska skapas med servern.
Information om hur du kontrollerar serverstatusen när du har skapat finns i följande kommando:
az sql server show --name <ServerName> --resource-group <ResourceGroupName> --expand-ad-admin
PowerShell-kommandot New-AzSqlServer
används för att etablera en ny logisk Azure SQL-server. Kommandot nedan etablerar en ny server med en användartilldelad hanterad identitet. Exemplet aktiverar även Microsoft Entra-endast autentisering och anger en Microsoft Entra-administratör för servern.
Serverns SQL-administratörsinloggning skapas automatiskt och lösenordet anges till ett slumpmässigt lösenord. Eftersom SQL-autentiseringsanslutningen är inaktiverad när servern skapas används inte SQL-administratörsinloggningen.
Serverns Microsoft Entra-administratör är det konto som du har angett för <AzureADAccount>
och kan användas för att hantera servern.
Ersätt följande värden i exemplet:
<ResourceGroupName>
: Namnet på resursgruppen för den logiska servern
<Location>
: Plats för servern, till exempel West US
, eller Central US
<ServerName>
: Använd ett unikt namn på den logiska servern
<subscriptionId>
: Ditt prenumerations-ID finns i Azure-portalen
<managedIdentity>
: Den användartilldelade hanterade identiteten. Kan också användas som primär identitet
<primaryIdentity>
: Den primära identitet som du vill använda som serveridentitet
<AzureADAccount>
: Kan vara en Microsoft Entra-användare eller grupp. Till exempel: 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
Mer information finns i New-AzSqlServer.
Kommentar
Exemplet ovan etablerar en server med endast en användartilldelad hanterad identitet. Du kan ange -IdentityType
till "UserAssigned,SystemAssigned"
om du vill att båda typerna av hanterade identiteter ska skapas med servern.
Information om hur du kontrollerar serverstatusen när du har skapat finns i följande kommando:
Get-AzSqlServer -ResourceGroupName "<ResourceGroupName>" -ServerName "<ServerName>" -ExpandActiveDirectoryAdministrator
Rest-API:et Servrar – Skapa eller uppdatera kan användas för att skapa en logisk server med en användartilldelad hanterad identitet.
Skriptet nedan etablerar en logisk server, anger Microsoft Entra-administratören som <AzureADAccount>
och aktiverar Endast Microsoft Entra-autentisering. Serverns SQL-administratörsinloggning skapas också automatiskt och lösenordet anges till ett slumpmässigt lösenord. Eftersom SQL-autentiseringsanslutningen är inaktiverad med den här etableringen används inte SQL-administratörsinloggningen.
Microsoft Entra-administratören <AzureADAccount>
kan användas för att hantera servern när etableringen är klar.
Ersätt följande värden i exemplet:
<tenantId>
: Du hittar den genom att gå till Azure-portalen och gå till din Microsoft Entra-ID-resurs . I fönstret Översikt bör du se ditt klientorganisations-ID
<subscriptionId>
: Ditt prenumerations-ID finns i Azure-portalen
<ServerName>
: Använd ett unikt namn på den logiska servern
<ResourceGroupName>
: Namnet på resursgruppen för den logiska servern
<AzureADAccount>
: Kan vara en Microsoft Entra-användare eller grupp. Till exempel: DummyLogin
<Location>
: Plats för servern, till exempel westus2
, eller centralus
<objectId>
: Du hittar den genom att gå till Azure-portalen och gå till din Microsoft Entra-ID-resurs . I fönstret Användare söker du efter Microsoft Entra-användaren och letar reda på deras objekt-ID
<managedIdentity>
: Den användartilldelade hanterade identiteten. Kan också användas som primär identitet
<primaryIdentity>
: Den primära identitet som du vill använda som serveridentitet
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"
Kommentar
Exemplet ovan etablerar en server med endast en användartilldelad hanterad identitet. Du kan ange "type"
till "UserAssigned,SystemAssigned"
om du vill att båda typerna av hanterade identiteter ska skapas med servern.
Om du vill kontrollera serverstatusen kan du använda följande skript:
$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
Här är ett exempel på en ARM-mall som skapar en logisk Azure SQL Database-server med en användartilldelad hanterad identitet. Mallen lägger också till en Microsoft Entra-administratörsuppsättning för servern och aktiverar endast Microsoft Entra-autentisering, men detta kan tas bort från mallexemplet.
Mer information och ARM-mallar finns i Azure Resource Manager-mallar för Azure SQL Database och SQL Managed Instance.
Använd en anpassad distribution i Azure-portalen och Skapa en egen mall i redigeringsprogrammet. Spara sedan konfigurationen när du klistrade in i exemplet.
Om du vill hämta ditt användartilldelade resurs-ID för hanterad identitet söker du efter hanterade identiteter i Azure-portalen. Hitta din hanterade identitet och gå till Egenskaper. Ett exempel på ditt UMI-resurs-ID ser ut som /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')]"
}
}
}
]
}