Podmioty zabezpieczeń serwera Microsoft Entra

Dotyczy:Azure SQL Database Azure SQL Managed InstanceAzure Synapse Analytics (tylko dedykowane pule SQL)

Teraz można tworzyć i wykorzystywać jednostki serwera z Microsoft Entra ID (dawniej Azure Active Directory), które są identyfikatorami logowania w wirtualnej master bazie danych Azure SQL Database i Azure SQL Managed Instance.

Uwaga

Podmioty zabezpieczeń serwera Microsoft Entra (loginy) są już ogólnie dostępne w Azure SQL Database, Azure SQL Managed Instance oraz SQL Server 2022 i nowszych wersjach. Jednostki główne serwera Microsoft Entra są obecnie dostępne w publicznej wersji zapoznawczej w usłudze Azure Synapse Analytics.

Istnieje kilka korzyści z używania podmiotów zabezpieczeń serwera Firmy Microsoft z zasobem usługi Azure SQL:

  • Obsługa ról serwera usługi Azure SQL Database na potrzeby zarządzania uprawnieniami.
  • Obsługa wielu użytkowników firmy Microsoft Entra z rolami specjalnymi dla usługi SQL Database, takich jak loginmanager i dbmanager .
  • Równorzędność funkcjonalna między logowaniami SQL i logowaniami Microsoft Entra.
  • Zwiększ obsługę usprawnień funkcjonalnych, takich jak wykorzystanie uwierzytelniania wyłącznie za pomocą usługi Microsoft Entra. Uwierzytelnianie wyłącznie za pomocą usługi Microsoft Entra umożliwia wyłączenie uwierzytelniania SQL, w tym administratora serwera SQL, loginów SQL i użytkowników.
  • Umożliwia jednostkom firmy Microsoft Entra obsługę replik geograficznych. Podmioty zabezpieczeń firmy Microsoft mogą łączyć się z repliką geograficzną bazy danych użytkownika z uprawnieniami tylko do odczytu i odmowy dostępu do serwera podstawowego.
  • 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.

Aby uzyskać więcej informacji na temat uwierzytelniania entra firmy Microsoft w usłudze Azure SQL, zobacz Używanie uwierzytelniania entra firmy Microsoft.

Uprawnienia

Następujące uprawnienia są wymagane do korzystania lub tworzenia logowań firmy Microsoft w wirtualnej master bazie danych.

  • Uprawnienia administratora Microsoft Entra lub członkostwo w roli serwera loginmanager. Pierwszy identyfikator logowania firmy Microsoft Entra można utworzyć tylko przez administratora firmy Microsoft Entra.
  • Musi być członkiem identyfikatora Entra firmy Microsoft w tym samym katalogu używanym dla usługi Azure SQL Database.

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 firmy 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 sufiksu AADE do identyfikatora SID pozwala rozpoznać, że użytkownik Microsoft Entra został utworzony na podstawie logowania. Oznacza to jednak również, że identyfikatory SID dla loginu i jego użytkowników nie są zgodne między sys.server_principals a sys.database_principals. Aby powiązać użytkownika z jego loginem, należy najpierw 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łączanie lub włączanie logowania przy użyciu polecenia ALTER LOGIN

Składnia DDL ALTER LOGIN (Transact-SQL) służy do włączania lub wyłączania logowania usługi Microsoft Entra w usłudze Azure SQL Database.

ALTER LOGIN [login_name] DISABLE 

Gdy logowanie jest wyłączone, połączenia nie są już dozwolone przy użyciu tej jednostki serwera. Powoduje to również wyłączenie wszystkich podmiotów zabezpieczeń w bazie danych (użytkowników) utworzonych z tego identyfikatora logowania, uniemożliwiając im łączenie się z przypisanymi im bazami danych.

