どうしても語りたい AWS Systems Manager の魅力 !

~ 第 2 回 こんなに簡単にサーバー接続できるなんて !
2024-06-04
How to be a Developer

Author : 瀧田 直斗, 上野 涼平

みなさん、こんにちは ! ソリューションアーキテクトの上野です。
今回は、どうしても語りたい AWS Systems Manager の魅力シリーズの第 2 回目ということで、「こんなに簡単にサーバー接続できるなんて !」をお届けしていきます。

第 1 回では、「どうしても語りたい AWS Systems Manager の魅力 ! ~第 1 回 こんなに簡単にシステム運用を自動化できるなんて!」というタイトルで、複数のサーバーに対して行う設定、ミドルウェアインストール、コマンド実行などを Systems Manager を利用して簡単に効率化、自動化できることをご紹介しました。

しかし、システム運用の中ではサーバーに接続して、調査や変更作業が必要な場面が出てきます。実際にお客様からも、緊急メンテナンス用途でサーバーに接続する方法や、開発を委託しているパートナー会社からのサーバー接続方法についてどのような構成をとればよいかというご相談をいただくことがあります。

ということで今回もソリューションアーキテクトの瀧田さんと上野の愉快なやりとりで、サーバー接続に関して Systems Manager がどのように活用できるかご紹介したいと思います !


この記事の登場人物

瀧田 直斗 (たきた なおと) ソリューションアーキテクト
前職では 10 年以上オンプレミスの運用に従事
最近 AWS Systems Manager を触り始め可能性を感じており、上野さんへ話を持ちかける。

上野 涼平 (うえの りょうへい) ソリューションアーキテクト
前職では AWS 環境の構築と運用改善に従事
AWS Systems Manager に精通しており、瀧田から相談を受ける。


対談

瀧田
ということで今回もよろしくお願いします !

上野
はい、よろしくお願いします !

瀧田
前回は、サーバーへのコマンド実行やミドルウェアインストールなど操作に関連するお話でしたが、今回はサーバー接続に関していろいろ聞かせてください !

上野
はい ! まずはお悩みポイントから聞ければと思うのですがいかがでしょうか ?

瀧田
Systems Manager を使うことで 1 台 1 台サーバーに接続しなくてもコマンド実行などの操作ができることは前回わかったのですが、とは言っても直接サーバーに接続して調査や対応が必要なシーンってあると思うんですよ。

上野
確かに。

瀧田
そうなると、オンプレミス時代の運用では、踏み台サーバーを用意して、このサーバー経由で本番環境のサーバーに接続する構成が多かったんですよね。ただ、踏み台サーバーは新規構築が必要ですし、接続経路については社内ネットワークから VPN を張るケースやパブリックなネットワークに配置してパートナー会社からもつながるようにするケースもあって、特に後者だと「セキュリティ対策どうする ?」みたいな話にもなるんですよ ! 踏み台サーバーをパブリックなネットワークに配置できても会社のネットワークからは SSH や RDP でインターネット接続できないように制限されているケースもあります・・・。あと単純にサーバー台数多いと接続情報の管理や操作ログなどの証跡も考えないといけなくて・・・とにかく大変なんですよ !! (興奮)

上野
落ち着いてください瀧田さん ! お気持ちはよくわかります。(過去に苦労したんかなぁ・・・)

瀧田
はぁ、はぁ・・・

上野
(落ち着いたかな・・・?) 今のお話をまとめてみたのですが、以下の図のようなイメージですかね ?

瀧田
まさに ! 会社にもよりますが課題はいろいろあると思います。
 
上野
わかりました ! サーバーに接続する手段はいくつかあるのですが、今回は AWS Systems Manager の Session Manager を使った接続についてご紹介したいと思います。簡単に説明すると、踏み台サーバー無しで簡単にサーバーに接続することができる機能です。
 
瀧田
ぜひ詳しく教えてください !

Session Manager とは ?

  • プライベートネットワーク配置かつインバウンドポートを開放せずにサーバーにアクセス可能
    • VPN などの閉域接続をせずともプライベートネットワークにあるサーバーにもアクセス可能
  • 踏み台サーバーが不要
  • ID/PW やサーバー接続用の鍵管理が不要 (マネージメンドコンソールからの接続時のみ)

上野
サーバーに接続する環境を整える手間であったり、ネットワーク的なセキュリティの確保の面で苦労することがたくさんあるということでしたが、Session Manager は上記のような特徴があるため、どちらの側面でもお役立ちできるかと思います !

