Konfigurowanie uwierzytelniania usługi Azure AD i zarządzanie nim za pomocą usługi Azure SQL

DOTYCZY: Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics

W tym artykule pokazano, jak utworzyć i wypełnić wystąpienie Azure Active Directory (Azure AD), a następnie użyć Azure AD z Azure SQL Database, Azure SQL Managed Instance i Azure Synapse Analytics. Aby zapoznać się z omówieniem, zobacz Azure Active Directory uwierzytelnianie.

metody uwierzytelniania Azure AD

Azure AD uwierzytelnianie obsługuje następujące metody uwierzytelniania:

  • Tożsamości tylko w chmurze usługi Azure AD
  • Azure AD tożsamości hybrydowych, które obsługują:
    • Uwierzytelnianie w chmurze z dwiema opcjami w połączeniu z bezproblemowym logowaniem jednokrotnym (SSO)
      • Uwierzytelnianie skrótów haseł Azure AD
      • Azure AD uwierzytelnianie przekazywane
    • Uwierzytelnianie federacyjne

Aby uzyskać więcej informacji na temat metod uwierzytelniania Azure AD i wybranej metody, zobacz Wybieranie odpowiedniej metody uwierzytelniania dla rozwiązania tożsamości hybrydowej Azure Active Directory.

Aby uzyskać więcej informacji na temat tożsamości hybrydowych, konfiguracji i synchronizacji Azure AD, zobacz:

Tworzenie i wypełnianie wystąpienia Azure AD

Utwórz wystąpienie Azure AD i wypełnij je użytkownikami i grupami. Azure AD może być początkową domeną zarządzaną Azure AD. Azure AD może być również usługą lokalna usługa Active Directory Domain Services sfederoną z Azure AD.

Aby uzyskać więcej informacji, zobacz:

Kojarzenie lub dodawanie subskrypcji platformy Azure do usługi Azure Active Directory

  1. Kojarzenie subskrypcji platformy Azure z Azure Active Directory przez utworzenie katalogu zaufanego katalogu dla subskrypcji platformy Azure hostowania bazy danych. Aby uzyskać szczegółowe informacje, zobacz Kojarzenie lub dodawanie subskrypcji platformy Azure do dzierżawy Azure Active Directory.

  2. Użyj przełącznika katalogów w Azure Portal, aby przełączyć się do subskrypcji skojarzonej z domeną.

    Ważne

    Każda subskrypcja platformy Azure jest połączona relacją zaufania z wystąpieniem usługi Azure AD. Oznacza to, że subskrypcja ufa katalogowi na potrzeby uwierzytelniania użytkowników, usług i urządzeń. Wiele subskrypcji może ufać temu samemu katalogowi, ale dana subskrypcja może ufać tylko jednemu katalogowi. Relacja zaufania między subskrypcją a katalogiem różni się od relacji subskrypcji z wszystkimi innymi zasobami na platformie Azure (witrynami sieci Web, bazami danych itd.), które przypominają bardziej podrzędne zasoby subskrypcji. Jeśli subskrypcja wygaśnie, dostęp do innych zasobów skojarzonych z subskrypcją również nie będzie możliwy. Lecz katalog pozostanie na platformie Azure i będzie można skojarzyć z nim inną subskrypcję oraz kontynuować zarządzanie użytkownikami w katalogu. Aby uzyskać więcej informacji na temat zasobów, zobacz Omówienie dostępu do zasobów na platformie Azure. Aby dowiedzieć się więcej na temat tej zaufanej relacji, zobacz Jak skojarzyć lub dodać subskrypcję platformy Azure do Azure Active Directory.

administrator Azure AD z serwerem w SQL Database

Każdy serwer na platformie Azure (który hostuje SQL Database lub Azure Synapse) rozpoczyna się od jednego konta administratora serwera, które jest administratorem całego serwera. Utwórz drugie konto administratora jako konto Azure AD. Ten podmiot zabezpieczeń jest tworzony jako użytkownik zawartej bazy danych master serwera. Konta administratora są członkami roli db_owner w każdej bazie danych użytkowników i wprowadź każdą bazę danych użytkownika jako użytkownik dbo . Aby uzyskać więcej informacji na temat kont administratorów, zobacz Zarządzanie bazami danych i identyfikatorami logowania.

W przypadku korzystania z Azure Active Directory z replikacją geograficzną administrator Azure Active Directory musi być skonfigurowany zarówno dla serwerów podstawowych, jak i pomocniczych. Jeśli serwer nie ma administratora Azure Active Directory, Azure Active Directory logowania i użytkownicy otrzymują komunikat o Cannot connect błędzie serwera.

Uwaga

Użytkownicy, którzy nie korzystają z konta Azure AD (w tym konta administratora serwera) nie mogą tworzyć użytkowników opartych na Azure AD, ponieważ nie mają uprawnień do weryfikowania proponowanych użytkowników bazy danych za pomocą Azure AD.

Aprowizuj administratora Azure AD (SQL Managed Instance)

Ważne

Wykonaj następujące kroki tylko wtedy, gdy aprowizujesz Azure SQL Managed Instance. Ta operacja może być wykonywana tylko przez administratora globalnego lub administratora ról uprzywilejowanych w Azure AD.

