« ^ »

クレデンシャルをどのように管理するのかについて想いを馳せる

所要時間: 約 2分

この文書は雑多に考えた事を書き殴ったものだ。まとまってもいないし、内容もデタラメだ。だから読む価値はない。それを承知の上で、内容が気になるという人は以降を読む資格がある。

ここまで読んだ貴方。そうとう暇人ですね?

それでは私が雑多に考えたことに付き合ってもらいたい。

Gitなどのバージョン管理のリポジトリにクレデンシャル情報を入れるのは御法度だ。 絶対にやってはいけない。ただ、やはりGitで管理したいよなと思う時もある。 変更履歴を取ることができるし、すぐ戻せるし、何より管理が同一になるため便利だ。

それをサポートするような拡張も存在する。git-secretがそれにあたるだろう。 git-secretではOpenPGPを利用し、クレデンシャル情報を暗号化した状態で、リポジトリにコミットする。これはこれで悪くはない。悪手なようにも思えるが、操作感的には悪くない。ただ1つずつのバージョン管理はできない。おそらく欲しいのは暗号化サブモジュールのようなものだ。Gitで何かしら問題があったとしても、システム的にクラッキングされても、リポジトリが暗号化されていれば、ちょっとだけリスクが低減できる。 Gitのバージョン管理はとても優れているのでそれは用いたい。 つまり、.gitに梱包される履歴情報を常に暗号化した状態で保持したいということだ。 暗号化や複合化のためにオーバーヘッドはあるだろうけれど、それには目を瞑り、1つずつのコミットを見れなくする。それぞれの人のOpenPGPの鍵を持っておいて、その鍵を持った人だけが、履歴を辿れるようにするといったことができないだろうか。

ソースコードリポジトリとの統合はどうするのかという問題はあるが、それはgit submodueでよいと思う。git submoduleは確かに操作が煩雑にはなるが、こういう用途には向いていると思う。クレデンシャルをgit submoduleにするだけでよいのではとも思うが、それではgit submoduleを管理しているサーバーがやられた時に漏洩する。やはりOpenPGPの仕組みを上手く利用し、履歴をそれぞれで保持するような仕組みが欲しい。

たぶん、暗号化のタイミングを工夫すればできると思うんだよなぁ。でも秘密鍵が漏洩した場合、失効とかはどのようにすればよいのだろう。もうちょっと調べてみる