このトピックでは、Elastic Compute Service (ECS) インスタンスにActive Directory (AD) ドメインコントローラーを設定し、ApsaraDB RDS for PostgreSQLインスタンスを自己管理型ADドメインに接続する方法について説明します。
背景情報
ADは、Microsoftが提供するディレクトリサービスです。 ディレクトリは、同じLAN上のオブジェクトに関する情報を格納する階層構造です。 企業は、コンピュータアカウント、ユーザアカウント、グループなどのデータをディレクトリに格納できます。 このようにして、企業はデータのセキュリティを向上させ、より便利な方法でデータを管理することができます。
RDSインスタンスを自己管理型ADドメインに接続できます。 これにより、企業を一元管理し、データベースレベルとユーザーレベルでIPアドレスホワイトリストを設定して、データのセキュリティを向上させることができます。
RDSインスタンスのpg_hba.confファイルのADドメインコントローラーの情報を変更するか、RDSインスタンスのpg_hba.confファイルにADドメインコントローラーの情報を追加できます。 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サーバーは使用できなくなります。
機能
デフォルト設定を使用します。
広告DS
デフォルト設定を使用します。
DNSサーバー
デフォルト設定を使用します。
インストール
[インストール] をクリックして、設定したロールを追加します。
ロールを追加したら、[閉じる] をクリックしてウィザードを閉じます。
[サーバーマネージャー] の左側のナビゲーションウィンドウで、[AD DS] をクリックします。 表示されるページの右上隅にある [詳細] をクリックします。
[すべてのサーバーのタスクの詳細と通知] ウィザードで、[このサーバーをドメインコントローラーに昇格] をクリックします。
Active Directoryドメインサービス構成ウィザードで、次のパラメーターを構成します。
タブ
説明
デプロイメントの設定
[新しいフォレストの追加] を選択し、ルートドメイン名パラメーターを設定します。
説明この例では、Root domain nameパラメーターが
pgsqldomain.net
に設定されています。ここで、pgsqldomain
はプレフィックス、net
はドメイン名のサフィックスです。 ビジネス要件に基づいて値を指定し、プロセス全体で同じ値を使用できます。ドメインコントローラのオプション
ディレクトリサービス復元モード (DSRM) パスワードを指定します。
サーバーの選択
[DNS委任の作成] をクリアします。
追加オプション
デフォルト設定を使用します。
パス
デフォルト設定を使用します。
レビューオプション
デフォルト設定を使用します。
前提条件チェック
[インストール] をクリックします。
説明ECSインスタンスがADドメインコントローラーに昇格した後、ECSインスタンスを再起動する必要があります。 その後、次の手順を実行できます。
ADドメインコントローラーに管理者ユーザーを追加します。
ECSインスタンスにログインします。 次に、サーバーマネージャーを検索して開きます。
サーバーマネージャーの左側のナビゲーションウィンドウで、[AD DS] をクリックし、構成するADドメインコントローラーを右クリックして、[Active Directoryユーザーとコンピューター] を選択します。
をクリックし、[ユーザー] を右クリックし、 を選択します。
説明pgsqldomain.netは、Active Directoryドメインサービス構成ウィザードで指定されたルートドメイン名です。
ユーザー名を指定し、[次へ] をクリックします。
パスワードを指定し、[パスワードの有効期限が切れない] を選択し、[次へ] をクリックします。 次に、[完了] をクリックします。
作成したユーザーをダブルクリックし、[ドメイン管理者] 管理者グループに追加します。
ユーザーがDomain Admins管理者グループに追加されると、次のページが表示されます。
標準ユーザーをADドメインコントローラーに追加してログオンします。
説明「ADドメインコントローラーへの管理者ユーザーの追加」で説明した操作と同じ操作を実行する必要があります。 標準ユーザーをDomain Admins管理者グループに追加する必要はありません。
この例では、
ldapuser
という名前の標準ユーザーがADドメインコントローラーに追加されます。 このユーザーは、RDSインスタンスへのログインに使用されます。ECSインスタンスのセキュリティグループルールを設定します。
ECSコンソールにログインします。
左側のナビゲーションウィンドウで、 を選択します。
上部のナビゲーションバーで、ECSインスタンスが存在するリージョンを選択します。
[インスタンス] ページで、必要なECSインスタンスを見つけ、ECSインスタンスのIDをクリックします。
左側のナビゲーションウィンドウで、[セキュリティグループ] をクリックします。 表示されるページで、[操作] 列の [ルールの追加] をクリックします。
説明ADドメインコントローラでは、いくつかのポートを有効にする必要があります。 他のECSインスタンスと同じセキュリティグループにADドメインコントローラーを設定するのではなく、ADドメインコントローラーに個別のセキュリティグループを設定することを推奨します。
[インバウンド] タブで、[ルールの追加] をクリックして、RDSインスタンスが次のポートを介してECSインスタンスにアクセスできるようにするルールを作成します。
プロトコルタイプ
ポート範囲
説明
TCP
88
Kerberos認証プロトコルのポート。
TCP
135
リモートプロシージャコール (RPC) プロトコルのポート。
TCP/UDP
389
Lightweight Directory Access Protocol (LDAP) のポート。
TCP
445
Common Internet File System (CIFS) プロトコルのポート。
TCP
3268
グローバルカタログのポート。
TCP/UDP
53
DNSサービスのポート。
TCP
65535に49152
接続のデフォルトのダイナミックポート範囲。 次の形式で値を入力します。49152/65535.
RDSインスタンスの設定
- [インスタンス] ページに移動します。 上部のナビゲーションバーで、RDSインスタンスが存在するリージョンを選択します。 次に、RDSインスタンスを見つけ、インスタンスのIDをクリックします。
ldapuser
という名前のアカウントを作成します。 詳細については、「アカウントの作成」をご参照ください。説明RDSインスタンスのアカウントのユーザー名は、ADドメインコントローラー用に作成された標準ユーザーの名前と同じである必要があります。 2つのアカウントのパスワードは異なる場合があります。 ADドメインコントローラがアクセス制御を有効にすると、ADドメインコントローラは標準ユーザのパスワードを検証します。 ADドメインコントローラーのアクセス制御が無効になっている場合、ApsaraDB RDSはRDSインスタンスのアカウントのパスワードを検証します。 アカウントのパスワードは、ApsaraDB RDSコンソールの [アカウント] ページで設定できます。
左側のナビゲーションウィンドウで、[アカウント] をクリックします。 表示されるページで、[ADドメインサービス] タブをクリックします。
[ADドメインサービス] タブを初めて開くと、デフォルトで次の2つのレコードが作成されます。
ホストすべて0.0.0.0/0 md5 ホストレプリケーションすべて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の認証方法を指定します。 有効な値:
信頼
拒否
scram-sha-256
md5
password
gss
sspi
ldap
半径
cert
pam
説明このパラメーターの有効な値は小文字でなければなりません。
オプション
ldapserver= <ECSインスタンスのプライベートIPアドレス> ldapbasedn="CN=ユーザー、DC= ルートドメイン名のプレフィックス、この例ではpgsqldomain、DC= ルートドメイン名のサフィックス、この例ではnet " ldapbinddn="CN= <<ADドメインの管理者ユーザー名> 、DC= ルートドメイン名のプレフィックス、この例ではpgsqldomain、DC= ルートドメイン名のサフィックス、この例ではnet" ldapbindpasswd=" <ADドメインの管理者ユーザーのパスワード> " ldapsearchattribute="sAMAccountName"
認証方法のオプション。 このトピックでは、LDAPを例として使用します。 このパラメーターを指定する必要があります。 詳細については、「認証方法」をご参照ください。
ADドメインサービスレコードの右側にある [追加] をクリックして、レコードを追加します。 次の情報は、新しいレコードの有効な値を示しています。
ホストすべて0.0.0.0/0 md5
[OK] をクリックします。 次に、[送信] をクリックします。
説明[送信] をクリックすると、RDSインスタンスのステータスが約1分間 [インスタンスの維持] に変わります。 新しい設定は、新しい接続に対してのみ有効になります。 新しい設定を有効にするには、既存の接続を閉じてこれらの接続を再確立する必要があります。
オプション。 一度に複数のADドメインに関するサービス情報をインポートします。 ADドメインに関するサービス情報を手動で追加することもできます。
次のインポート方法がサポートされています。
既存のサービス情報を上書きします。
追加サービス情報 (最優先): このオプションを選択すると、ADドメインのサービス情報が既存のサービス情報の先頭に追加されます。 付加情報の優先度は、既存のサービス情報の優先度よりも高い。
追加サービス情報 (優先度が最も低い): このオプションを選択すると、ADドメインのサービス情報が既存のサービス情報の末尾に追加されます。 付加情報の優先度は、既存のサービス情報の優先度よりも低い。
有効な形式:
TYPE | データベース | USER1 | アドレス | マスク | 方法 | オプション
[ADドメインの編集] テキストボックスにインポートするサービス情報を入力します。 パラメーターの詳細については、「パラメーター」をご参照ください。
サンプル設定:
>host | all | <ADドメインの標準アカウントのユーザー名> | 0.0.0.0/0 | | ldap | ldapserver=<ECSインスタンスのプライベートIPアドレス> ldapbasedn="CN=ユーザー、DC=<ルートドメイン名のプレフィックス、この例ではpgsqldomain> 、DC=<ルートドメイン名のサフィックス、netの例>" ldapbinddn="CN=<ADドメインの管理者ユーザーのユーザー名> 、CN=ユーザー、DC=<ルートドメイン名のプレフィックス、この例ではpgsqldomain> 、DC=<ルートドメイン名のサフィックス、この例ではnet>" ldapbindpasswd="<ADドメインの管理者ユーザーのパスワード>" AmssearchandName "
接続をテストします。
PostgreSQLコマンドラインツールを使用してRDSインスタンスに接続します。
説明複数の方法を使用してRDSインスタンスに接続できます。 このトピックでは、PostgreSQLコマンドラインツールを使用します。 PostgreSQLコマンドラインツールを使用する前に、PostgreSQLクライアントをインストールする必要があります。 詳細については、「ApsaraDB RDS For PostgreSQLインスタンスへの接続」をご参照ください。
次のコマンドを実行し、ADドメインコントローラーの標準アカウントのユーザー名とパスワードを使用してRDSインスタンスに接続します。
psql -h <RDSインスタンスのエンドポイント> -U <ADドメインの標準アカウントのユーザー名> -p 5432 -d postgres
ADドメインサービス情報の変更履歴の表示
- [インスタンス] ページに移動します。 上部のナビゲーションバーで、RDSインスタンスが存在するリージョンを選択します。 次に、RDSインスタンスを見つけ、インスタンスのIDをクリックします。
左側のナビゲーションウィンドウで、[アカウント] をクリックします。 表示されるページで、[ADドメインサービスの編集履歴] タブをクリックします。
[操作] 列の [changedetails] をクリックして、変更の詳細を表示します。 変更が失敗した場合、ステータスは [無効] になります。 [ログの変更] をクリックすると、エラーメッセージが表示されます。