踏み台サーバのOSユーザーとIAMユーザーを自動同期する方法

EC2
スポンサーリンク

こんにちは、ひでさんです。

今回は、EC2のLinuxOSユーザーとIAMユーザーを同期する方法についてご紹介したいと思います。

 

よくあるのが、EC2で踏み台サーバを作成し、秘密鍵を使ってSSH接続という場面なんですが、少しセキュリティ面を考え出すと、管理が手間になってきます。

 

例えば、1つのOSユーザーだけですと、いろんな人が共有でそのユーザーを使いますから、セキュリティ対策の一環として踏み台サーバの操作ログをとったとしても結局誰が何をしたかがわからない。

 

で、個人ごとにユーザーを作ろうと思うと数名程度ならまだしも、
数十人以上の規模になってくると、かなり手間になってくる。

 

また、エンジニアをどかから引っ張ってきて開発を行っているようなプロジェクトですと、人の入れ替わりもありますし、その度に秘密鍵を取っ替えたり、OSユーザーを削除したりと・・・。

 

そんな時思うのが、

「AWSのIAMユーザーとOSユーザー、自動で連動しねーかなぁ」

ということ。

 

※実はセッションマネージャーというのもを使えば、AWSコンソール上からブラウザ経由で踏み台サーバへSSH接続のようなことを実現する方法もありますので、ご興味のある方は以下の記事をご参照ください。

SSMを使ってAWSコンソールから直接EC2にコマンドをたたく方法
「インターネットがあれば外出先からでもコンソール画面が開ける」というのがパブリッククラウドの利点の一つです。 外出先だろうが、自宅だろうがインターネットにつながるPCがあれば問題なし。 これがオンプレミス環境との大きな違いの一つです...

 

ここで登場するのが、「aws-ec2-ssh」というツールです。
aws-ec2-sshを使えば、IAMユーザーと踏み台サーバのOSユーザーを同期させることができます。

 

さらにAWSコンソール上から個別に公開鍵をアップすることで、
aws-ec2-sshがいい感じに踏み台サーバへ適用してくれて、わざわざ踏み台サーバに入って設定し直さなくても、各IAMユーザーに関連づけられた鍵でアクセスできるようになります。

また、特定のユーザーにはsudo権限を付与し、特定のユーザーにはsudo権限を付与しないといった権限管理も自動的に行われます。

 

注意いただきたいのが、「aws-ec2-ssh」というツールは、
既に開発がストップされているツールなので、今後もしかしたら使えなくなるというリスクがある点です。

その点は十分に検討いただき、それでも大丈夫!ということであればぜひ使ってみてください。

 

スポンサーリンク

aws-ec2-sshのインストール手順

それでは実際にaws-ec2-sshをインストールし、設定する方法をご紹介したいと思います。

主な流れは以下の通りです。

  1. EC2に特定のポリシーをアタッチしたIAMロールを適用する
  2. EC2にaws-ec2-sshをインストールする
  3. aws-ec2-sshのconfigを設定する

 

この3点を行えば、あとはIAMユーザーを作り、指定のグループに追加するだけで自動的にEC2側にも同じ名前のOSユーザーが作られます。

 

1.EC2に特定のポリシーをアタッチしたIAMロールを適用する

それでは、IAMユーザーを同期させたいEC2に対して特定のポリシーをアタッチしたIAMロールを適用しましょう。

(1)IAMマネジメントコンソールにて以下のポリシーを作成します。

(2)新しくEC2用のIAMロールを作成し、作成したポリシーを適用します

(3)IAMロールを踏み台サーバ(EC2)に適用します

 

2.EC2にaws-ec2-sshをインストールする

次にEC2にaws-ec2-sshをインストールします。

(1)EC2にSSH接続します

(2)以下のコマンドにてaws-ec2-sshをダウンロードします

※EC2にgitがインストールされていない場合は、gitをインストールしてから行いましょう

(3)以下のコマンドにてaws-ec2-sshをインストールします

 

3.aws-ec2-sshのconfigを設定する

最後にインストールしたaws-ec2-sshの設定を行います。
これが完了するとAWSのIAMユーザーとEC2のOSユーザーが同期するようになります。

(1)以下のコマンドで設定ファイルを作成します

※aws-ec2-ssh.confの中身は以下の内容とします

 

各パラメータの意味は以下の通りです。

【IAM_AUTHORIZED_GROUPS】
Sudo権限を持たないIAMグループ名。なければ「=””」とする。
※上記の例では「members」となります。

【LOCAL_MARKER_GROUP】
aws-ec2-ssh内で使われるグループ名。
※IAMグループ名とは関係ありませんので任意で大丈夫です。

【SUDOERS_GROUPS】

Sudo権限を持たせるIAMグループ名。なければ「=””」とする。
※上記の例では「admins」となります。

【DONOTSYNC】

同期設定。0でユーザーの同期が実行される。

 

AWSコンソール上で新規IAMユーザーを作る

aws-ec2-sshの準備が整ったところで、IAMユーザーを作って自動同期を試してみましょう。

AWSコンソールから新しくIAMユーザーを作成します。
この時、aws-ec2-ssh.confで設定したグループ名と同じグループに追加することも忘れずに行ってください。

aws-ec2-sshで設定したグループとIAMグループが紐づいて自動的にOSユーザーが作成される仕組みになっています。

ちなみにIAMユーザーを削除すると、EC2側のOSユーザーも削除されます。

 

AWSコンソール上に公開鍵を登録する

新しくIAMユーザーを作成したところで、以下の手順で公開鍵・秘密鍵を作成し、公開鍵を登録しましょう。

(1)以下のコマンドで公開鍵・秘密鍵を作成します
※MacOSの場合です

※以下、全部EnterでOKです。

これで、「~/.ssh」配下に「id_rsa」(秘密鍵)と「id_rsa.pub」(公開鍵)が作成されます。

(2)IAMマネジメントコンソールへいきます

(3)対象のユーザー名をクリックし、「認証情報」タブをクリックします

(4)「SSHパブリックキーのアップロード」ボタンをクリックします

(5)公開鍵の内容を貼り付ける欄が表示されますので、先程作成した公開鍵ファイル(id_rsa.pub)を開いて内容を貼り付けます。

※公開鍵最後に記載されている「ユーザー名@ホスト名」は削除して貼り付けます

(6)アップロードすると以下のようにSSHキーとしてAWS上に認識されます

これで、秘密鍵(id_rsa)と作成したユーザー名を使って踏み台サーバへSSH接続することが可能になります。

実際の運用上では、例えば新しく参画した人がいるならば、
IAMユーザーの作成はこちらで行なって、参画者に鍵の作成と公開鍵の登録を任せてしまってもいいですね。

そうすると踏み台サーバの管理がずっと楽になると思います。

以上、よろしければ運用管理の効率化に使ってみてください。

ひでさんでした。

スポンサーリンク
EC2
Tech Dive
タイトルとURLをコピーしました