瀧田
Amazon VPC へのインバウンドポートを開放せずにプライベートネットワークにあるサーバーにアクセスできるってどういうことですか?どんな魔法を使っているんですか ?

上野
さすが瀧田さん、鋭い質問ありがとうございます。ずばり答えとしては、Systems Manager Agent がアウトバウンド通信しているからです !

瀧田
え、Agent・・・?

上野
はい、Agent です ! 先に Systems Manager の話をすると、Session Manager や前回ご紹介した Run Command など Systems Manager の一部の機能では、サーバーに Systems Manager Agent をインストールしておく必要があります。

瀧田
なるほど、そうだったのですね。

上野
はい ! この前提をもとにこちらの図をご覧ください。

上野
ポイントは、Agent がインストールされたサーバーから Session Manager に対してアウトバウンド通信している点です。Session Manager がユーザーからのリクエストと、Agentからの通信の間をとりもつことで、ユーザーから見ると直接サーバーに接続しているような操作感になるわけです。

瀧田
おお、こんな仕組みになっているんですね ! これならサーバーをパブリックな環境に配置しなくて済みますね!そしてプライベートな環境に配置されているけど、VPN 接続の設定も不要だ・・・素晴らしい・・・。ちなみにプライベート環境からのアウトバウンドは、NAT Gateway で実現するしか方法はないのですか ?

上野
VPC エンドポイント経由でも接続できるので、要件にあわせて使い分けていただくことができます ! 実際にはアウトバウンド経路以外にも、Session Manager や Run Command を使うための初期設定が必要なので詳細は AWS Black Belt Online Seminar の資料をご確認ください。また、使い方まで含めて紹介している動画もあるのでぜひ !

瀧田
ちなみに接続するときには、何かクライアントツールを使うのでしょうか ?

上野
マネジメントコンソール (ブラウザ) からつなぐ方法と従来のクライアントツールからつなぐ方法があるので実際に接続してみましょうか。


Session Manager の使い方(マネジメントコンソール編)

上野
まずは、マネジメントコンソールからつなぐ方法を試しましょう !

瀧田
はい!ちょうど私の AWS 環境に Amazon EC2 のインスタンスがあるのでこちらで試していきます !

瀧田
まずは、AWS マネジメントコンソールから AWS Systems Manager を検索して、左のメニューから「セッションマネージャー」を選んで・・・

画像をクリックすると拡大します

瀧田
セッションの開始」をクリックして・・・

画像をクリックすると拡大します

瀧田
お、ターゲットインスタンスに接続したいサーバーが表示されていますね !

上野
はい、Systems Manager Agent のセットアップなど必要な設定が完了していると接続対象として認識されるようになります。

瀧田
では、インスタンスを選択して「Start Session」をクリックしますね。

画像をクリックすると拡大します

瀧田
お、つながった ! え、もしかしてこれでおしまい ?

上野
これにて接続完了です ! 何かコマンドを実行してみましょう !

画像をクリックすると拡大します

瀧田
おおー ! いつものシェル接続や~ ! プライベートサブネットにあるサーバーにこんな簡単に接続できるなんて・・・。Session Manager・・・恐ろしい子 !

画像をクリックすると拡大します

上野
ちなみに、EC2 インスタンスの一覧画面にある「接続」ボタンからでも Session Manager での接続ができます 

画像をクリックすると拡大します


Session Manager の使い方(ポート転送編)

瀧田
いやー、本当に簡単でしたね ! ただ、Linux 系はこれでいいと思うのですが、Windows Server をメインで利用しているケースではリモートデスクトップ接続ができないと辛いと思うんですよ。Session Manager だと PowerShell での接続になってしまうんですよね ?

上野
マネージメンコンソールからの場合は、PowerShell 接続になってしまうのですが、ローカルからの接続であれば Session Manager を利用してリモートデスクトップ接続ができるんです ! これがもう一つの接続方法になります。

瀧田
知りたいです !

上野
詳細は割愛するのですが、実際に接続する流れをお見せしますね。ちなみに詳細はこちらのドキュメントに記載されているのでぜひご覧ください。

上野
上記のドキュメントにもあるのですが、ローカル環境に Session Manager プラグインをインストールおよび AWS CLI のセットアップをしておき、この状態で以下のコマンドを実行します。LocalPortNumber と portNumber は適宜置き換えをしてください。今回は、リモートデスクトップ接続のため、portNumber は 3389 です。

