Azure Cosmos DB for PostgreSQL での Microsoft Entra ID と PostgreSQL 認証

適用対象: Azure Cosmos DB for PostgreSQL (PostgreSQL の Citus データベース拡張機能を利用)

Azure Cosmos DB for PostgreSQL では、PostgreSQL 認証と Microsoft Entra ID の統合がサポートされています。 各 Azure Cosmos DB for PostgreSQL クラスターは、ネイティブ PostgreSQL 認証が有効になっており、citus という名前の 1 つの組み込み PostgreSQL ロールを使用して作成されます。 クラスターのプロビジョニングが完了した後に、より多くのネイティブ PostgreSQL ロールを追加できます。

PostgreSQL の認証方法に加えて、またはその代わりに、クラスターで Microsoft Entra ID (旧称 Azure Active Directory) 認証を有効にすることもできます。 各 Azure Cosmos DB for PostgreSQL クラスターで認証方法を個別に構成できます。 認証方法を変更する必要がある場合は、クラスターのプロビジョニングが完了した後でいつでも変更できます。 認証方法を変更する場合、クラスターを再起動する必要はありません。

PostgreSQL 認証

PostgreSQL エンジンは、ロールを使用してデータベース オブジェクトへのアクセスを制御します。 新しく作成された Azure Cosmos DB for PostgreSQL クラスターには、事前定義されたいくつかのロールが付属しています。

Azure Cosmos DB for PostgreSQL はマネージド PaaS サービスであるため、Microsoft だけが postgres スーパーユーザー ロールでサインインできます。 管理アクセスが制限されている場合は、Azure Cosmos DB for PostgreSQL によって citus ロールが提供されます。

マネージド サービスは、すべての PostgreSQL ロールをクラスター内のすべてのノードにレプリケートする必要があります。 この要件を容易にするために、他のすべての PostgreSQL ロールは、PostgreSQL 管理機能用の Azure Cosmos DB を使用して作成する必要があります。

Citus ロール

citus ロールのアクセス許可:

  • すべての構成変数を読み取ります。これには、通常はスーパーユーザのみが参照できる変数も含まれます。
  • すべての pg_stat_* ビューを読み取り、さまざまな統計情報に関連する拡張機能を使用します。これには、通常はスーパーユーザーのみが参照できるビューや拡張機能も含まれます。
  • テーブル上で ACCESS SHARE ロックを取得する可能性のある監視関数を実行します。これには長時間かかる可能性があります。
  • PostgreSQL 拡張機能を作成します

特に、citus ロールにはいくつかの制限があります。

  • ロールを作成できない
  • データベースを作成できない

citus ロールは削除できませんが、クラスターで "Microsoft Entra ID 認証のみ" の認証方法が選択されている場合は無効になります。

Microsoft Entra ID 認証

Microsoft Entra ID (旧称 Azure Active Directory) 認証は、Microsoft Entra ID で定義されている ID を使用して Azure Cosmos DB for PostgreSQL に接続するメカニズムです。 Microsoft Entra ID 認証では、データベース ユーザー ID や他の Microsoft サービスを一元的な場所で管理でき、これによってアクセス許可の管理が単純化されます。

Microsoft Entra ID を使うと次のようなベネフィットがあります。

  • Azure サービス全体でのユーザー認証の一元化
  • パスワード ポリシーとパスワード ローテーションの一元管理
  • Microsoft Entra ID による複数の認証形式のサポート (パスワードを格納する必要がなくなる)
  • Microsoft Entra ID 認証は、PostgreSQL データベース ロールを使用してデータベース レベルで ID を認証します
  • Azure Cosmos DB for PostgreSQL に接続するアプリケーションに対するトークンベースの認証のサポート

Microsoft Entra ID プリンシパルの PostgreSQL アクセスを管理する

Microsoft Entra ID 認証が有効で、Microsoft Entra ID プリンシパルが Microsoft Entra ID 管理者として追加されると、そのアカウントは citus ロールと同じ特権を得ます。 Microsoft Entra ID 管理者のサインインには、Microsoft Entra ID ユーザー、サービス プリンシパル、またはマネージド ID を使用できます。 複数の Microsoft Entra ID 管理者をいつでも構成でき、より良い監査とコンプライアンスのニーズのために、必要に応じて Azure Cosmos DB for PostgreSQL クラスターへの PostgreSQL (パスワード) 認証を無効にできます。

さらに、Microsoft Entra ID 認証が有効になったら、いつでも任意の数の管理者以外の Microsoft Entra ID ロールをクラスターに追加できます。 管理者以外の Microsoft Entra ID ロールのデータベース アクセス許可は、通常のロールと同様に管理されます。

Microsoft Entra ID の ID を使用して接続する

Microsoft Entra ID 認証では、Microsoft Entra ID の ID を使用してデータベースに接続する以下の方法がサポートされています。

  • Microsoft Entra ID パスワード
  • Microsoft Entra ID 統合
  • MFA を使用する Microsoft Entra ID Universal
  • Microsoft Entra ID アプリケーション証明書またはクライアント シークレットの使用
  • マネージド ID

Microsoft Entra ID に対する認証が完了すると、トークンを取得します。 このトークンはログイン用のパスワードです。

その他の考慮事項

  • 複数の Microsoft Entra ID プリンシパル (ユーザー、サービス プリンシパル、またはマネージド ID) を、Azure Cosmos DB for PostgreSQL クラスターの Microsoft Entra ID 管理者としていつでも構成できます。
  • Microsoft Entra ID プリンシパルは、Microsoft Entra ID サービスから削除されると、クラスター上に PostgreSQL ロールとして残ったままとなりますが、新しいアクセス トークンは取得できなくなります。 この場合、一致するロールは Postgres データベースにまだ存在しますが、クラスター ノードへの認証を行うことはできません。 データベース管理者は、所有権を譲渡し、このようなロールを手動で削除する必要があります。

Note

削除された Microsoft Entra ID ユーザーによるログインは、トークンの有効期限 (トークンの発行から最大 90 分) が切れるまで、引き続き行うことができます。 Azure Cosmos DB for PostgreSQL クラスターからもユーザーを削除する場合は、そのアクセスはすぐに取り消されます。

  • Azure Cosmos DB for PostgreSQL は、ユーザー名を使用する場合とは異なり、ユーザーの一意な Microsoft Entra ID ユーザー ID を使用して、アクセス トークンのデータベース ロールへの照合を行います。 Microsoft Entra ID ユーザーが削除され、同じ名前で新しいユーザーが作成された場合、Azure Cosmos DB for PostgreSQL はそれを異なるユーザーと見なします。 そのため、Microsoft Entra ID からユーザーを削除し、同じ名前で新しいユーザーを追加すると、新しいユーザーは既存のロールを使って接続できません。

次のステップ