Session Manager を使用したEC2へのコマンド接続
私も普段愛用している、Session Managerの使い方について紹介します。
Session Managerとは
AWSにはSystems Managerという、EC2を管理するサービスがあり、その中の1つの機能としてSession Managerがあります。 Session Managerを使用して、EC2やオンプレミスのサーバへの接続や管理を行うことができます。具体的に見ていきます。
参考: AWS Systems Manager ドキュメント - AWS Systems Manager
Session Managerのうれしいポイント
https通信で接続できる
社内から外部のサーバへアクセスする場合、プロキシサーバがありhttp/httpsしか許可されていない! といったこともあると思います。Session Managerのエンドポイントにhttps接続できればサーバへ接続することが可能です。
SSHキー不要、セキュリティグループの許可不要
接続部分についてはSession Manager側で管理されるため、通常SSH接続で使用するSSHキーペアや、セキュリティグループでのインバウンドSSH(22番ポート)の許可も不要です。
操作ログの保存
今回の記事で設定方法は記載しませんが、操作ログのS3またはCloudWatch Logs保存が可能です。 ※時間があれば別記事で書こうと思います。
Session Mangerの接続手順
では実際に設定していきましょう。
事前準備1:IAMロールの作成
EC2がSystems Managerの機能を使用するために、IAMロールをEC2に設定する必要があります。(=EC2にSystems Managerの利用権限を付与する) 付与するためのIAMロールを作成します。
ユースケースのEC2を選択し、
ポリシーはAWSが提供するマネージドポリシー「AmazonSSMManagedInstanceCore」を選択します。
任意の名前を付けてロールを作成します。
事前準備2:EC2のネットワーク設定
EC2からSystems Managerのエンドポイントへ接続できる必要があります。以下3パターンです。
- パターン1「パブリックサブネットへ配置+パブリックIPの付与」
- パターン2「プライベートサブネットへ配置+NAT Gateway」
パターン1、パターン2については、インターネットへ疎通ができればOK(正確にはVPC外のSystems Manager)と考えて良いでしょう。
- パターン3「VPCエンドポイントを使用したSystems Managerへの接続」
外部へ接続できないEC2もSession Managerの利用が可能です。 手順が長くなるため本記事では割愛しますが、必要な方は公式ドキュメントを参考に実施してみましょう。
EC2の作成
事前準備が出来たのでEC2を作成していきます。EC2の基本的な作成方法は理解できているという前提で、ポイントを抜粋して説明していきます。
「インスタンスの詳細の設定」の画面で、事前準備で作成したIAMロールを付与し、ネットワークも「事前準備2」のいずれかのパターンになるよう選択します。※本手順では今回はパターン2(NAT Gateway利用)で作成しています。
SSM AgentがデフォルトでインストールされていないEC2を使用する場合は、ユーザーデータを使用してインストールする必要があります。 Amazon Linux や Amazon Linux 2 を使用する場合デフォルトでインストールされているため、この設定は不要です。
例えばCentOS 7では以下のように記載します。
#!/bin/bash cd /tmp sudo yum install -y https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_amd64/amazon-ssm-agent.rpm sudo systemctl enable amazon-ssm-agent sudo systemctl start amazon-ssm-agent
OSの種類によってインストール方法は異なりますので、公式ドキュメントを参考にしましょう。
セキュリティグループはインバウンド許可不要なので、許可設定を空の状態で作成します。
キーペアも不要なため、キーペアなしで続行します。
EC2への接続
ステータスチェックに合格していることを確認し、接続ボタンを押します。
接続方法でセッションマネージャーを選択し、接続ボタンを押します。
ブラウザで別タブが開き接続できました!ログインシェルが読み込まれないので必要に応じてbashコマンドなど実行しましょう。
まとめと注意すべきポイント
いかがでしたでしょうか?慣れてくると簡単にサーバ接続ができるようになるかと思います。 同時に注意すべき点もいくつかあるので書いておきます↓
デフォルトではssm-userという権限の強いユーザーで接続します。(root権限にパスワード無しで昇格できる)本番環境で利用する際はRun-Asの設定で接続するOSユーザーを指定したり、コマンドの制限 を検討しましょう。
OSのパスワードの入力は不要で、IAMの権限のみでサーバに接続することができます。そのためIAM権限をむやみに渡さないなど、慎重に扱う必要があります。
今回は全てマネジメントコンソール(ブラウザ)での手順を紹介しました。多くのコマンドを実行する場合はAWS CLIを使用したSession Manager接続がおススメです。こちらに書きました!