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
- Uwierzytelnianie w chmurze z dwiema opcjami w połączeniu z bezproblemowym logowaniem jednokrotnym (SSO)
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:
- Uwierzytelnianie skrótów haseł — implementowanie synchronizacji skrótów haseł za pomocą synchronizacji Azure AD Połączenie
- Uwierzytelnianie przekazywane — Azure Active Directory uwierzytelnianie przekazywane
- Uwierzytelnianie federacyjne — wdrażanie Active Directory Federation Services na platformie Azure i Azure AD Połączenie i federacji
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:
- Integrowanie tożsamości lokalnych z usługą Azure Active Directory
- Add your own domain name to Azure AD (Dodawanie własnej nazwy domeny do usługi Azure Active Directory)
- Microsoft Azure obsługuje teraz federację z Windows Server Active Directory
- Co to jest usługa Azure Active Directory?
- Zarządzanie usługą Azure AD za pomocą programu Windows PowerShell
- Wymagane porty i protokoły tożsamości hybrydowej.
Kojarzenie lub dodawanie subskrypcji platformy Azure do usługi Azure Active Directory
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.
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:
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.
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.
Przejdź do SQL Managed Instance, którego chcesz użyć do integracji Azure AD.
Wybierz baner w górnej części strony administratora usługi Active Directory i przyznaj użytkownikowi uprawnienia.
Po pomyślnym zakończeniu operacji w prawym górnym rogu zostanie wyświetlone następujące powiadomienie:
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 .
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.
W górnej części strony administratora usługi Active Directory wybierz pozycję Zapisz.
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
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.
Wyszukaj i wybierz pozycję serwer SQL.
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.
Na stronie SQL Server wybierz pozycję Administrator usługi Active Directory.
Na stronie administratora usługi Active Directory wybierz pozycję Ustaw administratora.
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.
W górnej części strony administratora usługi Active Directory wybierz pozycję Zapisz.
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-da4c8cc7353f
obiektu) 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:
- .NET Framework w wersji 4.6 lub nowszej z https://msdn.microsoft.com/library/5a4x27ek.aspxwitryny .
- Biblioteka uwierzytelniania firmy Microsoft (MSAL) lub biblioteka uwierzytelniania Azure Active Directory dla SQL Server (ADAL.DLL). Poniżej przedstawiono linki pobierania umożliwiające zainstalowanie najnowszego sterownika SSMS, ODBC i OLE DB zawierającego bibliotekę ADAL.DLL .
Te wymagania można spełnić, wykonując następujące czynności:
- Zainstalowanie najnowszej wersji SQL Server Management Studio lub narzędzi SQL Server Data Tools spełnia wymagania .NET Framework 4.6.
- Program SSMS instaluje wersję x86 ADAL.DLL.
- Program SSDT instaluje wersję narzędzia amd64 ADAL.DLL.
- Najnowsze Visual Studio z Visual Studio Downloads spełniają wymagania .NET Framework 4.6, ale nie instaluje wymaganej wersji amd64 ADAL.DLL.
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.
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.
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.
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.
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.
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.
W polu Hasło wpisz hasło użytkownika dla konta Azure Active Directory lub zarządzanego/federacyjnego konta domeny.
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 Integrated
wartość . 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:
- Zarejestruj aplikację za pomocą Azure Active Directory i pobierz identyfikator klienta dla kodu.
- Utwórz użytkownika bazy danych reprezentującego aplikację. (Ukończono wcześniej w kroku 6).
- Tworzenie certyfikatu na komputerze klienckim uruchamia aplikację.
- 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
- Aby zapoznać się z omówieniem identyfikatorów logowania, użytkowników, ról bazy danych i uprawnień w SQL Database, zobacz Logowania, użytkownicy, role bazy danych i konta użytkowników.
- Aby uzyskać więcej informacji na temat podmiotów zabezpieczeń bazy danych, zobacz Principals (Podmioty zabezpieczeń).
- Aby uzyskać więcej informacji na temat ról bazy danych, zobacz Database roles (Role bazy danych).
- Aby uzyskać więcej informacji na temat reguł zapory w usłudze SQL Database, zobacz Omówienie reguł zapory usługi SQL Database.
- Aby uzyskać informacje na temat ustawiania użytkownika-gościa Azure AD jako administratora Azure AD, zobacz Tworzenie użytkowników-gości Azure AD i ustawianie go jako administratora Azure AD.
- Aby uzyskać informacje na temat sposobu obsługi jednostek usługi za pomocą Azure SQL, zobacz Tworzenie użytkowników Azure AD przy użyciu aplikacji Azure AD