AWSでVPNと聞くと、通常はSite-to-Site VPNを最初に思い浮かべることが多いでしょう。しかし、Site-to-Site VPNは、会社のIDC、支店、オンプレミスネットワークとAWS VPCを接続する際に使用する方式です。一方、開発者、運用者、協力会社の担当者のように「個人ユーザー端末」からAWS内部リソースにアクセスする必要がある場合には、AWS Client VPNを利用できます。
AWS Client VPNは、ユーザーのノートPCやデスクトップからAWS VPCまたはオンプレミスネットワークに安全に接続できるように提供される、マネージド型のクライアントベースVPNサービスです。簡単に言えば、ユーザーがVPNクライアントを実行してAWS内部ネットワークに入る方式です。

なぜAWS Client VPNが必要なのか?
AWS VPC内部には、外部インターネットから直接アクセスすべきではないリソースが多く存在します。
例えば、以下のようなリソースが考えられます。
Private EC2
Private RDS
Internal ALB
EKS Private Endpoint
관리용 웹 콘솔
사내 업무 시스템
모니터링 대시보드
これらのリソースにアクセスするためにPublic IPを付与したり、セキュリティグループで22番、3389番、3306番のようなポートを外部に開いたりすることは、セキュリティ上好ましくありません。
伝統的には、Bastion Hostを置いて以下のようにアクセスしていました。
사용자 PC
-> Bastion Host
-> Private EC2 / RDS / 내부 서비스
しかし、ユーザー端末からVPC内部ネットワーク自体に接続する必要がある場合には、Client VPN方式の方がより自然です。
사용자 PC
-> AWS Client VPN Endpoint
-> VPC 내부 리소스
AWS Client VPNの基本構造
AWS Client VPNの主要な構成要素は以下の通りです。
사용자 PC
-> VPN Client
-> Client VPN Endpoint
-> Target Network
-> VPC 내부 리소스
ここで、Client VPN EndpointはユーザーのVPN接続が終了する地点です。ユーザーはVPNクライアントを介してこのエンドポイントに接続し、AWSは設定されたルーティングと権限ルールに従ってVPC内部リソースへのアクセスを許可します。
主要構成要素
AWS Client VPNを理解するには、以下の構成要素を知る必要があります。
| 構成要素 | 説明 |
|---|---|
| Client VPN Endpoint | ユーザーのVPNセッションが接続されるAWS側のVPNエンドポイント |
| Target Network | Client VPN Endpointと関連付けられるVPCサブネット |
| Client CIDR | VPN接続ユーザーに割り当てるIPアドレス範囲 |
| Route Table | VPNユーザーがどのネットワークにアクセスできるかを定義 |
| Authorization Rule | どのユーザーまたはグループがどのネットワークにアクセス可能かを定義 |
| Security Group | VPCリソースへのアクセスを制御するネットワークファイアウォール |
| Client Configuration File | ユーザーがVPNクライアントにインポートして使用する設定ファイル |
例えば、VPC CIDRが10.0.0.0/16で、VPNユーザーに172.16.0.0/22の範囲を割り当てると仮定すると、以下のような構造になります。
사용자 PC VPN IP: 172.16.0.10
VPC 내부 대역: 10.0.0.0/16
사용자 PC
-> Client VPN Endpoint
-> Private EC2 10.0.1.10
-> RDS 10.0.2.20
認証方式
Client VPNは、ユーザーがVPNに接続できるかを確認するために認証方式を使用します。
代表的な認証方式は以下の通りです。
| 認証方式 | 説明 |
|---|---|
| Mutual Authentication | クライアント証明書とサーバー証明書を使用する方式 |
| Active Directory Authentication | AWS Directory ServiceまたはADベースのユーザー認証 |
| Federated Authentication | SAMLベースのIdPを介したユーザー認証 |
実務では、単純なテストや演習では証明書ベースのMutual Authenticationが多く使用され、企業環境ではSAMLベースの連携やActive Directoryベースの認証が検討されることが多いです。
重要な点は、認証が「VPN接続の可否」を判断するということです。認証が成功して初めて、ユーザーはClient VPN Endpointに接続できます。
権限付与とアクセス制御
Client VPNでは、認証だけで全てのアクセスが許可されるわけではありません。接続後には、Authorization RuleとSecurity Groupを通じてアクセス範囲を制御する必要があります。
例えば、運用チームはVPC全体にアクセス可能ですが、開発チームは開発サーバーの範囲のみにアクセスするように分けることができます。
운영팀:
10.0.0.0/16 전체 접근 허용
개발팀:
10.0.10.0/24 개발 서버 대역만 접근 허용
협력사:
10.0.20.10/32 특정 서버만 접근 허용
このようにユーザーグループごとにアクセス範囲を分けることで、VPNを開放しても内部ネットワーク全体が無条件に公開されるのを防ぐことができます。
ルーティング方式: Full TunnelとSplit Tunnel
Client VPNにおける重要な概念の一つがルーティング方式です。
基本的には、全てのユーザーのトラフィックがVPNトンネルを介して転送されます。これをFull Tunnel方式と見なすことができます。
사용자 인터넷 트래픽
사용자 AWS 접속 트래픽
모두 VPN 터널 경유
一方、Split Tunnelを有効にすると、AWSに向かうトラフィックのみがVPNトンネルを通り、一般的なインターネットトラフィックはユーザーPCの既存のインターネット経路を使用します。
AWS VPC 트래픽 -> VPN 터널
일반 인터넷 트래픽 -> 사용자 로컬 인터넷
実務では、ほとんどの場合Split Tunnelが好まれます。これは、AWS内部リソースへのアクセスのみをVPN経由で送り、ユーザーの一般的なインターネットトラフィックまでAWSを経由させないためです。この方式は、トラフィック経路が単純になり、不要なデータ転送コストを削減するのにも役立ちます。
ただし、セキュリティポリシー上、全てのトラフィックを中央のセキュリティ機器やプロキシを通じて制御する必要がある組織であれば、Full Tunnelを選択することもあります。
Client VPN接続フロー
ユーザー視点でのClient VPN接続フローは以下の通りです。
1. 관리자가 Client VPN Endpoint 생성
2. 인증 방식과 서버 인증서 설정
3. Target Network로 VPC Subnet 연결
4. Route Table에 접근 대상 네트워크 추가
5. Authorization Rule로 접근 허용 범위 설정
6. 필요한 Security Group 규칙 설정
7. Client Configuration File 다운로드
8. 사용자가 VPN Client에 설정 파일 가져오기
9. VPN 연결 후 Private 리소스 접속
例えば、ユーザーがVPNに接続した後、Private EC2にSSHで接続したり、Internal ALBのアドレスでウェブアプリケーションにアクセスしたりできます。
ssh ec2-user@10.0.1.10
または、内部ウェブサービスにアクセスできます。
http://internal-service.example.local
Bastion HostとClient VPNの違い
Bastion HostとClient VPNは、どちらも内部リソースへのアクセス方法ですが、使用目的が少し異なります。
| 項目 | Bastion Host | AWS Client VPN |
|---|---|---|
| アクセス方式 | ジャンプサーバー経由 | ユーザーPCがVPNでVPCに接続 |
| 主な使用目的 | サーバーSSH/RDP接続 | VPC内部ネットワークアクセス |
| 運用対象 | Bastion EC2の管理が必要 | AWSマネージドVPNエンドポイントを使用 |
| ユーザー体験 | Bastionに接続後、内部サーバーに接続 | VPN接続後、内部リソースに直接アクセス |
| アクセス範囲 | 通常はサーバー接続中心 | VPC、Peering VPC、オンプレミスまで拡張可能 |
| セキュリティ制御 | SG、OSアカウント、SSH Key、PAMなど | 認証、権限ルール、SG、ルーティング制御 |
単にEC2のシェル接続のみが必要な場合は、Session Managerの方が適しているかもしれません。一方、ユーザーがVPC内部の複数のサービス、ウェブコンソール、データベース、内部APIなどにアクセスする必要がある場合は、Client VPNの方がより自然な選択です。
Session ManagerとClient VPNの違い
AWS Systems Manager Session Managerは、BastionなしでEC2に接続する機能です。しかし、接続対象は主にEC2シェルです。
一方、Client VPNはユーザーの端末をAWS内部ネットワークに接続します。
| 項目 | Session Manager | AWS Client VPN |
|---|---|---|
| 目的 | EC2管理接続 | VPC内部ネットワーク接続 |
| 接続対象 | EC2インスタンス中心 | EC2、RDS、Internal ALB、EKS、社内ネットワークなど |
| ユーザー端末IP | VPCに直接入る構造ではない | VPN Client CIDR IPが割り当てられる |
| SSH Key | 不要 | アクセス対象によっては必要となる場合がある |
| 適切な状況 | 運用者がEC2シェルに接続 | ユーザーが内部サービス複数にアクセス |
したがって、どちらか一方が正解とは限りません。
運用者がEC2に接続する必要がある場合はSession Managerが良く、ユーザー端末からVPC内部サービスにアクセスする必要がある場合はClient VPNが適しています。
実務設計時の注意点
AWS Client VPNを設計する際には、以下の点に注意する必要があります。
- 第一に、Client CIDRはVPC CIDRやオンプレミスネットワークの範囲と重複してはいけません。VPNユーザーに割り当てられるIP範囲が既存のネットワークと重複すると、ルーティングの問題が発生する可能性があります。
- 第二に、Authorization Ruleを広範囲に開きすぎない方が良いでしょう。テストでは10.0.0.0/16全体へのアクセスを許可することもできますが、運用ではユーザーグループごとにアクセス範囲を分けるのが望ましいです。
- 第三に、Security Groupも一緒に設計する必要があります。Client VPNでアクセスを許可したからといって、対象のEC2やRDSのセキュリティグループが自動的に開かれるわけではありません。対象リソースのセキュリティグループでも、Client VPN経路からのトラフィックを許可する必要があります。
- 第四に、Split Tunnelの有無を慎重に決定する必要があります。一般的な運用アクセスではSplit Tunnelが効率的ですが、全てのユーザーのトラフィックを中央で制御する必要があるセキュリティポリシーがある場合は、Full Tunnelを検討すべきです。
- 第五に、接続ログを有効にすることをお勧めします。誰がいつVPNに接続したか、どのユーザーがアクセスしたかを追跡できることは、セキュリティ監査や障害分析に有利です。
コストの観点
AWS Client VPNは通常、Client VPN Endpointの接続時間とアクティブなVPN接続時間に基づいて費用が発生します。これに加えて、データ転送、CloudWatch Logs、Public IPv4アドレス、Lambdaベースの接続ハンドラーなどを使用すると、追加費用が発生する可能性があります。
したがって、テスト後は使用しないClient VPN EndpointとSubnet Associationを整理する必要があります。特に教育実習環境では、実習終了後にEndpointを削除しないと、時間単位の費用が発生し続ける可能性があります。
AWS Client VPNはいつ使うべきか?
AWS Client VPNは、以下のような状況に適しています。
원격 근무자가 AWS VPC 내부 서비스에 접근해야 할 때
개발자가 Private RDS 또는 Internal ALB에 접속해야 할 때
협력사에게 제한된 내부 시스템 접근을 제공해야 할 때
Bastion Host 없이 내부 네트워크 접근 환경을 제공하고 싶을 때
온프레미스와 AWS 내부 자원을 함께 접근해야 할 때
逆に、単にEC2の1、2台にシェル接続するだけで良い場合は、Session Managerの方がよりシンプルで安全かもしれません。
結論
AWS Client VPNは、リモートユーザーがAWS VPC内部リソースに安全にアクセスできるようにするマネージドVPNサービスです。Bastion Hostのように特定のサーバーを経由してアクセスする方式ではなく、ユーザーの端末がVPNを介してAWS内部ネットワークに接続される構造です。
したがって、単純なサーバー管理アクセスはSession Manager、VPC内部サービスへのアクセスはClient VPN、支店やIDCとAWSの接続はSite-to-Site VPNと区別して理解すると良いでしょう。
一文でまとめると以下のようになります。
AWS Client VPN은 원격 사용자 PC를 AWS VPC 내부 네트워크에 안전하게 연결해주는 관리형 클라이언트 VPN 서비스다.
コメントを残す