目指すはコレ!
踏み台なしでインターネットに直接接続されていない、プライベートなEC2インスタンスへ、AWS Systems Manager (SSM) を使ってセキュアにアクセスします。VPCの作成からVPCエンドポイントの設定まで、具体的な手順を網羅します。
この構成のメリット
セキュリティを確保し、EC2インスタンスをインターネットに公開しない構成になります。この方法なら、AWSのプライベートネットワーク内で安全にインスタンスを管理でき、外部リスクを最小限に抑えられます。
手順
-
VPCとサブネットの作成
インターネット接続のないプライベートネットワーク環境を構築
ルートテーブルとネットワークACLについても合わせて理解を深める -
SSM接続に必要なVPCエンドポイントの作成
プライベートサブネット内のEC2インスタンスがSSMと通信するための経路を確保 -
EC2インスタンスの準備
EC2インスタンスの作成とネットワーク設定
SSMから操作するためのIAMロールとセキュリティグループの設定 -
SSMによるEC2インスタンスへの接続確認
構築した環境で実際にSSM Session Managerを利用して接続 -
今回の学び
今回のハンズオンでの学び
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
【ルートテーブル設定画面】
-
ルート設定
インターネットゲートウェイやNATゲートウェイなどへのルートを設定することができる
※今回の構成ではインターネットゲートウェイへのルートを持たないプライベートサブネットを利用するので、これらは設定しません。
ネットワークACLとは???
サブネットのインバウンド/アウトバウンドのトラフィックを制限するもの(ファイアウォール)。サブネットに紐付けられる。
-
デフォルト設定
サブネットに対して、あらゆるIPアドレスからのあらゆる通信が自由に出入りできる状態 -
ステートレス
インバウンドとアウトバウンドのルールをそれぞれ明示的に許可する必要がある -
ルール番号
小さい順に評価され、一致した時点でそれ以降のルールは評価されない
(「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
- VPC
-
サブネット
- サブネット
新規で作成したサブネット(プライベート)を指定 - IPアドレスタイプ
IPv4
- サブネット
-
セキュリティグループ(インターフェースエンドポイント用)
- インバウンドルール
HTTPS(443)接続の許可
「ソース」にEC2へアタッチするセキュリティグループのIDを指定
→VPC内リソース同士の通信に限定できる - アウトバウンドルール
なし
- インバウンドルール
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>
今回の学び
今回のハンズオンを通じて、特に以下の点で学びを深めることができました。
-
セキュリティグループ設定
インバウンド/アウトバウンドルールで、どの通信元からのトラフィックを許可するかを設定する「ソース」に、既存のセキュリティグループを指定することができる!(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アドレスを設定することも可能で、単一インスタンスで複数のアプリケーションをホスティングする際などに利用されます。