aws ssm start-session --target <instanceid> --document-name AWS-StartPortForwardingSession --parameters "localPortNumber=56789,portNumber=3389"

上野
コマンド実行後、ローカルの RDP クライアントを利用して、接続先は LocalPortNumber に設定したポート番号を指定して、localhost:56789 とします。

ちなみにこちらの方法では事前に Windows Server に接続できるユーザーとパスワードを用意しておく必要があります。では接続しますね。

画像をクリックすると拡大します

瀧田
おお ! これはいつものリモートデスクトップ接続!こちらも今までの説明通り、踏み台サーバーもインバウンドポート開放も不要なんですね !

上野
はい ! ローカル環境のセットアップは多少発生しますが、操作感を既存の運用に合わせたいということであればぜひご検討いただければと思います。

画像をクリックすると拡大します


Session Manager をもう少しだけ深掘り

瀧田
そういえばマネジメントコンソール (ブラウザ) からつなぐときは、ID/PW や キーペアがなくてもサーバーに接続できましたが、アクセス制御ってどうするのでしょうか?もしかして全員つなげてしまう・・・?

上野
Session Manager を利用した場合のアクセス制御は、IAM ポリシーで行います ! IAM ユーザーであれば、Session Manager で「StartSession」を実行できるポリシーを持った IAM ユーザーだけがこの機能を利用できます。従来、ネットワーク観点では IP アドレスで制限をかけたり、認証の観点では ID/PW やSSH キーを利用してアクセス制御を行っていることが多いと思いますが、Session Manager 利用であれば基本的に踏み台サーバー不要で、サーバーはプライベートサブネットに配置しているので、IAM ポリシーでの制御に注力できるようになっています。

瀧田
なるほど。従来とは制御を行うレイヤーが変わるのですね。ちなみに A さんは〇〇システムのサーバーだけに Session Manager で接続できるとか、その際に実行できるコマンドを制御するとかってできますか ? 本格的な運用だと細かい制御の要件が出てくると思うんですよ !

上野
さすが瀧田さん、鋭い質問ですねー ! 一つ目の話は、EC2 インスタンスについているタグをもとに、A さんの IAM ユーザーは〇〇システムのタグがついたインスタンスにだけ接続させるといった制御ができたりします。二つ目の話も、Session Manager で利用している SSM ドキュメントをカスタマイズすることで実現は可能です。ですが、長くなってしまうのでこの話はぜひ次回に。

瀧田
ありがとうございます ! 実はまだ気になることがたくさんあります。操作ログの取得や保管まわりの話も詳しく聞きたいですし、Session Manager 以外にもサーバー接続する機能があるようですが、その使い分けについても聞きたいです !

上野
わかりました ! では次回は、アクセス制御や操作ログの取得、他の接続方法との使い分けについてはご紹介していきます !

瀧田
お願いします ! たくさん質問するので覚悟しておいてください。

上野
どんとこい !


まとめ

今回はシステム運用の中で何かと必要になるサーバー接続について注目して AWS Systems Manager の魅力をご紹介してきました。踏み台サーバー不要で、サーバーをプライベートなネットワークに配置したままでも簡単にサーバーにアクセスできるため、ぜひ一度お試しいただくのはいかがでしょうか ? AWS Systems Manager には他にもみなさんの運用をサポートする機能がありますのでご興味がある方はぜひ調べてみてください !


builders.flash メールメンバーへ登録することで
AWS のベストプラクティスを毎月無料でお試しいただけます

筆者プロフィール

瀧田 直斗 (たきた なおと)
アマゾン ウェブ サービス ジャパン合同会社 ソリューションアーキテクト

前職では 10 年以上オンプレミスの運用に従事。
現在は、業種・規模を問わず幅広いお客様に対して技術的な側面からビジネスを支援行う。
上野さんとはスプラトゥーン仲間。

上野 涼平 (うえの りょうへい)
アマゾン ウェブ サービス ジャパン合同会社 ソリューションアーキテクト

前職では AWS 環境の構築と運用改善に従事。
様々な業界・業種のお客様に対して技術面を中心に支援を行っている。
瀧田さんとはスプラトゥーン仲間。

AWS を無料でお試しいただけます

AWS 無料利用枠の詳細はこちら ≫
5 ステップでアカウント作成できます
無料サインアップ ≫
ご不明な点がおありですか?
日本担当チームへ相談する