このページでは、LaravelでDB接続を行う際に必要となるパスワードを、.envファイルに平文で記載せず「暗号化された文字列」を記載して運用する方法を紹介してます。
目次
暗号化パスワードで運用するために必要な作業
以下の作業を行いパスワードを平文で保存せず、暗号化されたパスワードで運用できるようにします。
- 予めDB接続用アカウントのパスワードを暗号化前の文字列で設定する
- .envファイルに暗号化後のパスワードを記載する
- config/database.phpファイルに複合化処理を記載する
これだけで完了です。
DB接続アカウントのパスワードを設定
あらかじめDB接続アカウントのパスワードを暗号化前のもので設定します。
.envファイルの記載例
envファイルには外部のexeなどで暗号化した後の文字列を記載します。
※外部のiniファイル等に記載しておく場合も同様です
DB_PASSWORD=暗号化後のパスワード
復号化処理の記載例
復号化処理は、config/database.phpファイルに記載します。
<?php
use Illuminate\Support\Str;
// ここに復号化処理を追記 ※decode_password.exeは復号化するプログラムを想定
$hash_password = env('DB_PASSWORD', '');
$af_password = exec("decode_password.exe $hash_password");
// ここまで
return [
〜以下省略〜
'mysql' => [
'driver' => 'mysql', 'url' => env('DATABASE_URL'),
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
// ▼復号化したパスワードを使用する例▼
'password' => $af_password,
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8mb4',
〜以下省略〜
],
上記の方法で、DB接続用パスワードを平文で保存することを避けることができます。
以上が、パスワードを平文で保存せずに暗号化されたパスワードで運用できるようにする方法になります。
コメント