Uwierzytelnianie SQL w usłudze Azure Synapse Analytics
Usługa Azure Synapse Analytics ma dwa czynniki formularzy SQL, które umożliwiają kontrolowanie zużycia zasobów. W tym artykule wyjaśniono, jak dwa czynniki formularzy kontrolują uwierzytelnianie użytkownika.
Aby przeprowadzić uwierzytelnianie w usłudze Synapse SQL, możesz użyć dwóch opcji:
- Uwierzytelnianie Microsoft Entra
- Uwierzytelnianie SQL
Uwierzytelnianie SQL umożliwia starszym aplikacjom łączenie się z usługą Azure Synapse SQL w znany sposób przy użyciu nazwy użytkownika i hasła. Jednak uwierzytelnianie firmy Microsoft Entra umożliwia centralne zarządzanie dostępem do zasobów usługi Azure Synapse, takich jak pule SQL. Usługa Azure Synapse Analytics obsługuje wyłączanie uwierzytelniania lokalnego, takiego jak uwierzytelnianie SQL, zarówno podczas tworzenia obszaru roboczego, jak i po jego utworzeniu. Po wyłączeniu uwierzytelnianie lokalne można włączyć w dowolnym momencie przez autoryzowanych użytkowników. Aby uzyskać więcej informacji na temat uwierzytelniania tylko w usłudze Microsoft Entra, zobacz Wyłączanie uwierzytelniania lokalnego w usłudze Azure Synapse Analytics.
Konta administracyjne
Istnieją dwa konta administracyjne (nazwa użytkownika administratora SQL i administrator firmy Microsoft Entra), które działają jako administratorzy. Aby zidentyfikować te konta administratora dla pul SQL, otwórz witrynę Azure Portal i przejdź do karty Właściwości obszaru roboczego usługi Synapse.
Nazwa użytkownika administratora SQL
Podczas tworzenia usługi Azure Synapse Analytics musisz podać nazwę logowania administratora serwera. Program SQL Server tworzy to konto jako identyfikator logowania w
master
bazie danych. To konto używa do połączenia uwierzytelnienia programu SQL Server (nazwy użytkownika i hasła). Może istnieć tylko jedno z tych kont.Administrator firmy Microsoft Entra
Jedno konto Microsoft Entra , pojedyncze lub konto grupy zabezpieczeń, można również skonfigurować jako administrator. Opcjonalnie można skonfigurować administratora firmy Microsoft Entra, ale administrator entra firmy Microsoft musi być skonfigurowany, jeśli chcesz używać kont Microsoft Entra do nawiązywania połączenia z usługą Synapse SQL.
- Konto administratora firmy Microsoft Entra kontroluje dostęp do dedykowanych pul SQL, a role RBAC usługi Synapse mogą służyć do kontrolowania dostępu do pul bezserwerowych, na przykład za pomocą roli Administrator usługi Synapse i administrator usługi Synapse SQL.
Nazwa użytkownika administratora SQL i konta administratora firmy Microsoft Entra mają następujące cechy:
- To jedyne konta, które mogą automatycznie łączyć się z dowolną usługą SQL Database na serwerze. (Aby połączyć się z bazą danych użytkownika, inne konta muszą być właścicielem bazy danych lub mieć konto użytkownika w bazie danych użytkownika).
- Te konta korzystają z baz danych użytkowników jako użytkownik
dbo
i mają wszystkie uprawnienia w bazach danych użytkowników. (Właściciel bazy danych użytkownika również korzysta z bazy danych jako użytkownikdbo
). - Nie wprowadzaj
master
bazy danych jakodbo
użytkownik i nie masz ograniczonych uprawnień wmaster
bazie danych. - Nie są członkami standardowej stałej roli serwera SQL Server
sysadmin
, która nie jest dostępna w usłudze SQL Database. - Może tworzyć, zmieniać i usuwać bazy danych, logowania, użytkowników w
master
bazie danych i reguł zapory adresów IP na poziomie serwera. - Może dodawać i usuwać członków do
dbmanager
ról iloginmanager
. - Może wyświetlić tabelę systemowa
sys.sql_logins
.
Uwaga
Jeśli użytkownik jest skonfigurowany jako administrator firmy Microsoft Entra i administrator usługi Synapse, a następnie usunięty z roli administratora firmy Microsoft Entra, użytkownik utraci dostęp do dedykowanych pul SQL w usłudze Synapse. Należy je usunąć, a następnie dodać do roli administratora usługi Synapse, aby odzyskać dostęp do dedykowanych pul SQL.
Aby zarządzać użytkownikami mającymi dostęp do bezserwerowej puli SQL, możesz skorzystać z poniższych instrukcji.
Aby utworzyć identyfikator logowania do bezserwerowej puli SQL, użyj następującej składni:
CREATE LOGIN Mary WITH PASSWORD = '<strong_password>';
-- or
CREATE LOGIN [Mary@domainname.net] FROM EXTERNAL PROVIDER;
Gdy logowanie istnieje, możesz utworzyć użytkowników w poszczególnych bazach danych w punkcie końcowym bezserwerowej puli SQL i udzielić wymaganych uprawnień tym użytkownikom. Aby utworzyć użytkownika, możesz użyć następującej składni:
CREATE USER Mary FROM LOGIN Mary;
-- or
CREATE USER Mary FROM LOGIN Mary@domainname.net;
-- or
CREATE USER [mike@contoso.com] FROM EXTERNAL PROVIDER;
Po utworzeniu nazwy logowania i użytkownika możesz użyć regularnej składni programu SQL Server w celu udzielenia praw.
Użytkownicy niebędący administratorami
Ogólnie rzecz biorąc, konta inne niż administratorzy nie potrzebują dostępu do master
bazy danych. Tworzenie użytkowników zawartej bazy danych na poziomie bazy danych przy użyciu instrukcji CREATE USER (język Transact-SQL).
Użytkownik może być użytkownikiem zawartej bazy danych firmy Microsoft (jeśli skonfigurowano środowisko do uwierzytelniania firmy Microsoft Entra) lub użytkownikiem uwierzytelniania zawartej bazy danych programu SQL Server lub użytkownikiem uwierzytelniania programu SQL Server na podstawie logowania do uwierzytelniania programu SQL Server (utworzonego w poprzednim kroku).
Aby utworzyć użytkowników, połącz się z bazą danych i wykonaj instrukcje podobne do następujących:
CREATE USER Mary FROM LOGIN Mary;
CREATE USER [mike@contoso.com] FROM EXTERNAL PROVIDER;
Początkowo tylko jeden z administratorów lub jeden z właścicieli bazy danych mogą tworzyć użytkowników. Aby autoryzować dodatkowych użytkowników do tworzenia nowych użytkowników, należy udzielić im uprawnienia ALTER ANY USER
przy użyciu instrukcji, takiej jak:
GRANT ALTER ANY USER TO Mary;
Aby zapewnić dodatkowi użytkownikom pełną kontrolę nad bazą danych, należy ich do db_owner stałej roli bazy danych.
W usłudze Azure SQL Database lub synapse serverless użyj instrukcji ALTER ROLE
.
ALTER ROLE db_owner ADD MEMBER Mary;
W dedykowanej puli SQL użyj sp_addrolemember EXEC.
EXEC sp_addrolemember 'db_owner', 'Mary';
Uwaga
Jednym z typowych powodów tworzenia użytkownika bazy danych na podstawie logowania do serwera jest to, że użytkownicy potrzebują dostępu do wielu baz danych. Ponieważ użytkownicy zawartej bazy danych są poszczególnymi jednostkami, każda baza danych zachowuje własnego użytkownika i własne hasło. Może to spowodować obciążenie, ponieważ użytkownik musi pamiętać każde hasło dla każdej bazy danych i może stać się nie do utrzymania podczas konieczności zmiany wielu haseł dla wielu baz danych.
Grupy i role
Wydajne zarządzanie dostępem obejmuje korzystanie z uprawnień przypisanych do grup i ról, a nie do poszczególnych użytkowników.
W przypadku korzystania z uwierzytelniania Entra firmy Microsoft umieść użytkowników firmy Microsoft w grupie Entra firmy Microsoft. Utwórz użytkownika zawartej bazy danych dla tej grupy. Umieść co najmniej jednego użytkownika bazy danych w roli bazy danych, a następnie przypisz uprawnienia do roli bazy danych.
W przypadku uwierzytelniania programu SQL Server utwórz zawartych użytkowników bazy danych w bazie danych. Umieść co najmniej jednego użytkownika bazy danych w roli bazy danych, a następnie przypisz uprawnienia do roli bazy danych.
Role bazy danych mogą być rolami wbudowanymi, takimi jak db_owner, db_ddladmin, db_datawriter, db_datareader, db_denydatawriter i db_denydatareader. Rola db_owner jest najczęściej używana do udzielenia pełnych uprawnień jedynie niewielkiej liczbie użytkowników. Inne ustalone role bazy danych ułatwiają szybkie tworzenie prostej bazy danych, ale nie zaleca się ich używania w większości przypadków tworzenia produkcyjnych baz danych.
Na przykład ustalona rola bazy danych db_datareader pozwala na odczyt każdej tabeli w bazie danych, co nie zawsze jest niezbędne.
Znacznie lepiej jest użyć instrukcji CREATE ROLE w celu utworzenia własnych ról bazy danych zdefiniowanych przez użytkownika i dokładnego przyznania każdej roli najmniejszych uprawnień niezbędnych do potrzeb biznesowych. Gdy użytkownik jest członkiem wielu ról, łączą one uprawnienia ich wszystkich.
Uprawnienia
Istnieje ponad 100 uprawnień, których można indywidualnie udzielić lub odmówić w usłudze SQL Database. Wiele z tych uprawnień jest zagnieżdżonych. Na przykład uprawnienie UPDATE
na schemacie obejmuje UPDATE
uprawnienie dla każdej tabeli na tym schemacie. Podobnie jak w przypadku większości systemów, odmowa przyznania uprawnienia kasuje przyznanie.
Ze względu na zagnieżdżoną naturę uprawnień oraz ich liczbę zaprojektowanie systemu zabezpieczającego bazę danych w prawidłowy sposób może wymagać starannej analizy.
Zacznij od listy uprawnień w obszarze Uprawnienia (aparat bazy danych) i przejrzyj grafikę rozmiaru plakatu uprawnień aparatu bazy danych.
Uwagi i ograniczenia
Podczas zarządzania identyfikatorami logowania i użytkownikami w usłudze SQL Database należy wziąć pod uwagę następujące kwestie:
- Podczas wykonywania instrukcji
CREATE/ALTER/DROP DATABASE
należy nawiązać połączenie z baząmaster
danych. - Nie można zmienić ani usunąć użytkownika bazy danych odpowiadającego identyfikatorowi logowania administratora serwera.
- Administrator serwera zostanie wyłączony, jeśli włączono uwierzytelnianie tylko firmy Microsoft.
- Domyślnym językiem identyfikatora logowania Administrator serwera jest angielski (Stany Zjednoczone).
- Tylko administratorzy (identyfikator logowania administratora serwera lub administrator firmy Microsoft Entra) i członkowie roli bazy danych dbmanager w
master
bazie danych mają uprawnienia do wykonywaniaCREATE DATABASE
instrukcji iDROP DATABASE
. - Podczas wykonywania instrukcji
CREATE/ALTER/DROP LOGIN
należy nawiązać połączenie z baząmaster
danych. Jednak korzystanie z identyfikatorów logowania jest odradzane. Zamiast tego korzystaj z użytkowników zawartej bazy danych. Aby uzyskać więcej informacji, zobacz artykuł Contained Database Users - Making Your Database Portable (Użytkownicy zawartej bazy danych — tworzenie przenośnej bazy danych). - Aby połączyć się z bazą danych użytkownika, podaj nazwę bazy danych w parametrach połączenia.
- Tylko identyfikator logowania podmiotu zabezpieczeń na poziomie serwera i członkowie roli bazy danych loginmanager w
master
bazie danych mają uprawnienia do wykonywaniaCREATE LOGIN
instrukcji ,ALTER LOGIN
iDROP LOGIN
. - Podczas wykonywania instrukcji
CREATE/ALTER/DROP LOGIN
iCREATE/ALTER/DROP DATABASE
w aplikacji ADO.NET użycie poleceń sparametryzowanych nie jest dozwolone. Aby uzyskać więcej informacji, zobacz artykuł Polecenia i parametry. - Podczas wykonywania instrukcji
CREATE USER
z opcjąFOR/FROM LOGIN
musi to być jedyna instrukcja w zadaniu wsadowym języka Transact-SQL. - Podczas wykonywania instrukcji
ALTER USER
z opcjąWITH LOGIN
musi to być jedyna instrukcja w zadaniu wsadowym języka Transact-SQL. CREATE/ALTER/DROP LOGIN
instrukcje iCREATE/ALTER/DROP USER
nie są obsługiwane, gdy dla obszaru roboczego usługi Azure Synapse włączono uwierzytelnianie tylko firmy Microsoft.- Aby wykonać instrukcję
CREATE/ALTER/DROP
, użytkownik musi mieć uprawnieniaALTER ANY USER
dla bazy danych. - Gdy właściciel roli bazy danych próbuje dodać lub usunąć innego użytkownika bazy danych do lub z tej roli bazy danych, może wystąpić następujący błąd: Użytkownik lub rola "Nazwa" nie istnieje w tej bazie danych. Ten błąd występuje, ponieważ użytkownik nie jest widoczny dla właściciela. Aby rozwiązać ten problem, należy udzielić właścicielowi roli uprawnień
VIEW DEFINITION
do użytkownika.
Powiązana zawartość
Aby uzyskać więcej informacji, zobacz artykuł Contained Database Users - Making Your Database Portable (Użytkownicy zawartej bazy danych — tworzenie przenośnej bazy danych).