Udostępnij za pomocą


Używanie identyfikatora Entra firmy Microsoft do uwierzytelniania w usłudze Azure Database for PostgreSQL

W tym artykule skonfigurujesz dostęp do identyfikatora entra firmy Microsoft na potrzeby uwierzytelniania za pomocą usługi Azure Database for PostgreSQL. Dowiesz się również, jak używać tokenu Entra firmy Microsoft z elastycznym wystąpieniem serwera usługi Azure Database for PostgreSQL.

Można skonfigurować uwierzytelnianie Microsoft Entra dla wystąpienia elastycznego serwera usługi Azure Database for PostgreSQL podczas aprowizacji serwera albo później. Tylko użytkownicy administratora firmy Microsoft Entra mogą tworzyć lub włączać użytkowników na potrzeby uwierzytelniania opartego na identyfikatorze Entra firmy Microsoft. Nie używaj administratora firmy Microsoft Entra do wykonywania zwykłych operacji bazy danych, ponieważ ta rola ma podwyższony poziom uprawnień użytkownika (na przykład CREATEDB).

W usłudze Azure Database for PostgreSQL możesz mieć wielu użytkowników administracyjnych firmy Microsoft Entra. Administrator firmy Microsoft Entra może być użytkownikiem, grupą lub jednostką usługi.

Wymagania wstępne

Konfigurowanie wymagań dotyczących sieci

Microsoft Entra ID to wielodostępna aplikacja. Wymaga ona łączności wychodzącej dla operacji, takich jak dodawanie grup administratorów firmy Microsoft Entra.

Wymagania dotyczące sieci różnią się w zależności od topologii:

  • Dostęp publiczny (dozwolone adresy IP): nie są wymagane żadne dodatkowe reguły ruchu wychodzącego.
  • Dostęp prywatny (integracja z siecią wirtualną):
    • Dodaj regułę sieciowej grupy zabezpieczeń (NSG) dla ruchu wychodzącego, która umożliwia ruch wyłącznie do tagu AzureActiveDirectory usługi.
    • Jeśli używasz tabeli tras, dodaj trasę z celem AzureActiveDirectory i następną przesiadką Internet.
    • Jeśli używasz serwera proxy, zezwalaj tylko na ruch HTTPS do tagu AzureActiveDirectory usługi.
  • Niestandardowy system DNS:
    • Upewnij się, że te nazwy hostów są rozpoznawane publicznie: login.microsoftonline.com (uwierzytelnianie) i graph.microsoft.com (interfejs API programu Microsoft Graph).
    • Jeśli rozwiązanie zakończy się niepowodzeniem, operacja przypisania administratora i pozyskiwania tokenu zakończy się niepowodzeniem.

Aby ustawić administratora firmy Microsoft Entra podczas aprowizacji serwera, wykonaj następujące kroki:

  1. W witrynie Azure Portal podczas aprowizacji serwera wybierz pozycję PostgreSQL i Microsoft Entra authentication lub Microsoft Entra authentication tylko jako metodę uwierzytelniania.
  2. Na karcie Ustawianie administratora wybierz prawidłowego użytkownika microsoft Entra, grupy, jednostki usługi lub tożsamości zarządzanej w dzierżawie klienta, aby być administratorem firmy Microsoft Entra.

Opcjonalnie możesz dodać lokalne konto administratora postgreSQL, jeśli wolisz użyć metody uwierzytelniania PostgreSQL i Microsoft Entra .

Uwaga / Notatka

Podczas aprowizacji serwera można dodać tylko jednego administratora firmy Microsoft Entra. Po utworzeniu serwera można dodać wielu użytkowników administratora firmy Microsoft Entra.

Aby ustawić administratora firmy Microsoft Entra po utworzeniu serwera, wykonaj następujące kroki:

  1. W witrynie Azure Portal wybierz wystąpienie serwera elastycznego usługi Azure Database for PostgreSQL, które chcesz włączyć dla identyfikatora Entra firmy Microsoft.
  2. W obszarze Zabezpieczenia wybierz pozycję Uwierzytelnianie. Następnie wybierz uwierzytelnianie PostgreSQL i Microsoft Entra lub uwierzytelnianie Microsoft Entra tylko jako metodę uwierzytelniania na podstawie Twoich wymagań.
  3. Wybierz pozycję Dodaj administratorów firmy Microsoft Entra. Następnie wybierz prawidłowego użytkownika, grupy, jednostki usługi lub tożsamości zarządzanej firmy Microsoft w dzierżawie klienta, aby być administratorem firmy Microsoft Entra.
  4. Wybierz Zapisz.

