勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ

データベース管理ツール「AdminNeo」にプラグインを導入してセキュリティ対策する方法

  データベース

以前データベース管理ツール「AdminNeo」を導入する方法をメモしたが、こちらにプラグインを導入してセキュリティ面を向上させたい。調べたところアクセスIPアドレス制限とワンタイムパスワード認証あたりがよさそう。また、プラグインとは別に設定ファイルによる通信の暗号化設定も行いたい。以下に各種導入方法をメモ。

 

事前準備

AdminNeoとプラグインについて

AdminNeo自体の設置やプラグインの導入方法自体については過去記事を参考にすること。

Google Authenticatorのインストール

ワンタイムパスワード認証についてはGoogle Authenticatorを利用するため以下からアプリをインストールしておくこと。

iOS

https://apps.apple.com/jp/app/google-authenticator/id388497605

Android

https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2&hl=ja

 

プラグインの導入

アクセスIPアドレス制限(IpLoginPlugin.php)

公式プラグインページからIpLoginPlugin.phpをダウンロードし「adminneo-plugins」ディレクトリにアップロードする。

adminneo-plugins.phpには以下を追記し、アップロードする。

new \AdminNeo\IpLoginPlugin(
    //許可するIPを配列で渡す
    ['xxx.xxx.xxx.xxx'],
),

この時点でブラウザからアクセスするとIPアドレス許可・拒否に関わらずAdminNeoログインページ自体は表示される。ただ、ユーザ・パスワード等を入力の上、ログインしようとしてもIPアドレスが許可されていない場合はログインできない状態になっている筈。

ワンタイムパスワード認証(OtpLoginPlugin.php)

公式プラグインページからOtpLoginPlugin.phpをダウンロードし「adminneo-plugins」ディレクトリにアップロードする。

当該プラグインページでIssuerとUsernameを適宜変更の上「Generate」ボタンをクリックし、QRコードを生成する。

以下画像を参考に1の部分はメモっておき、2の部分はGoogle Authenticatorアプリで読み込んでおく。

adminneo-plugins.phpには以下を追記し、アップロードする。

new \AdminNeo\OtpLoginPlugin(
    //1の部分でメモしたランダム英数字を記述する
    base64_decode("xxxxxxxxxxx")
),

この時点でブラウザからアクセスするとAdminNeoログインページにワンタイムパスワード入力欄(OTPのテキストボックス)が表示される筈。Google Authenticatorアプリ上に表示される6桁のパスワードを入力することでアクセスできる。

 

設定ファイルの導入

設定ファイルについて

adminneo.phpやadminneo-plugins.phpと同じディレクトリにadminneo-config.phpというファイル名でアップロードすると設定ファイルとして取り扱われる。

設定可能項目は公式ページを参考。

通信の暗号化

以下内容を記述したadminneo-config.phpをアップロードする。

<?php
return [
    "sslEncrypt" => true,
];

 - データベース

  関連記事

MySQLで苗字(姓)と名前(名)のカラムを結合させ検索する方法
MySQLで苗字(姓)と名前(名)のカラムを結合させ検索する方法

MySQLで名字(姓)と名前(名)をそれぞれ別カラムに格納しているデータベースが ...

MySQLでSELECT時に数値を3桁ずつのカンマ区切りに変換する方法
MySQLでSELECT時に数値を3桁ずつのカンマ区切りに変換する方法

MySQLで商品価格のような数値の値を3桁ずつのカンマ区切りで取り出したいという ...

PHPでmysqli関数使用時のプリペアドステートメントの利用方法
PHPでmysqli関数使用時のプリペアドステートメントの利用方法

PHPでMySQLを扱う際はmysqli関数を、エスケープの際はreal_esc ...

MySQLにてdatetime型のカラムを整形し「年月日のみ形式」または「秒のみ省いた形式」で表示する方法
MySQLにてdatetime型のカラムを整形し「年月日のみ形式」または「秒のみ省いた形式」で表示する方法

MySQLにてdatetime型のカラムに登録日時等を格納しており、管理画面側で ...

MySQLで開始~終了日時の間隔を計算し分に変換して出力する方法
MySQLで開始~終了日時の間隔を計算し分に変換して出力する方法

MySQLで「開始日時」「終了日時」のdatetime型カラムがあり、開始から終 ...