カテゴリー
AWS EC2 System Manager(SSM)

AWS SSMセッションマネージャーでEC2を操作する①コンソール編

今回のゴール

今までEC2に接続する際、パブリックサブネットのEC2にはリモート端末から直接SSHし、プライベートサブネットのEC2にはBastionサーバー経由で接続してました。

今回はSSMのセッションマネージャー経由でEC2に接続します。

セッションマネージャーを使用すると下記ようなのメリットがあります。

  • プライベートサブネットのEC2インスタンスに接続可能となるのでBastionサーバーが不要となる
  • SSHポートを開放する必要がなくなる
  • コマンドのログを保存できる(SSHを使用したポートフォワーディングでは不可)
  • IAMでアクセス制御を行うため、キーペアの管理が不要

下記は今回構成するイメージです。

SSMにアクセスするロールの作成

EC2からSSMにアクセスできるようにロールを作成します。

IAMサービスより、[ロール]をクリックして「ロールの作成」ボタンをクリックします。

[信頼されたエンティティの種類を選択]:AWSサービス
[ユースケースの選択]:EC2

AmazonSSMManagedInstanceCoreにチェック

必要であればタグを指定して次へ

[ロール名]:AllowSSMRole (任意)

既存EC2にロールをアタッチ

先ほど作成したロールをEC2にアタッチします。

EC2サービスより該当のEC2を選択して、[アクション]-[セキュリティー]-[IAMロールを変更]をクリックします。

作成した”AllowSSMRole”を選択します。

VPCエンドポイントの作成

今回はインターネットを経由せずにVPCから直接SSMにアクセスしたいので、VPCエンドポイントを作成します。

VPCエンドポイント用のセキュリティーグループの作成

VPCエンドポイントにアタッチするセキュリティーグループを作成します。

EC2サービスより[セキュリティーグループ]を選択して、「セキュリティーグループを作成」ボタンをクリックします。

【基本的な詳細】
[セキュリティーグループ名]:sg_endpoint_ssm (任意)
[説明]:access to SSM (任意)
[VPC]:VPCを選択

【インバウンドルール】
[タイプ]:https [ソース]:10.0.0.1/24 (任意)

VPCエンドポイントの作成

VPCサービスの[エンドポイント]から「エンドポイントの作成」をクリックします。

[サービス名]:com.amazonaws.[region].ssm
[VPC]:任意
[サブネット]:任意
[セキュリティーグループ]:先ほど作成したセキュリティーグループ(sg_endpoint_ssm)を選択

※同様に下記のサービス名についてもエンドポイントを作成します。
com.amazonaws.[region].ec2messages
com.amazonaws.[region].ssmmessages

S3用のエンドポイント作成(ゲートウェイタイプ)

S3へのエンドポイントを作成します。
ログの保存とSSMエージェントの更新に使用されます。

詳細は下記のリンクを参照ください

Systems Manager の VPC エンドポイントの作成

VPCサービスの[エンドポイント]-「エンドポイントの作成」をクリックします。

[サービス名]:S3 Gatewayタイプ
[ルートテーブル設定]:プライベートサブネットで指定しているルートテーブルを選択

設定確認

“ssm.ap-northeast-1.amazonaws.com”の名前解決がプライベートIPになっているか確認します。

もし、パブリックIPアドレスになっていて、VPC内にドメインコントローラーが存在するときは、下記のリンクを参照してください。

DNS条件付きフォワーダーの設定

ログの保存設定

コマンドのログを保存する設定を行います。

今回はS3にログを保存します。
作成方法は割愛しますが、S3バケットを作成します。

SSMの設定

SSMサービスより、[セッションマネージャー]を選択して、[設定]タブを選択します。

【S3 logging】
[Send session logs to S3]:Enableにチェック
バケット名を選択します。

EC2のロール設定

EC2のロールにログを出力できるよう下記のポリシーをアタッチします。

  • s3:PutObject

また、今回はS3バケットをSSM-KMSで暗号化しておりますので下記のポリシーアタッチします。

  • s3:GetEncryptionConfiguration
  • ssmmessages:CreateControlChannel
  • ssmmessages:CreateDataChannel
  • ssmmessages:OpenControlChannel
  • ssmmessages:OpenDataChannel
  • ssm:UpdateInstanceInformation

詳細は下記のリンクを確認ください。

Session Manager および Amazon S3 および CloudWatch Logs (コンソール) のアクセス許可を持つインスタンスプロファイルの作成

設定確認

SSMサービスより[フリートマネージャー]を選択します。
ここに表示されている時点でEC2とSSMとのやり取りは正常に動作しているのですが、試しにセッションマネージャーで接続してみます。

該当のEC2インスタンスを選択して、[インスタンスアクション]-[セッションの開始]を選択します。

無事に接続できました。

S3を確認すると、ログが出力されてました。(数分時間がかかります。)

次回はAWS CLIからSSMを使用します。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です