0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Proxmox学習記録(3) Proxmox VEのユーザと権限の管理:pam と pve

Posted at

ProxmoxVEについて知識を深めるために、自分なりの言葉にして学習していきます。
なるべく誰でも分かりすく伝わるように・・・
以下を参考にしながら学習していきます。

今回

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 を使って一般ユーザ用アカウントを作り分ける手順を確認していきます。

前提

  • root@pam(Realm: Linux PAM standard authentication)で Proxmox Web GUI にログインしている
    root@pam.png

  • Proxmox ホスト上に Ubuntu デスクトップの VM(VMID: 100)が存在している
    VMID100.png

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の違いをわかりやすくさせています。

  1. 左ペインでノードをクリック
  2. シェルを開く
  3. adduser vmuser-pamを実行
  4. 一般ユーザ向けのパスワードを設定(2回要求)
  5. Is the information correct? [Y/n]と聞かれるまでEnterを押してYと入力してEnter
  6. プロンプトが戻れば完了( root@○○○:~#)
    シェル.png
  • 確認(任意)id vmuser-pamと入力しuid=1000(vmuser-pam) gid=1000(vmuser-pam) groups=1000(vmuser-pam)と出力されればOK

Proxmoxにvmuser-pam@pam を登録

  1. データセンターをクリック
  2. アクセス権限からユーザをクリック
  3. 追加をクリック
    PAM追加.png
  4. ①vmuser-pam(任意)
  5. ②Linux PAM standard authentication
  6. ③チェックを入れる
    PAM設定.png

VMID 100 にだけ PVEVMUser 権限を付与

  1. VMID:100をクリック
  2. アクセス権限をクリック
  3. 追加をクリック
  4. ユーザのアクセス権限をクリック
    100PAM付与.png
  5. ユーザ:vmuser-pam@pam
  6. ロール:PVEVMUser
  7. 追加をクリック
    100PAM付与2.png

vmuser-pam@pam でログインして動作確認

  1. root@pam からログアウト
  2. 先程作成した一般ユーザー用アカウントでログインしてみる
    PAMログイン.png
  3. 先程(root@pam)では確認できていたVMID101が見えなくなっている→正常
    どうさかくにん1.png
    ※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 を作成

  1. データセンターをクリック
  2. アクセス権限→ユーザをクリック
  3. 追加をクリック
    PVE作成.png
  4. ①vmuser-pve
  5. ②Proxmox VE authentication server
  6. ③任意のパスワード(pamとは関係なし)
  7. 有効にチェック入れる
    PVE設定1.png

VMID 101 にだけ PVEVMUser 権限を付与

  1. VMID101をクリック
  2. アクセス権限をクリック
  3. 追加をクリック
  4. ユーザのアクセス権限
    PVE付与.png
  5. ①vmuser-pve@pve
  6. ②PVEVMUser
  7. 追加をクリック
    PVE付与2.png

vmuser-pve@pve でログインして動作確認

  1. root@pam からログアウト
  2. 設定したpveでログイン※レルムはProxmox VE authentication server(PVE)を選択
  3. 今回は101のみ表示されていれば正常
    • 起動(Start) / 停止(Shutdown) / コンソール → 実行できる
    • 削除(Remove) / ハードウェア 編集 / ストレージ・ネットワーク変更 → 実行できない
      PVE動作確認.png

まとめ

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 ログインできない
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?