2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

設定ファイルに依存したツールをコンテナ化したり、ローカルのクレデンシャルをローテしたりできる超絶便利ツール作った!!

Posted at

イシュー的な

みんなはこんな課題無いっすか?

  • 設定ファイルに依存するツールなのでEC2運用から脱却できない。コンテナ使いたいなぁ・・
  • 設定情報を管理するのにTerraformとAnsibleの2重コード管理になってて面倒だから一本化したい
  • ローカルのMac開発が浸透しちゃってて強力なクレデンシャルがローテするのが出来なくなってる

現行運用って側面の重力でクラウドネィティブ化出来なかったり、セキュアに出来なかったり・・・
折角AWS使ってるのにデータセンターな運用とあんま変わらないし、昨今のクレデンシャル漏洩も気になる。

このツール使って一気に解決だーーーー!

これです、これ

LinuxでもWindowsでもMacでも動くぞ

yasutakatou/secretloader - GitHub

なんスか、これ?

  • テンプレートファイルにAWS Secrets Managerのプレーンテキスト情報を取得してファイルを生成します
  • ループモードではSecrets Managerの内容に差分があったらファイルを再生成します

こんだけ

こんなこと出来るよ!

秘匿情報アリな設定ファイルの一部をマスクしたり、設定情報をAWSで管理させたり

例えばこんなmyPasswordなんてパスワードべた書きな設定ファイルがあったとして、

image.png

こんなかんじに一部をSecret Managerの名前に書き換えたテンプレを作っておく

image.png

Secret Managerにプレーンテキストで設定情報を書いておく

image.png

ツールを動かすと復元できるってワケ

$ secretloader -outputFile=slabot.ini
config file update!: slabot.ini

ループモードで設定を自動反映させる

ループモードはSecret Managerの情報をチェックサムで見続け、差分があったらファイルを生成する動作をします。
つまり、設定ファイルのホットロード機能をもってるツールだとSecret Managerの情報を書き換えると設定が反映される!

ローカルのクレデンシャルをローテートさせる

ローカルのプロファイルにローテーション用の定義を2つ入れておく

image.png

AWSのSecret Managerにも同じ定義を入れておく

image.png

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 おひさー!
忙しいのもあったし、仕事では書いてたりしてたけど、個人開発で書きたいのが思い浮かばなかったのもあって。
でも久々にこれ欲しい!ってのがムクムク湧いてきたのでやってみましたー

こういうモヤを仕事しながらみつけて解消できる!やっぱSREっておもしれぇジョブなんだよなって改めて思う

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?