什么是 AWS Client VPN?
AWS Client VPN 是一种完全托管的弹性 VPN 服务,旨在帮助用户从任何地方安全地访问 AWS 和本地网络。自2018年推出以来,AWS Client VPN 允许用户使用基于 OpenVPN 的客户端进行连接。最近的更新中,用户可以通过配置客户端连接处理程序(本文中称为“处理程序”)来强制执行额外的安全策略。该处理程序在建立连接时运行自定义逻辑,用户可以在 Client VPN 服务验证设备和用户后,使用此功能来授权新的连接。
主要特点
- 弹性扩展:根据需求,AWS Client VPN 可自动扩展连接数量。
- 集中管理:用户可以通过一个控制台轻松监控和管理连接。
- 增强安全性:通过处理程序,企业 IT 管理员可以根据 IP 地址、地理位置和时间等因素强制执行访问控制。
处理程序的优势
处理程序利用身份提供商和移动设备管理(MDM)软件定义的政策,保护现有客户投资。它允许企业 IT 管理员根据 IP 地址、地理位置和时间来控制访问权限。例如,可以在维护时间段内拒绝访问,或在特定时间内允许访问。企业客户如果没有 MDM 部署,处理程序还提供了定义和实施额外安全授权政策的灵活性。
使用场景
在本博客中,我们将介绍使用客户端连接处理程序的三种场景:
- 使用第三方身份提供商进行 SAML 2.0 身份验证
- 包括多因素身份验证(MFA)的 Active Directory 身份验证
- 基于证书的双向身份验证
前提条件
- AWS 账户
- Amazon VPC 和 EC2 实例
- 配置 VPC
- 启动 EC2 实例
- 在实例的安全组中允许来自 VPC CIDR 范围的 ICMP 流量
- 在 AWS 证书管理器 (ACM) 中导入的私有证书
- 托管用户和组信息的 Active Directory 或 SAML 身份提供商
设置客户端连接处理程序 Lambda 函数
用户需要编写一个 AWS Lambda 函数,该函数在用户和设备身份验证后同步调用。当终端用户尝试建立新的 VPN 连接时,Lambda 函数将被调用。以下是一个示例 Python Lambda 函数,仅允许在工作日连接:
```python import datetime
def is_weekday(): week_index = datetime.datetime.today().weekday() return week_index < 5
def lambda_handler(event, context): allow = is_weekday() error_msg = "您在周末无法连接。" return { "allow": allow, "error-msg-on-failed-posture-compliance": error_msg, "posture-compliance-statuses": [], "schema-version": "v1" } ```
启用客户端连接处理程序
- 使用 AWS CLI 启用客户端连接处理程序并指定 Lambda 函数:
bash
aws ec2 modify-client-vpn-endpoint \
--client-vpn-endpoint-id $EID --region $REGION \
--client-connect-options Enabled=true,LambdaFunctionArn=arn:aws:lambda:us-east-1:243517296738:function:AWSClientVPN-Weekday
- 使用 AWS CLI 描述端点以验证处理程序是否已启用:
bash
aws ec2 describe-client-vpn-endpoints
- 使用桌面(Windows 或 macOS)AWS Client VPN 软件建立与端点的连接。
场景详解
场景 1:使用第三方身份提供商的 SAML 身份验证
AWS Client VPN 支持证书和 SAML 身份验证。通过结合使用双向身份验证(基于证书)和 SAML,客户可以在打开 VPN 连接之前强制执行设备特定的授权策略。
步骤:
- 参考相关博客文章,了解如何配置 SAML 进行身份验证。
- 终端用户通过身份提供商进行身份验证。
- 身份提供商返回 SAML 令牌。
- 端点调用 Lambda 函数。
- 处理程序执行授权策略并返回“True”或“False”。
- VPN 会话根据返回值被允许或拒绝。
场景 2:包括 MFA 的 Active Directory 身份验证
AWS Client VPN 也支持基于证书和 Active Directory 的身份验证。客户可以定义访问控制策略,以确保只有通过身份验证的用户可以连接。
结论
AWS Client VPN 是一款强大的工具,能够为企业提供灵活的安全连接解决方案。通过使用客户端连接处理程序,企业可以进一步增强安全性,确保只有符合条件的用户和设备才能访问敏感资源。