DBRE の観点から DB 踏み台サーバを作るとこうなった

2022/12/28に公開

こんにちは、あわっちです。
2022年が終わろうとしているので最も力を入れた DB の踏み台サーバを新しい形にしたお話を記録したいと思います。

現在僕は KINTO テクノロジーズ という会社で DBRE をやらせていただいています。
実際 DBRE って何やってるの? と感じる方も多いと思います。ざっくりとこんな割合で仕事をしています。

  • アプリケーションエンジニアリング 6割くらい
    • Go
    • Terraform
    • AWS
  • チームビルディング 3割ちょっと
    • スクラムチーム
    • グループアシスタントマネージャー
  • 事業サポート 1割以下
    • 事業から問い合わせがあった場合にお答えしたり伴走したりする
      • リアクティブな動きになるので思ったほどこの割合が多くない
      • 来年はこの割合を増やしていきたい

つまり何をしていたかというと、ほとんどがアプリケーション開発です。

なぜアプリケーション開発がメインだったかというと、事業に対して何かしらの価値提供を行う必要性を感じており、自分達でできるプロアクティブな動きの一つとして 「DBRE Platform」 を構築・提供することを優先的に考えたからです。
まずは事業の方に価値を提供し、そこで信頼を得ることがリアクティブな動きを活発にできると信じています。

ここに多少まとめたものを公開していますので気が向いたらみていただければと思います。

前置きが長くなりました、すみません。。。

ここから本題のインスタントな踏み台サーバの構築についてお話ししたいと思います。

インスタントな踏み台サーバ (powerpole)

以前もお話ししましたが KINTO の名前の由来はドラゴンボールの筋斗雲、だそうです、なので僕はそれに合わせたコードネームを自分達のプラットフォームにつけています。
今回は PowerPole(如意棒) です。如意棒はカリン塔と神殿を繋ぎ、神殿に行くことを目的としたアイテムです。
それにちなんで 「DB に対してオペレーションしたいユーザー」 と 「DB インスタンス(Aurora)」 を繋ぐ、という意味を含めてこのアプリケーションコードを名づけました。

PowerPole の簡易的なアーキテクチャ

おおよその処理のフローはこんな感じです

  1. Slack から承認リクエストを Approver に送る
  2. Approver に承認されれば EC2 インスタンスが構築される
  3. 構築された EC2 インスタンスの IP と Slack のメールアドレスの @ より前を使用して Aurora に必要な権限を GRANT する
  4. Slack の DM に踏み台サーバ接続の為の URL や MySQL 接続に必要なコマンド、パスワード、削除されるまでの時間などの情報を送る
  5. (ユーザーによる DB オペレーション作業)
  6. 削除 10分前にユーザーにお知らせ
  7. 構築された EC2 インスタンス、 Aurora 上に GRANT したユーザーを削除
  8. Slack にインスタンス削除完了通知

PowerPole のメリット

  1. DB オペレーション承認ログの取得
    • いつ、誰が、どの権限でリクエストを送って、誰が承認したのかを DynamoDB に保存
  2. DB オペレーションログの取得
    • SSM を使用しその踏み台インスタンスで行われた作業ログを CloudWatch Logs に保存
      • 個人情報等入っていると危ないのでセキュリティチームのみ、万が一の場合に限り閲覧できるように権限を絞る
    • Audit Log には共通ユーザー名ではなく Slack のメールアドレスの @ より前が入る為誰がオペレーションしたのかがはっきり分かる
  3. DB オペレーションに応じたロール設定
    • 過剰な権限を与えないために承認リクエスト時にどの Role で GRANT するかを指定
      • READ / DML / DDL で権限を作成
  4. 踏み台サーバを常時起動させない
    • 踏み台サーバのセキュリティパッチ等の通常オペレーションを削減
  5. オペレーション承認されれば誰でもアクセスできる
    • 承認されなければ誰もアクセスできない
  6. 必要な時に承認されてから数分で自分専用のインスタンスが構築される
    • 他の人のオペレーションに影響を受けない

ざっくりとですが以上のようなことが挙げられます。
同時にさまざまな情報セキュリティ要件をクリアする為の仕組みは現時点でも入れていますし、今後も拡張していくと思います。

実はこれ、前職で DBRE を始めた時に一番作りたかった仕組みだったりして、ようやくそれが実現してとっても嬉しかったのであります、はい!

今回は触りの部分だけです、アーキテクチャ等に関しては別の機会でお話ししようと思います

もっと聞いてみたい、みたいなことがあればお気軽に Twitter DM 等でもご連絡ください。

それではみなさま、良いお年を〜〜♪

Discussion