認証情報(主にパスワードを想定)の管理に関する悩み

認証情報(主にパスワード)の管理に関して

  • Gitで管理

    • (Gitが社内ネットワークからしかつながらない + パスワード認証になっていることを信頼する)
    • (気が狂ったやつがネットワークの設定を変えてしまうかもしれない。Git内の違う場所に置いておこう)
      • ソースコードリポジトリを分けて生パスワードで管理する
        • パスワードに対応する情報(DBのhost、ユーザ名、DB名など)が同じファイル内に書かれていたらその時点で終わりのリスクがある
      • ソースコードリポジトリを分ける。ファイルに書くパスワードは暗号化。
        • コードが特定される & 安易な暗号化だとコードから解読されるリスクがある
      • ソースコードリポジトリを分ける。パスワードが書かれているファイルを暗号化。
        • 暗号化のためのソルトとパスワードの管理が必要になりそう
    • (気が狂ったやつがネットワークの設定を変えてしまうかもしれない。でもGit内の違う場所に置くと管理の手間が。。。)
      • ファイルに書くパスワードは暗号化。その上でソースコードと同じリポジトリで管理する
        • 安易な暗号化だとコードから解読されるリスクがある
      • パスワードが書かれているファイルを暗号化してソースコードと同じリポジトリで管理する
        • 暗号化のためのソルトとパスワードの管理が必要になりそう
  • Git以外で管理

    • (DBの情報を忘れるのが怖いからただ単にGitで管理しているけど別にGitでなくてもいい)
      • internetに出ていかないようなツールで管理する。(Wikiとかは避ける) <- システムへの反映はオペレーションでのカバーが必要になるケースもありそう

Perlのリハビリ

10数年ぶりにPerlで作られたプロダクトのタスクをアサインされた。
今日調べて思い出したことをメモとして残しておこうと思う。

インストールされているPerlのモジュールの調べ方

bash
find `perl -e 'print "@INC"'` -name '*.pm' 2> /dev/null | xargs -I@ basename @ | sort | uniq

PerlモジュールのVersionの調べ方

# perl -M'モジュール名' -le 'print $モジュール名::VERSION'
perl -M'Test' -le 'print $Test::VERSION'

Perlモジュールのアーカイブネットワーク
CPAN (Comprehensive Perl Archive Network)

Perlのスタイルガイド
perlstyle

MySQLでディスクの使用状況を確認するSQL

データベースのディスク使用状況確認

SELECT  
    FORMAT(SUM(data_length + index_length + data_free), 0)
FROM 
    information_schema.tables
WHERE
    table_schema=database();

テーブル毎にディスク使用状況を確認する

SELECT  
    table_name
    , engine
    , FORMAT(table_rows, 0)     AS table_rows
    , FORMAT(avg_row_length, 0) AS avg_row_length
    , FORMAT(data_length, 0)    AS data_Byte
    , FORMAT(index_length, 0)   AS index_Byte
    , FORMAT(data_free, 0)      AS data_free_Byte
    , FORMAT((data_length + index_length + data_free), 0) AS all_Byte
FROM 
    information_schema.tables
WHERE
    table_schema=database()
ORDER BY
    (data_length + index_length + data_free) DESC;

転職も手かしら

仕事の環境を変えてもいいかなと最近思うようになってきた。
理由としては

  • 健康状態

  • モチベーションの維持の難しさ

1つ目の健康状態に関してだが、2021年8月に鬱病と診断された。
2021年8月から2024年2月の間に2度の休職を経験し、今も安定と不安定を繰り返している。
周りの人も理解してくれているので仕事は非常にやりやすいのだが、
会社のカルチャーからストレスを受けているのではと考えるようになってきた。
なんだかんだ10年以上英語に触れ続けてきたおかげで、英語力が向上し英語で仕事がこなせるようになってきたとはいえ、 公用語が英語というのは英語ネイティブではない私にとってはストレスが大きいのではないだろうか。

2つ目のモチベーションの維持の難しさについて。
実は現在同じサービスを10年以上担当しており、自分の中でかなりやり切った感がある。
10年以上サービスが継続しているのはありがたい話なのだが、さすがに使っている技術も古くなってきた。
これ以上続けても技術者としてのメリットは少ない。
それに数年前に別部署で後継のサービスが立ち上がったのもあり、将来的な縮退はもう目に見えている。
(ただ後継サービスの進捗があまりよくないので下手に生きながらえている。。。)
こういう現状もあり自分の中でモチベーションの維持が難しくなっている。

今所属している会社は大きな会社なので、部署移動するという手もあるが、会社のカルチャーが変わるわけではないので転職もありかもなぁ。
とりあえず転職の準備は進めておいて、自分に需要があるのか探っていこう。

manを日本語で読む方法

最近、resolv.confについて調べる機会があった。
resolv.confで設定している項目の中で、環境変数で上書きができるのはどの項目か調べたかった。
インターネットで調べるといろいろな情報にぶち当たったのだが、詳しさだったり信ぴょう性がいまいちだった。
なので基本に立ち戻りmanを読むことにした。
今回はお手軽に概要を理解したかったので日本語版のmanを読んだ。
以下はその時の手順

sudo apt install manpages-ja
man -L ja resolver