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 identyfikatora entra firmy Microsoft z usługą 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 usługi Azure Cosmos DB for PostgreSQL. Możesz włączyć uwierzytelnianie microsoft Entra ID dodatkowo 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 identyfikatora Entra firmy Microsoft lub dodawania natywnych ról postgreSQL na tej samej stronie uwierzytelniania .

Konfigurowanie uwierzytelniania identyfikatora entra firmy Microsoft

Wymagania wstępne

Użytkownicy muszą mieć możliwość logowania się 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 w klastrach usługi Azure Cosmos DB for PostgreSQL.

Ważne

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

  1. Wyszukaj ciąg "Microsoft Entra ID" w witrynie Azure Portal.
  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ę przedsiębiorstwa "Azure Cosmos DB for PostgreSQL AAD Authentication".
  5. W aplikacji przedsiębiorstwa 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 administratorom globalnym Administracja istratorowi, Administracja istratorowi aplikacji w chmurze lub roli Administracja istratora aplikacji. Zobacz listę wbudowanych ról firmy Microsoft Entra.

Dodawanie administratorów identyfikatora Entra firmy Microsoft do klastra usługi Azure Cosmos DB for PostgreSQL

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

  1. W sekcji Uwierzytelnianie za pomocą identyfikatora entra firmy Microsoft wybierz pozycję Dodaj administratorów identyfikatora entra firmy Microsoft.
  2. W panelu Wybierz identyfikator entra firmy Microsoft Administracja wybierz co najmniej jednego prawidłowego użytkownika lub aplikacji microsoft Entra ID lub aplikacji dla przedsiębiorstw w bieżącej dzierżawie usługi AD, aby być administratorem identyfikatora entra firmy Microsoft 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 w węźle koordynatora klastra i propagowany do wszystkich węzłów procesu roboczego. Role utworzone w witrynie Azure Portal mają atrybut LOGIN, co oznacza, że są prawdziwymi użytkownikami, którzy mogą zalogować się do bazy danych.

Połączenie do usługi 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:

  • Wiersz polecenia 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).
  • pg Administracja: Wyczyść Połączenie teraz podczas tworzenia 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 identyfikatora entra firmy Microsoft. Wymaga podania nazwy użytkownika i hasła identyfikatora entra firmy Microsoft.

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.

Pobieranie tokenu dostępu identyfikatora entra firmy Microsoft

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ż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=<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-type oss-rdbms --query "[accessToken]" -o tsv)

Uwaga

Upewnij się, że zmienna PGPASSWORD jest ustawiona na token dostępu Microsoft Entra ID dla twojej subskrypcji na potrzeby uwierzytelniania identyfikatora Entra firmy Microsoft. 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. Można to zrobić tak, jak zwykle z kontem użytkownika jako użytkownik 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żyj tokenu jako hasła do logowania przy użyciu narzędzia Pg Administracja

Aby nawiązać połączenie przy użyciu tokenu Microsoft Entra ID z narzędziem Pg Administracja, wykonaj następujące kroki:

  1. Wyczyść opcję Połączenie teraz podczas tworzenia serwera.
  2. Wprowadź szczegóły serwera na karcie Połączenie ion 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 pg Administracja Object (Obiekt) wybierz pozycję Połączenie Server(Serwer).
  4. Wprowadź hasło tokenu Microsoft Entra ID po wyświetleniu monitu.

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 uwierzytelniono się na serwerze usługi Azure Cosmos for PostgreSQL za pomocą uwierzytelniania identyfikatora Entra firmy Microsoft.

Zarządzanie natywnymi rolami bazy danych PostgreSQL

Po włączeniu natywnego uwierzytelniania postgreSQL w klastrze można dodawać i usuwać role Postgres oprócz wbudowanej roli "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 identyfikator entra firmy Microsoft.

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 Pg Administracja lub psql. Aby uzyskać więcej informacji, zobacz Połączenie do klastra.

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 instrukcje GRANT z jedną tabelą za pośrednictwem całego klastra, stosując je we wszystkich węzłach procesu roboczego. 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 Identyfikator entra firmy Microsoft

-- 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