Używanie identyfikatora Entra firmy Microsoft do uwierzytelniania za pomocą bazy danych PostgreSQL

DOTYCZY: Azure Database for PostgreSQL — pojedynczy serwer

Ważne

Usługa Azure Database for PostgreSQL — pojedynczy serwer znajduje się na ścieżce wycofania. Zdecydowanie zalecamy uaktualnienie do usługi Azure Database for PostgreSQL — serwer elastyczny. Aby uzyskać więcej informacji na temat migracji do usługi Azure Database for PostgreSQL — serwer elastyczny, zobacz Co się dzieje z usługą Azure Database for PostgreSQL — pojedynczy serwer?.

W tym artykule przedstawiono procedurę konfigurowania dostępu do identyfikatora entra firmy Microsoft za pomocą usługi Azure Database for PostgreSQL oraz sposobu nawiązywania połączenia przy użyciu tokenu entra firmy Microsoft.

Ustawianie użytkownika Administracja firmy Microsoft

Tylko użytkownicy administratorów firmy Microsoft Entra mogą tworzyć/włączać użytkowników na potrzeby uwierzytelniania opartego na identyfikatorze Entra firmy Microsoft. Zalecamy, aby nie używać administratora firmy Microsoft Entra na potrzeby regularnych operacji bazy danych, ponieważ ma podwyższony poziom uprawnień użytkownika (np. CREATEDB).

Aby ustawić administratora firmy Microsoft Entra (możesz użyć użytkownika lub grupy), wykonaj następujące kroki

  1. W witrynie Azure Portal wybierz wystąpienie usługi Azure Database for PostgreSQL, które chcesz włączyć dla identyfikatora Entra firmy Microsoft.
  2. W obszarze Ustawienia wybierz pozycję Active Directory Administracja:

set Microsoft Entra administrator

  1. Wybierz prawidłowego użytkownika microsoft Entra w dzierżawie klienta, aby być administratorem firmy Microsoft Entra.

Ważne

Podczas ustawiania administratora nowy użytkownik jest dodawany do serwera usługi Azure Database for PostgreSQL z pełnymi uprawnieniami administratora. Użytkownik usługi Microsoft Entra Administracja w usłudze Azure Database for PostgreSQL będzie miał rolę azure_ad_admin. Tylko jeden administrator firmy Microsoft Entra można utworzyć na serwer PostgreSQL, a wybór innego spowoduje zastąpienie istniejącego administratora firmy Microsoft Entra skonfigurowanego dla serwera. Możesz określić grupę Entra firmy Microsoft zamiast pojedynczego użytkownika, aby mieć wielu administratorów.

Tylko jeden administrator firmy Microsoft Entra można utworzyć na serwer PostgreSQL, a wybór innego spowoduje zastąpienie istniejącego administratora firmy Microsoft Entra skonfigurowanego dla serwera. Możesz określić grupę Entra firmy Microsoft zamiast pojedynczego użytkownika, aby mieć wielu administratorów. Pamiętaj, że następnie zalogujesz się przy użyciu nazwy grupy do celów administracyjnych.

Połączenie do usługi Azure Database for PostgreSQL przy użyciu identyfikatora Entra firmy Microsoft

Poniższy diagram wysokiego poziomu podsumowuje przepływ pracy korzystania z uwierzytelniania firmy Microsoft Entra w usłudze Azure Database for PostgreSQL:

przepływ uwierzytelniania

Zaprojektowaliśmy integrację firmy Microsoft Entra z typowymi narzędziami PostgreSQL, takimi jak psql, które nie są świadome firmy Microsoft i obsługują tylko określanie nazwy użytkownika i hasła podczas nawiązywania połączenia z bazą danych PostgreSQL. Przekazujemy token Microsoft Entra jako hasło, jak pokazano na powyższej ilustracji.

Obecnie przetestowaliśmy następujących klientów:

  • psql commandline (użyj zmiennej PGPASSWORD, aby przekazać token, zobacz krok 3, aby uzyskać więcej informacji)
  • Azure Data Studio (przy użyciu rozszerzenia PostgreSQL)
  • Inni klienci oparty na libpq (np. typowe struktury aplikacji i orms)
  • Pg Administracja (usuń zaznaczenie pola wyboru Połącz teraz podczas tworzenia serwera. Aby uzyskać więcej informacji, zobacz krok 4)

