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. [保存] を選び、プロビジョニング操作が完了するまで待ちます。

Screenshot of managing Microsoft Entra administrators via portal.

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 ロールを一覧表示する

select * from pgaadauth_list_principals(true);

パラメーター:

  • true -管理者ユーザーを返します。
  • false - Microsoft Entra 管理者と Microsoft Entra 以外の管理者の両方にすべての Microsoft Entra ユーザーを返します。

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

select * from pgaadauth_create_principal('<roleName>', <isAdmin>, <isMfa>);

For example: select * from pgaadauth_create_principal('mary@contoso.com', false, false);

パラメーター:

  • roleName - 作成するロールの名前。 これは Microsoft Entra プリンシパルの名前と一致する必要があります
    • ユーザーの場合は、プロファイルのユーザー プリンシパル名を使用します。 ゲスト ユーザーの場合は、#EXT# タグを使用して、ホーム ドメインに完全な名前を含めます。
    • グループサービス プリンシパルの場合は、表示名を使用します。 名前はテナント内で一意である必要があります。
  • isAdmin - 管理者ユーザーを作成する場合は true、通常のユーザーの場合は false を設定します。 この方法で作成した管理ユーザーは、ポータルまたは API を使用して作成したものと同じ権限を持ちます。
  • isMfa - フラグ。このロールに多要素認証を適用する必要があるかどうかを表します。

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

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

Drop Role rolename;

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

select * from pgaadauth_create_principal_with_oid('<roleName>', '<objectId>', '<objectType>', <isAdmin>, <isMfa>);

For example: select * from pgaadauth_create_principal_with_oid('accounting_application', '00000000-0000-0000-0000-000000000000', 'service', false, false);

パラメーター:

  • roleName - 作成するロールの名前。
  • objectId - Microsoft Entra オブジェクトの一意のオブジェクト識別子。
    • ユーザーグループ、およびマネージド ID の場合、Azure portal の Microsoft Entra ID ページでオブジェクト名を検索することで ObjectId を確認できます。 このガイドを例として参照してください
    • アプリケーションの場合、対応するサービス プリンシパルの Objectid を使用する必要があります。 Azure portal では、[エンタープライズ アプリケーション] ページで必要な ObjectId を確認できます。
  • objectType - このロールに関連付けられた Microsoft Entra オブジェクトの種類 (サービス、ユーザー、グループ)。
  • isAdmin - 管理者ユーザーを作成する場合は true、通常のユーザーの場合は false を設定します。 この方法で作成した管理ユーザーは、ポータルまたは API を使用して作成したものと同じ権限を持ちます。
  • isMfa - フラグ。このロールに多要素認証を適用する必要があるかどうかを表します。

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

Azure Database for PostgreSQL フレキシブル サーバーでは、データベース ロールと関連するセキュリティ ラベルを使用して、Microsoft Entra ID マッピングを保存します。

次の SQL を使用して、セキュリティ ラベルを割り当てることができます。

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

パラメーター:

  • roleName - Microsoft Entra 認証を有効化する必要がある既存の PostgreSQL ロールの名前。
  • objectId - Microsoft Entra オブジェクトの一意のオブジェクト識別子。
  • user - エンド ユーザー プリンシパル。
  • service - 独自のサービス資格情報で接続するアプリケーションまたはマネージド ID。
  • group - Microsoft Entra グループの名前。

次のステップ