Udostępnij za pośrednictwem


Używanie uwierzytelniania usługi Microsoft Entra ID w usłudze Azure Database for PostgreSQL — serwer elastyczny

DOTYCZY: Azure Database for PostgreSQL — serwer elastyczny

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

Uwierzytelnianie entra firmy Microsoft dla serwera elastycznego usługi Azure Database for PostgreSQL można skonfigurować podczas aprowizacji serwera lub nowszej. Tylko administratorzy Microsoft Entra mogą tworzyć lub włączać użytkowników na potrzeby uwierzytelniania w usłudze Microsoft Entra ID. Zalecamy, aby nie używać administratora firmy Microsoft Entra do regularnych operacji bazy danych, ponieważ ta rola ma podwyższony poziom uprawnień użytkownika (na przykład CREATEDB).

Możesz mieć wielu użytkowników administratorów firmy Microsoft Entra za pomocą serwera elastycznego usługi Azure Database for PostgreSQL. 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 to łączności wychodzącej w celu wykonywania określonych operacji, takich jak dodawanie grup administratorów firmy Microsoft Entra. Ponadto potrzebujesz reguł sieciowych, aby łączność firmy Microsoft Entra działała w zależności od topologii sieci:

  • Dostęp publiczny (dozwolone adresy IP): nie są wymagane żadne dodatkowe reguły sieciowe.

  • Dostęp prywatny (integracja z siecią wirtualną):

    • Potrzebujesz reguły sieciowej grupy zabezpieczeń dla ruchu wychodzącego, aby zezwolić na ruch sieciowy tylko do tagu AzureActiveDirectory usługi.
    • Jeśli używasz tabeli tras, musisz utworzyć regułę z tagiem AzureActiveDirectory usługi docelowej i następnym przeskokiem Internet.
    • Opcjonalnie, jeśli używasz serwera proxy, możesz dodać nową regułę zapory, aby zezwolić ruchowi HTTP/S na dostęp tylko do tagu AzureActiveDirectory usługi.
  • Niestandardowy system DNS: istnieją dodatkowe kwestie, jeśli używasz niestandardowego systemu DNS w sieci wirtualnej. W takich przypadkach należy upewnić się, że następujące punkty końcowe rozpoznają odpowiednie adresy IP: login.microsoftonline.com: ten punkt końcowy jest używany do celów uwierzytelniania. Sprawdź, czy niestandardowa konfiguracja DNS umożliwia rozpoznawanie login.microsoftonline.com poprawnych adresów IP graph.microsoft.com: ten punkt końcowy jest używany do uzyskiwania dostępu do interfejsu API programu Microsoft Graph. Upewnij się, że niestandardowa konfiguracja DNS umożliwia rozpoznawanie graph.microsoft.com poprawnych adresów IP.

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

  1. W witrynie Azure Portal podczas aprowizacji serwera wybierz pozycję Uwierzytelnianie usługi PostgreSQL i Microsoft Entra albo Tylko uwierzytelnianie usługi Microsoft Entra 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

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

Zrzut ekranu przedstawiający opcje ustawiania administratora firmy Microsoft Entra podczas aprowizacji serwera.]

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 pozycję Zapisz.

Zrzut ekranu przedstawiający opcje ustawiania administratora firmy Microsoft Entra po utworzeniu serwera.

Ważne

Podczas ustawiania administratora nowy użytkownik jest dodawany do serwera elastycznego usługi Azure Database for PostgreSQL z pełnymi uprawnieniami administratora.

Nawiązywanie połączenia z usługą 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:

Diagram przepływu uwierzytelniania między identyfikatorem Entra firmy Microsoft, komputerem użytkownika i serwerem.

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. Jak pokazano na powyższym diagramie, token Firmy Microsoft Entra jest przekazywany jako hasło.

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 usługi Microsoft Entra ID

Poniższe procedury umożliwiają uwierzytelnianie za pomocą identyfikatora Entra firmy Microsoft jako użytkownika serwera elastycznego usługi Azure Database for PostgreSQL. Możesz postępować zgodnie z instrukcjami w usłudze Azure Cloud Shell, na maszynie wirtualnej platformy Azure lub na maszynie lokalnej.

Zaloguj się do subskrypcji platformy Azure użytkownika

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.

Pobieranie tokenu dostępu firmy 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 najlepiej użyć tokenu dostępu jako hasła użytkownika PostgreSQL.

Podczas korzystania z klienta wiersza polecenia psql token dostępu należy przekazać za pośrednictwem zmiennej środowiskowej PGPASSWORD . Przyczyną jest to, że token dostępu przekracza 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/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że zostać hermetyzowane do zmiennej i przekazane bezpośrednio jako wartość PGPASSWORD zmiennej środowiskowej:

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

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

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 narzędzie Pgadmin i kliknij pozycję Zarejestruj w menu po lewej stronie, a następnie wybierz pozycję Serwer
  2. Na karcie Ogólne podaj nazwę połączenia i wyczyść opcję Połącz teraz .
  3. Kliknij kartę Połączenie i podaj szczegóły wystąpienia serwera elastycznego usługi Azure Database for PostgreSQL dla nazwy hosta/adresu i nazwy użytkownika i zapisz. nazwa użytkownika to identyfikator firmy Microsoft lub adres e-mail
  4. W menu przeglądarki wybierz połączenie serwera elastycznego usługi Azure Database for PostgreSQL, a następnie kliknij pozycję Połącz serwer
  5. Wprowadź hasło tokenu usługi Active Directory po wyświetleniu monitu.

Zrzut ekranu przedstawiający proces logowania przy użyciu administratora pg.

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ść PGUGSER 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

Tworzenie grup entra firmy Microsoft na serwerze elastycznym usługi Azure Database for PostgreSQL

Aby włączyć grupę Microsoft Entra w celu uzyskania dostępu do bazy danych, użyj tego samego mechanizmu, który był używany dla użytkowników, ale zamiast tego określ nazwę grupy. Na przykład:

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

Gdy członkowie grupy się logują, używają tokenów dostępu, ale określają nazwę grupy jako nazwę użytkownika.

Uwaga

Serwer elastyczny usługi Azure Database for PostgreSQL obsługuje tożsamości zarządzane i jednostki usługi jako członkowie grupy.

Zaloguj się do subskrypcji platformy Azure użytkownika

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

Pobieranie tokenu dostępu firmy 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 to nazwa grupy Firmy Microsoft, z którą próbujesz nawiązać połączenie.
  • Pamiętaj, aby użyć dokładnego sposobu pisowni nazwy grupy Microsoft Entra. W nazwach użytkowników i grup firmy Microsoft uwzględniana jest wielkość liter.
  • W przypadku nawiązywania połączenia jako grupy użyj tylko nazwy grupy, a nie aliasu członka grupy.
  • Jeśli nazwa zawiera spacje, użyj ukośnika odwrotnego (\) przed każdą spacją, aby ją uniknąć.
  • Ważność tokenu dostępu wynosi od 5 minut do 60 minut. Zalecamy uzyskanie tokenu dostępu przed zainicjowaniem logowania do usługi Azure Database for PostgreSQL.

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

Następne kroki