Microsoft Entra service principals with Azure SQL
Dotyczy: Azure SQL Database Azure SQL Managed Instance
Zasoby usługi Azure SQL obsługują dostęp programowy dla aplikacji przy użyciu jednostek usługi i tożsamości zarządzanych w usłudze Microsoft Entra ID (dawniej Azure Active Directory).
Obsługa jednostek usługi (aplikacji Firmy Microsoft Entra)
Ten artykuł dotyczy aplikacji zarejestrowanych w usłudze Microsoft Entra ID. Używanie poświadczeń aplikacji w celu uzyskania dostępu do usługi Azure SQL obsługuje zasadę zabezpieczeń separacji obowiązków, umożliwiając organizacjom konfigurowanie dokładnego dostępu dla każdej aplikacji łączącej się z bazami danych. Tożsamości zarządzane, specjalna forma jednostek usługi, są zalecane, ponieważ są bez hasła i eliminują potrzebę poświadczeń zarządzanych przez deweloperów.
Identyfikator entra firmy Microsoft dodatkowo umożliwia zaawansowane scenariusze uwierzytelniania, takie jak OAuth 2.0 On-Behalf-Of Flow (OBO) . OBO umożliwia aplikacjom żądanie poświadczeń zalogowanych użytkowników w scenariuszach, w których same aplikacje nie powinny mieć dostępu do bazy danych bez uprawnień delegowanych.
Aby uzyskać więcej informacji na temat aplikacji firmy Microsoft Entra, zobacz Application and service principal objects in Microsoft Entra ID (Obiekty aplikacji i jednostki usługi w usłudze Microsoft Entra ID ) i Create an Azure service principal with Azure PowerShell (Tworzenie jednostki usługi platformy Azure za pomocą programu Azure PowerShell).
Tworzenie użytkownika w usłudze Microsoft Entra przy użyciu jednostek usługi
Obsługa tej funkcji jest przydatna w procesach automatyzacji aplikacji firmy Microsoft Entra, w których podmioty zabezpieczeń firmy Microsoft są tworzone i utrzymywane w usłudze SQL Database lub SQL Managed Instance bez interakcji człowieka. Jednostki usługi mogą być administratorem firmy Microsoft Entra dla serwera logicznego SQL lub wystąpienia zarządzanego w ramach grupy lub jako tożsamości autonomicznej. Aplikacja może zautomatyzować tworzenie obiektów entra firmy Microsoft w usłudze SQL Database lub usłudze SQL Managed Instance, co pozwala na pełną automatyzację tworzenia użytkowników bazy danych.
Włączanie jednostek usługi w celu utworzenia użytkowników usługi Microsoft Entra
W przypadku korzystania z aplikacji w celu uzyskania dostępu do usługi Azure SQL tworzenie użytkowników i logowań firmy Microsoft wymaga uprawnień, które nie są przypisane do jednostek usługi ani tożsamości zarządzanych domyślnie: możliwość odczytywania użytkowników, grup i aplikacji w dzierżawie z programu Microsoft Graph. Te uprawnienia są niezbędne dla aparatu SQL w celu zweryfikowania tożsamości określonej w elemecie CREATE LOGIN
lub CREATE USER
i ściągnięcia ważnych informacji, w tym identyfikatora obiektu lub aplikacji tożsamości, który jest używany do tworzenia identyfikatora logowania lub użytkownika.
Gdy użytkownik firmy Microsoft Entra wykonuje te polecenia, aplikacja firmy Microsoft usługi Azure SQL używa delegowanych uprawnień do personifikacji zalogowanego użytkownika i wykonuje zapytania dotyczące programu Microsoft Graph przy użyciu ich uprawnień. Ten przepływ nie jest możliwy w przypadku jednostek usługi, ponieważ aplikacja nie może personifikować innej aplikacji. Zamiast tego aparat SQL próbuje użyć tożsamości serwera, która jest podstawową tożsamością zarządzaną przypisaną do wystąpienia zarządzanego SQL, serwera logicznego Azure SQL lub obszaru roboczego usługi Azure Synapse. Tożsamość serwera musi istnieć i mieć uprawnienia zapytania programu Microsoft Graph lub operacje kończą się niepowodzeniem.
W poniższych krokach opisano sposób przypisywania tożsamości zarządzanej do serwera i przypisywania jej uprawnień do programu Microsoft Graph w celu umożliwienia jednostkom usługi tworzenia użytkowników i logowań firmy Microsoft Entra w bazie danych.
Przypisz tożsamość serwera. Tożsamość serwera może być tożsamością zarządzaną przypisaną przez system lub przypisaną przez użytkownika. Aby uzyskać więcej informacji, zobacz Tożsamości zarządzane w usłudze Microsoft Entra for Azure SQL.
- Następujące polecenie programu PowerShell tworzy nowy serwer logiczny aprowizowany przy użyciu przypisanej przez system tożsamości zarządzanej:
New-AzSqlServer -ResourceGroupName <resource group> -Location <Location name> -ServerName <Server name> -ServerVersion "12.0" -SqlAdministratorCredentials (Get-Credential) -AssignIdentity
Aby uzyskać więcej informacji, zobacz polecenie New-AzSqlServer lub polecenie New-AzSqlInstance dla usługi SQL Managed Instance.
- W przypadku istniejącego serwera logicznego wykonaj następujące polecenie, aby dodać do niego tożsamość zarządzaną przypisaną przez system:
Set-AzSqlServer -ResourceGroupName <resource group> -ServerName <Server name> -AssignIdentity
Aby uzyskać więcej informacji, zobacz polecenie Set-AzSqlServer lub Polecenie Set-AzSqlInstance dla usługi SQL Managed Instance.
- Aby sprawdzić, czy tożsamość serwera jest przypisana do serwera, wykonaj polecenie Get-AzSqlServer lub polecenie Get-AzSqlInstance dla usługi SQL Managed Instance.
Uwaga
Tożsamość serwera można również przypisać przy użyciu interfejsu API REST i poleceń interfejsu wiersza polecenia. Aby uzyskać więcej informacji, zobacz az sql server create, az sql server update i Servers — INTERFEJS API REST.
Udziel uprawnień tożsamości serwera do wykonywania zapytań dotyczących programu Microsoft Graph. Można to zrobić na wiele sposobów: dodając tożsamość do roli Czytelnicy katalogów firmy Microsoft, przypisując tożsamość poszczególnym uprawnieniam programu Microsoft Graph lub dodając tożsamość do grupy z możliwością przypisania ról, która ma rolę Czytelnicy katalogu:
Dodawanie tożsamości serwera do grupy z możliwością przypisywania ról
W środowiskach produkcyjnych zaleca się, aby administrator dzierżawy utworzył grupę z możliwością przypisania roli i przypisze do niej rolę Czytelnicy katalogu. Właściciele grup mogą następnie dodawać tożsamości serwera do grupy, dziedzicząc te uprawnienia. Spowoduje to usunięcie wymagania administratora globalnego lub administratora ról uprzywilejowanych w celu udzielenia uprawnień do każdej tożsamości serwera, dzięki czemu administratorzy mogą delegować przypisanie uprawnień do właścicieli grupy w tym scenariuszu. Aby uzyskać więcej informacji, zobacz Rola Czytelników katalogów w usłudze Microsoft Entra ID dla usługi Azure SQL.
Przypisywanie uprawnień programu Microsoft Graph do tożsamości serwera
Aby przypisać indywidualne uprawnienia programu Microsoft Graph do tożsamości serwera, musisz mieć rolę administratora globalnego firmy Microsoft Entra lub administratora ról uprzywilejowanych. Jest to zalecane w przypadku przypisywania roli Czytelnicy katalogów , ponieważ istnieją uprawnienia uwzględnione w roli, która nie wymaga tożsamości serwera. Przypisanie tylko poszczególnych uprawnień do odczytu programu Microsoft Graph ogranicza uprawnienia tożsamości serwera w ramach dzierżawy i utrzymuje zasadę najniższych uprawnień. Aby uzyskać instrukcje, zobacz Tożsamości zarządzane w usłudze Microsoft Entra for Azure SQL.
Dodawanie tożsamości serwera do roli Czytelnicy katalogu
Aby dodać tożsamość serwera do roli Czytelnicy katalogu, musisz być członkiem roli administratora globalnego firmy Microsoft Entra lub administrator ról uprzywilejowanych. W środowiskach produkcyjnych ta opcja nie jest zalecana z dwóch powodów: rola Czytelnik katalogu daje więcej uprawnień niż wymaga tożsamość serwera, a proces przypisywania roli nadal wymaga zatwierdzeń administratora dla każdej tożsamości serwera (w przeciwieństwie do korzystania z grup). Postępuj zgodnie z instrukcjami usługi SQL Managed Instance dostępnymi w artykule Set Microsoft Entra admin (SQL Managed Instance).
Rozwiązywanie problemów
Podczas rozwiązywania problemów może wystąpić następujący błąd:
Msg 33134, Level 16, State 1, Line 1
Principal 'test-user' could not be resolved.
Error message: 'Server identity is not configured. Please follow the steps in "Assign an Azure AD identity to your server and add Directory Reader permission to your identity" (https://aka.ms/sqlaadsetup)'
Ten błąd wskazuje, że tożsamość serwera nie została utworzona lub nie przypisano uprawnień programu Microsoft Graph. Postępuj zgodnie z instrukcjami, aby przypisać tożsamość do serwera logicznego i przypisać czytelnikom katalogu uprawnienia do tożsamości serwera logicznego.
Ograniczenia
Jednostki usługi nie mogą uwierzytelniać się w granicach dzierżaw. Próba uzyskania dostępu do usługi SQL Database lub wystąpienia zarządzanego SQL przy użyciu aplikacji Microsoft Entra utworzonej w innej dzierżawie kończy się niepowodzeniem.
Moduł Az.Sql 2.9.0 lub nowszy jest wymagany do ustawienia aplikacji Entra firmy Microsoft jako administratora usługi Microsoft Entra dla usługi Azure SQL. Upewnij się, że przeprowadzono uaktualnienie do najnowszego modułu.