W publicznej wersji zapoznawczej można przypisać rolę Czytelnicy katalogu do grupy w Azure AD. Właściciele grup mogą następnie dodać tożsamość wystąpienia zarządzanego jako członek tej grupy, co umożliwi aprowizacja administratora Azure AD dla SQL Managed Instance. Aby uzyskać więcej informacji na temat tej funkcji, zobacz Rola Czytelników katalogów w Azure Active Directory dla Azure SQL.

SQL Managed Instance wymaga uprawnień do odczytu Azure AD w celu pomyślnego wykonania zadań, takich jak uwierzytelnianie użytkowników za pośrednictwem członkostwa w grupie zabezpieczeń lub tworzenia nowych użytkowników. Aby można było to zrobić, musisz udzielić SQL Managed Instance uprawnienia do odczytu Azure AD. Można to zrobić przy użyciu Azure Portal lub programu PowerShell.

Azure Portal

Aby udzielić uprawnień do odczytu SQL Managed Instance Azure AD przy użyciu Azure Portal, zaloguj się jako administrator globalny w Azure AD i wykonaj następujące kroki:

  1. W Azure Portal w prawym górnym rogu wybierz swoje konto, a następnie wybierz pozycję Przełącz katalogi, aby potwierdzić, która usługa Active Directory jest obecnie twoją usługą Active Directory. W razie potrzeby przełącz katalogi.

    Screenshot of the Azure portal showing where to switch your directory

  2. Wybierz odpowiednią usługę Active Directory jako domyślną usługę Azure AD.

    Ten krok łączy subskrypcję skojarzona z usługą Active Directory do SQL Managed Instance, upewniając się, że ta sama subskrypcja jest używana zarówno dla wystąpienia Azure AD, jak i SQL Managed Instance.

  3. Przejdź do SQL Managed Instance, którego chcesz użyć do integracji Azure AD.

    Screenshot of the Azure portal showing the Active Directory admin page open for the selected SQL managed instance.

  4. Wybierz baner w górnej części strony administratora usługi Active Directory i przyznaj użytkownikowi uprawnienia.

    Screenshot of the dialog for granting permissions to a SQL managed instance for accessing Active Directory. The Grant permissions button is selected.

  5. Po pomyślnym zakończeniu operacji w prawym górnym rogu zostanie wyświetlone następujące powiadomienie:

    Screenshot of a notification confirming that active directory read permissions have been successfully updated for the managed instance.

  6. Teraz możesz wybrać administratora Azure AD dla SQL Managed Instance. W tym celu na stronie administratora usługi Active Directory wybierz pozycję Ustaw polecenie administratora .

    Screenshot showing the Set admin command highlighted on the Active Directory admin page for the selected SQL managed instance.

  7. Na stronie administratora Azure AD wyszukaj użytkownika, wybierz użytkownika lub grupę, aby być administratorem, a następnie wybierz pozycję Wybierz.

    Na stronie administratora usługi Active Directory są wyświetlane wszystkie elementy członkowskie i grupy usługi Active Directory. Nie można wybrać użytkowników lub grup, które są wyszarywane, ponieważ nie są one obsługiwane jako administratorzy Azure AD. Zobacz listę obsługiwanych administratorów w Azure AD Funkcje i ograniczenia. Kontrola dostępu oparta na rolach (RBAC) platformy Azure ma zastosowanie tylko do Azure Portal i nie jest propagowana do SQL Database, SQL Managed Instance lub Azure Synapse.

    Add Azure Active Directory admin

  8. W górnej części strony administratora usługi Active Directory wybierz pozycję Zapisz.

    Screenshot of the Active Directory admin page with the Save button in the top row next to the Set admin and Remove admin buttons.

    Proces zmiany administratora może potrwać kilka minut. Nowy administrator pojawi się w polu Administrator usługi Active Directory.

    W przypadku Azure AD użytkowników i grup identyfikator obiektu jest wyświetlany obok nazwy administratora. W przypadku aplikacji (jednostek usługi) zostanie wyświetlony identyfikator aplikacji .

Po aprowizacji administratora Azure AD dla SQL Managed Instance możesz rozpocząć tworzenie Azure AD podmiotów zabezpieczeń serwera (identyfikatorów logowania) przy użyciu składni CREATE LOGIN. Aby uzyskać więcej informacji, zobacz omówienie SQL Managed Instance.

Porada

Aby później usunąć administratora, w górnej części strony administratora usługi Active Directory wybierz pozycję Usuń administratora, a następnie wybierz pozycję Zapisz.

PowerShell

Aby udzielić uprawnień do odczytu SQL Managed Instance Azure AD przy użyciu programu PowerShell, uruchom ten skrypt:

# Gives Azure Active Directory read permission to a Service Principal representing the SQL Managed Instance.
# Can be executed only by a "Global Administrator" or "Privileged Role Administrator" type of user.

$aadTenant = "<YourTenantId>" # Enter your tenant ID
$managedInstanceName = "MyManagedInstance"

# Get Azure AD role "Directory Users" and create if it doesn't exist
$roleName = "Directory Readers"
$role = Get-AzureADDirectoryRole | Where-Object {$_.displayName -eq $roleName}
if ($role -eq $null) {
    # Instantiate an instance of the role template
    $roleTemplate = Get-AzureADDirectoryRoleTemplate | Where-Object {$_.displayName -eq $roleName}
    Enable-AzureADDirectoryRole -RoleTemplateId $roleTemplate.ObjectId
    $role = Get-AzureADDirectoryRole | Where-Object {$_.displayName -eq $roleName}
}

