Proxmoxでのローカルアカウント管理を卒業する時が来ました
数台のVMを動かす1〜2ノードのProxmoxをローカルアカウントで管理するのは簡単です。しかし、システムが5〜10ノード(クラスター)になり、ITチームに新しいメンバーが3人加わった場面を想像してみてください。各ノードでユーザー作成やパスワード設定を繰り返すのは、貴重な時間を「浪費」する最短ルートです。さらに、従業員が退職するたびに、すべてのシステムのアカウントを削除して回るのは、セキュリティ上の悪夢と言えるでしょう。
筆者の約12台のVMとコンテナがあるホームラボ環境では、早い段階でActive Directory(AD)を統合しました。各ノードのrootパスワードを覚える代わりに、単一のアカウントを使用するだけで済みます。この構成では、ProxmoxはADから認証サービスを「借りる」役割を果たします。パスワードの変更からアカウントのロックまで、すべてがドメインコントローラー(DC)で集中管理されます。
このセットアップを優先する3つの理由は以下の通りです:
- 真のシングルサインオン(SSO): 業務で使用しているWindowsアカウントをそのままProxmoxのログインに使用できます。
- グループベースの権限管理(RBAC):
IT-Adminsグループにはフルコントロール権限を、Dev-Teamにはコンソールの閲覧や仮想マシンの起動・停止のみを許可するといった運用が可能です。 - リスクコントロール: AD側で「無効化」を1クリックするだけで、仮想化インフラへのすべてのアクセス権を即座に遮断できます。
ドメインコントローラーから準備すべき情報
Proxmoxで設定を行う前に、AD管理ツールを開いて以下の情報をメモしておきましょう:
- DCのIPアドレス/ホスト名: 例:
192.168.1.10またはdc01.itfromzero.local - Base DN: Proxmoxがユーザーを検索する開始地点。例:
ou=Users,dc=itfromzero,dc=local - Bind DN: ProxmoxがLDAPクエリを実行するために使用する、読み取り専用権限を持つサービスアカウント。例:
cn=proxmox_svc,ou=ServiceAccounts,dc=itfromzero,dc=local - Bind DNのパスワード
重要な注意点: Bind DNには絶対にDomain Adminアカウントを使用しないでください。専用のユーザーを作成し、システムの突然の切断を防ぐために「パスワードを無期限にする(Password never expires)」設定を推奨します。
ProxmoxをLDAP/ADに接続する手順
ステップ 1:新しいRealm(レルム)の登録
root権限でProxmoxのWeb GUIにアクセスします。Datacenter > Permissions > Realms に移動し、Add をクリックして Active Directory Server を選択します。
表示されたパネルに基本情報を入力します:
- Realm ID:
AD-COMPANYのような分かりやすい名前を付けます。これはログイン時のドロップダウンメニューに表示されます。 - Domain: ドメイン名(例:
itfromzero.local)。 - Server: ドメインコントローラーのIPアドレス。
- Default: ログインページを開いたときに、このRealmを自動的に選択させたい場合はチェックを入れます。
ステップ 2:Bindユーザーの認証
作成したRealmを選択して Edit をクリックします。ここで正確な Bind DN を入力する必要があります。DNの文字列が長くて覚えにくい場合は、Windows DCでPowerShellを開き、以下のコマンドを実行してください:
dsquery user -name proxmox_svc
返された結果をコピーして、ProxmoxのBind DN欄に貼り付けることで、100%正確に入力できます。
ステップ 3:グループの同期(Sync Options)
権限割り当てを自動化するために、Sync Options タブを設定します。Group DN を技術チームのグループが含まれるOUに指定します。Scope セクションでは、サブOU内までスキャンするように Subtree を選択します。
保存後、Sync ボタンをクリックします。画面にユーザーとグループのリストが OK と共に表示されれば、接続成功です。
仮想マシンの権限管理(RBAC):よりスマートな方法
同期しただけでは、ADユーザーはまだProxmox上で何も権限を持っていません。一人一人に権限を割り当てるのではなく、グループに対して権限を割り当てましょう(グループベースの権限管理)。この方法により、人事異動などの管理が非常に楽になります。
- Datacenter > Permissions > Groups で、同期されたグループを確認します(通常
@AD-COMPANYというサフィックスが付いています)。 - Permissions セクションで、Add > Group Permission をクリックします。
- Path: すべての仮想マシンに対して権限を与える場合は
/vmsを、特定の範囲に限定する場合は特定のプールを選択します。 - Role: 技術チームには
PVEVMAdminを、ログの閲覧のみが必要な監査チームにはPVEAuditorを選択します。
コマンドラインを使用したい場合は、以下の方法でITグループに管理者権限を素早く割り当てることができます:
pveum acl modify / -group "IT_Admins@AD-COMPANY" -role Administrator
よくあるトラブルシューティング
実際の導入時に遭遇しやすい2つの一般的な問題を紹介します:
1. パスワードが正しいのに「Invalid credentials」エラーが出る
原因の90%は時刻のズレです。ProxmoxとDCの時刻同期の誤差は5分以内である必要があります。ProxmoxでNTPを確認してください:
timedatectl status
# もし時刻がずれている場合は、再同期してください
ntpdate -u pool.ntp.org
2. ポート636使用時のSSL/TLSエラー
暗号化のためにLDAPSを有効にしている場合、ProxmoxがDCの証明書を信頼していないと接続を拒否します。DCのCA証明書ファイルをダウンロードし、/usr/local/share/ca-certificates/ にコピーしてから update-ca-certificates を実行してシステムに認識させる必要があります。
Tips:ローカルのrootアカウントをロックしないでください
ADがいかに便利であっても、安全な場所に物理的に保管されたパスワードを持つローカルの root アカウントは必ず維持してください。ドメインコントローラーの障害やネットワークスイッチのハングアップが発生した場合、ローカルアカウントがシステムを救出するための唯一の手段となります。
AD統合は単なる「見栄え」のためではなく、インフラを標準化するための重要なステップです。このガイドが、皆さんの手作業を減らし、よりエキサイティングなプロジェクトに集中する助けになれば幸いです!

