Laravelで接続先DBのパスワードを暗号化する方法(これでenvファイルにパスワードを平文で保存せずに済みます)

このページでは、LaravelでDB接続を行う際に必要となるパスワードを、.envファイルに平文で記載せず「暗号化された文字列」を記載して運用する方法を紹介してます。

暗号化パスワードで運用するために必要な作業

以下の作業を行いパスワードを平文で保存せず、暗号化されたパスワードで運用できるようにします。

  1. 予めDB接続用アカウントのパスワードを暗号化前の文字列で設定する
  2. .envファイルに暗号化後のパスワードを記載する
  3. 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接続用パスワードを平文で保存することを避けることができます。

以上が、パスワードを平文で保存せずに暗号化されたパスワードで運用できるようにする方法になります。

 

Category: その他Tags: Laravelphp

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

16 − thirteen =