Przeczytaj w języku angielskim

Udostępnij za pośrednictwem


Używanie identyfikatora Entra firmy Microsoft i natywnych ról postgreSQL do uwierzytelniania za pomocą usługi Azure Cosmos DB for PostgreSQL

DOTYCZY: Usługa Azure Cosmos DB for PostgreSQL (obsługiwana przez rozszerzenie bazy danych Citus do bazy danych PostgreSQL)

W tym artykule skonfigurujesz metody uwierzytelniania dla usługi Azure Cosmos DB for PostgreSQL. Zarządzasz użytkownikami administratora usługi Microsoft Entra ID i natywnymi rolami bazy danych PostgreSQL na potrzeby uwierzytelniania za pomocą usługi Azure Cosmos DB for PostgreSQL. Dowiesz się również, jak używać tokenu Microsoft Entra ID z Azure Cosmos DB for PostgreSQL.

Klaster usługi Azure Cosmos DB for PostgreSQL jest tworzony z jedną wbudowaną natywną rolą bazy danych PostgreSQL o nazwie "citus". Po zakończeniu aprowizacji klastra można dodać więcej natywnych ról postgreSQL.

Możesz również skonfigurować uwierzytelnianie Microsoft Entra ID (dawniej Azure Active Directory) dla Azure Cosmos DB for PostgreSQL. Możesz włączyć uwierzytelnianie Microsoft Entra ID oprócz lub zamiast natywnego uwierzytelniania PostgreSQL w klastrze. Metody uwierzytelniania włączone w klastrze można zmienić w dowolnym momencie po aprowizacji klastra. Po włączeniu uwierzytelniania identyfikatora Entra firmy Microsoft można dodać wielu użytkowników identyfikatora Entra firmy Microsoft do klastra usługi Azure Cosmos DB for PostgreSQL i ustawić dowolnego z nich administratorów. Użytkownik identyfikatora Entra firmy Microsoft może być użytkownikiem lub jednostką usługi.

Wybieranie metody uwierzytelniania

Aby skonfigurować metody uwierzytelniania w klastrze usługi Azure Cosmos DB for PostgreSQL, należy użyć witryny Azure Portal.

Wykonaj następujące elementy w klastrze usługi Azure Cosmos DB for PostgreSQL, aby włączyć lub wyłączyć uwierzytelnianie identyfikatora Entra firmy Microsoft i natywne uwierzytelnianie PostgreSQL.

  1. Na stronie klastra w obszarze nagłówka Zarządzanie klastrem wybierz pozycję Uwierzytelnianie, aby otworzyć opcje zarządzania uwierzytelnianiem.
  2. W sekcji Metody uwierzytelniania wybierz pozycję Tylko uwierzytelnianie PostgreSQL, uwierzytelnianie microsoft Entra ID lub uwierzytelnianie PostgreSQL i Microsoft Entra ID jako metodę uwierzytelniania na podstawie wymagań.

Po zakończeniu przejdź do konfigurowania uwierzytelniania Microsoft Entra ID lub dodawania natywnych ról PostgreSQL na tej samej stronie uwierzytelniania.

Konfiguracja uwierzytelniania Microsoft Entra ID

Wymagania wstępne

Użytkownicy muszą móc się zalogować do usługi Azure Cosmos DB for PostgreSQL w dzierżawie Microsoft Entra ID. Te kroki należy wykonać raz dla dzierżawy Microsoft Entra ID, która będzie używana do uwierzytelniania klastrów Azure Cosmos DB dla PostgreSQL.

Ważne

Aby wprowadzić zmianę, wymagane są uprawnienia administratora dzierżawy Microsoft Entra ID. Zobacz wskazówki dotyczące rozwiązywania problemów z uprawnieniami.

  1. Wyszukaj 'Microsoft Entra ID' w Portalu Azure.
  2. Otwórz usługę "Microsoft Entra ID".
  3. Na stronie Przegląd usługi Microsoft Entra ID w sekcji Przegląd wyszukaj identyfikator aplikacji "b4fa09d8-5da5-4352-83d9-05c2a44cf431".
  4. W wynikach wyszukiwania wybierz aplikację korporacyjną "Azure Cosmos DB for PostgreSQL AAD Authentication".
  5. W firmowej aplikacji Azure Cosmos DB for PostgreSQL AAD Authentication wybierz Stronę właściwości.
  6. Ustaw opcję Włączone dla użytkowników, aby logowali się? na wartość Tak i zapisz zmiany.

Uwaga

Edytowanie właściwości aplikacji dla przedsiębiorstw, takich jak "Włączone logowanie użytkowników" wymaga uprawnień przyznanych roli z uprawnieniami do aktualizowania właściwości aplikacji dla przedsiębiorstw. Role, takie jak właściciel aplikacji dla przedsiębiorstw, muszą mieć permissję "aktualizuj właściwości aplikacji dla przedsiębiorstw". Aby uzyskać więcej informacji, zobacz Role o najmniejszych uprawnieniach Microsoft Entra według zadania — aplikacje dla przedsiębiorstw.

