Azure Database for PostgreSQL - フレキシブル サーバーで Microsoft Entra ロールを管理する

適用対象: Azure Database for PostgreSQL - フレキシブル サーバー

この記事では、Azure Database for PostgreSQL フレキシブル サーバー インスタンス内に Microsoft Entra ID 対応データベース ロールを作成する方法について説明します。

Note

このガイドでは、Azure Database for PostgreSQL フレキシブル サーバー インスタンスで Microsoft Entra 認証を有効化済みであることを前提としています。 「Microsoft Entra 認証を構成する方法」を参照してください

Azure サブスクリプションのユーザーとその特権を作成して管理する方法について確認する場合は、Azure ロールベースのアクセス制御 (Azure RBAC) に関する記事を参照するか、ロールのカスタマイズ方法について確認してください。

Azure portal または Azure Resource Manager (ARM) API を使用して Microsoft Entra 管理者を作成または削除する

  1. Azure portal で Azure Database for PostgreSQL フレキシブル サーバー インスタンスの [認証] ページを開きます。
  2. 管理者を追加するには、[Microsoft Entra 管理者の追加] を選択し、現在の Microsoft Entra テナントからユーザー、グループ、アプリケーション、またはマネージド ID を選択します。
  3. 管理者を削除するには、削除する管理者の [削除] アイコンを選択します。
  4. [保存] を選び、プロビジョニング操作が完了するまで待ちます。

ポータル経由で Microsoft Entra 管理者を管理するスクリーンショット。

Note

Azure SDK、az cli、Azure PowerShell を使用した Microsoft Entra 管理者の管理機能は近日中に提供されます。

SQL を使用して Microsoft Entra ロールを管理する

Azure portal または API から最初の Microsoft Entra 管理者を作成すると、管理者ロールを使用して、Azure Database for PostgreSQL フレキシブル サーバー インスタンスで Microsoft Entra ロールを管理できます。

Microsoft Entra と Azure Database for PostgreSQL フレキシブル サーバーの統合を最大限に活用するために、Microsoft ID プラットフォームについて理解することをお勧めします。

プリンシパルの種類

Azure Database for PostgreSQL フレキシブル サーバーでは、PostgreSQL データベース ロールと AzureAD オブジェクトの一意識別子の間のマッピングを内部的に保存します。 各 PostgreSQL データベース ロールは、次のいずれかの Microsoft Entra オブジェクトの種類にマッピングできます。

  1. ユーザー - テナントのローカル ユーザーとゲスト ユーザーを含みます。
  2. サービス プリンシパル - アプリケーションとマネージド ID を含みます。
  3. グループ PostgreSQL ロールが Microsoft Entra グループと関連付けられている場合、このグループのすべてのユーザーまたはサービス プリンシパル メンバーは、グループ ロールを使用して Azure Database for PostgreSQL フレキシブル サーバー インスタンスに接続できます。

SQL を使用して Microsoft Entra ロールを一覧表示する

pg_catalog.pgaadauth_list_principals(isAdminValue boolean)

引数

isAdminValue

boolean: true の場合、管理者ユーザーを返します。 false の場合、Microsoft Entra の管理者と非管理者を含む、すべての Microsoft Entra ユーザーを返します。

返り値の種類

TABLE(rolname name, principalType text, objectId text, tenantId text, isMfa integer, isAdmin integer): 次のようなスキーマのテーブル:

  • rolname: PostgreSQL でのロールの名前。
  • principalType: Microsoft Entra ID でのプリンシパルの種類。 usergroup、または service を指定できます。
  • objectId: このプリンシパルに対する Microsoft Entra ID でのオブジェクトの識別子。
  • tenantId: Microsoft Entra ID でこのプリンシパルをホストしているテナントの識別子。
  • isMfa: ユーザーのロールで MFA が適用されている場合、値 1 を返します。
  • isAdmin: ユーザーのロールが PostgreSQL の管理者である場合、値 1 を返します。

Microsoft Entra プリンシパル名を使用してユーザーのロールを作成する

pg_catalog.pgaadauth_create_principal(roleName text, isAdmin boolean, isMfa boolean)

引数

roleName

text: 作成するロールの名前。 これは、Microsoft Entra プリンシパルの名前と一致している必要があります

  • ユーザーの場合は、プロファイルのユーザー プリンシパル名を使用します。 ゲスト ユーザーの場合は、#EXT# タグを使用して、ホーム ドメインに完全な名前を含めます。
  • グループサービス プリンシパルの場合は、表示名を使用します。 名前はテナント内で一意である必要があります。
