Podmioty zabezpieczeń serwera Microsoft Entra

Możesz tworzyć i używać serwerowych jednostek zabezpieczeń z Microsoft Entra ID (dawniej Azure Active Directory) jako loginy w wirtualnej master bazie danych dedykowanej puli SQL Azure Synapse Analytics.

Uwaga

Podmioty zabezpieczeń serwera Microsoft Entra są obecnie dostępne w wersji zapoznawczej dla Azure Synapse Analytics.

Istnieje kilka korzyści z korzystania z głównych nazw zabezpieczeń serwera Microsoft Entra z dedykowaną pulą SQL:

  • Obsługa ról serwera w zarządzaniu uprawnieniami.
  • Wspieraj wielu użytkowników Microsoft Entra poprzez specjalne role dla Azure Synapse Analytics, takie jak role loginmanager i dbmanager.
  • Równorzędność funkcjonalna między logowaniami SQL i logowaniami Microsoft Entra.
  • Zwiększ obsługę ulepszeń funkcjonalnych, na przykład poprzez wykorzystanie uwierzytelniania wyłącznie Microsoft Entra. Uwierzytelnianie tylko za pomocą Microsoft Entra pozwala wyłączyć uwierzytelnianie SQL dla administratora serwera SQL, loginów SQL oraz użytkowników.
  • Użyj identyfikatorów logowania jednostki usługi Microsoft Entra z rolami specjalnymi, aby w pełni zautomatyzować tworzenie i konserwację użytkowników i baz danych za pomocą aplikacji Firmy Microsoft Entra.

Więcej informacji można znaleźć w Microsoft Entra authentication for Azure Synapse Analytics.

Permissions

Aby używać lub tworzyć identyfikatory logowania Microsoft Entra w wirtualnej bazie danych master, potrzebujesz następujących uprawnień:

  • Uprawnienia administratora Microsoft Entra lub członkostwo w roli serwera loginmanager. Tylko administrator Microsoft Entra może utworzyć pierwszy login Microsoft Entra.
  • Musi być członkiem Microsoft Entra ID w tym samym katalogu używanym przez Azure Synapse Analytics.

Domyślnie nowo utworzonym loginom Microsoft Entra w bazie danych master jest przyznawane uprawnienie VIEW ANY DATABASE.

Składnia podmiotów zabezpieczeń Microsoft Entra

Użyj poniższej składni, aby utworzyć serwer Microsoft Entra i podmioty zabezpieczeń bazy danych oraz zarządzać nimi.

Utwórz login

Ta składnia tworzy login na poziomie serwera na podstawie tożsamości Microsoft Entra. Tylko administrator Microsoft Entra może wykonać to polecenie w wirtualnej master bazie danych.

CREATE LOGIN login_name
  { 
    FROM EXTERNAL PROVIDER [WITH OBJECT_ID = 'objectid'] 
    | WITH <option_list> [,..] 
  }

<option_list> ::=
    PASSWORD = { 'password' }
    [ , SID = sid ]

login_name określa podmiot zabezpieczeń Microsoft Entra, którym jest użytkownik, grupa lub aplikacja Microsoft Entra.

Aby uzyskać więcej informacji, zobacz CREATE LOGIN (Transact-SQL).

Utwórz użytkownika na podstawie loginu

Poniższa składnia języka T-SQL tworzy podmiot zabezpieczeń Microsoft Entra na poziomie bazy danych, skojarzony z logowaniem Microsoft Entra w wirtualnej bazie danych master. Podobnie jak w przypadku składni tworzenia użytkownika Microsoft Entra zawartego w bazie danych, jedyna różnica polega na określeniu FROM LOGIN [login_name], a nie FROM EXTERNAL PROVIDER.

Aby utworzyć użytkownika Entra firmy Microsoft na podstawie nazwy logowania firmy Microsoft Entra, użyj następującej składni.

CREATE USER [user_name] FROM LOGIN [login_name]

