やーまんぶろぐ

気が向いた時にだけ書くブログ

IAMで踏み台サーバのローカルユーザを一元管理を実行してみる

この記事の続きです。
yamano3201.hatenablog.jp

踏み台サーバのCloudFormationテンプレートでは実現できなかった、以下の要件に対応したいと思います。

  • ユーザアカウントごとにログインさせる
  • 可能な限りユーザアカウントの管理を減らしたい
  • sudo を使わせない

基本的には以下のサイトと同じです。
qiita.com

やってることは踏み台上にIAMユーザと同名のローカルユーザを自動作成して、アカウント管理を減らそうというものになります。
IAMユーザにはSSH公開鍵を登録できるので、それをローカルユーザの.ssh/authorized_keysとしてセットすることでSSHログインも管理できます。

事前準備

  • IAMユーザにsshパブリックキーを登録
  • iam list-users, iam list-ssh-public-keys, iam get-ssh-public-keyの権限を持ったIAMロールを用意(とりあえず前回作成されたIAMロールにIAMReadOnlyAccessポリシーを追加しました)

USER DATAに登録

オートスケールで自動で作成されるたびにスクリプトを流します。
スクリプトはリンク先bashスクリプトとほぼ同じなので割愛します。

USER DATA上でjqをインストールする必要があるのでご注意ください。

sudo yum install -y jq

前回作成したUSER DATAの下に、jqインストールとリンク先スクリプトを追加するとうまく動くと思います。

鍵の更新についても実装していますが、オートスケールによって毎回新規で作成されるので余分なところは削ってもよいかもしれないです。

configurationを作成してアタッチする

オートスケールのconfigurationは編集できないので、新しく作成しましょう。(コピーすると簡単です)
そこでUSER DATAを編集します。

初期ユーザであるec2-userではなく、各ローカルユーザでログインさせたい場合は鍵の登録は不要です。

最後にAutoScallingGroup側で新しいconfigurationをアタッチすれば完成です。

最後に

前回記事と合わせると、以下の要件を合わせた踏み台の作成が完成しました。

  • ログインの証跡を残す
  • 証跡はS3に保存
  • yum updateが定期的に走る
  • オートスケールする(可能であればログインするときだけ起動するようにしたい)
  • ユーザアカウントごとにログインさせる
  • 可能な限りユーザアカウントの管理を減らしたい
  • sudo を使わせない

yamano3201.hatenablog.jp