Poniżej przedstawiono kroki, które użytkownik/aplikacja musi wykonać uwierzytelnianie za pomocą identyfikatora Entra firmy Microsoft opisanego poniżej:

Wymagania wstępne

Możesz wykonać czynności opisane w usłudze Azure Cloud Shell, maszynie wirtualnej platformy Azure lub na maszynie lokalnej. Upewnij się, że masz zainstalowany interfejs wiersza polecenia platformy Azure.

Uwierzytelnianie przy użyciu identyfikatora Entra firmy Microsoft jako pojedynczego użytkownika

Krok 1. Logowanie do subskrypcji platformy Azure użytkownika

Zacznij od uwierzytelnienia przy użyciu identyfikatora Entra firmy Microsoft przy użyciu narzędzia interfejsu wiersza polecenia platformy Azure. Ten krok nie jest wymagany w usłudze Azure Cloud Shell.

az login

Polecenie spowoduje uruchomienie okna przeglądarki na stronie uwierzytelniania Firmy Microsoft Entra. Wymaga to podania identyfikatora użytkownika firmy Microsoft Entra i hasła.

Krok 2. Pobieranie tokenu dostępu firmy Microsoft Entra

Wywołaj narzędzie interfejsu wiersza polecenia platformy Azure, aby uzyskać token dostępu dla uwierzytelnionego użytkownika firmy Microsoft z kroku 1, aby uzyskać dostęp do usługi Azure Database for PostgreSQL.

Przykład (dla chmury publicznej):

az account get-access-token --resource https://ossrdbms-aad.database.windows.net

Powyższa wartość zasobu musi być określona dokładnie tak, jak pokazano. W przypadku innych chmur można wyszukać wartość zasobu przy użyciu:

az cloud show

W przypadku interfejsu wiersza polecenia platformy Azure w wersji 2.0.71 lub nowszej można określić polecenie w następującej wygodniejszej wersji dla wszystkich chmur:

az account get-access-token --resource-type oss-rdbms

Po pomyślnym uwierzytelnieniu identyfikator Entra firmy Microsoft zwróci token dostępu:

{
  "accessToken": "TOKEN",
  "expiresOn": "...",
  "subscription": "...",
  "tenant": "...",
  "tokenType": "Bearer"
}

Token jest ciągiem base 64, który koduje wszystkie informacje o uwierzytelnianym użytkowniku i który jest przeznaczony dla usługi Azure Database for PostgreSQL.

Krok 3. Używanie tokenu jako hasła do logowania przy użyciu narzędzia psql klienta

Podczas nawiązywania połączenia należy użyć tokenu dostępu jako hasła użytkownika postgreSQL.

W przypadku korzystania z psql klienta wiersza polecenia token dostępu należy przekazać za pośrednictwem PGPASSWORD zmiennej środowiskowej, ponieważ token dostępu przekracza długość hasła, która psql może akceptować bezpośrednio:

Przykład systemu Windows:

set PGPASSWORD=<copy/pasted TOKEN value from step 2>
$env:PGPASSWORD='<copy/pasted TOKEN value from step 2>'

Przykład systemu Linux/macOS:

export PGPASSWORD=<copy/pasted TOKEN value from step 2>

Teraz możesz zainicjować połączenie z usługą Azure Database for PostgreSQL, tak jak zwykle:

psql "host=mydb.postgres... user=user@tenant.onmicrosoft.com@mydb dbname=postgres sslmode=require"

Krok 4. Używanie tokenu jako hasła do logowania przy użyciu narzędzia Pg Administracja

Aby nawiązać połączenie przy użyciu tokenu Microsoft Entra za pomocą narzędzia pg Administracja należy wykonać następujące kroki:

  1. Usuń zaznaczenie opcji Połącz teraz podczas tworzenia serwera.
  2. Wprowadź szczegóły serwera na karcie połączenie i zapisz.
  3. Z menu przeglądarki wybierz pozycję Połącz z serwerem usługi Azure Database for PostgreSQL
  4. Wprowadź hasło tokenu usługi AD po wyświetleniu monitu.

