Doctor NoNoのブログ

Doctor NoNoのブログ

日々の愚痴とか不満とか...

・DB接続アカウント情報は「Secrets Manager」で、と言われた

なぜ?

という質問には詳しい回答がなかった。どうやらAWSの代理店(かなんか)から「そっちの方が安全ですよ」とか言われたらしい、という勝手な憶測をしてみた。

確かに現状のシステムでDB接続アカウントはテキストファイルで保持している。

画面HTML等を更新するユーザからは遮断しているが、サーバ側スクリプトはDB接続の際にそのテキストファイルから設定値を読み出すので、たとえばFTPでそのファイルを読み出すスクリプトを設置して実行すれば読み出せてしまう。

「ああ、危ない。なんてことだ!」ってか?

 

・じゃあ「Secrets Manager」はめっちゃ安全なの?

一般的なサイトで「Secrets Manager」を導入する場合、たいていはSDKを使って「Secrets Manager」から秘匿情報を読み出して使用する。

1) 「Secrets Manager」からSDKでDB接続アカウント情報を読み出す

2) それを使ってサーバ側スクリプトでDB接続を実行する

何のことはない。従来は情報参照先がローカルファイルだったものが「Secrets Manager」に変化しただけである。

なので「Secrets Manager」に格納したとしてもそこから読み出すスクリプトを設置すれば読めてしまうので、リスクレベル的に向上したとは言えない。

ちょっと悪人の手間が増えるだけ。

でも無知な自分の認識が根本的に間違ってるかもしれない。と思って、上のひとに聞いてみた。

「聞くはいっときの恥」。

 

・秘匿情報の管理、自動ローテーション、バージョン管理、レプリケーション、詳細ログ、、、モゴモゴ

本人もよく理解できていない様子。

「情報が漏れた時の犯人探しが容易になる」とかは意味不明。

確かに「Secrets Manager」をRDSさせると自動ローテーションにも対応してくれる。らしい。

でもどうだ。結構な台数のうちのサーバで過去にバージョンアップ以外でDB接続アカウントを更新したものがあったか?

少なくとも自分が担当してから結構な年月が経つが、いちどもローテーションしたことはないぞ。

「自動ローテーション」やるとしたらキャッシュミス時の再取得とかで遅延も増大するし。

 

そもそもいまの構成でも各サイトごとにそれぞれの専用RDSが割り当ててあって、他のホストからの接続は遮断するような構成になってるわけで、なんなら「localhost」並みに接続アカウントすら不要なんじゃないかと思うのだが。

 

・じゃあ「Secrets Manager」は不要なの?

違う違う、そうじゃ、そうじゃなぁい。

中途半端な実装は役に立たないのでコストの無駄、と言いたいだけ。

本当に接続アカウントを秘匿したければ「Secrets Manager + Secrets Manager Agent」で構築すればサーバ側スクリプトに秘匿情報が漏れることはない。

IAMの一時トークンとかで「よしなに」処理してくれる。

まあそうなんだけど、そこまでの実装が必要か???

極論だけど、たとえば接続アカウントが漏洩したとして、それがなにか?

DB側では特定のホストからしか接続を受け付けないようにしてあるし、悪者がその情報を入手したところでうちのサーバにスクリプトを設置してそのアカウントでDBからデータを盗み出す、って、それなら別にわざわざ接続情報を盗まなくてもDBデータ抽出スクリプト書いて設置するだけで実行可能だし。

いまどき公開DB使って個人情報扱うサイトを運用するような尊いサイトってあるのかな。

 

・自分なりの結論

正直、よく分からんけどいまのことろ懐疑的。

特にうちくらいの構成ではサーバがどんどん重くなるだけな気がする。

まあ、予算使わんといかんのなら止めはせんが。

 

「監査」とか「セキュリティ」とか、そういう部門に長く居る人たちが苦手。

タイトルに関係ないけど。

RHEL8にPHP7を「yum」で入れるとデフォルトではCGI版が入ってしまうらしい。

で、これまでモジュール版のPHP5.4あたりで動いていたシステムを移設するケースでは、

 ・PHP5.4→PHP7.4のコンバート

 ・モジュール版→CGI版のコンバート

が必要になる。

 

・PHP5.4→PHP7.4のコンバート

まあこれは4→5のときと同様、粛々と作業するしかない。

そういう仕事してるわけだし。

 

・モジュール版→CGI版のコンバート

モジュール版のままなら必要ない作業なんだけど、まあこれも粛々と作業するしかない。

クライアントが「どうしてもCGI版で!!!」とおっしゃってるわけだから。(「どうしても余計な費用を払いたい!!!」って言われてるわけだから、ありがたいと思おう)

簡単なシステムなら「.htaccess」に書いてある設定のうち、PHPの設定部分を「.user.ini」に移動するだけでだいたいOKなのだが、細かく作りこんであるシステムだとそれだけでは終わらない。

画像ファイルに偽装したプログラムを「AddType」で起動しているようなケースだとソケット経由でCGIを起動する設定に変えないと動かない。

またブラウザと非同期連携するような実装がある場合、FastCGIのバッファを乗り越える実装に改修する必要があったりして、全体としてそこそこ工数がかかる。

 

でも専用サーバなのにどうしてわざわざ「CGI版」にするんだろう。

クライアントに聞いてみた。

 ク:セキュリティの問題です。

???え???

いちばんわけの分からん答えが返ってきた。

いくら「FastCGI」が速くなったとはいえ、専用サーバで「セキュリティ」を理由にわざわざCGI版を入れるメリットってあるのか?

ChatGPTも「専用サーバの場合はApacheモジュール版のPHPを使用する方が適切である場合が多いでしょう」って言ってるぞ。

でも、きっと自分の知らない深~い「セキュリティ」の世界があるんだろうな。

(まさか、RHEL8の「yum」で入れられるPHPのデフォルトが「CGI版」だから、などという素人チックな理由じゃないよね。頼むから「違う」と言ってくれ。)

 

まあいいか。追加作業料金もらえるわけだし。
このサーバで「パフォーマンスがぁぁ~!」という騒ぎだけは起こさないようにと祈ろう。

2022/09/04の20:30(日本時間)ごろからうちの「Windows Defender」がしきりに「Behavior:Win32/Hive.ZY」の脅威をレポートしてくる。

Win32/Hive.ZY

ちょうどその時間にあるアプリをインストールしていたので、そいつかと思っていったんアンインストールしたが改善されない。

ブラウザとかメーラがネットで通信するたびにレポートされてくるのでウザい。

いちおうネットで検索してみると、日本語の記事がほとんどないのが気にはなるが、同じ現象が同時期にあちこちで発生しているらしい。

各記事には「Windows Defender」の誤定義が原因というような見解もあったが、もしそうならすぐに改善版の定義データがが配布されそうなものだ。

実際にはそれ以降に定義データが二回リリースされているが、改善されていないので非常に気持ちが悪い。

「Win32/Hive.ZY」を許可すればレポートは止まるだろうけど、もし本当に「重大」な脅威だったらまずいのでしばらくこのままで様子を見ようと思う。

 

追記(2022/09/05 07:18):

どうやら「Defender build 1.373.1508.0」で引き起こされたバグだったらしい。

いま最新の定義「1.373.1537.0」がリリースされて治った。