Dodawanie administratorów Microsoft Entra ID do klastra Azure Cosmos DB dla PostgreSQL

Aby dodać lub usunąć role identyfikatora entra firmy Microsoft w klastrze, wykonaj następujące kroki na stronie Uwierzytelnianie :

  1. W sekcji Uwierzytelnianie Microsoft Entra ID wybierz pozycję Dodaj administratorów Microsoft Entra ID.
  2. W panelu Wybierz administratorów Microsoft Entra ID wybierz co najmniej jednego prawidłowego użytkownika Microsoft Entra ID lub aplikację dla przedsiębiorstw w bieżącej dzierżawie usługi AD, aby stał się administratorem Microsoft Entra ID w klastrze usługi Azure Cosmos DB for PostgreSQL.
  3. Użyj pozycji Wybierz , aby potwierdzić wybór.
  4. Na stronie Uwierzytelnianie wybierz pozycję Zapisz na pasku narzędzi, aby zapisać zmiany lub kontynuować dodawanie natywnych ról postgreSQL.

Konfigurowanie natywnego uwierzytelniania postgreSQL

Aby dodać role Postgres w klastrze, wykonaj następujące kroki na stronie Uwierzytelnianie :

  1. W sekcji uwierzytelnianie bazy danych PostgreSQL wybierz pozycję Dodaj rolę PostgreSQL.
  2. Wprowadź nazwę roli i hasło. Wybierz pozycję Zapisz.
  3. Na stronie Uwierzytelnianie wybierz pozycję Zapisz na pasku narzędzi, aby zapisać zmiany lub kontynuować dodawanie użytkowników administratora identyfikatora Entra firmy Microsoft.

Natywny użytkownik PostgreSQL jest tworzony na węźle koordynatora klastra i propagowany do wszystkich węzłów roboczych. Role utworzone w witrynie Azure Portal mają atrybut LOGIN, co oznacza, że są prawdziwymi użytkownikami, którzy mogą zalogować się do bazy danych.

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

Integracja identyfikatora Entra firmy Microsoft współpracuje ze standardowymi narzędziami klienckimi postgreSQL, takimi jak psql, które nie są rozpoznane przez firmę Microsoft Entra ID i obsługują tylko określanie nazwy użytkownika i hasła podczas nawiązywania połączenia z bazą danych PostgreSQL. W takich przypadkach token identyfikatora Entra firmy Microsoft jest przekazywany jako hasło.

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

  • Komenda psql: użyj zmiennej PGPASSWORD, aby przekazać token.
  • Inni klienci oparty na libpq: Przykłady obejmują typowe struktury aplikacji i maperów relacyjnych obiektów (ORM).
  • pgAdmin: Odznacz opcję połącz teraz przy tworzeniu serwera.

Użyj poniższych procedur, aby uwierzytelnić się przy użyciu identyfikatora Entra firmy Microsoft jako użytkownika usługi Azure Cosmos DB 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 ID. Wymaga podania nazwy użytkownika i hasła dla Microsoft Entra ID.

Nazwa konta użytkownika używana do uwierzytelniania (na przykład ) to ta, user@tenant.onmicrosoft.comdla której token dostępu zostanie wygenerowany w następnym kroku.

Pobierz token dostępu Microsoft Entra ID

Użyj interfejsu wiersza polecenia platformy Azure, aby uzyskać token dostępu dla uwierzytelnionego użytkownika microsoft Entra ID w celu uzyskania dostępu do usługi Azure Cosmos for PostgreSQL. Oto przykład:

az account get-access-token --resource https://token.postgres.cosmos.azure.com

Po pomyślnym uwierzytelnieniu identyfikator Entra firmy Microsoft zwraca token dostępu dla bieżącej subskrypcji platformy Azure:

{
  "accessToken": "[TOKEN]",
  "expiresOn": "[expiration_date_and_time]",
  "subscription": "[subscription_id]",
  "tenant": "[tenant_id]",
  "tokenType": "Bearer"
}

TOKEN jest ciągiem Base64. Koduje on wszystkie informacje o uwierzytelnianych użytkownikach i jest skojarzony z usługą Azure Cosmos DB for PostgreSQL. Token jest ważny przez co najmniej 5 minut z maksymalnie 90 minutami. Wartość expirationsOn definiuje rzeczywisty czas wygaśnięcia tokenu.

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

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=<TOKEN value from the previous step>
$env:PGPASSWORD='<TOKEN value from the previous step>'

Oto przykład systemu Linux/macOS:

export PGPASSWORD=<TOKEN value from the previous step>