Ważne zagadnienia dotyczące nawiązywania połączenia:

  • user@tenant.onmicrosoft.com to nazwa użytkownika Microsoft Entra
  • Upewnij się, że używasz dokładnego sposobu pisowni użytkownika platformy Azure — ponieważ w nazwach użytkowników i grup firmy Microsoft jest rozróżniana wielkość liter.
  • Jeśli nazwa zawiera spacje, użyj \ przed każdą spacją, aby ją uniknąć.
  • Ważność tokenu dostępu wynosi od 5 minut do 60 minut. Zalecamy uzyskanie tokenu dostępu tuż przed zainicjowaniem logowania do usługi Azure Database for PostgreSQL.

Teraz uwierzytelniono się na serwerze usługi Azure Database for PostgreSQL przy użyciu uwierzytelniania firmy Microsoft Entra.

Uwierzytelnianie przy użyciu identyfikatora Entra firmy Microsoft jako członka grupy

Krok 1. Tworzenie grup entra firmy Microsoft w usłudze Azure Database for PostgreSQL

Aby włączyć grupę Microsoft Entra w celu uzyskania dostępu do bazy danych, użyj tego samego mechanizmu co dla użytkowników, ale zamiast tego określ nazwę grupy:

Przykład:

CREATE USER <new_user> IN ROLE azure_ad_user;

Podczas logowania członkowie grupy będą używać osobistych tokenów dostępu, ale podpisują się przy użyciu nazwy grupy określonej jako nazwa użytkownika.

Krok 2. Logowanie do subskrypcji platformy Azure użytkownika

Uwierzytelnianie przy użyciu identyfikatora Entra firmy Microsoft przy użyciu narzędzia interfejsu wiersza polecenia platformy Azure. Ten krok nie jest wymagany w usłudze Azure Cloud Shell. Użytkownik musi być członkiem grupy Microsoft Entra.

az login

Krok 3. Pobieranie tokenu dostępu firmy Microsoft Entra

Wywołaj narzędzie interfejsu wiersza polecenia platformy Azure, aby uzyskać token dostępu dla uwierzytelnionego użytkownika firmy Microsoft z kroku 2, aby uzyskać dostęp do usługi Azure Database for PostgreSQL.

Przykład (dla chmury publicznej):

az account get-access-token --resource https://ossrdbms-aad.database.windows.net

Powyższa wartość zasobu musi być określona dokładnie tak, jak pokazano. W przypadku innych chmur można wyszukać wartość zasobu przy użyciu:

az cloud show

W przypadku interfejsu wiersza polecenia platformy Azure w wersji 2.0.71 lub nowszej można określić polecenie w następującej wygodniejszej wersji dla wszystkich chmur:

az account get-access-token --resource-type oss-rdbms

Po pomyślnym uwierzytelnieniu identyfikator Entra firmy Microsoft zwróci token dostępu:

{
  "accessToken": "TOKEN",
  "expiresOn": "...",
  "subscription": "...",
  "tenant": "...",
  "tokenType": "Bearer"
}

Krok 4. Używanie tokenu jako hasła do logowania przy użyciu narzędzia psql lub Pg Administracja (zobacz powyższe kroki dotyczące połączenia użytkownika)

Ważne zagadnienia dotyczące nawiązywania połączenia jako członka grupy:

  • groupname@mydb to nazwa grupy Microsoft Entra, z którą próbujesz nawiązać połączenie
  • Zawsze dołączaj nazwę serwera po nazwie użytkownika/grupy firmy Microsoft (np. @mydb)
  • Upewnij się, że używasz dokładnego sposobu pisowni nazwy grupy Entra firmy Microsoft.
  • W nazwach użytkowników i grup firmy Microsoft jest uwzględniana wielkość liter
  • Podczas nawiązywania połączenia jako grupy użyj tylko nazwy grupy (np. GroupName@mydb), a nie aliasu członka grupy.
  • Jeśli nazwa zawiera spacje, użyj \ przed każdą spacją, aby ją zamknąć.
  • Ważność tokenu dostępu wynosi od 5 minut do 60 minut. Zalecamy uzyskanie tokenu dostępu tuż przed zainicjowaniem logowania do usługi Azure Database for PostgreSQL.

