发布日期:2022年9月12日:本博客文章已更新,以反映AWS单点登录(SSO)的新名称——AWS IAM身份中心。有关名称更改的更多信息,请点击这里。
什么是AWS Client VPN?
AWS Client VPN是一种托管的基于客户端的VPN服务,允许用户使用基于OpenVPN的客户端安全地访问其在亚马逊网络服务(AWS)中的资源以及本地网络。本文将向您展示如何通过自定义SAML 2.0应用程序将Client VPN与现有的AWS IAM身份中心集成,以便对Client VPN连接和流量进行身份验证和授权。
为什么选择AWS IAM身份中心?
维护一套单独的凭证来对每个资源进行用户身份验证和授权访问不仅繁琐,而且无法扩展。解决这个挑战的一种常见方法是使用集中式身份存储,如AWS IAM身份中心,作为您的身份提供者(IdP)。然后,您可以使用安全断言标记语言2.0(SAML 2.0)将AWS IAM身份中心与每个资源或应用程序(也称为服务提供者SP)集成。IdP验证用户并通过SAML将其身份和安全信息传递给SP。通过SAML,您可以为用户在多个支持SAML的应用程序和服务中启用单点登录体验。
Client VPN与SAML 2.0的集成
Client VPN支持与SAML 2.0的身份联合,能够处理Client VPN端点的身份验证。部署自定义SAML应用程序可能会面临一些挑战,尤其是在SP期望接收的属性与IdP可以提供的属性之间的映射。我们已经为您解决了这个问题,并展示了Client VPN与AWS IAM身份中心集成所需的确切映射。
集成步骤概述
以下是实现身份验证工作流所需的步骤:
- 用户在其设备上打开AWS提供的VPN客户端,并发起与Client VPN端点的连接。
- Client VPN端点根据在IAM SAML提供者中提供的信息,将IdP URL和身份验证请求发送回客户端。
- AWS提供的VPN客户端在用户设备上打开新浏览器窗口。浏览器向IdP发出请求并显示登录页面。
- 用户在登录页面输入凭证,IdP将签名的SAML断言以HTTP POST的形式发送回AWS提供的VPN客户端。
- SAML断言从AWS提供的VPN客户端传递到Client VPN端点。
- 端点验证断言,并决定是否允许用户访问。
前提条件
要完成VPN和IAM身份中心的设置,您需要满足以下要求:
- AWS IAM身份中心已配置为使用内部AWS IAM身份中心身份存储。
- 两个AWS IAM身份中心用户和两个AWS IAM身份中心组用于测试。
- 一个Amazon虚拟私有云(Amazon VPC),其中包含用于连接测试的Amazon EC2实例。
- 一个导入到AWS证书管理器(ACM)中的x.509证书。
- 对您的AWS环境的管理访问权限,或者至少有足够的权限来创建AWS IAM身份中心应用程序、ACM证书、EC2实例和Client VPN端点。
- 一个运行Windows或macOS的客户端设备,并安装最新版本的Client VPN软件。
解决方案流程
在此解决方案中,您将完成以下步骤:
- 与您的IdP建立信任。
- 在AWS IAM身份中心中创建和配置Client VPN SAML应用程序。
- 将Client VPN SAML应用程序与IAM集成。
- 创建和配置Client VPN端点。
- 测试解决方案。
- 清理测试环境。
与您的IdP建立信任
在此流程中,Client VPN是SAML SP,而AWS IAM身份中心是SAML IdP。部署此解决方案的关键步骤之一是建立SP与IdP之间的信任。通过在AWS IAM身份中心中创建自定义SAML应用程序并导出应用程序特定的元数据,可以完成此一次性配置。
创建和配置Client VPN SAML应用程序
在AWS IAM身份中心中创建两个自定义SAML 2.0应用程序,一个作为Client VPN软件的IdP,另一个则是允许用户下载Client VPN软件和配置文件的自助门户。
- 在AWS IAM身份中心控制台中,从左侧面板选择“应用程序”,然后选择“添加新应用程序”。
- 选择“添加自定义SAML 2.0应用程序”,将其用作Client VPN软件的IdP。
- 在详细信息部分,将显示名称设置为“VPN客户端”。
- 在应用程序元数据部分,手动输入以下值:
- 应用程序ACS URL:
http://127.0.0.1:35001
- 应用程序SAML受众:
urn:amazon:webservices:clientvpn
- 选择“保存更改”。
配置用户属性映射
根据以下表格配置属性映射:
| 应用中的用户属性 | 映射到AWS IAM身份中心中的字符串值或用户属性 | 格式 | |-----------------|--------------------------------------|------| | Subject | ${user:email} | emailAddress | | Name | ${user:email} | unspecified | | FirstName | ${user:givenName} | unspecified | | LastName | ${user:familyName} | unspecified | | memberOf | ${user:groups} | unspecified |
总结
通过上述步骤,您可以成功将AWS Client VPN与AWS IAM身份中心集成,实现安全的身份验证和访问控制。这不仅提高了用户体验,还简化了管理流程,确保了安全性。
希望这篇文章对您有所帮助!如果您有任何问题或需要进一步的指导,请随时联系我们。