# Get service principal for your SQL Managed Instance
$roleMember = Get-AzureADServicePrincipal -SearchString $managedInstanceName
$roleMember.Count
if ($roleMember -eq $null) {
    Write-Output "Error: No Service Principals with name '$    ($managedInstanceName)', make sure that managedInstanceName parameter was     entered correctly."
    exit
}
if (-not ($roleMember.Count -eq 1)) {
    Write-Output "Error: More than one service principal with name pattern '$    ($managedInstanceName)'"
    Write-Output "Dumping selected service principals...."
    $roleMember
    exit
}

# Check if service principal is already member of readers role
$allDirReaders = Get-AzureADDirectoryRoleMember -ObjectId $role.ObjectId
$selDirReader = $allDirReaders | where{$_.ObjectId -match     $roleMember.ObjectId}

if ($selDirReader -eq $null) {
    # Add principal to readers role
    Write-Output "Adding service principal '$($managedInstanceName)' to     'Directory Readers' role'..."
    Add-AzureADDirectoryRoleMember -ObjectId $role.ObjectId -RefObjectId     $roleMember.ObjectId
    Write-Output "'$($managedInstanceName)' service principal added to     'Directory Readers' role'..."

    #Write-Output "Dumping service principal '$($managedInstanceName)':"
    #$allDirReaders = Get-AzureADDirectoryRoleMember -ObjectId $role.ObjectId
    #$allDirReaders | where{$_.ObjectId -match $roleMember.ObjectId}
}
else {
    Write-Output "Service principal '$($managedInstanceName)' is already     member of 'Directory Readers' role'."
}

Program PowerShell dla SQL Managed Instance

Aby uruchomić polecenia cmdlet programu PowerShell, musisz mieć zainstalowany i uruchomiony Azure PowerShell. Aby uzyskać szczegółowe informacje, zobacz temat Instalowanie i konfigurowanie programu Azure PowerShell.

Ważne

Moduł Azure Resource Manager (RM) programu PowerShell jest nadal obsługiwany przez Azure SQL Managed Instance, ale cały przyszły rozwój jest przeznaczony dla modułu Az.Sql. Moduł AzureRM będzie nadal otrzymywać poprawki błędów do co najmniej grudnia 2020 r. Argumenty poleceń w module Az i modułach AzureRm są znacznie identyczne. Aby uzyskać więcej informacji na temat ich zgodności, zobacz Wprowadzenie do nowego modułu Azure PowerShell Az.

Aby aprowizować administratora Azure AD, wykonaj następujące polecenia Azure PowerShell:

  • Connect-AzAccount
  • Select-AzSubscription

Polecenia cmdlet używane do aprowizowania Azure AD administratora SQL Managed Instance i zarządzania nimi są wymienione w poniższej tabeli:

Nazwa polecenia cmdlet Opis
Set-AzSqlInstanceActiveDirectoryAdministrator Aprowizuje administratora Azure AD dla SQL Managed Instance w bieżącej subskrypcji. (Musi pochodzić z bieżącej subskrypcji)
Remove-AzSqlInstanceActiveDirectoryAdministrator Usuwa administratora Azure AD dla SQL Managed Instance w bieżącej subskrypcji.
Get-AzSqlInstanceActiveDirectoryAdministrator Zwraca informacje o administratorze Azure AD dla SQL Managed Instance w bieżącej subskrypcji.

Następujące polecenie pobiera informacje o administratorze Azure AD dla SQL Managed Instance o nazwie ManagedInstance01 skojarzonej z grupą zasobów o nazwie ResourceGroup01.

Get-AzSqlInstanceActiveDirectoryAdministrator -ResourceGroupName "ResourceGroup01" -InstanceName "ManagedInstance01"

Następujące polecenie aprowizuje grupę administratorów Azure AD o nazwie DBAs dla SQL Managed Instance o nazwie ManagedInstance01. Ten serwer jest skojarzony z grupą zasobów ResourceGroup01.

Set-AzSqlInstanceActiveDirectoryAdministrator -ResourceGroupName "ResourceGroup01" -InstanceName "ManagedInstance01" -DisplayName "DBAs" -ObjectId "40b79501-b343-44ed-9ce7-da4c8cc7353b"

Następujące polecenie usuwa administratora Azure AD dla SQL Managed Instance o nazwie ManagedInstanceName01 skojarzonego z grupą zasobów ResourceGroup01.

Remove-AzSqlInstanceActiveDirectoryAdministrator -ResourceGroupName "ResourceGroup01" -InstanceName "ManagedInstanceName01" -Confirm -PassThru

Aprowizuj administratora Azure AD (SQL Database)

Ważne

Wykonaj następujące kroki tylko w przypadku aprowizowania serwera dla SQL Database lub Azure Synapse.

W poniższych dwóch procedurach pokazano, jak aprowizować administratora Azure Active Directory dla serwera w Azure Portal i przy użyciu programu PowerShell.

