このトピックでは、Elastic Compute Service (ECS) インスタンス上に Active Directory (AD) ドメインコントローラーを構成し、ApsaraDB RDS for PostgreSQL インスタンスを自己管理 AD ドメインに接続する方法について説明します。
背景情報
AD は、Microsoft が提供するディレクトリサービスです。ディレクトリは、同じ LAN 上のオブジェクトに関する情報を格納する階層構造です。企業は、コンピューターアカウント、ユーザーアカウント、グループなどのデータをディレクトリに格納できます。これにより、企業はデータのセキュリティを向上させ、より便利な方法でデータを管理できます。
ご利用の RDS インスタンスを自己管理 AD ドメインに接続できます。これにより、企業を一元的に管理し、データベースレベルおよびユーザーレベルで IP アドレスホワイトリストを構成して、データのセキュリティを向上させることができます。
ご利用の RDS インスタンスの pg_hba.conf ファイルで AD ドメインコントローラーの情報を変更したり、AD ドメインコントローラーの情報を RDS インスタンスの pg_hba.conf ファイルに追加したりできます。AD ドメインコントローラーと pg_hba.conf ファイルは、ApsaraDB RDS コンソールで構成できます。詳細については、「pg_hba.conf ファイルの概要」をご参照ください。
前提条件
ご利用の RDS インスタンスは、次の要件を満たしている必要があります:
RDS インスタンスで PostgreSQL 10 以降が実行されている。
RDS インスタンスでマイナーエンジンバージョン 20210228 以降が実行されている。ご利用の RDS インスタンスのマイナーエンジンバージョンを更新する方法の詳細については、「ApsaraDB RDS for PostgreSQL インスタンスのマイナーエンジンバージョンを更新する」をご参照ください。
RDS インスタンスでクラウドディスクが使用されている。
ECS インスタンスが作成されていること。詳細については、「ECS インスタンスの作成」をご参照ください。ご利用の RDS インスタンスは、プライベート IP アドレスを使用して自己管理 AD ドメインにアクセスする必要があります。したがって、ECS インスタンスは次の条件を満たす必要があります:
ECS インスタンスとご利用の RDS インスタンスが同じ VPC にある。
ECS インスタンスが属するセキュリティグループが、ご利用の RDS インスタンスのプライベート IP アドレスからのアクセスを許可するように構成されている。詳細については、「セキュリティグループルールの追加」をご参照ください。
ECS インスタンスのファイアウォールはデフォルトで無効になっています。ECS インスタンスでファイアウォールが有効になっている場合は、ご利用の RDS インスタンスのプライベート IP アドレスからのアクセスを許可するようにファイアウォールを構成する必要があります。
ECS インスタンスのイメージで Windows Server 2016 以降が実行されている。
ドメインアカウントが Domain Admins グループに属している。
Alibaba Cloud アカウントを使用して ApsaraDB RDS コンソールにログインしている。
操作手順
ECS インスタンスの AD ドメインコントローラーを構成します。
ECS インスタンスにログインします。
説明AD ドメインコントローラーは Windows Server システムで実行する必要があります。Windows Server 2016 以降の使用を推奨します。この例では、AD ドメインコントローラーは Windows Server 2016 を実行します。
[サーバーマネージャー] を検索して開きます。
[ダッシュボード] で、[役割と機能の追加] をクリックします。
[役割と機能の追加ウィザード] で、次の設定を構成します:
タブ
説明
開始する前に
デフォルト設定を使用します。
インストールの種類
デフォルト設定を使用します。
サーバーの選択
デフォルト設定を使用します。
サーバーの役割
[Active Directory ドメインサービス] を選択します。表示されるダイアログボックスで、[機能の追加] をクリックします。
[DNS サーバ] を選択します。表示されるダイアログボックスで、[機能の追加] をクリックします。
説明コンピューターが固定 IP アドレスを使用していることを確認してください。IP アドレスが動的に変更されると、DNS サーバは利用できなくなります。
機能
デフォルト設定を使用します。
AD DS
デフォルト設定を使用します。
DNS サーバ
デフォルト設定を使用します。
OK
インストール をクリックしてインストールを開始します。
インストールが完了したら、閉じる をクリックします。
[サーバーマネージャー] の左側のナビゲーションウィンドウで [AD DS] をクリックし、次に右上隅の 詳細 をクリックします。
[すべてのサーバータスクの詳細と通知] ウィンドウで、[このサーバーをドメインコントローラーに昇格させる] をクリックします。
[Active Directory ドメインサービス構成ウィザード] で、次の設定を構成します:
タブ
説明
展開の構成
[新しいフォレストを追加する] を選択し、[ルートドメイン名] を設定します。
説明この例では、[ルートドメイン名] は
pgsqldomain.netです。ここで、pgsqldomainはドメインプレフィックス、netはドメインサフィックスです。両方の値はカスタマイズできます。後続のステップでは、カスタマイズした値を一貫して使用してください。ドメインコントローラーオプション
[フォレストの機能レベル] と [ドメインの機能レベル] の両方を [Windows Server 2016] に設定します。[ドメインネームシステム (DNS) サーバー] と [グローバルカタログ (GC)] チェックボックスを選択します。[ディレクトリサービス復元モード (DSRM) パスワードを入力してください] セクションで、パスワードを設定して確認し、[次へ] をクリックします。
DNS オプション
[DNS オプション] ページで、[DNS 委任を作成する] チェックボックスをオフにします。
追加オプション
デフォルト設定を使用します。
パス
デフォルト設定を使用します。
オプションの確認
デフォルト設定を使用します。
前提条件のチェック
サービスのインストールを開始するには、インストール をクリックします。
説明ECS インスタンスが AD ドメインコントローラーに昇格した後、ECS インスタンスを再起動する必要があります。その後、後続のステップを実行できます。
AD ドメインコントローラーに管理者ユーザーを追加します。
ECS インスタンスにリモートでログインし、[サーバーマネージャー] を検索して開きます。
[サーバーマネージャー] の左側のナビゲーションウィンドウで [AD DS] をクリックします。次に、右側のターゲットドメインコントローラーを右クリックし、[Active Directory ユーザーとコンピューター] を選択します。
[pgsqldomain.net > ユーザー] を右クリックし、[新規 >]ユーザー を選択します。
説明pgsqldomain.net は、[Active Directory ドメインサービス構成ウィザード] で設定したルートドメイン名です。実際の設定に基づいて名前を選択してください。
ユーザーのログイン名を設定し、次へ をクリックします。フルネームとユーザーログオン名には
dbadminを入力し、ドロップダウンリストから@pgsqldomain.netを選択します。パスワードを設定し、[パスワードを無期限にする] チェックボックスを選択し、次に次へ と 完了 をクリックします。
新しく作成したユーザーをダブルクリックして、ユーザーを [Domain Admins] グループに追加します。ユーザープロパティのダイアログボックスで、[所属するグループ] タブを選択し、[追加] をクリックし、オブジェクト名フィールドに
Domain Adminsと入力し、[名前の確認] をクリックして確認してから、[OK] をクリックします。
ログイン用の標準ユーザーを AD ドメインコントローラーに追加します。
説明標準ユーザーを追加する手順は、管理者ユーザーを追加する手順と同じです。ただし、標準ユーザーを [Domain Admins] グループに追加する必要はありません。
このトピックでは、
ldapuserという名前の標準ユーザーを例として使用します。このユーザーは、ApsaraDB RDS for PostgreSQL インスタンスへのログインに使用されます。ECS インスタンスのセキュリティグループルールを構成します。
ECS コンソールにログインします。
左側のナビゲーションウィンドウで、[インスタンスとイメージ] > インスタンス を選択します。
上部のナビゲーションバーで、ECS インスタンスが存在するリージョンを選択します。
インスタンスページで、ターゲットインスタンスの ID をクリックします。
[セキュリティグループ] タブで、ターゲットセキュリティグループの [操作] 列にある [ルールの管理] をクリックします。
説明AD ドメインコントローラーでは、多数のポートを有効にする必要があります。AD ドメインコントローラーを他の ECS インスタンスと同じセキュリティグループで構成するのではなく、AD ドメインコントローラー用に個別のセキュリティグループを構成することを推奨します。
インバウンド タブで [ルールを追加] をクリックし、以下のポートで ECS インスタンスへのアクセスを許可します。
プロトコルタイプ
ポート範囲
説明
TCP
88
Kerberos 認証プロトコルのポート。
TCP
135
リモートプロシージャコール (RPC) プロトコルのポート。
TCP/UDP
389
Lightweight Directory Access Protocol (LDAP) のポート。
TCP
445
共通インターネットファイルシステム (CIFS) プロトコルのポート。
TCP
3268
グローバルカタログのポート。
TCP/UDP
53
DNS サービスのポート。
TCP
49152 to 65535
接続用のデフォルトの動的ポート範囲。49152/65535 の形式で値を入力します。
RDS インスタンスを構成します
ApsaraDB RDS コンソールにログインし、[インスタンス] ページに移動します。上部のナビゲーションバーで、RDS インスタンスが存在するリージョンを選択します。次に、RDS インスタンスを見つけて、インスタンスの ID をクリックします。
ldapuserという名前のユーザーアカウントを作成します。詳細については、「アカウントの作成」をご参照ください。アカウントが作成された後、アカウントリストで [ldapuser] のアカウントタイプが [標準アカウント] であることを確認できます。説明ApsaraDB RDS コンソールで作成されたアカウント名は、AD ドメインで作成された標準アカウント名と一致する必要があります。パスワードは異なっていてもかまいません。AD ドメイン認証が有効な場合、システムは AD ドメインコントローラーで対応するアカウントのパスワードを検証します。AD ドメイン認証が無効な場合、システムは ApsaraDB RDS コンソールのアカウント管理 ページで設定されたユーザーパスワードを検証します。
左側のナビゲーションウィンドウで、アカウント管理 をクリックし、ADドメインサービス情報 タブを選択します。
初めて ADドメインサービス情報 タブを開くと、システムによって以下の 2 つのデフォルトレコードが作成されています。
host all all 0.0.0.0/0 md5 host replication all 0.0.0.0/0 md5レコードは削除または変更できます。
最初のデフォルトのレコードの横にある編集をクリックし、次のパラメーター値を入力します。
説明次の表では、提供されている例で使用されているパラメーターのみを説明します。詳細については、PostgreSQL の公式ドキュメントをご参照ください。
パラメーター
例
説明
優先順位
0
レコードの優先度。このパラメーターを 0 に設定すると、レコードは最高の優先度を持ち、自動的に生成されます。最初のレコードを変更し、このパラメーターを 0 に設定します。値 0 は、AD ドメインサービスの最高の優先度を指定します。
タイプ
host
有効な値:
host: レコードは、SSL 接続と非 SSL 接続を含む TCP/IP 接続に一致します。
hostssl: レコードは、SSL 経由で確立された TCP/IP 接続にのみ一致します。
説明このパラメーターは、ご利用の RDS インスタンスで SSL 暗号化が有効になっている場合にのみ有効です。詳細については、「ApsaraDB RDS for PostgreSQL インスタンスの SSL 暗号化を構成する」をご参照ください。
hostnossl: AD ドメインは、非 SSL 接続経由で確立された TCP/IP 接続のみを検証します。
データベース
all
指定されたユーザーがアクセスを許可されているデータベース。このパラメーターの値が all の場合、指定されたユーザーはご利用の RDS インスタンスのすべてのデータベースへのアクセスを許可されます。複数のエントリを指定する場合は、コンマ (,) で区切ります。
ユーザー
ldapuser
ご利用の RDS インスタンスへのアクセスを許可されているユーザー。有効な値:AD ドメインコントローラーで作成されたユーザー名。複数のエントリを指定する場合は、コンマ (,) で区切ります。
説明このパラメーターは、AD ドメインで作成された標準ユーザーのユーザー名にのみ設定できます。
アドレス
0.0.0.0/0
指定されたユーザーが指定されたデータベースにアクセスできる IP アドレス。このパラメーターを 0.0.0.0/0 に設定すると、指定されたユーザーはすべての IP アドレスから指定されたデータベースへのアクセスを許可されます。
マスク
なし
レコード内の IP アドレスのマスク。ADDRESS パラメーターの値が IP アドレスの場合、このパラメーターを使用して IP アドレスのマスクを指定できます。
メソッド
ldap
説明LDAP は、データベースのディレクトリにアクセスするために使用されるプロトコルです。このトピックでは、LDAP を例として使用します。
LDAP の認証方式を指定します。有効な値:
trust
reject
scram-sha-256
md5
password
gss
sspi
ldap
radius
cert
pam
説明このパラメーターの有効な値は小文字である必要があります。
オプション
ldapserver=<ECS インスタンスのプライベート IP アドレス> ldapbasedn="CN=Users,DC=ルートドメイン名のプレフィックス、この例では pgsqldomain,DC=ルートドメイン名のサフィックス、この例では net" ldapbinddn="CN=<AD ドメインの管理者ユーザーのユーザー名>,CN=Users,DC=ルートドメイン名のプレフィックス、この例では pgsqldomain,DC=ルートドメイン名のサフィックス、この例では net" ldapbindpasswd="<AD ドメインの管理者ユーザーのパスワード>" ldapsearchattribute="sAMAccountName"
認証方式のオプション。このトピックでは、LDAP を例として使用します。このパラメーターを指定する必要があります。詳細については、「認証方式」をご参照ください。
新しく設定した AD ドメインサービスレコードの横にある追加をクリックして、以下のレコードを追加します。
host all all 0.0.0.0/0 md5情報を入力したら、決定 をクリックし、次に送信をクリックします。
説明変更を送信すると、インスタンスステータスは約 1 分間 メンテナンス中 に変わります。 新しい構成は、新しい接続にのみ適用されます。 変更を有効にするには、既存の接続を再確立する必要があります。
(オプション) AD ドメインサービス構成を手動で追加するだけでなく、ApsaraDB RDS for PostgreSQL は構成の一括インポートをサポートしています。[AD ドメインサービス情報のインポート] ダイアログボックスで、インポートモード ([既存のサービス情報を上書きする]、[サービス情報を追加 (最優先)]、または [サービス情報を追加 (最下位優先)]) を選択します。[AD ドメインの編集] テキストエリアに、
TYPE|DATABASE|USER|ADDRESS|MASK|METHOD|OPTIONの形式で AD ドメインサービス情報を入力し、複数のユーザー名をコンマ (,) で区切り、[OK] をクリックします。次のインポートメソッドがサポートされています:
既存のサービス情報を上書きする。
サービス情報を追加 (最優先):このオプションを選択すると、AD ドメインのサービス情報が既存のサービス情報の先頭に追加されます。追加された情報の優先度は、既存のサービス情報の優先度よりも高くなります。
サービス情報を追加 (最下位優先):このオプションを選択すると、AD ドメインのサービス情報が既存のサービス情報の末尾に追加されます。追加された情報の優先度は、既存のサービス情報の優先度よりも低くなります。
有効なフォーマット:
TYPE|DATABASE|USER1|ADDRESS|MASK|METHOD|OPTIONADドメインの編集 テキストボックスに、インポートするサービス情報を指定された順序で入力します。パラメーターの説明については、前のステップの表をご参照ください。
構成例:
host|all|<ad_domain_standard_username>|0.0.0.0/0||ldap|ldapserver=<ecs_instance_private_ip_address> ldapbasedn="CN=Users,DC=<root_domain_prefix, e.g., pgsqldomain>,DC=<root_domain_suffix, e.g., net>" ldapbinddn="CN=<ad_domain_admin_username>,CN=Users,DC=<root_domain_prefix, e.g., pgsqldomain>,DC=<root_domain_suffix, e.g., net>" ldapbindpasswd="<ad_domain_admin_user_password>" ldapsearchattribute="sAMAccountName"接続性をテストします。
PostgreSQL コマンドラインツールを使用して、ご利用の RDS インスタンスに接続します。
説明複数の方法でご利用の RDS インスタンスに接続できます。このトピックでは、PostgreSQL コマンドラインツールを使用します。PostgreSQL コマンドラインツールを使用する前に、PostgreSQL クライアントをインストールする必要があります。詳細については、「ApsaraDB RDS for PostgreSQL インスタンスへの接続」をご参照ください。
次のコマンドを実行し、AD ドメインコントローラーの標準アカウントのユーザー名とパスワードを使用して、ご利用の RDS インスタンスに接続します:
psql -h <instance_endpoint> -U <standard_username_in_ad_domain> -p 5432 -d postgres
AD ドメインサービス情報の変更履歴の表示
[インスタンス] ページに移動します。上部のナビゲーションバーで、RDS インスタンスが存在するリージョンを選択します。次に、RDS インスタンスを見つけて、インスタンスの ID をクリックします。
左側のナビゲーションウィンドウで、アカウント管理 をクリックし、ADドメイン変更レコード タブを選択します。
[アクション] 列では、詳細の変更 を表示できます。変更が失敗した場合、ステータスは 力がない と表示されます。ログの変更 をクリックしてエラーメッセージを表示できます。[アクション] 列には、AD ドメイン構成を変更前の状態にロールバックするための [復元] オプションも用意されています。