Możesz użyć kolumny SID w sys.database_principals, aby odróżnić użytkownika autonomicznej bazy danych Microsoft Entra od użytkownika Microsoft Entra utworzonego na podstawie loginu. W przypadku użytkownika autonomicznej bazy danych element SID jest ciągiem binarnym o długości 16. W przypadku użytkownika opartego na logowaniu parametr SID ma długość 18 z sufiksem AADE .

Uwaga

Dodanie AADE tego sufiksu do SID to sposób, w jaki rozpoznajesz użytkownika Microsoft Entra jako utworzonego na podstawie loginu. Jednak oznacza to również, że SID-y logowania i jego użytkowników nie pokrywają się między sys.server_principals a sys.database_principals. Aby powiązać użytkownika z jego loginem, najpierw musisz usunąć sufiks AADE.

Aby zrozumieć różnicę pojęciową między użytkownikami bazującymi na loginach a użytkownikami autonomicznej bazy danych, zobacz użytkownicy autonomicznej bazy danych.

Aby uzyskać więcej informacji na temat całej składni tworzenia użytkownika, zobacz CREATE USER (Transact-SQL).

Wyłącz lub włącz login, używając ALTER LOGIN

Użyj składni DDL ALTER LOGIN (Transact-SQL), aby włączyć lub wyłączyć login Microsoft Entra w dedykowanej puli SQL usługi Azure Synapse Analytics.

ALTER LOGIN [login_name] DISABLE

Po wyłączeniu logowania podmiot zabezpieczeń serwera nie może się już połączyć. Wyłączenie logowania uniemożliwia również łączenie się z odpowiednimi bazami danych wszystkim podmiotom zabezpieczeń bazy danych (użytkownikom), które utworzono z tego logowania.

Uwaga

  • ALTER LOGIN login_name DISABLE nie może wpływać na użytkowników autonomicznych baz danych, ponieważ nie są powiązani z logowaniami.

  • ALTER LOGIN login_name DISABLE nie jest obsługiwany dla grup Microsoft Entra.

  • Wyłączony indywidualny login nie może należeć do użytkownika będącego częścią grupy logowania utworzonej w bazie danych master (na przykład grupy administratorów Microsoft Entra).

  • Aby zmiany ENABLE lub DISABLE weszły w życie natychmiast, wyczyść pamięć podręczną uwierzytelniania i pamięć podręczną TokenAndPermUserStore, używając następujących poleceń T-SQL:

    DBCC FLUSHAUTHCACHE
    DBCC FREESYSTEMCACHE('TokenAndPermUserStore') WITH NO_INFOMSGS
    