Azure Portal

  1. W witrynie Azure Portal w prawym górnym rogu wybierz swoje połączenia, aby wyświetlić listę rozwijaną możliwych usług Active Directory. Wybierz odpowiednią usługę Active Directory jako domyślną usługę Azure AD. Ten krok łączy skojarzona z subskrypcją usługę Active Directory z serwerem, upewniając się, że ta sama subskrypcja jest używana zarówno dla Azure AD, jak i serwera.

  2. Wyszukaj i wybierz pozycję serwer SQL.

    Search for and select SQL servers

    Uwaga

    Na tej stronie przed wybraniem SQL serwerów można wybrać gwiazdkę obok nazwy, aby dodać kategorię do ulubionych i dodać serwery SQL na pasku nawigacyjnym po lewej stronie.

  3. Na stronie SQL Server wybierz pozycję Administrator usługi Active Directory.

  4. Na stronie administratora usługi Active Directory wybierz pozycję Ustaw administratora.

    SQL servers set Active Directory admin

  5. Na stronie Dodawanie administratora wyszukaj użytkownika, wybierz użytkownika lub grupę do pełnienia funkcji administratora, a następnie kliknij opcję Wybierz. (Na stronie administratora usługi Active Directory wyświetlono wszystkich członków i grupy danej usługi Active Directory). Nie można wybrać wyszarzonych użytkowników lub grup, ponieważ nie są oni obsługiwani jako administratorzy usługi Azure AD. (Zapoznaj się z listą obsługiwanych administratorów w sekcji Azure AD Funkcje i ograniczenia dotyczące uwierzytelniania przy użyciu Azure Active Directory uwierzytelniania za pomocą SQL Database lub Azure Synapse). Kontrola dostępu oparta na rolach (RBAC) platformy Azure ma zastosowanie tylko do portalu i nie jest propagowana do SQL Server.

    Select Azure Active Directory admin

  6. W górnej części strony administratora usługi Active Directory wybierz pozycję Zapisz.

    save admin

    W przypadku Azure AD użytkowników i grup identyfikator obiektu jest wyświetlany obok nazwy administratora. W przypadku aplikacji (jednostek usługi) zostanie wyświetlony identyfikator aplikacji .

Proces zmiany administratora może potrwać kilka minut. Nowy administrator pojawi się w polu Administrator usługi Active Directory.

Uwaga

Podczas konfigurowania administratora Azure AD nowa nazwa administratora (użytkownika lub grupy) nie może być już obecna w wirtualnej bazie danych master jako użytkownik uwierzytelniania serwera. Jeśli już istnieje, konfiguracja administratora usługi Azure AD nie powiedzie się. Tworzenie administratora zostanie cofnięte i wyświetli się komunikat, że administrator z taką nazwą już istnieje. Ponieważ taki użytkownik uwierzytelniania serwera nie jest częścią Azure AD, wszelkie wysiłki związane z nawiązywaniem połączenia z serwerem przy użyciu uwierzytelniania Azure AD kończą się niepowodzeniem.

Aby później usunąć administratora, w górnej części strony administratora usługi Active Directory wybierz pozycję Usuń administratora, a następnie wybierz pozycję Zapisz.

Program PowerShell dla SQL Database i Azure Synapse

Aby uruchomić polecenia cmdlet programu PowerShell, musisz mieć zainstalowany i uruchomiony Azure PowerShell. Aby uzyskać szczegółowe informacje, zobacz temat Instalowanie i konfigurowanie programu Azure PowerShell. Aby aprowizować administratora Azure AD, wykonaj następujące polecenia Azure PowerShell:

  • Connect-AzAccount
  • Select-AzSubscription

Polecenia cmdlet używane do aprowizowania administratora Azure AD i zarządzania nimi na potrzeby SQL Database i Azure Synapse:

Nazwa polecenia cmdlet Opis
Set-AzSqlServerActiveDirectoryAdministrator Aprowizuje administratora Azure Active Directory dla serwera hostowania SQL Database lub Azure Synapse. (Musi pochodzić z bieżącej subskrypcji)
Remove-AzSqlServerActiveDirectoryAdministrator Usuwa administratora Azure Active Directory dla serwera hostowania SQL Database lub Azure Synapse.
Get-AzSqlServerActiveDirectoryAdministrator Zwraca informacje o administratorze Azure Active Directory aktualnie skonfigurowanym dla serwera hostowania SQL Database lub Azure Synapse.

Użyj polecenia get-help programu PowerShell, aby wyświetlić więcej informacji dla każdego z tych poleceń. Na przykład get-help Set-AzSqlServerActiveDirectoryAdministrator.

Poniższy skrypt aprowizuje grupę administratorów Azure AD o nazwie DBA_Group (identyfikator 40b79501-b343-44ed-9ce7-da4c8cc7353fobiektu) dla serwera demo_server w grupie zasobów o nazwie Group-23:

Set-AzSqlServerActiveDirectoryAdministrator -ResourceGroupName "Group-23" -ServerName "demo_server" -DisplayName "DBA_Group"

Parametr wejściowy DisplayName akceptuje nazwę wyświetlaną Azure AD lub główną nazwę użytkownika. Na przykład DisplayName="John Smith" i DisplayName="johns@contoso.com". W przypadku grup Azure AD obsługiwana jest tylko nazwa wyświetlana Azure AD.

Uwaga

Polecenie Set-AzSqlServerActiveDirectoryAdministrator Azure PowerShell nie uniemożliwia aprowizacji administratorów Azure AD dla nieobsługiwanych użytkowników. Nieobsługiwany użytkownik można aprowizować, ale nie może nawiązać połączenia z bazą danych.

W poniższym przykładzie użyto opcjonalnego identyfikatora ObjectID:

