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.
- Na stronie klastra w obszarze nagłówka Zarządzanie klastrem wybierz pozycję Uwierzytelnianie, aby otworzyć opcje zarządzania uwierzytelnianiem.
- 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.
- Wyszukaj ciąg "Microsoft Entra ID" w witrynie Azure Portal.
- Otwórz usługę "Microsoft Entra ID".
- Na stronie Przegląd usługi Microsoft Entra ID w sekcji Przegląd wyszukaj identyfikator aplikacji "b4fa09d8-5da5-4352-83d9-05c2a44cf431".
- W wynikach wyszukiwania wybierz aplikację przedsiębiorstwa "Azure Cosmos DB for PostgreSQL AAD Authentication".
- W aplikacji przedsiębiorstwa Azure Cosmos DB for PostgreSQL AAD Authentication wybierz stronę Właściwości.
- 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 Microsoft Entra least privileged roles by task — Enterprise applications (Microsoft Entra least privileged roles by task — Aplikacje dla przedsiębiorstw).
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 :
- W sekcji Uwierzytelnianie za pomocą identyfikatora entra firmy Microsoft wybierz pozycję Dodaj administratorów identyfikatora entra firmy Microsoft.
- W panelu Wybieranie administratorów identyfikatora entra firmy Microsoft wybierz co najmniej jednego prawidłowego użytkownika lub aplikacji dla przedsiębiorstw firmy Microsoft w bieżącej dzierżawie usługi AD, aby być administratorem identyfikatora entra firmy Microsoft w klastrze usługi Azure Cosmos DB for PostgreSQL.
- Użyj pozycji Wybierz , aby potwierdzić wybór.
- 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 :
- W sekcji uwierzytelnianie bazy danych PostgreSQL wybierz pozycję Dodaj rolę PostgreSQL.
- Wprowadź nazwę roli i hasło. Wybierz pozycję Zapisz.
- 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.
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:
- 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).
- pgAdmin: 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 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 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ż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:
- Wyczyść opcję Połącz teraz podczas tworzenia serwera.
- Wprowadź szczegóły serwera na karcie Połączenie i zapisz.
- Upewnij się, że prawidłowy użytkownik identyfikatora Entra firmy Microsoft jest określony w polu Nazwa użytkownika.
- W menu obiekt pgAdmin wybierz pozycję Połącz serwer.
- 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 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 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
- Dowiedz się więcej o uwierzytelnianiu w usłudze Azure Cosmos DB for PostgreSQL
- Zapoznaj się z limitami i ograniczeniami identyfikatorów entra firmy Microsoft w usłudze Azure Cosmos DB for PostgreSQL
- Zapoznaj się z podstawami identyfikatora Entra firmy Microsoft
- Dowiedz się więcej o programie SQL GRANT w usłudze PostgreSQL