AWS クラウド

AWSセッションマネージャーを使ってみる【プライベートサブネット】

本記事の内容は 2021年9月現在の情報です。

今回は、プライベートサブネットに配置したEC2インスタンスに対して、VPCエンドポイント経由でセッションマネージャーを使って接続したいと思います。

AWSセッションマネージャーを使ってみる

完成イメージはこんな感じです。

VPCとサブネットの作成

まずは、VPCとサブネットの作成をします。
構成図通りでOKです。

トラフィックはセキュリティグループで管理するので、ネットワークACLはそのままで大丈夫です。
ルートテーブルも、VPCエンドポイント作成時に自動で変更されるのでそのままで大丈夫です。

IAMロールの作成

次に、EC2インスタンス用にSSMエージェントのロールを用意します。

”IAMロールの作成” -> ”EC2”を選択して画面遷移します。

IAMの管理コンソールからEC2を選択し、”AmazonSSMManagedInstanceCore”を選択します。

任意の名前をつけて完了です。あとでEC2に適用します。

VPCエンドポイントの作成

次に、VPCエンドポイントを作成します。

の前に、VPCのDNSを有効にしておきます。
VPC管理コンソールの右上のポチから、”DNSホスト名を編集”を選択し、”有効化”にチェックを入れて変更を保存します。

では、エンドポイントを作成します。
左ペインのエンドポイントを選択します。

作成するエンドポイントは、以下の4つです。

  • com.amazonaws.region.ssm
  • com.amazonaws.region.ec2messages
  • com.amazonaws.region.ssmmessages
  • com.amazonaws.region.s3

順番に作成していきます。

エンドポイントの作成を選択します。

サービスカテゴリは”AWSサービス”のままでOKです。
したの検索ボックスに”ssm”と入力すると、com.amazonaws.region.ssmが出てきますので、チェックを入れます。

VPCとサブネットもデフォルトではなく作ったやつに変えます。

”プライベートDNS名を有効にする”にチェックを入れて、セキュリティグループを選択します。
ここで、新しいセキュリティグループを作成します。

新しく作成するセキュリティグループは、以下のルールにします。

  • インバウンド:HTTPSのポート443。ソースはプライベートサブネット(下図ではVPCからのトラフィックを全許可にしてしまってます、すいません。。。)
  • アウトバウンド:全て許可

作成が完了したらそのセキュリティグループを選びます。

ポリシーはフルカスタムにして、VPCエンドポイントを作成します。

”com.amazonaws.region.ec2messages”と"com.amazonaws.region.ssmmessages"も同様に作成します。

”com.amazonaws.region.s3”だけ作り方がちょっと違います。

サービス名を選ぶところは簡単ですが、タイプをGatewayを選ぶようにしてください。

どのルートテーブルにルートを追加するかを設定します。

今回はメインルートテーブルを選択しましたが、分けて作成したい方はカスタムルートテーブルを作成してそちらを選択してください。

EC2インスタンスの作成

最後に、EC2インスタンスを作成します。

基本的にデフォルトでOKです。
注視するとこだけピックアップします。

IAMロールは、先程作成したIAMロールを設定します。

ユーザーデータは、下記の通り記載します。

#!/bin/bash
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

セキュリティグループも新規に作成します。
EC2インスタンスのセキュリティグループは、以下の通りです。

  • インバウンド:VPC内のトラフィックを許可
  • アウトバウンド:VPCエンドポイントに向けてHTTPS443を許可

ここまでできたら完了です。

接続テスト

では、接続テストをします。

起動中のEC2インスタンスを指定して、”接続”を選択します。

こんな感じで、コンソール画面が出てくれば成功です。

最後に

というわけで、プライベートサブネット内のEC2インスタンスにVPCエンドポイント経由でセッションマネージャーで接続しました。

これで踏み台なしでEC2インスタンスに入れるようになりました。
IGWもアタッチしてないので、閉じた空間が保証されているかと思います。

ただ、操作をするうえではインターネットから情報を取れるようにすることも望ましいと思います。
そういった時は、NAT gatewayを配置して外と通信できるようにすると良いと思います。

また、インスタンスがWindowsの時は、同じように設定するとPowershellでしか操作できません。
RDPするためのポートフォワーディング機能もあるので、Windowsの方はそちらを試してみると良いかと思います。

ちょっと今回セキュリティグループのところが雑になってしまったところは反省してます。
ポイントとしては、
①VPCエンドポイントはEC2インスタンスからのHTTPSを許可していること
②EC2インスタンスはVPCエンドポイントへのHTTPSが許可していること
です。

ここまで読んでいただき、ありがとうございました。

-AWS, クラウド
-, ,