Set-AzSqlServerActiveDirectoryAdministrator -ResourceGroupName "Group-23" -ServerName "demo_server" `
    -DisplayName "DBA_Group" -ObjectId "40b79501-b343-44ed-9ce7-da4c8cc7353f"

Uwaga

Identyfikator objectID Azure AD jest wymagany, gdy właściwość DisplayName nie jest unikatowa. Aby pobrać wartości ObjectID i DisplayName, użyj sekcji usługi Active Directory klasyczny portal Azure i wyświetl właściwości użytkownika lub grupy.

Poniższy przykład zwraca informacje o bieżącym Azure AD administratora serwera:

Get-AzSqlServerActiveDirectoryAdministrator -ResourceGroupName "Group-23" -ServerName "demo_server" | Format-List

Poniższy przykład usuwa administratora Azure AD:

Remove-AzSqlServerActiveDirectoryAdministrator -ResourceGroupName "Group-23" -ServerName "demo_server"

Uwaga

Możesz również aprowizować administratora Azure Active Directory przy użyciu interfejsów API REST. Aby uzyskać więcej informacji, zobacz Service Management REST API Reference and Operations for Azure SQL Database Operations for Azure SQL Database

Konfigurowanie komputerów klienckich

Uwaga

Program System.Data.SqlClient używa biblioteki uwierzytelniania Azure Active Directory (ADAL), która zostanie wycofana. Jeśli używasz przestrzeni nazw System.Data.SqlClient do uwierzytelniania Azure Active Directory, przeprowadź migrację aplikacji do biblioteki Microsoft.Data.SqlClient i biblioteki Microsoft Authentication Library (MSAL). Aby uzyskać więcej informacji na temat korzystania z uwierzytelniania Azure AD za pomocą programu SqlClient, zobacz Using Azure Active Directory authentication with SqlClient (Używanie uwierzytelniania Azure Active Directory za pomocą programu SqlClient).

Program SSMS i SSDT nadal używa biblioteki uwierzytelniania Azure Active Directory (ADAL). Jeśli chcesz nadal korzystać z ADAL.DLL w aplikacjach, możesz użyć linków w tej sekcji, aby zainstalować najnowszy sterownik SSMS, ODBC i OLE DB zawierający najnowszą bibliotekę ADAL.DLL .

Na wszystkich komputerach klienckich, z których aplikacje lub użytkownicy łączą się z SQL Database lub Azure Synapse przy użyciu tożsamości Azure AD, należy zainstalować następujące oprogramowanie:

Te wymagania można spełnić, wykonując następujące czynności:

Tworzenie zawartych użytkowników mapowanych na tożsamości usługi Azure AD

Ponieważ SQL Managed Instance obsługuje jednostki serwera Azure AD (identyfikatory logowania), korzystanie z użytkowników zawartej bazy danych nie jest wymagane. Podmioty zabezpieczeń serwera usługi Azure AD (identyfikatory logowania) umożliwiają tworzenie danych logowania z użytkowników, grup lub aplikacji usługi Azure AD. Oznacza to, że można uwierzytelnić się przy użyciu SQL Managed Instance przy użyciu logowania serwera Azure AD, a nie użytkownika zawartej bazy danych. Aby uzyskać więcej informacji, zobacz omówienie SQL Managed Instance. Aby uzyskać składnię dotyczącą tworzenia jednostek serwera Azure AD (identyfikatorów logowania), zobacz CREATE LOGIN (CREATE LOGIN).

Jednak korzystanie z uwierzytelniania Azure Active Directory z SQL Database i Azure Synapse wymaga używania użytkowników zawartej bazy danych na podstawie tożsamości Azure AD. Użytkownik zawartej bazy danych nie ma identyfikatora logowania w bazie danych master i mapuje na tożsamość w Azure AD skojarzonej z bazą danych. Tożsamość w usłudze Azure AD może być indywidualnym kontem użytkownika lub grupą. Aby uzyskać więcej informacji na temat użytkowników zawartej bazy danych, patrz Contained Database Users - Making Your Database Portable (Użytkownicy zawartych baz danych — tworzenie przenośnej bazy danych).

Uwaga

Użytkowników bazy danych (z wyjątkiem administratorów) nie można tworzyć za pośrednictwem witryny Azure Portal. Role platformy Azure nie są propagowane do bazy danych w SQL Database, SQL Managed Instance ani Azure Synapse. Role platformy Azure są używane do zarządzania zasobami platformy Azure i nie mają zastosowania do uprawnień bazy danych. Na przykład rola współautora SQL Server nie udziela dostępu w celu nawiązania połączenia z bazą danych w SQL Database, SQL Managed Instance lub Azure Synapse. Uprawnienie dostępu należy nadać bezpośrednio w bazie danych za pomocą instrukcji języka Transact-SQL.

Ostrzeżenie

Znaki specjalne, takie jak dwukropek : lub znak ampersand&, jeśli są uwzględniane jako nazwy użytkowników w SQL CREATE LOGIN T i CREATE USER instrukcje nie są obsługiwane.

Ważne

Azure AD użytkownicy i jednostki usługi (aplikacje Azure AD), które są członkami ponad 2048 Azure AD grup zabezpieczeń, nie są obsługiwane do logowania się do bazy danych w SQL Database, wystąpieniu zarządzanym lub Azure Synapse.

Aby utworzyć Azure AD użytkownika zawartej bazy danych (innego niż administrator serwera, który jest właścicielem bazy danych), połącz się z bazą danych przy użyciu tożsamości Azure AD, jako użytkownik z co najmniej uprawnieniem ALTER ANY USER. Następnie użyj następującej składni transact-SQL:

CREATE USER [<Azure_AD_principal_name>] FROM EXTERNAL PROVIDER;

Azure_AD_principal_name może być główną nazwą użytkownika Azure AD lub nazwą wyświetlaną grupy Azure AD.

Przykłady: Aby utworzyć użytkownika zawartej bazy danych reprezentującego użytkownika domeny federacyjnej lub zarządzanej Azure AD:

CREATE USER [bob@contoso.com] FROM EXTERNAL PROVIDER;
CREATE USER [alice@fabrikam.onmicrosoft.com] FROM EXTERNAL PROVIDER;

Aby utworzyć użytkownika zawartej bazy danych reprezentującego Azure AD lub federacyjną grupę domeny, podaj nazwę wyświetlaną grupy zabezpieczeń:

CREATE USER [ICU Nurses] FROM EXTERNAL PROVIDER;

Aby utworzyć użytkownika zawartej bazy danych reprezentującego aplikację, która łączy się przy użyciu tokenu Azure AD:

CREATE USER [appName] FROM EXTERNAL PROVIDER;

Uwaga

To polecenie wymaga SQL dostępu Azure AD (dostawcy zewnętrznego) w imieniu zalogowanego użytkownika. Czasami pojawią się okoliczności, które powodują, że Azure AD zwrócić wyjątek z powrotem do SQL. W takich przypadkach użytkownik zobaczy błąd SQL 33134, który powinien zawierać komunikat o błędzie specyficzny dla Azure AD. W większości przypadków błąd powiedzie, że odmowa dostępu lub że użytkownik musi zarejestrować się w usłudze MFA w celu uzyskania dostępu do zasobu lub że dostęp między aplikacjami pierwszej firmy musi być obsługiwany za pośrednictwem wstępnego uwierzytelniania. W pierwszych dwóch przypadkach problem jest zwykle spowodowany zasadami dostępu warunkowego ustawionymi w dzierżawie Azure AD użytkownika: uniemożliwiają użytkownikowi dostęp do dostawcy zewnętrznego. Aktualizowanie zasad dostępu warunkowego w celu umożliwienia dostępu do aplikacji "0000003-0000-0000-c000-00000000000" (identyfikator aplikacji microsoft interfejs Graph API) powinien rozwiązać ten problem. W przypadku, gdy błąd mówi, że dostęp między aplikacjami pierwszej firmy musi być obsługiwany za pośrednictwem wstępnego uwierzytelniania, problem polega na tym, że użytkownik jest zalogowany jako jednostka usługi. Polecenie powinno zakończyć się powodzeniem, jeśli zostanie wykonane przez użytkownika.

Porada

Nie można bezpośrednio utworzyć użytkownika na podstawie Azure Active Directory innej niż Azure Active Directory skojarzonej z subskrypcją platformy Azure. Jednak członkowie innych katalogów Active Directory importowanych w skojarzonej usłudze Active Directory (znanej jako użytkownicy zewnętrzni) mogą zostać dodani do grupy usługi Active Directory w dzierżawie usługi Active Directory. Tworząc użytkownika zawartej bazy danych dla tej grupy usługi AD, użytkownicy z zewnętrznej usługi Active Directory mogą uzyskać dostęp do SQL Database.

Aby uzyskać więcej informacji na temat tworzenia użytkowników zawartej bazy danych na podstawie tożsamości Azure Active Directory, zobacz CREATE USER (Transact-SQL).

Uwaga

Usunięcie administratora Azure Active Directory dla serwera uniemożliwia żadnemu użytkownikowi uwierzytelniania Azure AD nawiązywanie połączenia z serwerem. W razie potrzeby użytkownicy Azure AD bezużytecznych mogą zostać porzuceni ręcznie przez administratora SQL Database.

Uwaga

Jeśli otrzymasz limit czasu połączenia wygasł, może być konieczne ustawienie TransparentNetworkIPResolution parametru parametru parametru połączenia na wartość false. Aby uzyskać więcej informacji, zobacz Problem z przekroczeniem limitu czasu połączenia z .NET Framework 4.6.1 — TransparentNetworkIPResolution.

Podczas tworzenia użytkownika bazy danych ten użytkownik otrzymuje uprawnienie CONNECT i może nawiązać połączenie z bazą danych jako członek roli PUBLIC . Początkowo jedynymi uprawnieniami dostępnymi dla użytkownika są wszelkie uprawnienia przyznane roli PUBLICZNEj lub wszelkie uprawnienia przyznane dowolnym grupom Azure AD, do których są członkami. Po aprowizacji użytkownika zawartej bazy danych opartego na Azure AD możesz udzielić użytkownikowi dodatkowych uprawnień, tak samo jak w przypadku udzielania uprawnień do dowolnego innego typu użytkownika. Zazwyczaj udzielaj uprawnień do ról bazy danych i dodawaj użytkowników do ról. Aby uzyskać więcej informacji, zobacz Podstawy uprawnień aparatu bazy danych. Aby uzyskać więcej informacji na temat specjalnych ról SQL Database, zobacz Zarządzanie bazami danych i identyfikatorami logowania w Azure SQL Database. Konto użytkownika domeny federacyjnej zaimportowane do domeny zarządzanej jako użytkownik zewnętrzny musi używać tożsamości domeny zarządzanej.

Uwaga

Użytkownicy usługi Azure AD są oznaczeni w metadanych bazy danych typem E (EXTERNAL_USER), a grupy typem X (EXTERNAL_GROUPS). Aby uzyskać więcej informacji, zobacz sys.database_principals.

Połączenie do bazy danych przy użyciu programu SSMS lub SSDT

Aby upewnić się, że administrator Azure AD jest poprawnie skonfigurowany, połącz się z bazą danych master przy użyciu konta administratora Azure AD. Aby aprowizować użytkownika zawartej bazy danych Azure AD (innego niż administrator serwera, który jest właścicielem bazy danych), połącz się z bazą danych przy użyciu tożsamości Azure AD, która ma dostęp do bazy danych.

Ważne

Obsługa uwierzytelniania Azure Active Directory jest dostępna w programie SQL Server Management Studio (SSMS) począwszy od 2016 r. i SQL Server Data Tools począwszy od 2015 r. Wersja programu SSMS z sierpnia 2016 r. obejmuje również obsługę uwierzytelniania uniwersalnego usługi Active Directory, która umożliwia administratorom wymaganie uwierzytelniania wieloskładnikowego przy użyciu połączenia telefonicznego, wiadomości SMS, kart inteligentnych z numerem PIN lub powiadomienia aplikacji mobilnej.

Nawiązywanie połączenia przy użyciu tożsamości Azure AD przy użyciu programu SSMS lub SSDT

Poniższe procedury pokazują, jak nawiązać połączenie z SQL Database przy użyciu tożsamości Azure AD przy użyciu narzędzi SQL Server Management Studio lub SQL Server Database Tools.

Zintegrowane uwierzytelnianie usługi Active Directory

Użyj tej metody, jeśli logujesz się do Windows przy użyciu poświadczeń Azure Active Directory z domeny federacyjnej lub domeny zarządzanej skonfigurowanej do bezproblemowego logowania jednokrotnego na potrzeby uwierzytelniania przekazywanego i skrótu haseł. Aby uzyskać więcej informacji, zobacz Bezproblemowe logowanie jednokrotne w usłudze Azure Active Directory.

  1. Uruchom Management Studio lub narzędzia danych i w oknie dialogowym Połączenie do serwera (lub Połączenie do aparatu bazy danych) w polu Uwierzytelnianie wybierz pozycję Azure Active Directory — Zintegrowane. Nie jest potrzebne żadne hasło lub można wprowadzić, ponieważ istniejące poświadczenia zostaną wyświetlone dla połączenia.

    Select AD Integrated Authentication

  2. Wybierz przycisk Opcje, a następnie na stronie Właściwości połączenia w polu Połączenie do bazy danych wpisz nazwę bazy danych użytkownika, z którą chcesz nawiązać połączenie. Aby uzyskać więcej informacji, zobacz artykuł Multi-factor Azure AD auth na temat różnic między właściwościami połączenia dla programu SSMS 17.x i 18.x.

    Select the database name

Uwierzytelnianie haseł w usłudze Active Directory

Użyj tej metody podczas nawiązywania połączenia z nazwą główną Azure AD przy użyciu domeny zarządzanej Azure AD. Można go również używać dla kont federacyjnych bez dostępu do domeny, na przykład podczas pracy zdalnej.

Ta metoda służy do uwierzytelniania w bazie danych w SQL Database lub SQL Managed Instance przy użyciu Azure AD użytkowników tożsamości tylko w chmurze lub tych, którzy używają tożsamości hybrydowych Azure AD. Ta metoda obsługuje użytkowników, którzy chcą używać poświadczeń Windows, ale ich komputer lokalny nie jest przyłączony do domeny (na przykład przy użyciu dostępu zdalnego). W takim przypadku użytkownik Windows może wskazać swoje konto domeny i hasło oraz uwierzytelnić się w bazie danych w SQL Database, SQL Managed Instance lub Azure Synapse.

  1. Uruchom Management Studio lub narzędzia danych i w oknie dialogowym Połączenie do serwera (lub Połączenie do aparatu bazy danych) w polu Uwierzytelnianie wybierz pozycję Azure Active Directory — hasło.

  2. W polu Nazwa użytkownika wpisz nazwę użytkownika Azure Active Directory w formacie username@domain.com. Nazwy użytkowników muszą być kontem z Azure Active Directory lub konta z domeny zarządzanej lub federacyjnej z Azure Active Directory.

  3. W polu Hasło wpisz hasło użytkownika dla konta Azure Active Directory lub zarządzanego/federacyjnego konta domeny.

    Select AD Password Authentication

  4. Wybierz przycisk Opcje, a następnie na stronie Właściwości połączenia w polu Połączenie do bazy danych wpisz nazwę bazy danych użytkownika, z którą chcesz nawiązać połączenie. (Zobacz grafikę w poprzedniej opcji).

Uwierzytelnianie interakcyjne usługi Active Directory

Ta metoda służy do uwierzytelniania interakcyjnego z uwierzytelnianiem wieloskładnikowym (MFA) lub bez niego z żądaniem hasła interakcyjnego. Ta metoda może służyć do uwierzytelniania w bazie danych w SQL Database, SQL Managed Instance i Azure Synapse dla użytkowników tożsamości tylko w chmurze Azure AD lub tych, którzy używają tożsamości hybrydowych Azure AD.

Aby uzyskać więcej informacji, zobacz Using multi-factor Azure AD authentication with SQL Database and Azure Synapse (SSMS support for MFA) (Korzystanie z uwierzytelniania wieloskładnikowego przy użyciu SQL Database i Azure Synapse (obsługa SSMS dla uwierzytelniania wieloskładnikowego).

Nawiązywanie połączenia z aplikacji klienckiej przy użyciu tożsamości Azure AD

Poniższe procedury pokazują, jak nawiązać połączenie z SQL Database przy użyciu tożsamości Azure AD z aplikacji klienckiej.

Zintegrowane uwierzytelnianie usługi Active Directory

Aby użyć zintegrowanego uwierzytelniania Windows, usługa Active Directory w domenie musi być sfederowana z Azure Active Directory lub powinna być domeną zarządzaną skonfigurowaną do bezproblemowego logowania jednokrotnego na potrzeby uwierzytelniania przekazywanego lub skrótu haseł. Aby uzyskać więcej informacji, zobacz Bezproblemowe logowanie jednokrotne w usłudze Azure Active Directory.

Aplikacja kliencka (lub usługa) łącząca się z bazą danych musi być uruchomiona na maszynie przyłączonej do domeny w ramach poświadczeń domeny użytkownika.

Aby nawiązać połączenie z bazą danych przy użyciu zintegrowanego uwierzytelniania i tożsamości Azure AD, słowo kluczowe Uwierzytelnianie w parametrach połączenia bazy danych musi być ustawione na Active Directory Integratedwartość . Poniższy przykład kodu w języku C# używa platformy .NET ADO.

string ConnectionString = @"Data Source=n9lxnyuzhv.database.windows.net; Authentication=Active Directory Integrated; Initial Catalog=testdb;";
SqlConnection conn = new SqlConnection(ConnectionString);
conn.Open();

Słowo kluczowe Integrated Security=True parametrów połączenia nie jest obsługiwane w przypadku nawiązywania połączenia z Azure SQL Database. Podczas nawiązywania połączenia ODBC należy usunąć spacje i ustawić wartość Uwierzytelnianie na wartość "ActiveDirectoryIntegrated".

Uwierzytelnianie haseł w usłudze Active Directory

Aby nawiązać połączenie z bazą danych przy użyciu kont użytkowników tożsamości tylko w chmurze Azure AD lub tych, którzy używają tożsamości hybrydowych Azure AD, słowo kluczowe Uwierzytelnianie musi być ustawione na Active Directory Password. Parametry połączenia muszą zawierać identyfikator użytkownika/identyfikator UID i hasło/słowa kluczowe i wartości pwD. Poniższy przykład kodu w języku C# używa platformy .NET ADO.

string ConnectionString =
@"Data Source=n9lxnyuzhv.database.windows.net; Authentication=Active Directory Password; Initial Catalog=testdb;  UID=bob@contoso.onmicrosoft.com; PWD=MyPassWord!";
SqlConnection conn = new SqlConnection(ConnectionString);
conn.Open();

Dowiedz się więcej o metodach uwierzytelniania Azure AD przy użyciu przykładów kodu demonstracyjnego dostępnych na stronie Azure AD Authentication GitHub Demo.

token Azure AD

Ta metoda uwierzytelniania umożliwia usługom warstwy środkowej uzyskiwanie tokenów sieci Web JSON (JWT) w celu nawiązania połączenia z bazą danych w SQL Database, SQL Managed Instance lub Azure Synapse przez uzyskanie tokenu z Azure AD. Ta metoda umożliwia korzystanie z różnych scenariuszy aplikacji, w tym tożsamości usług, jednostek usługi i aplikacji przy użyciu uwierzytelniania opartego na certyfikatach. Aby użyć uwierzytelniania tokenu Azure AD, należy wykonać cztery podstawowe kroki:

  1. Zarejestruj aplikację za pomocą Azure Active Directory i pobierz identyfikator klienta dla kodu.
  2. Utwórz użytkownika bazy danych reprezentującego aplikację. (Ukończono wcześniej w kroku 6).
  3. Tworzenie certyfikatu na komputerze klienckim uruchamia aplikację.
  4. Dodaj certyfikat jako klucz dla aplikacji.

Przykładowe parametry połączenia:

string ConnectionString = @"Data Source=n9lxnyuzhv.database.windows.net; Initial Catalog=testdb;";
SqlConnection conn = new SqlConnection(ConnectionString);
conn.AccessToken = "Your JWT token";
conn.Open();

Aby uzyskać więcej informacji, zobacz blog dotyczący zabezpieczeń SQL Server. Aby uzyskać informacje na temat dodawania certyfikatu, zobacz Wprowadzenie z uwierzytelnianiem opartym na certyfikatach w Azure Active Directory.

sqlcmd

Poniższe instrukcje łączą się przy użyciu wersji 13.1 narzędzia sqlcmd, która jest dostępna w Centrum pobierania.

Uwaga

sqlcmd polecenie -G nie działa z tożsamościami systemowymi i wymaga głównego logowania użytkownika.

sqlcmd -S Target_DB_or_DW.testsrv.database.windows.net -G  
sqlcmd -S Target_DB_or_DW.testsrv.database.windows.net -U bob@contoso.com -P MyAADPassword -G -l 30

Rozwiązywanie problemów z uwierzytelnianiem Azure AD

Wskazówki dotyczące rozwiązywania problemów z uwierzytelnianiem Azure AD można znaleźć w następującym blogu:https://techcommunity.microsoft.com/t5/azure-sql-database/troubleshooting-problems-related-to-azure-ad-authentication-with/ba-p/1062991

Następne kroki