0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【AWS EC2】プライベートサブネット内のEC2インスタンスへSSM接続

Posted at

目指すはコレ!

 踏み台なしでインターネットに直接接続されていない、プライベートなEC2インスタンスへ、AWS Systems Manager (SSM) を使ってセキュアにアクセスします。VPCの作成からVPCエンドポイントの設定まで、具体的な手順を網羅します。

この構成のメリット

 セキュリティを確保し、EC2インスタンスをインターネットに公開しない構成になります。この方法なら、AWSのプライベートネットワーク内で安全にインスタンスを管理でき、外部リスクを最小限に抑えられます

手順

VPCとサブネットの作成

VPC(Virtual Private Cloud)とは???

AWSクラウド内に作成する、論理的に分離された仮想ネットワーク。ご自身のデータセンターをクラウド上に構築するようなイメージで、ネットワークの設定(IPアドレス範囲、サブネット、ルートテーブルなど)を自由に定義できる。

【設定情報】

  • 作成するリソース
    VPCのみ
    →「VPCなど」を指定することでサブネットの作成や設定まで一括で行うこともできます。
  • IPv4 CIDR ブロック
    IPv4 CIDR の手動入力
  • IPv4 CIDR
    必要なCIDR範囲を指定
    例:10.0.0.0/16
  • IPv6 CIDR ブロック
    IPv6 CIDR ブロックなし
  • テナンシー
    デフォルト

「VPCを作成」ボタンを押下するとVPCが作成され、
同時にルートテーブルとネットワーク ACLも自動で作成されます。

ルートテーブルとは???

サブネットから出ていく通信の向き先を設定するもの。サブネットに紐付けられる。

  • デフォルト設定
    このVPCのCIDRブロック内にあるすべてのリソースへの通信は、VPCの内部で直接処理される
    送信先  :VPCで指定したIPv4 CIDR
    ターゲット:local
    【ルートテーブル設定画面】
    image.png
  • ルート設定
    インターネットゲートウェイNATゲートウェイなどへのルートを設定することができる
    ※今回の構成ではインターネットゲートウェイへのルートを持たないプライベートサブネットを利用するので、これらは設定しません。

ネットワークACLとは???

サブネットのインバウンド/アウトバウンドのトラフィックを制限するもの(ファイアウォール)。サブネットに紐付けられる。

  • デフォルト設定
    サブネットに対して、あらゆるIPアドレスからのあらゆる通信が自由に出入りできる状態
    • インバウンド
      許可:ルール番号「100」、すべてのトラフィック
      拒否:ルール番号「*」、すべてのトラフィック
    • アウトバウンド
      許可:ルール番号「100」、すべてのトラフィック
      拒否:ルール番号「*」、すべてのトラフィック
      【ネットワークACL設定画面】
      image.png
      image.png
  • ステートレス
    インバウンドとアウトバウンドのルールをそれぞれ明示的に許可する必要がある
  • ルール番号
    小さい順に評価され、一致した時点でそれ以降のルールは評価されない
    (「100」と「*」では「100」のみが評価される)

サブネットとは???

VPC(仮想ネットワーク)をさらに細かく区切ったネットワークの「部屋」のようなもの。この部屋は特定のアベイラビリティゾーンに存在し、EC2インスタンスなどのリソースを配置する。

【設定情報】

  • VPC
    新規で作成したVPCを指定
  • サブネット名
    任意
  • アベイラビリティーゾーン
    任意のAZを指定
  • IPv4 サブネット CIDR ブロック
    任意のCIDR ブロックを設定

「サブネットを作成」ボタンを押下するとサブネットが作成され、
VPC作成時に自動で作成されたルートテーブルとネットワーク ACLが紐づけられます。
ルートテーブルとネットワーク ACLはデフォルトのものをそのまま使用します。

VPCエンドポイント(インターフェースエンドポイント)作成

VPCエンドポイントとは???

AWSのサービス(S3、DynamoDBなど)や、他のAWSアカウントでホストされているサービス、またはAWS Marketplaceのサービスに、インターネットを経由せずにプライベートに接続するための仕組み

 VPCエンドポイントはゲートウェイエンドポイントインターフェースエンドポイントの2種類に分けられます。

  • ゲートウェイエンドポイント
    • 対象
      Amazon S3 、 DynamoDB のみ
    • 料金
      無料
  • インターフェースエンドポイント
    • 対象
      Amazon S3 、 DynamoDB以外のAWSサービス
    • 料金
      有料(時間、通信量)

