Session Manager を使って Public EC2 に アクセスする 方法

0 件のコメント

今回は「Session Manager (SSM) を使って EC2 へアクセスする方法 (publicサブネットの場合)」についてまとめます。

この Session Manager を使ってEC2へアクセスできるようになると、これまで 22ポート (SSH) を開放していたものが解放しなくてよくなります。 また、実質的な踏み台サーバーを AWS が提供していることになるので、踏み台も準備不要になってちょっと便利になります。

概要

Systems Manager にある Session Manager (SSM) を利用して EC2 へアクセスするための準備から接続方法についてまとめてみます。

さて、今回まとめとして取り上げるのは以下のような「EC2にパブリックIPを付与する環境構成に対してアクセスするケース」で見ていきます。 EC2にパブリックIPが付与されているので、外回りでEC2へアクセスするようなケースになります。

サーバー準備

SSMを利用しようとすると、VPCのDNS解決が有効でないとアクセスできません。 デフォルトで有効になるはずですが…作成する際は「DNS解決」が「有効」であることを確認してください。

パブリックIPを利用してSSMによるEC2アクセスを行おうとすると、VPCには Internet Gateway が設定されており、 Internet Gateway へのルーティングが設定されている必要もあります。 Internet Gateway とそこへのルーティングがないと外との通信はできません。

VPC

DNS解決 有効

サブネット

ルートテーブル 以下の設定が入っていること
  • 送信先: 0.0.0.0/0
  • ターゲット:(作成したインターネットゲートウェイ)

インターネットゲートウェイ

状態 Attached。新規作成して、作成済VPCにアタッチされていること

初期化がまだであれば「高速セットアップ」から初期化を行います。 一度初期化を行っていたとしても、「高速セットアップ」はダッシュボードとして状況が見えるので再設定する際もこちらから行うと便利です。

基本的にはデフォルトのままでOKですが、Configuration Options に関してはチェックなしでも問題ありません。 Targetsに関してはさすがに「Choose all instances in the current AWS account and Region」か「Specify instance tags」でないとEC2が増減したとき毎回対応になって面倒になります。

高速セットアップ

Permissions

Instance profile role
Use the default role を選択。 Use the default role を選択すると AmazonSSMRoleForInstancesQuickSetup ロールが作成されます。 独自のロールを指定したい場合 Choose an existing role を選択しますが、 AmazonSSMManagedInstanceCore ポリシーを含んでいる必要があります。

Assume role for Systems Manager
こちらは関係ないので Use the default role (AmazonSSMRoleForAutomationAssumeQuickSetup) を指定しておきます。

Configuration options 内容は定期的なシステムチェックをするかどうか、なので全部チェックを外しても問題ありません。 更新や状況を確認したいものがあればチェックを入れておきます。
Targets 内容は定期的なシステムチェックをするかどうか、なので全部チェックを外しても問題ありません。 更新や状況を確認したいものがあればチェックを入れておきます。

EC2に設定が必要なアクセス権は AmazonSSMManagedInstanceCore ポリシーになります。 AWS EC2 向けロールに対してあらかじめ追加しておきます。

Sysmtes Manager で初期設定している場合、 AmazonSSMRoleForInstanceQuickSetup ロールが追加されています。 このロールにはあらかじめ AmazonSSMManagedInstanceCore が追加されているので、このロールを活用してもOKです。

ロール

ロール名 AmazonSSMRoleForInstancesQuickSetup
信頼されたエンティティ AWS サービス:ec2
アクセス権 AmazonSSMManagedInstanceCore

EC2に付与するセキュリティグループにはHTTPSで外へ出られる設定をしておく必要があります。 あらかじめ「アウトバウンド433(HTTPS)で送信先 0.0.0.0/0 」設定があるセキュリティグループを準備しておきます。

アウトバウンドルール

タイプ プロトコル ポート範囲 送信先
HTTPS TCP 443 0.0.0.0/0

Amazon Linux を使わない場合、独自に Session Manager Plugin をインストールする必要があります。 Amazon Linux は最初から入っているので特に気にする必要はありません。 今回は Amazon Linux 前提で進めていきます。

とはいえ、すでに必要な準備は終わっているはずなので、あとは組み合わせてEC2を起動するだけです。 EC2作成時には以下のような設定を行います。

Step3: インスタンスの詳細の設定

ネットワーク (作成したVPCを設定します。このVPCは「DNS解決が有効」である必要があります。)
サブネット (作成した publicサブネット を指定します。 このサブネットは Internet Gateway 経由で外へアクセスできる必要があります)
自動割り当てパブリックIP 有効
IAMロール AmazonSSMManagedInstanceCore ポリシーを含むロールを指定します。 Systems Manager の高速セットアップをデフォルト設定で利用した場合 AmazonSSMRoleForInstancesQuickSetup ロールになります。

Step6: セキュリティグループの設定

セキュリティグループ https(443) が外へ出られるようにしておきます。

接続確認

接続方法もいくつかありますが、今回は単純にマネジメントコンソールから接続する方法を見ておきます。 他の方法については別途記事を書こうと思います…。

SystemsManagerのセッションマネージャーからも接続できますが…今回はEC2のページから接続する方法を見ていきます。 この方法で接続すると ssm-user をいうユーザーで接続します。

  1. 「EC2」へ遷移

  2. 「インスタンス」を開く

  3. 接続したいインスタンスを選択

  4. 「接続」を選択

  5. 「セッションマネージャー」を選択して、「接続」を押下

今回は「SSM を使って EC2 へアクセスする方法 (publicサブネットの場合)」についてまとめました。 参考になったでしょうか? 本記事がお役に立っていると嬉しいです!!

最後に… このブログに興味を持っていただけた方は、 ぜひ 「Facebookページ に いいね!」または 「Twitter の フォロー」 お願いします!!