Ważne

Podczas ustawiania administratora do wystąpienia serwera elastycznego usługi Azure Database for PostgreSQL zostanie dodany nowy użytkownik z pełnymi uprawnieniami administracyjnymi.

Nawiązywanie połączenia z usługą Azure Database for PostgreSQL przy użyciu identyfikatora Entra firmy Microsoft

Integracja z firmą Microsoft Entra współpracuje ze standardowymi 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.

Przetestowaliśmy następujących klientów:

  • Wiersz polecenia psql: użyj zmiennej PGPASSWORD , aby przekazać token.
  • Azure Data Studio: użyj rozszerzenia PostgreSQL.
  • Inni klienci oparty na libpq: Przykłady obejmują typowe struktury aplikacji i maperów relacyjnych obiektów (ORM).
  • PgAdmin: Wyczyść połączenie teraz podczas tworzenia serwera.

Uwierzytelnianie przy użyciu identyfikatora Entra firmy Microsoft

Poniższe procedury służą do uwierzytelniania za pomocą identyfikatora Entra firmy Microsoft jako użytkownika wystąpienia serwera elastycznego usługi Azure Database for PostgreSQL.

Możesz śledzić, korzystając z:

  • Azure Cloud Shell
  • Maszyna wirtualna platformy Azure
  • Maszyna lokalna

Zaloguj się do Azure

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

az login

Polecenie otwiera okno przeglądarki na stronie uwierzytelniania Microsoft Entra. Wymaga to podania identyfikatora użytkownika i hasła firmy Microsoft Entra.

Pobierz token dostępu Microsoft Entra

Użyj interfejsu wiersza polecenia platformy Azure, aby uzyskać token dostępu dla uwierzytelnionego użytkownika firmy Microsoft w celu uzyskania dostępu do usługi Azure Database for PostgreSQL. Oto przykład chmury publicznej:

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

Poprzednia wartość zasobu musi być określona, jak pokazano. W przypadku innych chmur można wyszukać wartość zasobu przy użyciu następującego polecenia:

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 wygodnej wersji dla wszystkich chmur:

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

Po pomyślnym uwierzytelnieniu identyfikator Entra firmy Microsoft zwraca token dostępu:

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

Token jest ciągiem Base64. Koduje wszystkie informacje o uwierzytelnianych użytkownikach i jest przeznaczony dla usługi Azure Database for PostgreSQL.

Używanie tokenu jako hasła do logowania się za pomocą narzędzia psql klienta

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

W przypadku korzystania z klienta wiersza polecenia psql należy przekazać token dostępu za pośrednictwem zmiennej środowiskowej PGPASSWORD . Token dostępu jest dłuższy niż długość hasła, którą narzędzie psql może zaakceptować bezpośrednio.

Oto przykład systemu Windows:

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

Oto przykład systemu Linux lub macOS:

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

Możesz również połączyć krok 2 i krok 3 ze sobą przy użyciu podstawienia poleceń. Pobieranie tokenu można umieścić w zmiennej i przekazać je bezpośrednio jako wartość zmiennej środowiskowej PGPASSWORD :

export PGPASSWORD=$(az account get-access-token --resource-type oss-rdbms --query "[accessToken]" -o tsv)

Teraz połącz się z usługą Azure Database for PostgreSQL:

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

Używanie tokenu jako hasła do logowania przy użyciu narzędzia PgAdmin

Aby nawiązać połączenie przy użyciu tokenu entra firmy Microsoft za pomocą narzędzia PgAdmin, wykonaj następujące kroki:

  1. Otwórz aplikację PgAdmin i wybierz opcję Zarejestruj>serwer.
  2. Na karcie Ogólne wprowadź nazwę połączenia i wyczyść pole Połącz teraz.
  3. Na karcie Połączenie wprowadź szczegóły hosta. Ustaw nazwę użytkownika na nazwę UPN firmy Microsoft (na przykład user@tenant.onmicrosoft.com). Zapisać.
  4. W drzewie wybierz serwer i wybierz pozycję Połącz serwer.
  5. Po wyświetleniu monitu wklej token dostępu jako hasło.

