ジョブスケジューラであるRundeckからジョブを起動する際、パスワード等の秘匿情報を扱うと思います。 この日得情報を扱う良いアイデアをご紹介します。
Rundeckで秘匿情報パラメータをセキュアに扱う会計スクラムチーム柏熊 宏幸
View Slide
かるく自己紹介● 社歴○ 2016年3月1日入社(DMM歴:2年7ヶ月)● 所属○ 会計スクラムチーム○ 決済、購入、ポイントの情報を何やかんやし、経理 /CFO向けのレポートをつくってます● 得意○ IaC(Terraform, Ansible)○ Python○ Kotlin○ 障害調査切り分けなど
背景● 経理レポート作成のため、オンプレの一部データをAWSへ転送● 転送にはRundeck+embulkを採用購入決済ポイントkickuser認証IAM認証
課題● Rundeckから秘匿情報をパラメータで渡すとき、生のまま扱うことに...購入決済ポイントuser認証IAM認証kickkick時、パラメータとして秘匿情報を渡す!
こんな感じでまるみえ〜
■画面上 ■exportした設定ファイル生パスワード丸見え
解決策● Rundeck Key Storageが使えそう○ https://rundeck.org/docs/administration/security/key-storage.html● Rundeck上で扱うprivate key, public key, パスワード類を保存・参照・破棄できる機能● 事前にKeyStorageに保存し、ジョブ実行時に参照/利用。● 保存時のキーは、ファイルパスのように指定。○ (例) 会計DBのユーザパスワード■ keys/accounting/user■ keys/accounting/passsword
Key Storageへ登録
Job設定での参照
■画面上 ■exportした設定ファイル生のままパスワード表示されなくなる!
注意点● 保存した後は保存値は画面上からは確認できない○ マスタ値は別で管理しましょう● secureつってるけど、暗号化はされてないよ○ catコマンドで中身を普通に見れました○ 暗号化したい場合は、 Key Storage Convert Pluginを使ってやる■ https://rundeck.org/docs/developer/storage-converter-plugin.html
まとめ● Rundeckから秘匿情報を扱うとき、Key Storageをつかえばそのまま扱うよりセキュアっぽい○ 秘匿情報や鍵のこと考えなきゃ〜からの開放が良さげ● 暗号化までガチガチに考えるならConverter Pluginの設定が必要そう● 気になった方は、Dockerでできるのでためしてガッテン!○ https://hub.docker.com/r/jordan/rundeck/