isAdmin

boolean: true の場合は、PostgreSQL 管理者ユーザーが作成されます (azure_pg_admin ロールのメンバーであり、CREATEROLE と CREATEDB アクセス許可を持ちます)。 false の場合は、通常の PostgreSQL ユーザーが作成されます。

isMfa

boolean: true の場合は、この PostgreSQL ユーザーに多要素認証が適用されます。

重要

isMfa フラグは、Microsoft Entra ID トークンの mfa 要求をテストしますが、トークン取得フローには影響しません。 たとえば、プリンシパルのテナントが多要素認証用に構成されていない場合、この機能の使用は禁止されます。 また、テナントですべてのトークンに多要素認証が要求されている場合は、このフラグは何の意味も持ちません。

返り値の種類

text: 文字列 "Created role for roleName" で構成される単一の値。roleName は、roleName パラメーターに渡された引数です。

Microsoft Entra プリンシパル名を使用してロールを削除する

PostgreSQL で作成されるすべての Microsoft Entra ロールは、Microsoft Entra 管理者を使用して削除する必要があることに注意してください。通常の PostgreSQL 管理者を使用して Entra ロールを削除すると、エラーが発生します。

DROP ROLE rolename;

Microsoft Entra オブジェクト識別子を使用してロールを作成する

pg_catalog.pgaadauth_create_principal(roleName text, objectId text, objectType text, isAdmin boolean, isMfa boolean)

引数

roleName

text: 作成するロールの名前。

objectId

text: Microsoft Entra オブジェクトの一意のオブジェクト識別子。

  • ユーザーグループマネージド ID の場合は、Azure portal の Microsoft Entra ID ページでオブジェクト名を検索して objectId を確認できます。 このガイドを例として参照してください
  • グループサービス プリンシパルの場合は、表示名を使用します。 名前はテナント内で一意である必要があります。
  • アプリケーションの場合は、対応するサービス プリンシパルの objectId を使う必要があります。 Azure portal では、Azure portal のエンタープライズ アプリケーション ページで必要な objectId を確認できます。
objectType

text: このロールにリンクする Microsoft Entra オブジェクトの種類。 usergroup、または service を指定できます。

isAdmin

boolean: true の場合は、PostgreSQL 管理者ユーザーが作成されます (azure_pg_admin ロールのメンバーであり、CREATEROLE と CREATEDB アクセス許可を持ちます)。 false の場合は、通常の PostgreSQL ユーザーが作成されます。

isMfa

boolean: true の場合は、この PostgreSQL ユーザーに多要素認証が適用されます。

重要

isMfa フラグは、Microsoft Entra ID トークンの mfa 要求をテストしますが、トークン取得フローには影響しません。 たとえば、プリンシパルのテナントが多要素認証用に構成されていない場合、この機能の使用は禁止されます。 また、テナントですべてのトークンに多要素認証が要求されている場合は、このフラグは何の意味も持ちません。

返り値の種類

text: 文字列 "Created role for roleName" で構成される単一の値。roleName は、roleName パラメーターに渡された引数です。

SQL を使用して既存の PostgreSQL ロールに対して Microsoft Entra 認証を有効化する

Azure Database for PostgreSQL フレキシブル サーバーでは、データベース ロールと関連付けられたセキュリティ ラベルを使って、対応する Microsoft Entra ID のマッピングが格納されます。

次の SQL を使うと、必要なセキュリティ ラベルを割り当てて、Microsoft Entra オブジェクトにそれをマップできます。

SECURITY LABEL for "pgaadauth" on role "<roleName>" is 'aadauth,oid=<objectId>,type=<objectType>,admin';

引数

roleName

text: Microsoft Entra 認証を有効にする必要がある既存の PostgreSQL ロールの名前。

objectId

text: Microsoft Entra オブジェクトの一意のオブジェクト識別子。

objectType

text: usergroup、または service (独自のサービス資格情報で接続するアプリケーションまたはマネージド ID の場合) に設定できます。

admin

text: 存在する場合と、しない場合があります。 セキュリティ ラベルにこの部分が存在するユーザーのロールは、他の Microsoft Entra ID ロールを管理できます。

次のステップ