什么是AWS Client VPN?一种将远程用户安全连接到AWS VPC的托管VPN

在AWS中提到VPN时,很多人通常首先想到Site-to-Site VPN。然而,Site-to-Site VPN是用于连接公司IDC、分支机构、本地网络与AWS VPC的方式。另一方面,当开发人员、运维人员、合作伙伴等“个人用户终端”需要访问AWS内部资源时,可以使用AWS Client VPN。

AWS Client VPN是一种托管的、基于客户端的VPN服务,允许用户从其笔记本电脑或台式机安全地连接到AWS VPC或本地网络。简而言之,它是一种用户运行VPN客户端进入AWS内部网络的方式。

为什么需要AWS Client VPN?

AWS VPC内部有许多不应从外部互联网直接访问的资源。

例如,可能存在以下资源:

Private EC2
Private RDS
Internal ALB
EKS Private Endpoint
관리용 웹 콘솔
사내 업무 시스템
모니터링 대시보드

为了访问这些资源而分配公共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进行用户认证

在实际操作中,简单的测试或实验通常使用基于证书的双向认证,而在企业环境中,则多考虑基于SAML的集成或基于Active Directory的认证。

重要的一点是,认证决定了“是否可以连接VPN”。只有认证成功,用户才能连接到Client VPN Endpoint。

授权与访问控制

在Client VPN中,并非仅凭认证就能允许所有访问。连接后,必须通过授权规则(Authorization Rule)和安全组(Security Group)来控制访问范围。

例如,运维团队可以访问整个VPC,而开发团队则可以被限制为只访问开发服务器的IP段。

운영팀:
  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 터널
일반 인터넷 트래픽 -> 사용자 로컬 인터넷

在实际操作中,大多数情况下更倾向于分隧道。这是因为只有对AWS内部资源的访问通过VPN发送,而用户的普通互联网流量不会经过AWS。这种方式简化了流量路径,也有助于减少不必要的数据传输成本。

但是,如果组织的安全策略要求所有流量都必须通过中央安全设备或代理进行控制,则可能会选择全隧道。

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后,可以SSH连接到私有EC2实例,或者通过内部ALB地址访问Web应用程序。

ssh ec2-user@10.0.1.10

或者,可以访问内部Web服务。

http://internal-service.example.local

堡垒机(Bastion Host)与Client VPN的区别

堡垒机和Client VPN都是访问内部资源的方法,但其使用目的略有不同。

项目 堡垒机(Bastion Host) AWS Client VPN
访问方式 通过跳板服务器 用户PC通过VPN连接到VPC
主要用途 服务器SSH/RDP访问 VPC内部网络访问
运维对象 需要管理堡垒机EC2 使用AWS托管的VPN端点
用户体验 连接堡垒机后,再连接内部服务器 连接VPN后,直接访问内部资源
访问范围 通常以服务器访问为中心 可扩展到VPC、对等VPC、本地网络
安全控制 安全组(SG)、操作系统账户、SSH密钥、PAM等 认证、授权规则、安全组(SG)、路由控制

如果只需要EC2 Shell访问,Session Manager可能更合适。另一方面,如果用户需要访问VPC内部的多个服务、Web控制台、数据库、内部API等,Client VPN是更自然的选择。

Session Manager与Client VPN的区别

AWS Systems Manager Session Manager是一项无需堡垒机即可连接EC2的功能。但其连接目标主要集中在EC2 Shell。

相比之下,Client VPN将用户终端连接到AWS内部网络。

项目 Session Manager AWS Client VPN
目的 EC2管理访问 VPC内部网络访问
连接目标 主要针对EC2实例 EC2、RDS、内部ALB、EKS、公司内网等
用户终端IP 并非直接进入VPC结构 被分配VPN客户端CIDR IP
SSH密钥 不需要 根据访问目标可能需要
适用场景 运维人员连接EC2 Shell 用户访问多个内部服务

因此,很难说其中一个就是唯一的正确答案。

如果运维人员需要连接EC2,Session Manager是更好的选择;如果用户终端需要访问VPC内部服务,Client VPN则更合适。

实际设计时的注意事项

设计AWS Client VPN时,应注意以下事项:

  • 首先,客户端CIDR(Client CIDR)不得与VPC CIDR或本地网络范围重叠。如果分配给VPN用户的IP范围与现有网络重叠,可能会导致路由问题。
  • 其次,不建议将授权规则(Authorization Rule)开放得过于宽泛。在测试中可以允许对10.0.0.0/16的完全访问,但在生产环境中,最好按用户组划分访问范围。
  • 第三,安全组(Security Group)也必须一并设计。在Client VPN中允许访问并不意味着目标EC2或RDS的安全组会自动打开。目标资源的安全组也必须允许来自Client VPN路径的流量。
  • 第四,应谨慎决定是否使用分隧道(Split Tunnel)。虽然分隧道对于一般的运维访问是高效的,但如果安全策略要求所有用户流量都必须通过中央进行控制,则应考虑全隧道。
  • 第五,建议启用连接日志。能够追踪谁何时连接了VPN,以及哪些用户进行了访问,这对于安全审计和故障分析非常有利。

成本考量

AWS Client VPN的费用通常基于Client VPN Endpoint连接时间和活跃VPN连接时间。此外,如果使用数据传输、CloudWatch Logs、公共IPv4地址、基于Lambda的连接处理器等,可能会产生额外费用。

因此,测试后应清理未使用的Client VPN Endpoint和子网关联。特别是在教育实验环境中,如果实验结束后不删除Endpoint,可能会持续产生按小时计费的费用。

何时适合使用AWS Client VPN?

AWS Client VPN适用于以下情况:

원격 근무자가 AWS VPC 내부 서비스에 접근해야 할 때
개발자가 Private RDS 또는 Internal ALB에 접속해야 할 때
협력사에게 제한된 내부 시스템 접근을 제공해야 할 때
Bastion Host 없이 내부 네트워크 접근 환경을 제공하고 싶을 때
온프레미스와 AWS 내부 자원을 함께 접근해야 할 때

反之,如果只是需要对一两个EC2实例进行Shell访问,Session Manager可能更简单、更安全。

结论

AWS Client VPN是一种托管VPN服务,允许远程用户安全地访问AWS VPC内部资源。它不像堡垒机那样需要通过特定服务器进行访问,而是用户的终端通过VPN直接连接到AWS内部网络。

因此,最好区分理解:Session Manager用于简单的服务器管理访问,Client VPN用于访问VPC内部服务,而Site-to-Site VPN用于连接分支机构或IDC与AWS。

总结成一句话就是:

AWS Client VPN은 원격 사용자 PC를 AWS VPC 내부 네트워크에 안전하게 연결해주는 관리형 클라이언트 VPN 서비스다.

Comments

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注