AWS Client VPN 是一个简单的解决方案,允许用户从任何地方连接到他们的 AWS 环境。这一能力在过去一年中对几乎每个组织都变得越来越重要。单点登录(SSO)广泛应用于各类组织,以便通过单一身份提供者(IdP)对用户访问企业应用和 IT 服务进行身份验证和授权。
虽然许多组织使用 Microsoft Active Directory 或 Azure AD,但有些组织不使用这些 IdP,可能更希望使用更简单的解决方案。这时,AWS SSO 可以派上用场。AWS SSO 提供内置 IdP 的单点登录功能,这意味着我们可以通过一个受管服务管理用户身份并提供 SSO。本文将重点介绍如何将 AWS SSO 作为身份提供者与 AWS Client VPN 服务结合使用。
解决方案概述
在这篇文章中,我们将展示如何通过 AWS Client VPN 使用授权功能,让数据库管理员连接 VPN 以与数据库子网中的服务进行通信,同时不允许其连接运行 EC2 应用服务器的子网。基于 AWS SSO 用户组的组 ID(GID),可以实现对不同子网的授权。以下是实现上述目标的先决条件:
- 一个 AWS 账户
- AWS Organizations(AWS SSO 的先决条件),一个 AWS 账户只能是一个组织的成员
- 用于配置 AWS Client VPN 的 AWS Certificate Manager 证书
部署与配置 AWS SSO
在本节中,我们将配置 AWS SSO,并为 AWS Client VPN 创建一个新的自定义 SAML 2.0 应用程序。我们还将创建一个用户组,用于显示网络入口规则的能力。
- 在 AWS 控制台中,导航至 AWS SSO 页面。在控制台页面顶部的搜索栏中输入“sso”。
- 点击“启用 AWS SSO”按钮。
- 几秒钟后,您应该看到一条消息,显示“您已成功启用 AWS SSO”。
- 接下来,我们需要创建一个新的 SSO 应用程序。在页面左侧导航栏中,转到“应用程序”,然后点击“添加新应用程序”按钮,接着选择“添加自定义 SAML 2.0 应用程序”。
- 为 SAML 应用程序命名,并添加有用的描述。我们可以将所有 AWS SSO 元数据和应用属性保持为默认值。
- 点击浏览按钮下方的链接以下载“AWS SSO 元数据文件”。在创建 IAM 身份提供者时,您需要使用此元数据文件。
- 输入
http://127.0.0.1:35001
作为应用程序 ACS URL,并将urn:amazon:webservices:clientvpn
作为应用程序 SAML 受众,然后点击“保存更改”。 - 设置属性映射。我们只需要两个映射:第一个是 Subject,值为
${user:email}
,格式为 emailAddress;第二个是 memberOf,值为${user:groups}
,格式为未指定。memberOf 属性将用于指示用户属于哪些组。 - 创建两个组:VPN_DB_Admins 和 VPN_DevOps。在左侧栏中点击“组”链接,然后点击“创建组”按钮,为每个组命名并添加描述。
- 将用户分配到 VPN_DB_Admins 组,以便后续测试。
创建 IAM 身份提供者
IAM 身份提供者在您的身份提供者(在本例中为 AWS SSO)和 IAM 之间架起了桥梁,帮助您为用户分配适当的 IAM 权限。按照以下步骤操作:
- 在 AWS 控制台中导航到 IAM 页面,点击左侧导航栏中的“身份提供者”。
- 点击蓝色的“添加提供者”。
- 选择“SAML”作为提供者类型,并为提供者命名。
- 上传您在创建 SSO 应用程序时下载的元数据文件。
- 点击“添加提供者”。
配置 AWS Client VPN
下一步是配置 AWS Client VPN 客户端。您需要 ARN 的证书,该证书应已在 ACM 中预先配置好。还需要选择一个 CIDR 范围,该范围应在 /12 到 /22 之间,以便为 VPN 客户端分配 IP 地址。
- 在 AWS 控制台中,导航至 VPC 页面。
- 向下滚动左侧导航栏,找到“虚拟私人网络(VPN)”部分,点击“Client VPN Endpoints”。
- 点击蓝色的“创建 Client VPN 端点”。
- 输入以下信息:
- 可选名称标签:AWS Client VPN
- 可选描述:描述您的 VPN 客户端端点
- Client IPv4 CIDR:
192.168.0.0/22
- 服务器证书 ARN:从下拉菜单中选择您的 ACM 证书
- 身份验证选项:选择基于用户的身份验证
- 选择联合身份验证
- SAML 提供者 ARN:使用之前创建的 IAM ARN
- DNS 服务器 IP 地址:
1.1.1.1
和1.0.0.1
- 传输协议:UDP
- 启用分离隧道:选中
- VPC ID:使用您的 VPC 标识符
- 安全组 IDs:选择要与 VPN 端点关联的安全组
- VPN 端口:443
以上设置配置完成后,您将能够成功配置 AWS Client VPN 与 AWS SSO 的集成。
结论
通过结合使用 AWS Client VPN 和 AWS SSO,组织可以实现安全、灵活的远程访问解决方案。借助简单的配置和强大的身份验证功能,企业能够更好地管理用户访问权限,确保数据安全。