こんにちは!
ナビゲータのEVEです。
昨日までは、DBへ接続するためのユーザーIDとパスワードをハードコーディングする場合、どうしたらいいのかという検討をしてきました。
本日は、同ユーザIDとパスワードをどのような形で管理をしたらいいのか具体的な検討に入りたいと思います。
[管理方法]
ChatGPTは管理する形式について、一例ですが、以下の方法を提案しています。
@INIファイル
AJSONファイル
B環境変数
CPHPファイル
以上のファイルをどのように管理するのかその保管方法について以下の内容で提案しています。
1)ファイルのアクセス権限
2)機密情報の暗号化
3)ファイルの場所
4)サーバーのログに記録されないように
[検討]
ファイルを指定して、中身に定義している変数の内容を取り出すのはどの形式のファイルでも同じようです。そのため、プログラミングの生産性という意味では、@〜Cにおいては、同じと言うことになります。それでは、次に1)〜4)のセキュリティについて考えて見ましょう。
1)は当然リリース時に実施します。所有者はApacheでそれ以外のユーザーに利用させないようにします。現在は以上のように設定していますが、EVEシステムでは構成管理システムで自動で行う予定としています。
2)はどうでしょうか?DBへ接続するユーザーとパスワードのユーザを格納するファイルを暗号化した場合、当然復号しなければ利用できません。それを、データベースを利用するたびに実施するのでしょうか?この方法は現実的ではありません。私の作るシステムでは利用は難しいようです。
3)ファイルの格納場所ですが、どこがいいでしょうか、Windowsユーザーにはあまり知られていませんが、Linux系OSの各フォルダには役割が決まっています。この機会に、Ubuntuで利用している各フォルダの役割についてChatGPTに解説をしてもらいましょう!
❶/bin (Binary):
役割: このディレクトリには、システムの基本的なコマンドやプログラムが格納されています。システムが実行されているときに必要なコマンドがここにあります。
❷/boot:
役割: システムの起動に必要なブートローダ、カーネルイメージ、および関連するファイルが格納されています。ブートプロセスで使用されます。
❸/dev (Device):
役割: デバイスファイルが格納される場所です。デバイスファイルはハードウェアや仮想デバイスと通信するための特殊なファイルです。
❹/etc (Editable Text Configuration):
役割: システムの設定ファイルが格納される場所です。ほとんどのシステムの設定はこのディレクトリ内のファイルで管理されます。
❺/home:
役割: ユーザーホームディレクトリがここに格納されます。各ユーザーはここに自分専用のディレクトリを持ち、そこに個人用のファイルや設定が保存されます。
❻/lib (Library):
役割: 共有ライブラリが格納される場所です。システムとアプリケーションプログラムが使用する共有のライブラリがここにあります。
❼/media:
役割: 可能な場合には、リムーバブルメディア(USBドライブ、CD-ROMなど)が自動的にマウントされるディレクトリです。
❽/mnt (Mount):
役割: 一時的にファイルシステムをマウントするためのディレクトリです。通常、外部のデバイスやネットワークファイルシステムをここにマウントします。
❾/opt (Optional):
役割: オプションのソフトウェアパッケージが通常ここにインストールされます。これにはサードパーティのアプリケーションが含まれます。
❿/proc (Process):
役割: カーネルとプロセスに関連する情報が仮想ファイルシステムとして提供されます。実行中のプロセスやシステムのステータスにアクセスできます。
⓫/root:
役割: rootユーザーのホームディレクトリです。通常のユーザーのホームディレクトリは/homeにあります。
⓫/run:
役割: 実行時に生成されるデータやプロセスの一時ファイルが格納されます。一時的なデータやPIDファイルがここに配置されます。
⓬/sbin (System Binary):
役割: システムの管理者が使用する管理コマンドやシステム設定に必要なプログラムが格納されています。
⓭/srv (Service):
役割: システムが提供するサービスに関連するデータが格納される場所です。例えば、Webサーバーのドキュメントルートがここに配置されることがあります。
⓮/sys (System):
役割: カーネルとハードウェアに関する情報が提供されるディレクトリです。/procと同様に、仮想ファイルシステムです。
⓯/tmp (Temporary):
役割: 一時的なファイルが格納される場所です。通常、システムが再起動するときに削除されます。
⓰/usr (Unix System Resources):
役割: システムのほとんどのプログラムやファイル、ライブラリがここに配置されます。通常は共有されるリソースが格納されるディレクトリです。
⓱/var (Variable):
役割: システムの変動するデータ(ログファイル、データベースファイル、メールなど)が格納される場所です。頻繁に変更されるデータがここに保存されます。
以上の調査結果から、etcがふさわしいようです。
4)については、セキュリティにおいてログの管理方法を検討する機会があります。その時にどうしたらいいのか検討したいと思います。そのため、ここでの検討は省略します。
[あとがき]
今日も時間がきましたので、この辺までとさせていただきます。
現在、クラスを製造していますが、そろそろ、文字クラスの製造の終わりが見えてきました。以前、以下のクラスを作ると話していました。
・データベース検索メソッド
・Fetchメソッド
・テーブル一覧取得メソッド
・SQLdbqueryメソッド
・レコード追加メソッド
・レコード更新メソッド
・レコード削除メソッド
・トランザクション開始メソッド
・コミットメソッド
・ロールバックメソッド
・レコード件数取得メソッド
・エラーメッセージ取得メソッド
・エラーNo取得メソッド
・トランザクション変数取得メソッド
■ファイルClass
・ファイル取得メソッド
・ファイルコピーメソッド
・ファイル書き出しメソッド
・ファイル削除メソッド
・ファイル読込メソッド
・コンテンツ取得メソッド
■数値Class
■文字Class
・配列⇔文字列変換メソッド
・乱数取得メソッド
・文字列編集メソッド
・文字列部分取り出しメソッド
・指定文字列検索メソッド
・指定文字列削除メソッド
・html⇔文字列変換メソッド
■時間Class
・現在日付取得メソッド
・日付取得メソッド
・タイムスタンプ編集メソッド
■セキュリティClass
・SHA3ハッシュ値取得メソッド
・配列結合メソッド
■メールClass
・メール送信メソッド
■メッセージClass
・メッセージ出力メソッド
・エラーログ出力メソッド
ただ、予定が変わり、現在は、文字クラスなら、Prototype EVEで利用していた関数をすべてクラスに変更しています。理由は、文字クラスならそのクラスで文字列に対する機能をプロパティ、メソッド等という形で提供していることを作っている途中で悟ったからです。そのため、配列Classは1つしかメソッドを記述していませんが、それ以外にもメソッドを製造しています。
その他のクラスも同様に製造する予定です。そのような製造方針で作っていて、2月末日までに製造が完了するかどうか、あやしくなってきました。これから、速度を上げて製造していきたいと思います。
では、また!