Możesz również połączyć dwa poprzednie kroki 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 https://token.postgres.cosmos.azure.com --query "[accessToken]" -o tsv)

Uwaga

Upewnij się, że zmienna PGPASSWORD jest ustawiona na token dostępu Microsoft Entra ID, przypisany do twojej subskrypcji, w celu uwierzytelniania Microsoft Entra ID. Jeśli musisz wykonać uwierzytelnianie roli Postgres z tej samej sesji, możesz ustawić wartość PGPASSWORD na hasło roli Postgres lub wyczyścić wartość zmiennej PGPASSWORD, aby wprowadzić hasło interaktywnie. Uwierzytelnianie zakończy się niepowodzeniem z nieprawidłową wartością w PGPASSWORD.

Teraz możesz zainicjować połączenie z usługą Azure Cosmos DB for PostgreSQL przy użyciu konta użytkownika Microsoft Entra ID, dla którego wygenerowano token dostępu. Zrobisz to jak zwykle, używając konta użytkownika jako użytkownika i bez parametru "password" w wierszu polecenia.

psql "host=mycluster.[uniqueID].postgres.cosmos.azure.com user=user@tenant.onmicrosoft.com dbname=[db_name] 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 identyfikatora Entra firmy Microsoft za pomocą narzędzia PgAdmin, wykonaj następujące kroki:

  1. Wyczyść opcję Połącz teraz podczas tworzenia serwera.
  2. Wprowadź szczegóły serwera na karcie Połączenie i zapisz.
    1. Upewnij się, że prawidłowy użytkownik identyfikatora Entra firmy Microsoft jest określony w polu Nazwa użytkownika.
  3. W menu obiekt pgAdmin wybierz pozycję Połącz serwer.
  4. Wprowadź hasło tokenu Microsoft Entra ID, gdy zostaniesz o to poproszony.

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

  • user@tenant.onmicrosoft.com to nazwa użytkownika Microsoft Entra ID.
  • Pamiętaj, aby użyć dokładnego sposobu pisowni użytkownika platformy Azure. W nazwach użytkowników i grup identyfikatora entra firmy Microsoft uwzględniana jest wielkość liter.
  • 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 90 minut. Przed zainicjowaniem logowania do usługi Azure Cosmos for PostgreSQL należy uzyskać token dostępu.

Teraz jesteś uwierzytelniony na swoim serwerze Azure Cosmos for PostgreSQL za pomocą uwierzytelniania Microsoft Entra ID.

Zarządzanie natywnymi rolami bazy danych PostgreSQL

Po włączeniu natywnego uwierzytelniania PostgreSQL w klastrze, można dodawać i usuwać role Postgres, w tym wbudowaną rolę "citus". Możesz również zresetować hasło i zmodyfikować uprawnienia bazy danych Postgres dla ról natywnych.

Jak usunąć natywną rolę użytkownika postgreSQL lub zmienić hasło

Aby zaktualizować użytkownika, odwiedź stronę Uwierzytelnianie klastra i wybierz wielokropek ... obok użytkownika. Wielokropek otwiera menu, aby usunąć użytkownika lub zresetować hasło.

Rola citus jest uprzywilejowana i nie można jej usunąć. Jednak citus rola byłaby wyłączona, jeśli dla klastra wybrano metodę uwierzytelniania tylko za pomocą Microsoft Entra ID.

Modyfikowanie uprawnień dla ról użytkowników

Nowe role użytkowników są często używane do zapewniania dostępu do bazy danych z ograniczonymi uprawnieniami. Aby zmodyfikować uprawnienia użytkownika, użyj standardowych poleceń postgreSQL, używając narzędzia takiego jak PgAdmin lub psql. Aby uzyskać więcej informacji, zobacz Nawiązywanie połączenia z klastrem.

Aby na przykład zezwolić usłudze PostgreSQL db_user na odczyt mytable, przyznaj uprawnienie:

GRANT SELECT ON mytable TO db_user;

Aby przyznać te same uprawnienia do roli user@tenant.onmicrosoft.com Microsoft Entra ID, użyj następującego polecenia:

GRANT SELECT ON mytable TO "user@tenant.onmicrosoft.com";

Usługa Azure Cosmos DB for PostgreSQL propaguje pojedyncze instrukcje GRANT dla tabeli przez cały klaster, stosując je na wszystkich węzłach roboczych. Propaguje również granty obejmujące cały system (na przykład dla wszystkich tabel w schemacie):

-- applies to the coordinator node and propagates to worker nodes for Postgres role db_user
GRANT SELECT ON ALL TABLES IN SCHEMA public TO db_user;

Lub dla roli Microsoft Entra ID

-- applies to the coordinator node and propagates to worker nodes for Azure AD role user@tenant.onmicrosoft.com
GRANT SELECT ON ALL TABLES IN SCHEMA public TO "user@tenant.onmicrosoft.com";

Następne kroki