イシュー的な
みんなはこんな課題無いっすか?
- 設定ファイルに依存するツールなのでEC2運用から脱却できない。コンテナ使いたいなぁ・・
- 設定情報を管理するのにTerraformとAnsibleの2重コード管理になってて面倒だから一本化したい
- ローカルのMac開発が浸透しちゃってて強力なクレデンシャルがローテするのが出来なくなってる
現行運用って側面の重力でクラウドネィティブ化出来なかったり、セキュアに出来なかったり・・・
折角AWS使ってるのにデータセンターな運用とあんま変わらないし、昨今のクレデンシャル漏洩も気になる。
このツール使って一気に解決だーーーー!
これです、これ
LinuxでもWindowsでもMacでも動くぞ
なんスか、これ?
- テンプレートファイルにAWS Secrets Managerのプレーンテキスト情報を取得してファイルを生成します
- ループモードではSecrets Managerの内容に差分があったらファイルを再生成します
こんだけ
こんなこと出来るよ!
秘匿情報アリな設定ファイルの一部をマスクしたり、設定情報をAWSで管理させたり
例えばこんなmyPasswordなんてパスワードべた書きな設定ファイルがあったとして、
こんなかんじに一部をSecret Managerの名前に書き換えたテンプレを作っておく
Secret Managerにプレーンテキストで設定情報を書いておく
ツールを動かすと復元できるってワケ
$ secretloader -outputFile=slabot.ini
config file update!: slabot.ini
ループモードで設定を自動反映させる
ループモードはSecret Managerの情報をチェックサムで見続け、差分があったらファイルを生成する動作をします。
つまり、設定ファイルのホットロード機能をもってるツールだとSecret Managerの情報を書き換えると設定が反映される!
ローカルのクレデンシャルをローテートさせる
ローカルのプロファイルにローテーション用の定義を2つ入れておく
AWSのSecret Managerにも同じ定義を入れておく
PC起動時に以下のようなプロファイル生成スクリプトを仕込みます
#!/bin/bash
export AWS_PROFILE=ProfileA
secretloader -outputFile=${HOME}/.aws/credentials
if [ $? -ne 0 ]; then
export AWS_PROFILE=ProfileB
secretloader -outputFile=${HOME}/.aws/credentials
fi
普段は最初のプロファイルでクレデンシャルが読み込まれます
$ bash -x update.sh
+ export AWS_PROFILE=ProfileA
+ AWS_PROFILE=ProfileA
+ ./secretloader -outputFile=/home/ady/.aws/credentials
config file update!: credentials
+ '[' 0 -ne 0 ']'
最初のクレデンシャルを更新しても、次のクレデンシャルで生成されます!時間を空けて2個目も更新すればローテできる!!
$ bash -x update.sh
+ export AWS_PROFILE=ProfileA
+ AWS_PROFILE=ProfileA
+ ./secretloader -outputFile=/home/ady/.aws/credentials
secret not found! :SECRET1
+ '[' 1 -ne 0 ']'
+ export AWS_PROFILE=ProfileB
+ AWS_PROFILE=ProfileB
+ ./secretloader -outputFile=/home/ady/.aws/credentials
config file update!: /home/ady/.aws/credentials
と、いうわけで
- 設定ファイルに依存するツールなのでEC2運用から脱却できない。コンテナ使いたいなぁ・・
コンテナ起動時にこのツールを動かせば設定情報を反映したものをデプロイ出来るようになるので、
レガシーなツールもコンテナに持ってくことが出来るようになりました!
また、ホットロード対応のツールなら設定変更も動的に出来るように!!
- 設定情報を管理するのにTerraformとAnsibleの2重コード管理になってて面倒だから一本化したい
TerraformでSecret Managerを更新すれば設定が反映されるのでAnsibleとの2重管理要らなくなります
- ローカルのMac開発が浸透しちゃってて強力なクレデンシャルがローテするのが出来なくなってる
ちょっとギミックありですが、上記の通りローテーション出来るようになります。
もし漏洩が発生しても漏れたクレデンシャルをローテしちゃえば良いのでセキュリティ的にもめっちゃ向上しますね!
久々過ぎる・・・
Qiitaに投稿するのも、ツール書くのも一年ぶりくらいw おひさー!
忙しいのもあったし、仕事では書いてたりしてたけど、個人開発で書きたいのが思い浮かばなかったのもあって。
でも久々にこれ欲しい!ってのがムクムク湧いてきたのでやってみましたー