Teraz uwierzytelniono się na serwerze PostgreSQL przy użyciu uwierzytelniania firmy Microsoft Entra.

Tworzenie użytkowników usługi Microsoft Entra w usłudze Azure Database for PostgreSQL

Aby dodać użytkownika usługi Microsoft Entra do bazy danych usługi Azure Database for PostgreSQL, wykonaj następujące kroki po nawiązaniu połączenia (zobacz późniejszą sekcję dotyczącą nawiązywania połączenia):

  1. Najpierw upewnij się, że użytkownik <user>@yourtenant.onmicrosoft.com Microsoft Entra jest prawidłowym użytkownikiem w dzierżawie firmy Microsoft Entra.
  2. Zaloguj się do wystąpienia usługi Azure Database for PostgreSQL jako użytkownik microsoft Entra Administracja.
  3. Tworzenie roli <user>@yourtenant.onmicrosoft.com w usłudze Azure Database for PostgreSQL.
  4. Utwórz <user>@yourtenant.onmicrosoft.com członka roli azure_ad_user. Musi to być podane tylko użytkownikom firmy Microsoft Entra.

Przykład:

CREATE USER "user1@yourtenant.onmicrosoft.com" IN ROLE azure_ad_user;

Uwaga

Uwierzytelnianie użytkownika za pomocą identyfikatora Entra firmy Microsoft nie daje użytkownikowi żadnych uprawnień dostępu do obiektów w bazie danych usługi Azure Database for PostgreSQL. Musisz przyznać użytkownikowi wymagane uprawnienia ręcznie.

Walidacja tokenu

Uwierzytelnianie w usłudze Microsoft Entra w usłudze Azure Database for PostgreSQL zapewnia, że użytkownik istnieje na serwerze PostgreSQL i sprawdza ważność tokenu, sprawdzając zawartość tokenu. Są wykonywane następujące kroki weryfikacji tokenu:

  • Token jest podpisany przez identyfikator Entra firmy Microsoft i nie został naruszony
  • Token został wystawiony przez identyfikator Entra firmy Microsoft dla dzierżawy skojarzonej z serwerem
  • Token nie wygasł
  • Token jest przeznaczony dla zasobu usługi Azure Database for PostgreSQL (a nie innego zasobu platformy Azure)

Migrowanie istniejących użytkowników postgreSQL do uwierzytelniania opartego na identyfikatorze Entra firmy Microsoft

Możesz włączyć uwierzytelnianie firmy Microsoft Entra dla istniejących użytkowników. Należy wziąć pod uwagę dwa przypadki:

Przypadek 1: Nazwa użytkownika postgreSQL jest zgodna z główną nazwą użytkownika firmy Microsoft Entra

W mało prawdopodobnym przypadku, gdy istniejący użytkownicy są już zgodni z nazwami użytkowników firmy Microsoft Entra, możesz przyznać azure_ad_user im rolę, aby umożliwić im uwierzytelnianie firmy Microsoft Entra:

GRANT azure_ad_user TO "existinguser@yourtenant.onmicrosoft.com";

Teraz będą mogli zalogować się przy użyciu poświadczeń firmy Microsoft Entra zamiast używać wcześniej skonfigurowanego hasła użytkownika postgreSQL.

Przypadek 2: Nazwa użytkownika postgreSQL różni się od głównej nazwy użytkownika firmy Microsoft Entra

Jeśli użytkownik postgreSQL nie istnieje w identyfikatorze Entra firmy Microsoft lub ma inną nazwę użytkownika, możesz użyć grup Microsoft Entra do uwierzytelniania jako ten użytkownik PostgreSQL. Istniejące użytkowników usługi Azure Database for PostgreSQL można migrować do identyfikatora Entra firmy Microsoft, tworząc grupę Entra firmy Microsoft z nazwą zgodną z użytkownikiem postgreSQL, a następnie udzielając roli azure_ad_user istniejącemu użytkownikowi postgreSQL:

GRANT azure_ad_user TO <new_user>;

Założono, że utworzono grupę "DBReadUser" w identyfikatorze Entra firmy Microsoft. Użytkownicy należący do tej grupy będą teraz mogli logować się do bazy danych jako ten użytkownik.

Następne kroki