Identyfikatory logowania i użytkownicy firmy Microsoft z nazwami wyświetlanymi bez nazwy
Dotyczy: Azure SQL DatabaseAzure SQL Managed Instance
Użycie jednostki usługi z nazwą wyświetlaną, która nie jest unikatowa w identyfikatorze Entra firmy Microsoft, prowadzi do błędów podczas tworzenia identyfikatora logowania lub użytkownika w usłudze Azure SQL. Jeśli na przykład aplikacja myapp
nie jest unikatowa, podczas wykonywania następującej instrukcji języka T-SQL może wystąpić następujący błąd:
CREATE LOGIN [myapp] FROM EXTERNAL PROVIDER
Msg 33131, Level 16, State 1, Line 4
Principal 'myapp' has a duplicate display name. Make the display name unique in Azure Active Directory and execute this statement again.
WITH OBJECT_ID
Rozszerzenie
Ten błąd występuje, ponieważ identyfikator Entra firmy Microsoft zezwala na zduplikowane nazwy wyświetlane dla aplikacji Entra firmy Microsoft (jednostki usługi), podczas gdy usługa Azure SQL wymaga unikatowych nazw w celu utworzenia identyfikatorów logowania i użytkowników usługi Microsoft Entra. Aby rozwiązać ten problem, instrukcja Języka definicji danych (DDL) w celu utworzenia identyfikatorów logowania i użytkowników została rozszerzona w celu uwzględnienia identyfikatora obiektu zasobu platformy Azure z klauzulą WITH OBJECT_ID
.
Uwaga
Rozszerzenie WITH OBJECT_ID
jest obecnie w publicznej wersji zapoznawczej.
Większość nazw wyświetlanych innych niż w identyfikatorze Entra firmy Microsoft jest związana z jednostkami usługi, ale czasami nazwy grup mogą być również inne niż. Główne nazwy użytkowników firmy Microsoft Entra są unikatowe, ponieważ dwóch użytkowników nie może mieć tego samego podmiotu zabezpieczeń użytkownika. Można jednak utworzyć rejestrację aplikacji (jednostkę usługi) przy użyciu nazwy wyświetlanej, która jest taka sama jak główna nazwa użytkownika.
Jeśli nazwa wyświetlana jednostki usługi nie jest duplikatem, należy użyć domyślnej CREATE LOGIN
instrukcji lub CREATE USER
. Rozszerzenie WITH OBJECT_ID
jest w publicznej wersji zapoznawczej i jest elementem naprawy rozwiązywania problemów zaimplementowanym do użytku z jednostkami usługi bez obsługi. Używanie jej z unikatową jednostką usługi nie jest konieczne. WITH OBJECT_ID
Użycie rozszerzenia dla jednostki usługi bez dodawania sufiksu zostanie uruchomione pomyślnie, ale nie będzie oczywiste, dla której jednostki usługi utworzono nazwę logowania lub użytkownika. Zaleca się utworzenie aliasu przy użyciu sufiksu w celu unikatowego zidentyfikowania jednostki usługi. Rozszerzenie WITH OBJECT_ID
nie jest obsługiwane w przypadku programu SQL Server.
T-SQL create login/user syntax for nonunique display names (Tworzenie składni logowania/użytkownika dla nazw wyświetlanych innych niż nazwa wyświetlana)
CREATE LOGIN [login_name] FROM EXTERNAL PROVIDER
WITH OBJECT_ID = 'objectid'
CREATE USER [user_name] FROM EXTERNAL PROVIDER
WITH OBJECT_ID = 'objectid'
Za pomocą rozszerzenia T-SQL DDL do tworzenia identyfikatorów logowania lub użytkowników z identyfikatorem obiektu można uniknąć błędu 33131 , a także określić alias logowania lub użytkownika utworzonego za pomocą identyfikatora obiektu. Na przykład następujące elementy spowodują utworzenie identyfikatora logowania myapp4466e
przy użyciu identyfikatora 4466e2f8-0fea-4c61-a470-xxxxxxxxxxxx
obiektu aplikacji .
CREATE LOGIN [myapp4466e] FROM EXTERNAL PROVIDER
WITH OBJECT_ID = '4466e2f8-0fea-4c61-a470-xxxxxxxxxxxx'
- Aby wykonać powyższe zapytanie, określony identyfikator obiektu musi istnieć w dzierżawie firmy Microsoft Entra, w której znajduje się zasób usługi Azure SQL.
CREATE
W przeciwnym razie polecenie zakończy się niepowodzeniem z komunikatem o błędzie:Msg 37545, Level 16, State 1, Line 1 '' is not a valid object id for '' or you do not have permission.
- Nazwa logowania lub użytkownika musi zawierać oryginalną nazwę główną usługi rozszerzoną przez sufiks zdefiniowany przez użytkownika podczas korzystania z instrukcji
CREATE LOGIN
orCREATE USER
. Najlepszym rozwiązaniem jest to, że sufiks może zawierać początkową część identyfikatora obiektu. Na przykładmyapp2ba6c
dla identyfikatora2ba6c0a3-cda4-4878-a5ca-xxxxxxxxxxxx
obiektu . Można jednak również zdefiniować sufiks niestandardowy. Tworzenie sufiksu z identyfikatora obiektu nie jest wymagane.
Ta konwencja nazewnictwa jest zalecana, aby jawnie skojarzyć użytkownika bazy danych lub zalogować się z powrotem do jego obiektu w identyfikatorze Entra firmy Microsoft.
Uwaga
Alias jest zgodny ze specyfikacją języka T-SQL dla sysname
, w tym maksymalną długość 128 znaków. Zalecamy ograniczenie sufiksu do pierwszych 5 znaków identyfikatora obiektu.
Nazwa wyświetlana jednostki usługi w identyfikatorze Entra firmy Microsoft nie jest synchronizowana z nazwą logowania bazy danych ani aliasem użytkownika. Uruchomienie CREATE LOGIN
lub CREATE USER
nie wpłynie na nazwę wyświetlaną w witrynie Azure Portal. Podobnie modyfikowanie nazwy wyświetlanej identyfikatora entra firmy Microsoft nie wpłynie na alias logowania lub użytkownika bazy danych.
Identyfikowanie użytkownika utworzonego dla aplikacji
W przypadku niepowiązanych jednostek usługi ważne jest, aby sprawdzić, czy alias firmy Microsoft Entra jest powiązany z poprawną aplikacją. Aby sprawdzić, czy użytkownik został utworzony dla poprawnej jednostki usługi (aplikacji):
Pobierz identyfikator aplikacji lub identyfikator obiektu grupy Microsoft Entra od użytkownika utworzonego w usłudze SQL Database. Zobacz następujące zapytania:
Aby uzyskać identyfikator aplikacji jednostki usługi utworzonej przez użytkownika, wykonaj następujące zapytanie:
SELECT CAST(sid as uniqueidentifier) ApplicationID, create_date FROM sys.server_principals WHERE NAME = 'myapp2ba6c'
Przykładowe wyjście:
Identyfikator aplikacji jest konwertowany z numeru identyfikacyjnego zabezpieczeń (SID) dla określonej nazwy logowania lub użytkownika, którą możemy potwierdzić, wykonując poniższe zapytanie i porównując ostatnie kilka cyfr i tworząc daty:
SELECT SID, create_date FROM sys.server_principals WHERE NAME = 'myapp2ba6c'
Przykładowe wyjście:
Aby uzyskać identyfikator obiektu grupy Microsoft Entra utworzonej przez użytkownika, wykonaj następujące zapytanie:
SELECT CAST(sid as uniqueidentifier) ObjectID, createdate FROM sys.sysusers WHERE NAME = 'myappgroupd3451b'
Przykładowe wyjście:
Aby sprawdzić identyfikator SID grupy Microsoft Entra utworzonej przez użytkownika, wykonaj następujące zapytanie:
SELECT SID, createdate FROM sys.sysusers WHERE NAME = 'myappgroupd3451b'
Przykładowe wyjście:
Aby uzyskać identyfikator obiektu i identyfikator aplikacji przy użyciu programu PowerShell, wykonaj następujące polecenie:
Get-AzADApplication -DisplayName "myapp2ba6c"
Przejdź do witryny Azure Portal, a następnie w aplikacji dla przedsiębiorstw lub zasobu grupy Microsoft Entra sprawdź odpowiednio identyfikator aplikacji lub identyfikator obiektu. Sprawdź, czy jest on zgodny z tym, który został uzyskany z powyższego zapytania.
Uwaga
Podczas tworzenia użytkownika na podstawie jednostki usługi identyfikator obiektu jest wymagany podczas używania WITH OBJECT_ID
klauzuli z instrukcją CREATE
języka T-SQL. Różni się to od identyfikatora aplikacji zwracanego podczas próby zweryfikowania aliasu w usłudze Azure SQL. Korzystając z tego procesu weryfikacji, można zidentyfikować jednostkę usługi lub grupę skojarzona z aliasem SQL w identyfikatorze Entra firmy Microsoft i zapobiec ewentualnym błędom podczas tworzenia identyfikatorów logowania lub użytkowników z identyfikatorem obiektu.
Znajdowanie odpowiedniego identyfikatora obiektu
Aby uzyskać informacje na temat identyfikatora obiektu jednostki usługi, zobacz Obiekt jednostki usługi. Identyfikator obiektu jednostki usługi znajduje się obok nazwy aplikacji w witrynie Azure Portal w obszarze Aplikacje dla przedsiębiorstw.
Ostrzeżenie
Identyfikator obiektu uzyskany na stronie Przegląd rejestracji aplikacji różni się od identyfikatora obiektu uzyskanego na stronie Przegląd aplikacji dla przedsiębiorstw. Jeśli jesteś na stronie Przegląd rejestracji aplikacji, wybierz połączoną aplikację zarządzaną w nazwie aplikacji katalogu lokalnego, aby przejść do odpowiedniego identyfikatora obiektu na stronie Przegląd aplikacji dla przedsiębiorstw.
Powiązana zawartość
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla