ProxmoxVEについて知識を深めるために、自分なりの言葉にして学習していきます。
なるべく誰でも分かりすく伝わるように・・・
以下を参考にしながら学習していきます。
- 書名:Proxmox VEサーバー仮想化 導入実践ガイド
https://book.impress.co.jp/books/1124101030
今回
Proxmox VEでは「ユーザがどうやってログインするか?(認証)」と、「ログインしたユーザーが何をしてよいか?(権限)」が分かれて管理されています。この2つを混ぜて運用するも、一方だけを使用するのも自由です。
認証方式は「Realm(レルム)」という単位で管理されていて下記の2つを理解します。
- Linux PAM standard authentication(pam Realm)
- Proxmox VE authentication server(pve Realm)
※どちらも認証の方式の違いであって、「VMを削除できるか」「どのVMが見えるか」といった権限は、ロールとACLの設定で決まります。
シナリオ(具体的な想定をした方が、理解しやすいと思ったため)
1台のサーバ(我が家ではミニPC)にProxmox VEをインストールし、その上にUbuntuデスクトップのVMを用意しました。社員(一般ユーザ)は、そのVMに接続してから社内活動などを行います。
しかし、インフラ管理者が日常的に使用している「root@pam」アカウントを、そのまま一般社員に渡すのは、クラスタ全体の管理権限があり非常に危険です。
- 全てのVM削除
- ストレージやネットワーク設定の変更
- ノード自体の再起動
といった、誤操作をすると大きな影響が出る操作まで実行できてしまいます。
そこで、「誰がログインするか?(認証)」「何ができるか?(権限)」を分けて考えることを目的にpve Realm と pam Realm を使って一般ユーザ用アカウントを作り分ける手順を確認していきます。
前提
Linux PAM standard authentication(pam Realm)
Proxmox VE自体はDebianベースのLinuxの上で動いている
なのでホストOSとしては
- /etc/passwd
- /etc/shadow
- /etc/pam.d/*
を持っている
その上でpam Realmというのは、Proxmoxのログイン画面からログインする時に、LinuxホストのPAMを使って、ユーザーとパスワードを確認する方法
下記補足
- Linux(ホスト OS)側のユーザ
- /etc/passwd / /etc/shadow にいるユーザ
- 例:root, vmuser-pam など
- suコマンド / ssh / ローカルログインの元ネタ
- Proxmox が自分で持っているユーザ
- Proxmox VE authentication server(pve Realm)のユーザ
- 例:vmuser-pve@pve
- これはホスト OS の /etc/passwd とは別管理
結論、考えるより実行して理解
ProxmoxホストにLinuxユーザ「vmuser-pam」を作る
SSH接続でも可能ですが今回は、ブラウザで完結させます。
※今回の名前はpamとpveの違いをわかりやすくさせています。
- 左ペインでノードをクリック
- シェルを開く
-
adduser vmuser-pamを実行 - 一般ユーザ向けのパスワードを設定(2回要求)
- Is the information correct? [Y/n]と聞かれるまでEnterを押してYと入力してEnter
- プロンプトが戻れば完了( root@○○○:~#)
- 確認(任意)
id vmuser-pamと入力しuid=1000(vmuser-pam) gid=1000(vmuser-pam) groups=1000(vmuser-pam)と出力されればOK
Proxmoxにvmuser-pam@pam を登録
VMID 100 にだけ PVEVMUser 権限を付与
vmuser-pam@pam でログインして動作確認
- root@pam からログアウト
- 先程作成した一般ユーザー用アカウントでログインしてみる
- 先程(root@pam)では確認できていたVMID101が見えなくなっている→正常

※VMの削除、ハードウェアタブの編集、ストレージやネットワークの設定変更も不可
- vmuser-pam@pam には /vms/100 に対する PVEVMUser ロールだけを付与しているため、VMID 101 は一覧に表示されず、VMID 100 だけが操作対象として見える状態になっています。
Proxmox VE authentication server(pve Realm)
Proxmox が自分の中に持っている “内部ユーザDB” を使う認証方式
- ユーザー名の書き方
- vmuser-pve@pve みたいに @pve が付くもの
- ユーザ情報の保存先
- Proxmox の内部(クラスタ設定)に保存される
- Linux ホスト(ykmox)の /etc/passwd とは別物
- できること・特徴
- 「Proxmox にしか存在しない専用アカウント」 を作れる
- そのアカウントは
- Proxmox の Web GUI / API にはログインできる
- でも Proxmox ホスト OS(ミニPC)には SSH ログインできない
前提
- root@pam で Proxmox Web GUI にログイン済み
- 今回はVMID101に設定していく
- シナリオはpamと同じ認識でOK
Proxmox 内部ユーザ vmuser-pve@pve を作成
- データセンターをクリック
- アクセス権限→ユーザをクリック
- 追加をクリック
- ①vmuser-pve
- ②Proxmox VE authentication server
- ③任意のパスワード(pamとは関係なし)
- 有効にチェック入れる
VMID 101 にだけ PVEVMUser 権限を付与
vmuser-pve@pve でログインして動作確認
- root@pam からログアウト
- 設定したpveでログイン※レルムはProxmox VE authentication server(PVE)を選択
- 今回は101のみ表示されていれば正常
まとめ
pam
- 認証先:Proxmoxホストの Linux(/etc/passwd・/etc/shadow・PAM 設定)
- ユーザ例:vmuser-pam@pam
- ユーザの実体:
- ホスト OS に vmuser-pam ユーザが存在する
- Proxmox からは「Linux のユーザに聞いて認証」しているだけ
- パスワードの場所:Linux 側(/etc/shadow)に保存
- できること:
- vmuser-pam で Proxmox にログイン
- 同じ vmuser-pam で SSH / su など Linux 側にもログイン可能(設定次第)
pve
- 認証先:Proxmox が内部に持っているユーザDB
- ユーザ例:vmuser-pve@pve
- ユーザの実体:
- Linux の /etc/passwd にはいない
- Proxmox の中だけに存在する「専用ユーザ」
- パスワードの場所:Proxmox の内部DBに保存
- できること:
- vmuser-pve@pve で Proxmox の GUI / API にログイン
- でもミニPC(ホスト OS)には SSH ログインできない