Uwaga

  • ALTER LOGIN login_name DISABLE nie wpłynie na użytkowników autonomicznej bazy danych, ponieważ nie są oni skojarzeni z logowaniami.

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

  • Indywidualne wyłączone logowanie nie może należeć do użytkownika, który jest częścią grupy logowania utworzonej master w bazie danych (na przykład grupy administracyjnej firmy Microsoft Entra).

  • DISABLE ENABLE Aby zmiany zaczęły obowiązywać natychmiast, pamięć podręczna uwierzytelniania i pamięć podręczna TokenAndPermUserStore muszą zostać wyczyszczone przy użyciu poleceń języka T-SQL.

    DBCC FLUSHAUTHCACHE
    DBCC FREESYSTEMCACHE('TokenAndPermUserStore') WITH NO_INFOMSGS 
    

Role podmiotów zabezpieczeń Microsoft Entra

Role specjalne dla usługi SQL Database można przypisać do użytkowników w wirtualnej master bazie danych dla podmiotów zabezpieczeń firmy Microsoft, w tym dbmanager i loginmanager.

Role serwera usługi Azure SQL Database można przypisać do logowań w wirtualnej master bazie danych.

Aby zapoznać się z samouczkiem dotyczącym sposobu udzielania tych ról, zobacz Samouczek: tworzenie i używanie identyfikatorów logowania do serwera Microsoft Entra.

Ograniczenia i uwagi

  • Administrator serwera SQL nie może tworzyć logowań Microsoft Entra ani użytkowników w żadnej bazie danych.
  • 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]
  • Podszywanie się pod podmioty zabezpieczeń serwera Microsoft Entra (logowania) nie jest obsługiwane w usłudze Azure SQL Database i Azure Synapse Analytics. Jest on obsługiwany w przypadku usługi SQL Managed Instance:
  • 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 będzie miał efektywne uprawnienia administratora Microsoft Entra, a nie nowo utworzonego loginu.
  • Zmiana uprawnień dla określonego obiektu logowania entra firmy Microsoft nie jest obsługiwana:
    • GRANT <PERMISSION> ON LOGIN :: <Microsoft Entra account> TO <Any other login>
  • Gdy zmienisz uprawnienia logowania do usługi Microsoft Entra, zmiany zostaną zastosowane dopiero przy następnym połączeniu logowania z usługą Azure SQL Database. 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. Aby uzyskać więcej informacji na temat łagodzenia skutków tego błędu, zobacz Identyfikatory logowania Microsoft Entra i użytkownicy z nieunikatowymi nazwami wyświetlanymi.
  • W usługach Azure SQL Database i Azure Synapse Analytics użytkownicy bazy danych utworzeni przy użyciu logowania Microsoft Entra mogą doświadczyć opóźnień podczas przyznawania ról i uprawnień. Jeśli wystąpi to, użyj następujących poleceń, aby rozwiązać ten problem:
    • 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

Poniżej przedstawiono znane ograniczenia dotyczące logowań Microsoft Entra grup w Azure SQL Database i Azure Synapse Analytics:

  • Role serwera usługi Azure SQL Database nie są obsługiwane dla grup Microsoft Entra.
  • Jeśli administrator SQL jest grupą Microsoft Entra, istnieją pewne ograniczenia, gdy użytkownicy tej grupy nawiązują połączenie. Każdy użytkownik firmy Microsoft Entra indywidualnie nie jest częścią sys.server_principals tabeli. Ma to różne konsekwencje, w tym wywołania do SUSER_SID zwracające NULL.
  • Identyfikatory logowania użytkowników firmy Microsoft Entra, które są częścią identyfikatorów logowania grupy Entra firmy Microsoft, również nie są tworzone niejawnie, co oznacza, że nie będą miały domyślnego schematu i nie będą mogły wykonywać operacji, takich jak CREATE SCHEMA do momentu utworzenia logowania użytkownika Microsoft Entra lub do grupy zostanie przypisany domyślny schemat.
  • Zmiana własności bazy danych na grupę Firmy Microsoft Entra jako właściciela bazy danych nie jest obsługiwana.
    • 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