PHP Password Manager // ppma

時代の流れか最近はオンラインのサービスを利用する機会が非常に増えている。ブラウザが賢くなっていてIDとパスワードを複数憶えてくれるしそれらの情報を違うPCやタブレットなどで同期することもできるので便利にはなってるけどアカウントの管理機能はないので何かしらでしっかり管理しないとそのうち困ることに。

また、ローカルのネットワークでも複数のサーバーやPCを管理する業務となると、まさか今どき憶える量を減らすためにIDやパスワードを使いまわしするというのはありえないしホスト名/ID/password一覧ファイルを社内の他の社員が閲覧できるネットワーク/インターネットに繋がっているPCに保管するとか印刷して持ち歩くとかもありえない。でもアカウント情報一覧が無いと全くもってログインも何もできなくて困る。そこでネットワークの入り口のセグメントの1台にアカウント管理ツールを置けばマスターパスワード1つで全てのアカウント情報を調べることができる。

で、今回はPHPで動くパスワードマネージャのppma。
ppmaは名前が「パスワードマネージャ」由来だけど、正直パスワードマネージャとしてはかなり貧弱で使いやすいわけでもない。でも、シンプルで解りやすく見易いので「アカウントの管理用」としてはとても良い。当然ウェブに限らずTELNET,SSH,FTPなどあらゆるアカウントを管理できる。
ただし、今どきウェブツールとしては珍しく一人用なのでグループ/組織の各自それぞれで使うというのは無理。

ppmaはPHP5.2以降で動く。PHP7.0にも対応。php*-pdo_mysqlモジュールが使えること。
データベースはMySQL5.0以上。一人用程度のデータ量と更新の仕方ならSQLiteで十分だと思うけど。
ウェブサーバはPHPが使えればApacheでもNginxでも。
だいぶ昔のバージョンではyii frameworkが別途必要だったと記憶しているが現在はppmaに入っているのでインストールは非常に簡単になっている。

ppmaの入手は基本的にはGitHubで、Zipファイルで欲しいならSourceForgeから取ってくる。

ウェブサーバのドキュメントルートまたはドキュメントルート下の何処か適切なディレクトリにppmaを展開。パーミッションも適切に。
MySQL側はppma用のユーザーを1つ作成。ppma用の空のデータベースを作成しppma用のユーザーが全権でアクセスできるようにする。(下は例)< /p>

mysql> GRANT ALL PRIVILEGES ON ppma.* TO ppma@localhost  IDENTIFIED BY 'password' WITH GRANT OPTION;
Query OK, 0 rows affected (0.01 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)

ここまで準備ができたら

ppma 1
ブラウザでhttps://example.com/index.phpやhttps://example.com/subdir/index.phpのようなURLを開く。
ppmaが必要とするスペックを満たしていればEnvironmentの全ての項目がTrue、ppmaのディレクトリ/ファイルがウェブサーバから書き込み可能になっていればPermissionsの全ての項目がwritable(書き込み可能)の緑表示になる筈。
全ての条件を満たしたら[次へ]を押す。

ppma 2
ppmaがMySQLに接続するための設定。
Serverの欄の初期値は127.0.0.1になっているのでMySQLのppma用ユーザーのアクセス権がlocalhostのみ有効の場合は(127.0.0.1=localhostだと思って油断しているとMySQL的には)接続できないので注意。MySQLのppma用ユーザーに127.0.0.1を許可するか上の画像のように「localhost」に指定し直す。
全て指定したら[Create Config]を押す。

ppma 3
管理者IDとパスワードを指定。ppmaは管理者1人以外のユーザーは作成できない。つまりこの管理者IDが常用IDとなる。ローカルネットワークで密かに使用するなら別としてインターネットからアクセスできる状態に置くならとんでもなく難しいIDとパスワードにしておくべき。

ppma 4
上の画面が表示されたらインストール完了。水色のloginリンクを押すか
http://example.com/index.php?r=user/login のようなURLのページを手動で開く。
ここでインストール開始画面が表示される場合は再表示するなどしてログイン画面を開かせる。

ppma 5
ユーザー名とパスワードは当然さきほど入力した管理者IDとパスワード。

ppma 6
ppmaのメイン画面。まだ管理するアカウントが1つも登録されていないのでリストはNo results found.になっている。
この画面ではブラウザの横幅が非常に重要。横が950px程度は必要。横幅が狭いと上の黒帯の部分のEntries, Tag, Settings, Profileが表示されないので登録・設定系の操作が何もできない状態になる。レスポンシブにするならブラウザ窓の幅が狭い時はメニューボタン1つを表示してそれが押されたら子メニューが表示されるとかするものだと思うけどメニュー表示が無くなるのは酷い。そのうち改善されるとは思うけど不具合レベルだと思う。

ppma 7
上の黒帯部分のEntriesプルダウンからCreateを選択する。

ppma 8
管理するアカウントの登録画面。上の画像はインターネットのサービスを利用するためのアカウントではなく会社内で管理しているサーバのアカウント情報を模したもの。(当然だが実データではない)

パスワード欄は右の方の「目」の形のアイコンをクリックすると伏せ字からパスワードの文字列に変わる。もう一度押すと伏せ字に戻る。
Tags(タグ)はppmaで多くのアカウントを管理するにはとても重要。例えばインターネットの買い物サイトのアカウントが幾つかあるなら「買い物」など(日本語可)をタグとして登録する。ようするにアカウントの分類に使う。上の画像だとサーバー室のラック番号で分類するという想定。

ppma 9
1つのアカウントしか登録していないのでこんな感じ。上の画像だと右上のTagcloud(タグクラウド)に大きな「ラック3」というのが表示されているが、アカウントを沢山登録し分類タグが増えるとここにそのタグが並ぶ。そこからタグを1つクリックするとそのタグを付けられたアカウントが左ペインにリスト表示される。つまりアカウントがタグで抽出される。

最初はシンプル過ぎて不満に思ったけど使ってると意外とこれで十分だと思うようになった。
でも、やっぱり一人用というのが痛い。複数ユーザー利用可で必要に応じて登録したアカウント情報の共有もできると良かったんだけどなぁ。