はじめに
AWSの設計において、セキュリティの向上は最も重要なテーマの一つです。特にデータベースやアプリケーションサーバーを配置する「プライベートサブネット」から、AWSの各種サービス(S3やSystems Managerなど)へ安全にアクセスさせたいというユースケースは実務で頻繁に発生します。
本記事では、インターネットを経由せずにAWSサービスとの通信を可能にする「VPCエンドポイント(AWS PrivateLink)」の仕組みと、実務でよく使われるSystems Manager(SSM)を例にした具体的な構築手順をステップバイステップで解説します。
前提知識/必要な理由
通常、プライベートサブネット内のEC2インスタンスがAWSのAPIエンドポイントと通信するためには、NATゲートウェイを経由してインターネットへ抜ける必要があります。しかし、この構成には以下の課題があります。
- セキュリティリスク:インターネットを経由する経路が存在するため、攻撃の標的となるリスクがわずかに残る。
- コストの増加:NATゲートウェイは時間課金に加え、データ転送量(GB単価)に応じた従量課金が発生するため、トラフィックが多い環境ではコストが高騰しやすい。
VPCエンドポイント(Interface型)を導入することで、VPC内部にAWSサービス専用のプライベートIPアドレスを持つネットワークインターフェイス(ENI)が作成されます。これにより、トラフィックはAWSのバックボーンネットワーク内に閉じ閉じられ、インターネットを経由しないセキュアで高速な通信が実現します。
具体的な設定手順・設計方法
ここでは、プライベートサブネットにあるEC2インスタンスに、SSHキーペアを使わず安全にリモート接続するための「SSM Session Manager」用VPCエンドポイントの構築手順を解説します。
ステップ1:EC2用のIAMロール作成と付与
EC2がSystems Managerと通信できるように、適切な権限を付与します。
- IAMコンソールで、信頼されたエンティティの種類として「EC2」を選択します。
- ポリシー「AmazonSSMManagedInstanceCore」をアタッチしたロールを作成します。
- 作成したIAMロールを、対象のEC2インスタンスにアタッチします。
ステップ2:セキュリティグループの作成
VPCエンドポイント用のセキュリティグループを作成します。EC2からエンドポイントへのHTTPS(ポート443)通信を許可する必要があります。
- インバウンドルールに、HTTPS (443) を許可し、ソースにはEC2が所属するサブネットのCIDR(またはEC2用のセキュリティグループID)を指定します。
ステップ3:VPCエンドポイントの作成
SSM Session Managerを利用するには、以下の3つのインターフェイス型エンドポイントを作成する必要があります。VPCコンソールの「エンドポイント」から、1つずつ作成します。
com.amazonaws.[リージョン名].ssmcom.amazonaws.[リージョン名].ssmmessagescom.amazonaws.[リージョン名].ec2messages
各エンドポイントの作成設定は以下の通りです。
- サービスカテゴリ:AWSサービス
- VPC:EC2が所属するVPCを選択
- サブネット:EC2が配置されているプライベートサブネット(各アベイラビリティゾーンごと)を選択
- DNS設定:「プライベートDNS名を有効化」に必ずチェックを入れる
- セキュリティグループ:ステップ2で作成したセキュリティグループを選択
ステップ4:接続確認
設定が完了したら、ローカル環境からAWS CLIを使用して、対象のEC2インスタンスにSession Managerで接続できるか確認します。
# インスタンスIDを指定してSession Manager接続を開始するコマンド
aws ssm start-session --target i-0123456789abcdef0
※ローカル環境からAWS CLI経由でSession Managerを使用する場合、事前にSession Manager Pluginの導入が必要です。Mac(Homebrew)やLinux環境への導入手順は以下の通りです。
【Macでの導入例】
brew install --cask session-manager-plugin
# インストール確認
session-manager-plugin --version
実務での注意点
1. プライベートDNSの競合と名前解決
VPCエンドポイント作成時に「プライベートDNS名」を有効にすると、VPC内の標準DNSサーバー(Route 53 Resolver)が、AWS公式のサービスドメイン(例:ssm.ap-northeast-1.amazonaws.com)をエンドポイントのプライベートIPアドレスに自動でマッピングします。VPC設定で「DNS解決」と「DNSホスト名」が有効(Enable)になっていることを必ず確認してください。
2. コスト設計
インターフェイス型エンドポイント(PrivateLink)は、1つのエンドポイント(AZごと)に時間あたりの基本料金が発生します。上記のSSM構成では3つのエンドポイントを作成するため、接続先を増やすほどコストが増加します。データ転送量が多い場合はNATゲートウェイより安価になりますが、検証環境などで不必要なエンドポイントを放置しないよう注意しましょう。
まとめ
VPCエンドポイントは、インフラのセキュリティ向上とコスト最適化を両立させるための必須知識です。今回紹介したSSM Session Manager用の構成は、実務で踏み台サーバー(Bastion)を廃止し、セキュアな運用体制を構築する際のベストプラクティスとなります。ぜひ自身のハンズオン環境で構築し、理解を深めてみてください。