Poniżej przedstawiono kilka podstawowych zagadnień dotyczących nawiązywania połączenia:

  • user@tenant.onmicrosoft.com to userPrincipalName użytkownika Microsoft Entra.

  • Pamiętaj, aby użyć dokładnego sposobu pisowni użytkownika platformy Azure. W nazwach użytkowników i grup firmy Microsoft uwzględniana jest wielkość liter.

  • Jeśli nazwa zawiera spacje, użyj ukośnika odwrotnego (\) przed każdą spacją, aby ją uniknąć. Możesz użyć interfejsu wiersza polecenia platformy Azure, aby pobrać zalogowanego użytkownika i ustawić wartość PGUSER zmiennej środowiskowej:

    export PGUSER=$(az ad signed-in-user show --query "[userPrincipalName]" -o tsv | sed 's/ /\\ /g')
    
  • Ważność tokenu dostępu wynosi od 5 minut do 60 minut. Przed zainicjowaniem logowania do usługi Azure Database for PostgreSQL należy uzyskać token dostępu.

Teraz uwierzytelniasz się na serwerze usługi Azure Database for PostgreSQL za pomocą uwierzytelniania firmy Microsoft Entra.

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

W tej sekcji pokazano, jak nawiązać połączenie przy użyciu grupy Microsoft Entra. Musisz być członkiem grupy, a grupa musi zostać utworzona (zamapowana) w bazie danych.

Utwórz zasadę grupy

Utwórz jednostkę grupy (rolę) w bazie danych (zastąp nazwę wyświetlaną zgodnie z potrzebami):

select * from  pgaadauth_create_principal('Prod DB Readonly', false, false).

Jeśli synchronizacja grup jest wyłączona, członkowie mogą się zalogować przy użyciu tokenów dostępu i określić nazwę grupy jako nazwę użytkownika.

Jeśli synchronizacja grupowa jest włączona (za pośrednictwem parametru serwera pgaadauth.enable_group_sync ustawionego na "WŁ."), członkowie powinni zalogować się przy użyciu swoich indywidualnych poświadczeń Entra ID, ale mogą również zalogować się z wykorzystaniem nazwy grupy jako nazwy użytkownika.

  • Logowanie grupowe pozostaje dostępne ze względów zgodności, ale można je wyłączyć za pomocą: ALTER ROLE "ROLE_NAME" NOLOGIN;

  • Aby zachować synchronizację, nie należy usuwać roli grupy.

  • Automatyczne synchronizowanie grup co 30 minut.

  • Synchronizacja ręczna może być wyzwalana za pomocą polecenia: SELECT * FROM pgaadauth_sync_roles_for_group_members(); (pgaadauth.enable_group_sync parametr musi mieć wartość "WŁĄCZONE").

  • Zmiany metadanych grupy, takie jak nazwa grupy, nie są synchronizowane

  • Zmiany członkostwa w grupach są synchronizowane

    Uwaga / Notatka

    Tożsamości zarządzane i podmioty usługi są obsługiwane jako członkowie grupy.

Zaloguj się do Azure

Uwierzytelnianie przy użyciu identyfikatora Entra firmy Microsoft przy użyciu 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

Pobierz token dostępu Microsoft Entra

Użyj interfejsu wiersza polecenia platformy Azure, aby uzyskać token dostępu dla uwierzytelnionego użytkownika firmy Microsoft w celu uzyskania dostępu do usługi Azure Database for PostgreSQL. Oto przykład chmury publicznej:

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

Musisz określić początkową wartość zasobu dokładnie tak, jak pokazano. W przypadku innych chmur można wyszukać wartość zasobu przy użyciu następującego polecenia:

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 wygodnej wersji dla wszystkich chmur:

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

Po pomyślnym uwierzytelnieniu identyfikator Entra firmy Microsoft zwraca token dostępu:

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

Używanie tokenu jako hasła do logowania przy użyciu narzędzia psql lub PgAdmin

Te zagadnienia są istotne podczas nawiązywania połączenia jako członek grupy:

  • Nazwa grupy musi być dokładnie zgodna z nazwą wyświetlaną grupy Entra firmy Microsoft (z uwzględnieniem wielkości liter).
  • Użyj tylko nazwy grupy, a nie aliasu członka.
  • Spacje ucieczki tam, gdzie jest to wymagane (na przykład Prod\ DB\ Readonly).
  • Ważność tokenu wynosi 5–60 minut. Uzyskaj go tuż przed nawiązaniem połączenia; nie przechowuj tokenów w skryptach.

Wskazówka

Jeśli uwierzytelnianie nie powiedzie się, sprawdź, czy rola bazy danych istnieje (np. za pomocą \du) i potwierdź ustawienie pgaadauth.enable_group_sync.

Teraz uwierzytelniasz się na serwerze PostgreSQL za pomocą uwierzytelniania firmy Microsoft Entra.