Ograniczenia i uwagi

  • Administrator serwera SQL nie może tworzyć logowań Microsoft Entra ani użytkowników w żadnej bazie danych.
  • Dedykowane pule SQL w przestrzeniach roboczych Azure Synapse Analytics nie używają logicznych serwerów SQL.
  • Administrator SQL lub użytkownik SQL nie może wykonać następujących operacji firmy Microsoft Entra:
    • CREATE LOGIN [bob@contoso.com] FROM EXTERNAL PROVIDER
    • CREATE USER [bob@contoso.com] FROM EXTERNAL PROVIDER
    • EXECUTE AS USER [bob@contoso.com]
    • ALTER AUTHORIZATION ON securable::name TO [bob@contoso.com]
  • Personifikacja głównych podmiotów serwera Microsoft Entra (logowań) nie jest obsługiwana dla Azure Synapse Analytics:
  • Loginy Microsoft Entra nie mogą pokrywać się z loginem administratora Microsoft Entra. Administrator firmy Microsoft Entra ma pierwszeństwo przed każdym logowaniem. Jeśli konto Microsoft Entra ma już dostęp do serwera jako administrator firmy Microsoft Entra, indywidualnie lub w ramach grupy, żadne dane logowania utworzone dla tego konta nie będą miały żadnego wpływu. Jednak tworzenie loginu nie jest blokowane za pomocą języka T-SQL. Po uwierzytelnieniu konta na serwerze login ma skuteczne uprawnienia administratora Microsoft Entra, a nie nowo utworzonego loginu.
  • Zmiana uprawnień na konkretnym obiekcie logowania Microsoft Entra nie jest obsługiwana:
    • GRANT <PERMISSION> ON LOGIN :: <Microsoft Entra account> TO <Any other login>
  • Gdy zmieniasz uprawnienia dla logowania do Microsoft Entra, domyślnie zmiany wchodzą w życie dopiero następnym razem, gdy logowanie połączy się z dedykowaną pulą SQL. Wszelkie istniejące otwarte połączenia z tym loginem pozostają bez zmian. Aby wymusić natychmiastowe wprowadzenie zmian uprawnień, możesz ręcznie wyczyścić uwierzytelnianie i tokenAndPermUserStore, zgodnie z opisem we wcześniejszej sekcji wyłącz lub włącz logowanie przy użyciu polecenia ALTER LOGIN. To zachowanie ma zastosowanie również podczas wprowadzania zmian członkostwa w roli serwera za pomocą FUNKCJI ALTER SERVER ROLE.
  • W programie SQL Server Management Studio polecenie skryptowe do utworzenia użytkownika nie sprawdza, czy istnieje już logowanie Microsoft Entra w master pod tą samą nazwą. Zawsze generuje on język T-SQL dla zawartej bazy danych Microsoft Entra użytkownika.
  • Jeśli próbujesz utworzyć login lub użytkownika na podstawie nazwy głównej usługi z nieunikatową nazwą wyświetlaną, może wystąpić błąd. Więcej informacji na temat łagodzenia tego błędu można znaleźć w sekcji Rozważania dotyczące nazw.
  • Użytkownicy baz danych utworzoni za pomocą logowania Microsoft Entra mogą doświadczać opóźnień przy otrzymaniu ról i uprawnień. Jeśli napotkasz ten problem, użyj następujących poleceń:
    • Usuń użytkownika z bazy danych użytkownika.
    • Wykonaj DBCC FREESYSTEMCACHE('TokenAndPermUserStore'), aby wyczyścić bufory zabezpieczeń w bazie danych.
    • Wykonaj polecenie DBCC FLUSHAUTHCACHE , aby wyczyścić pamięć podręczną kontekstu uwierzytelniania federacyjnego.
    • Utwórz użytkownika na podstawie nazwy logowania.

Ograniczenia podmiotu zabezpieczeń serwera dla grupy Microsoft Entra

Następujące ograniczenia dotyczą grupowych loginów Microsoft Entra w Azure Synapse Analytics:

  • Role serwera nie są obsługiwane dla grup Microsoft Entra.
  • Jeśli administrator SQL to grupa Microsoft Entra, użytkownicy tej grupy napotykają pewne ograniczenia podczas łączenia się. Każdy użytkownik Microsoft Entra nie jest indywidualnie wymieniony w sys.server_principals tabeli. To ograniczenie ma różne konsekwencje, w tym wywołania do SUSER_SID, które zwracają NULL.
  • Logowania użytkowników Microsoft Entra, które są częścią grupowych logowań Microsoft Entra, nie są tworzone niejawnie. Ci użytkownicy nie mają domyślnego schematu i nie mogą wykonywać operacji, na przykład CREATE SCHEMA dopóki nie utworzysz logowania dla użytkownika Microsoft Entra lub nie przypiszesz domyślnego schematu do grupy.
  • Nie możesz ustawić grupy Microsoft Entra jako właściciela bazy danych.
    • ALTER AUTHORIZATION ON database::<mydb> TO [my_aad_group] kończy się niepowodzeniem z komunikatem o błędzie:

      Msg 33181, Level 16, State 1, Line 4
      The new owner cannot be Azure Active Directory group.
      

Następne kroki