W poniższych krokach opisano proces tworzenia nowego serwera logicznego usługi Azure SQL Database i nowej bazy danych z przypisaną przez użytkownika tożsamością zarządzaną.
Przejdź do strony Wybierz wdrożenie SQL w witrynie Azure Portal.
Jeśli jeszcze nie zalogowano się do witryny Azure Portal, zaloguj się po wyświetleniu monitu.
W obszarze Bazy danych SQL pozostaw wartość Typ zasobu ustawioną na Pojedyncza baza danych, a następnie wybierz pozycję Utwórz.
Na karcie Podstawy formularza Tworzenie bazy danych SQL Database w obszarze Szczegóły projektu wybierz odpowiednią subskrypcję platformy Azure.
W obszarze Grupa zasobów wybierz pozycję Utwórz nową, wprowadź nazwę grupy zasobów i wybierz przycisk OK.
W polu Nazwa bazy danych wprowadź żądaną nazwę bazy danych.
W polu Serwer wybierz pozycję Utwórz nowy i wypełnij formularz Nowy serwer następującymi wartościami:
- Nazwa serwera: wprowadź unikatową nazwę serwera. Nazwy serwerów muszą być globalnie unikatowe dla wszystkich serwerów na platformie Azure, a nie tylko unikatowych w ramach subskrypcji.
- Identyfikator logowania administratora serwera: wprowadź nazwę logowania administratora, na przykład:
azureuser
.
- Hasło: wprowadź hasło spełniające wymagania dotyczące hasła i wprowadź je ponownie w polu Potwierdź hasło .
- Lokalizacja: wybierz lokalizację z listy rozwijanej
Wybierz pozycję Dalej: Sieć w dolnej części strony.
Na karcie Sieć w polu Metoda łączności wybierz pozycję Publiczny punkt końcowy.
W obszarze Reguły zapory ustaw wartość Dodaj bieżący adres IP klienta na Wartość Tak. Pozostaw opcję Zezwalaj usługom i zasobom platformy Azure na dostęp do tego serwera ustawionego na nie.
Wybierz pozycję Dalej: Zabezpieczenia w dolnej części strony.
Na karcie Zabezpieczenia w obszarze Tożsamość wybierz pozycję Konfiguruj tożsamości.
W okienku Tożsamość w obszarze Tożsamość przypisana przez użytkownika wybierz pozycję Dodaj. Wybierz żądaną subskrypcję , a następnie w obszarze Tożsamości zarządzane przypisane przez użytkownika wybierz odpowiednią tożsamość zarządzaną przypisaną przez użytkownika z wybranej subskrypcji. Następnie wybierz przycisk Wybierz .
W obszarze Tożsamość podstawowa wybierz tę samą tożsamość zarządzaną przypisaną przez użytkownika wybraną w poprzednim kroku.
Uwaga
Jeśli tożsamość zarządzana przypisana przez system jest tożsamością podstawową, pole Tożsamość podstawowa musi być puste.
Wybierz Zastosuj
Wybierz pozycję Przejrzyj i utwórz w dolnej części strony
Na stronie Przeglądanie i tworzenie po przejrzeniu wybierz pozycję Utwórz.
Polecenie interfejsu wiersza polecenia az sql server create
platformy Azure służy do aprowizowania nowego serwera logicznego. Poniższe polecenie spowoduje aprowizację nowego serwera z tożsamością zarządzaną przypisaną przez użytkownika. W tym przykładzie włączymy również uwierzytelnianie tylko firmy Microsoft i ustawimy administratora firmy Microsoft Entra dla serwera.
Nazwa logowania administratora SQL serwera zostanie automatycznie utworzona, a hasło zostanie ustawione na losowe hasło. Ponieważ łączność z uwierzytelnianiem SQL jest wyłączona podczas tworzenia tego serwera, identyfikator logowania administratora SQL nie będzie używany.
Serwer Microsoft Entra admin będzie kontem ustawionym dla <AzureADAccount>
programu i może służyć do zarządzania serwerem.
Zastąp następujące wartości w przykładzie:
<subscriptionId>
: Identyfikator subskrypcji można znaleźć w witrynie Azure Portal
<ResourceGroupName>
: nazwa grupy zasobów dla serwera logicznego
<managedIdentity>
: tożsamość zarządzana przypisana przez użytkownika. Może być również używana jako tożsamość podstawowa.
<primaryIdentity>
: tożsamość podstawowa, której chcesz użyć jako tożsamości serwera
<AzureADAccount>
: może być użytkownikiem lub grupą firmy Microsoft Entra. Na przykład DummyLogin
<AzureADAccountSID>
: Identyfikator obiektu Entra firmy Microsoft dla użytkownika
<ServerName>
: Użyj unikatowej nazwy serwera logicznego
<Location>
: Lokalizacja serwera, na przykład westus
, lub 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
Aby uzyskać więcej informacji, zobacz az sql server create.
Uwaga
W powyższym przykładzie aprowizuje się serwer z tylko tożsamością zarządzaną przypisaną przez użytkownika. Można ustawić wartość --identity-type
na UserAssigned,SystemAssigned
wartość , jeśli chcesz, aby oba typy tożsamości zarządzanych zostały utworzone za pomocą serwera.
Aby sprawdzić stan serwera po utworzeniu, zobacz następujące polecenie:
az sql server show --name <ServerName> --resource-group <ResourceGroupName> --expand-ad-admin
Polecenie New-AzSqlServer
programu PowerShell służy do aprowizowania nowego serwera logicznego Azure SQL. Poniższe polecenie spowoduje aprowizację nowego serwera z tożsamością zarządzaną przypisaną przez użytkownika. W tym przykładzie włączymy również uwierzytelnianie tylko firmy Microsoft i ustawimy administratora firmy Microsoft Entra dla serwera.
Nazwa logowania administratora SQL serwera zostanie automatycznie utworzona, a hasło zostanie ustawione na losowe hasło. Ponieważ łączność z uwierzytelnianiem SQL jest wyłączona podczas tworzenia tego serwera, identyfikator logowania administratora SQL nie będzie używany.
Serwer Microsoft Entra admin będzie kontem ustawionym dla <AzureADAccount>
programu i może służyć do zarządzania serwerem.
Zastąp następujące wartości w przykładzie:
<ResourceGroupName>
: nazwa grupy zasobów dla serwera logicznego
<Location>
: Lokalizacja serwera, na przykład West US
, lub Central US
<ServerName>
: Użyj unikatowej nazwy serwera logicznego
<subscriptionId>
: Identyfikator subskrypcji można znaleźć w witrynie Azure Portal
<managedIdentity>
: tożsamość zarządzana przypisana przez użytkownika. Może być również używany jako tożsamość podstawowa
<primaryIdentity>
: tożsamość podstawowa, której chcesz użyć jako tożsamości serwera
<AzureADAccount>
: może być użytkownikiem lub grupą firmy Microsoft Entra. Na przykład 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
Aby uzyskać więcej informacji, zobacz New-AzSqlServer.
Uwaga
W powyższym przykładzie aprowizuje się serwer z tylko tożsamością zarządzaną przypisaną przez użytkownika. Można ustawić wartość -IdentityType
na "UserAssigned,SystemAssigned"
wartość , jeśli chcesz, aby oba typy tożsamości zarządzanych zostały utworzone za pomocą serwera.
Aby sprawdzić stan serwera po utworzeniu, zobacz następujące polecenie:
Get-AzSqlServer -ResourceGroupName "<ResourceGroupName>" -ServerName "<ServerName>" -ExpandActiveDirectoryAdministrator
Serwery — tworzenie lub aktualizowanie interfejsu API REST może służyć do tworzenia serwera logicznego z tożsamością zarządzaną przypisaną przez użytkownika.
Poniższy skrypt będzie aprowizować serwer logiczny, ustawić administratora firmy Microsoft Entra jako <AzureADAccount>
i włączyć uwierzytelnianie tylko firmy Microsoft. Nazwa logowania administratora SQL serwera zostanie również utworzona automatycznie, a hasło zostanie ustawione na losowe hasło. Ponieważ łączność z uwierzytelnianiem SQL jest wyłączona z tą aprowizowaniem, logowanie administratora SQL nie będzie używane.
Administrator <AzureADAccount>
firmy Microsoft Entra może służyć do zarządzania serwerem po zakończeniu aprowizacji.
Zastąp następujące wartości w przykładzie:
<tenantId>
: Można go znaleźć, przechodząc do witryny Azure Portal i przechodząc do zasobu Identyfikator entra firmy Microsoft. W okienku Przegląd powinien zostać wyświetlony identyfikator dzierżawy
<subscriptionId>
: Identyfikator subskrypcji można znaleźć w witrynie Azure Portal
<ServerName>
: Użyj unikatowej nazwy serwera logicznego
<ResourceGroupName>
: nazwa grupy zasobów dla serwera logicznego
<AzureADAccount>
: może być użytkownikiem lub grupą firmy Microsoft Entra. Na przykład DummyLogin
<Location>
: Lokalizacja serwera, na przykład westus2
, lub centralus
<objectId>
: Można go znaleźć, przechodząc do witryny Azure Portal i przechodząc do zasobu Identyfikator entra firmy Microsoft. W okienku Użytkownik wyszukaj użytkownika Microsoft Entra i znajdź identyfikator obiektu
<managedIdentity>
: tożsamość zarządzana przypisana przez użytkownika. Może być również używany jako tożsamość podstawowa
<primaryIdentity>
: tożsamość podstawowa, której chcesz użyć jako tożsamości serwera
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"
Uwaga
W powyższym przykładzie aprowizuje się serwer z tylko tożsamością zarządzaną przypisaną przez użytkownika. Można ustawić wartość "type"
na "UserAssigned,SystemAssigned"
wartość , jeśli chcesz, aby oba typy tożsamości zarządzanych zostały utworzone za pomocą serwera.
Aby sprawdzić stan serwera, możesz użyć następującego skryptu:
$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
Oto przykład szablonu usługi ARM, który tworzy serwer logiczny usługi Azure SQL Database z tożsamością zarządzaną przypisaną przez użytkownika. Szablon dodaje również zestaw administratorów firmy Microsoft Entra dla serwera i włącza uwierzytelnianie tylko firmy Microsoft, ale można to usunąć z przykładu szablonu.
Aby uzyskać więcej informacji i szablonów usługi ARM, zobacz Szablony usługi Azure Resource Manager dla usługi Azure SQL Database i sql Managed Instance.
Użyj wdrożenia niestandardowego w witrynie Azure Portal i utwórz własny szablon w edytorze. Następnie zapisz konfigurację po wklejeniu w przykładzie.
Aby uzyskać identyfikator zasobu tożsamości zarządzanej przypisanej przez użytkownika, wyszukaj pozycję Tożsamości zarządzane w witrynie Azure Portal. Znajdź tożsamość zarządzaną i przejdź do pozycji Właściwości. Przykład identyfikatora zasobu interfejsu użytkownika będzie wyglądać następująco: /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')]"
}
}
}
]
}