LoginSignup
27

More than 5 years have passed since last update.

Adminerでお手軽DB管理&アクセス制御

Posted at

参考:
http://www.adminer.org/
http://www.adminer.org/en/extension/

Adminerとは?

AdminerはphpMyAdminのようにブラウザからデータベースを管理するツール。
しかし、AdminerはPHP1ファイルのみで構成されていてとてもお手軽。
さらにMySQL以外のデータベースにも対応していて、何より高速に動作する。

Adminer本体の設置

ドキュメントルートなどに以下のファイルを設置

adminer-3.7.1-mysql.php

実際に使ってみる

後はブラウザで該当ファイルにアクセスするだけで動作する。
ログイン画面で、アクセスするデータベースのユーザ名などが求められる。

IPアドレスでアクセス制御

さすがにドキュメントルートにこんな危ないものは置けないぜ、というのは当然の反応。
そこで、Adminerは簡単に自分自身を拡張できるようになっています。
今回はログイン時にアクセスしてきたユーザのIPアドレスをチェックし、許可したIPアドレス以外はログイン出来ないようにしてみます。

上記の adminer-3.7.1-mysql.php を設置したのと同じディレクトリに、以下のファイルを作成します。

adminer_ext.php
<?php
function adminer_object() {
    class AdminerSoftware extends Adminer {
        function login($login, $password) {
            $whiteList = array(
                // ココに、アクセスを許可するIPアドレスを羅列する
                "xxx.xxx.xxx.xxx",
                "yyy.yyy.yyy.yyy"
            );

            $remoteIP = $_SERVER["REMOTE_ADDR"];
            if(in_array($remoteIP, $whiteList) === true ) {
                return true;
            } else {
                return false;
            }
        }
    }
    return new AdminerSoftware;
}

Adminerは自分と同じディレクトリに adminer_ext.php が存在すればそれを自動的にrequireします。
その中でAdminerのもっているメソッドををオーバライドできます。(今回はloginメソッドをオーバライド)
これで許可されたIPから以外はAdminerにログインすることが出来なくなりました。

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
27