はじめに
今回は踏み台観点でのSSMの活用について記載していきます。
古典的な構成
まずは通常の古典的な構成を見てましょう。
この場合、パブリックサブネットに踏み台サーバとして、グローバルIPを持ったサーバを構築、管理者はその踏み台サーバにインターネット経由でアクセスし、踏み台経由で該当サーバにアクセスするという方法です。
この方法では、対象サーバへのアクセスに対して、踏み台を経由することで1段階セキュリティの向上が期待できますが、踏み台サーバ自体はインターネットにさらされること、また、踏み台サーバのリソースの料金がかかってしまうというデメリットがあります。この構成を取る場合、接続元のIPアドレスを絞ったりするなど踏み台自体のセキュリティ対策を強化する必要があります。
SSMを利用した構成
ではSSMを利用した構成でみてみましょう。
この場合、アクセス対象のサーバにはSSMAgentのインストールと、必要なIAMロールの設定、セキュリティグループの設定が必要になります。また、SSM関連のVPCエンドポイントの作成もしくはNATGWの作成が必要です。
サーバにインストールされたSSMAgentはVPCエンドポイント経由でSSMのサービスとのコネクションを常時確立しています。接続したい管理者は、SSMのサービスに対して接続(アクセスはマネジメントコンソールやCLIから可能)するだけです。サーバ側はSSMサービスとのアウトバウンド通信しか必要ないため、外部にポートを公開する必要もありません。非常にセキュアかつ、コストが低い構成になります。
以下3つのアクセス方法を記載していきます。
セッションマネージャを利用したブラウザアクセス
これは非常にシンプルで、EC2もしくはSSMのコンソールからアクセスするパターンです。
気軽にアクセスする際はこの方法が便利ですね。
ただし、WindowsSVに関しては、Powershellアクセスとなってしまう点や、ユーザ指定に関しては事前にAgentの設定を実施しておく必要があるため、注意が必要です。
FleetManagerを利用したブラウザアクセス
AWS上のWindowsSVにRDPで接続したいというケースは多いかと思います。
その場合に、FleetManagerを利用すると気軽にアクセスができます。
ブラウザ上でFleetManagerを選択し、ユーザ、パスワードを入力するだけです。
ただし、通常のRDPとは違い、ファイルのやり取りなどが少し不便に感じるかもしれません。
セッションマネージャポートフォワーディングによるアクセス
個人的にはこの方法が非常におすすめです。
アクセス元ではAWSCLIならびに、SessionManagerPluginの設定が必要となります。
その後、アクセスキー等の設定を行い、対象サーバのアクセス先ポート番号と転送先の自身の端末のポート番号を指定しセッションを確立します。その後、自信端末の指定したポート番号に対して、RDPやSSHで接続を行うだけです。
振る舞いとしては、直接アクセスしているのと同じように利用できます。例えばTerratermやWinSCPなどのツールからでも、対象ポートへの接続が可能なので、SSM経由にしても直接アクセスしているのとかわらず、これまでどおり同じことが利用可能です。また、対象のプロトコルはSSH、RDPだけでなく、FTPやHTTPなど任意のポートを転送可能ですので、対象サーバの動作確認をしたりなんてことにも応用できます。
※プロトコルによっては利用できないこともあったり複数ポートを転送する必要があったりなので注意が必要です。
まとめ
踏み台サーバを未だに利用しているケースがありますが、SSMを利用すれば殆どの場合で不要になると思います。
ぜひこの機会に乗換を検討してみてはいかがでしょうか。