今回はAWS Systems Manager と EC2インスタンスへの通信を行うので
以下3つのインターフェースエンドポイントの作成が必要です。
 com.amazonaws.リージョン名.ssm
 SSMサービス自体
 com.amazonaws.リージョン名.ec2messages
 EC2インスタンスとSSM間のメッセージング
 com.amazonaws.リージョン名.ssm-messages
 EC2インスタンスとSSM間のセッション確立用

【設定情報】

  • エンドポイントの設定

    • 名前タグ
      任意
    • タイプ
      AWSのサービス
  • サービス

    • サービス
      対象3つのサービスを1つずつ指定
      (コンソール画面からはVPCエンドポイントを1つずつ作成する必要がある)
  • ネットワーク設定

    • VPC
      新規で作成したVPCを指定
    • DNS名を有効化
      チェックを入れる
    • DNSレコードのIPタイプ
      IPv4
  • サブネット

    • サブネット
      新規で作成したサブネット(プライベート)を指定
    • IPアドレスタイプ
      IPv4
  • セキュリティグループ(インターフェースエンドポイント用)

    • インバウンドルール
      HTTPS(443)接続の許可
      「ソース」にEC2へアタッチするセキュリティグループのIDを指定
      VPC内リソース同士の通信に限定できる
    • アウトバウンドルール
      なし
  • ポリシー
    フルアクセス
    【エンドポイント作成画面】
    image.png
    image.png

EC2インスタンスの準備

 EC2インスタンス作成~起動、SSM接続の詳細は以下参照。

EC2インスタンスの作成

【設定情報】

  • VPC
    新たに作成したVPCを指定
  • サブネット
    新たに作成したプライベートサブネットを指定
  • パブリックIPの自動割り当て
    無効化を指定
    →インターフェースエンドポイント経由でSystems Managerへ接続することで
     インターネットを経由せず、AWSの内部ネットワーク内でルーティングされるため、無効化になります。

EC2インスタンス用IAMロールの作成とアタッチ

SSMがEC2インスタンスを管理するために必要な権限を持つAmazonSSMManagedInstanceCore ポリシーをアタッチしたロールをEC2インスタンスに関連付けます。

EC2インスタンス用セキュリティグループの作成

  • インバウンドルール
    なし
  • アウトバウンドルール
    HTTPS接続の許可
    0.0.0.0/0(すべてのIPアドレス)への、ポート443(HTTPS)のトラフィックを許可。

SSMによるEC2インスタンスへの接続確認

 以下のコマンドでAWS CLIからSSM接続を行うことができます。

aws ssm start-session --target <インスタンスID>

image.png

今回の学び

今回のハンズオンを通じて、特に以下の点で学びを深めることができました。

  • セキュリティグループ設定
    インバウンド/アウトバウンドルールで、どの通信元からのトラフィックを許可するかを設定する「ソース」に、既存のセキュリティグループを指定することができる!(IPアドレスしか指定できないと思っていた)
    【メリット】
    参照先のSGにアタッチされているリソースのプライベートIPアドレスを自動的に追跡してくれるため、ユーザーが手動でIPアドレスを更新する手間がなくなる

  • セキュリティグループはENIにアタッチする
    ENIにはIPアドレスが設定されているため、そのIPアドレスがどこと通信できるのかを設定する為にある。(EC2インスタンスそのものにアタッチするものだと思っていた)
    今回はインターフェースエンドポイントとEC2インスタンスがそれぞれ保持するENIに対してセキュリティグループの設定が必要!!!

  • ENIについて

ENI (Elastic Network Interface) とは???

AWSのVPC内で使う仮想的なネットワークカード
ENIにはVPC内で通信するためのプライベートIPアドレスが必ず設定されており、EC2インスタンスやVPCエンドポイントなどのVPC内リソースにアタッチして利用

 ENIは単なるIPアドレスではなく、それ自体が仮想ネットワークインターフェースとして機能し、セキュリティグループもこのENIにアタッチされます。これにより、ENIに割り当てられたIPアドレスを持つリソースのトラフィックを制御できるようになります。
(ネットワーク接続が必要なリソースを作成する際、ENIは一緒に自動的に作成され、そのリソースにアタッチされます)
 また、1つのENIに複数のIPアドレスを設定することも可能で、単一インスタンスで複数のアプリケーションをホスティングする際などに利用されます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?