教程:使用 Amazon Client VPN 配置私有网络访问权限 - Amazon Managed Workflows for Apache Airflow
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

教程:使用 Amazon Client VPN 配置私有网络访问权限

本教程将引导您完成为 Amazon MWAA 环境创建从计算机到 Apache Airflow Web 服务器的 VPN 隧道的步骤。要通过 VPN 隧道连接到互联网,您首先需要创建一个 Amazon Client VPN 端点。设置完成后,客户端 VPN 端点将充当 VPN 服务器,允许计算机与 VPC 中的资源进行安全连接。然后,您将使用桌面版 Amazon Client VPN 从电脑连接到客户端 VPN。

私有网络

本教程假设您已为 Apache Airflow Web 服务器选择了私有网络访问模式。


            此图显示了带有私有 Web 服务器的 Amazon MWAA 环境的架构。

私有网络访问模式将访问 Apache Airflow UI 的权限限制为 Amazon VPC 中已获准访问环境 IAM policy 的用户。

创建具有私有 Web 服务器访问权限的环境时,必须将所有依赖项打包到 Python Wheel 档案(.whl)中,然后在 requirements.txt 中引用 .whl。有关使用 Wheel 打包和安装依赖项的说明,请参阅使用 Python wheel 管理依赖项

下图显示了在 Amazon MWAA 控制台上哪里可以找到私有网络选项。


            此图显示了在 Amazon MWAA 控制台上哪里可以找到私有网络选项。

使用案例

您可以在创建 Amazon MWAA 环境之前或之后使用本教程。您必须使用与您的环境相同的 Amazon VPC、VPC 安全组和私有子网。如果您在创建 Amazon MWAA 环境后使用本教程,则在完成这些步骤后,您可以返回 Amazon MWAA 控制台并将 Apache Airflow Web 服务器访问模式更改为私有网络

开始前的准备工作

  1. 检查用户权限。请确保您在 Amazon Identity and Access Management(IAM)中的账户拥有足够的权限来创建和管理 VPC 资源。

  2. 使用 Amazon MWAA VPC。本教程假设您正在将客户端 VPN 关联到现有 VPC。Amazon VPC 必须与 Amazon MWAA 环境位于同一 Amazon 区域,并且有两个私有子网。如果您尚未创建 Amazon VPC,请使用 Amazon CloudFormation 模板,如 选项三:创建不可互联网访问的 Amazon VPC 网络 所示。

目标

在本教程中,您将执行以下操作:

  1. 使用现有 Amazon VPC 的 Amazon CloudFormation 模板创建 Amazon Client VPN 端点。

  2. 生成服务器和客户端证书和密钥,然后将服务器证书和密钥上传到与 Amazon MWAA 环境同一 Amazon 区域的 Amazon Certificate Manager。

  3. 为客户端 VPN 下载并修改客户端 VPN 端点配置文件,然后使用该文件创建 VPN 配置文件,以便使用桌面版客户端 VPN 进行连接。

(可选)步骤 1:确定 VPC、CIDR 规则和 VPC 安全

下一节介绍如何为 Amazon VPC、VPC 安全组查找 ID,以及在后续步骤中识别创建客户端 VPN 所需的 CIDR 规则的方法。

确定 CIDR 规则

下一节介绍如何识别 CIDR 规则,您需要使用这些规则来创建客户端 VPN。

识别客户端 VPN 的 CIDR
  1. 在 Amazon VPC 控制台,打开 Amazon VPC 页面

  2. 使用导航栏中的区域选择器选择与 Amazon MWAA 环境相同的 Amazon 区域。

  3. 选择 Amazon VPC。

  4. 假设私有子网的 CIDR 是:

    • 私有子网 1:10.192.10.0/24

    • 私有子网 2:10.192.10.0/24

    如果 Amazon VPC 的 CIDR 是 10.192.0.0/16,那么您为客户端 VPN 指定的客户端 IPv4 CIDR 将是 10.192.0.0/22

  5. 保存此 CIDR 值以及 VPC ID 的值以供后续步骤使用。

识别 VPC 和安全组

下一节介绍如何查找创建客户端 VPC 所需的 Amazon VPC 和安全组的 ID。

注意

您可能正在使用一个以上的安全组。在后续步骤中,您需要指定所有 VPC 的安全组。

要识别安全组
  1. 在 Amazon VPC 控制台打开安全组页面

  2. 在导航栏中,使用区域选择器来选择 Amazon 区域。

  3. VPC ID 中查找 Amazon VPC,并识别与 VPC 关联的安全组。

  4. 保存安全组和 VPC 的 ID,以供后续步骤使用。

步骤 2:创建服务器证书和客户端证书

客户端 VPN 端点仅支持 1024 位和 2048 位 RSA 密钥大小。以下过程使用 OpenVPN easy-rsa 生成服务器和客户端证书和密钥,然后使用 Amazon Command Line Interface(Amazon CLI)将证书上传到 ACM。

创建客户端证书
  1. 按照以下快速步骤,通过在客户端身份验证和授权:相互身份验证中的 Amazon CLI 创建证书并将其上传到 ACM。

  2. 在这些步骤中,在上传服务器和客户端证书时,您必须在 Amazon CLI 命令中指定与 Amazon MWAA 环境相同的 Amazon 区域。以下是有关如何在这些命令中指定区域的一些示例:

    1. 例 服务器证书的区域
      aws acm import-certificate --certificate fileb://server.crt --private-key fileb://server.key --certificate-chain fileb://ca.crt --region us-west-2
    2. 例 客户端证书的区域
      aws acm import-certificate --certificate fileb://client1.domain.tld.crt --private-key fileb://client1.domain.tld.key --certificate-chain fileb://ca.crt --region us-west-2
    3. 完成这些步骤后,保存在服务器证书和客户端证书 ARN 的 Amazon CLI 响应中返回的值。您将在 Amazon CloudFormation 模板中指定这些 ARN 来创建客户端 VPN。

  3. 在这些步骤中,客户端证书和私钥将保存到计算机中。以下是有关在哪里可以找到这些凭证的示例:

    1. 例 在 macOS 上

      在 macOS 上,内容保存在 /Users/youruser/custom_folder。如果您列出此目录的所有(ls -a)内容,则应看到类似于以下内容的内容:

      . .. ca.crt client1.domain.tld.crt client1.domain.tld.key server.crt server.key
    2. 完成这些步骤后,保存内容或在 client1.domain.tld.crt 中记下客户端证书的位置,以及在 client1.domain.tld.key 中记下私钥的位置。您将把这些值添加到客户端 VPN 的配置文件中。

步骤 3:将 Amazon CloudFormation 模板保存到本地

下一节包含创建客户端 VPN 的 Amazon CloudFormation 模板。对于这些资源,我们建议指定与 Amazon MWAA 环境相同的 Amazon VPC、VPC 安全组和私有子网。

  • 复制以下模板的内容并将其作为 mwaa_vpn_client.yaml 保存在本地中。您也可以使用下载模板

    替换以下值:

    • YOUR_CLIENT_ROOT_CERTIFICATE_ARN— 在 ClientRootCertificateChainArn 中的 client1.domain.tld 证书的 ARN。

    • YOUR_SERVER_CERTIFICATE_ARN— 在 ServerCertificateArn 中的服务器证书的 ARN。

    • ClientCidrBlock 中的客户端 IPv4 CIDR 规则。提供 10.192.0.0/22 的 CIDR 规则。

    • Amazon VPC ID,如 VpcId 所示。提供 vpc-010101010101 的 VPC。

    • VPC 安全组 ID,如 SecurityGroupIds 所示。提供了 sg-0101010101 的安全组。

    AWSTemplateFormatVersion: 2010-09-09 Description: This template deploys a VPN Client Endpoint. Resources: ClientVpnEndpoint: Type: 'AWS::EC2::ClientVpnEndpoint' Properties: AuthenticationOptions: - Type: "certificate-authentication" MutualAuthentication: ClientRootCertificateChainArn: "YOUR_CLIENT_ROOT_CERTIFICATE_ARN" ClientCidrBlock: 10.192.0.0/22 ClientConnectOptions: Enabled: false ConnectionLogOptions: Enabled: false Description: "MWAA Client VPN" DnsServers: [] SecurityGroupIds: - sg-0101010101 SelfServicePortal: '' ServerCertificateArn: "YOUR_SERVER_CERTIFICATE_ARN" SplitTunnel: true TagSpecifications: - ResourceType: "client-vpn-endpoint" Tags: - Key: Name Value: MWAA-Client-VPN TransportProtocol: udp VpcId: vpc-010101010101 VpnPort: 443
注意

如果您在环境中使用多个安全组,则可以按以下格式指定多个安全组:

SecurityGroupIds: - sg-0112233445566778b - sg-0223344556677889f

步骤 4:创建客户端 VPN Amazon CloudFormation 堆栈

创建 Amazon Client VPN
  1. 打开 Amazon CloudFormation 控制台

  2. 选择模板已准备就绪,然后选择上传模板文件

  3. 选择选择文件,然后选择 mwaa_vpn_client.yaml 文件。

  4. 选择下一步下一步

  5. 选择堆栈,然后选择创建堆栈

步骤 5:将子网关联到客户端 VPN

要将私有子网关联到 Amazon Client VPN,请执行以下操作
  1. 打开 Amazon VPC 控制台

  2. 选择客户端 VPN 端点页面。

  3. 选择客户端 VPN,然后选择关联选项卡、关联

  4. 在下拉列表中选择以下内容:

    • Amazon VPC,如 VPC 所示。

    • 选择要关联的子网中的一个私有子网。

  5. 选择 Associate

注意

VPC 和子网关联到客户端 VPN 需要几分钟时间。

步骤 6:为客户端 VPN 添加授权入口规则

您需要使用 VPC 的 CIDR 规则向客户端 VPN 添加授权入口规则。如果您想授权来自 Active Directory 组或基于 SAML 的身份提供商(IdP)中的特定用户或组,请参阅《客户端 VPN 指南》中的授权规则

要将 CIDR 添加到 Amazon Client VPN,请执行以下操作
  1. 打开 Amazon VPC 控制台

  2. 选择客户端 VPN 端点页面。

  3. 选择客户端 VPN,然后选择授权选项卡、授权入口

  4. 指定以下内容:

    • 要在目标网络中启用 Amazon VPC 的 CIDR 规则。例如:

      10.192.0.0/16
    • 授予访问权限中,选择允许所有用户访问

    • 描述中,输入一个描述性名称。

  5. 选择添加授权规则

注意

根据 Amazon VPC 的联网组件,您可能还需要将此授权入口规则添加到网络访问控制列表(NACL)中。

步骤 7:下载客户端 VPN 端点配置文件

下载配置文件
  1. 按照以下快速步骤在下载客户端 VPN 端点配置文件中下载客户端 VPN 配置文件。

  2. 在这些步骤中,系统会要求您在客户端 VPN 端点 DNS 名称前面加一个字符串。示例如下:

    1. 例 端点 DNS 名称

      如果客户端 VPN 端点 DNS 名称如下所示:

      remote cvpn-endpoint-0909091212aaee1.prod.clientvpn.us-west-1.amazonaws.com 443

      您可以添加一个字符串来识别客户端 VPN 端点,如下所示:

      remote mwaavpn.cvpn-endpoint-0909091212aaee1.prod.clientvpn.us-west-1.amazonaws.com 443
  3. 在这些步骤中,系统会要求您在一组新 <cert></cert> 标签之间添加客户端证书的内容,而在一组新 <key></key> 标签之间添加私有密钥的内容。示例如下:

    1. 打开命令提示符并将目录更改为客户端证书和私钥的位置。

    2. 例 macOS client1.domain.tld.crt

      要在 macOS 上显示 client1.domain.tld.crt 文件内容,您可以使用 cat client1.domain.tld.crt

      从终端复制值并粘贴在 downloaded-client-config.ovpn 中,如下所示:

      ZZZ1111dddaBBB -----END CERTIFICATE----- </ca> <cert> -----BEGIN CERTIFICATE----- YOUR client1.domain.tld.crt -----END CERTIFICATE----- </cert>
    3. 例 macOS client1.domain.tld.key

      要显示 client1.domain.tld.key 文件内容,您可以使用 cat client1.domain.tld.key

      从终端复制值并粘贴在 downloaded-client-config.ovpn 中,如下所示:

      ZZZ1111dddaBBB -----END CERTIFICATE----- </ca> <cert> -----BEGIN CERTIFICATE----- YOUR client1.domain.tld.crt -----END CERTIFICATE----- </cert> <key> -----BEGIN CERTIFICATE----- YOUR client1.domain.tld.key -----END CERTIFICATE----- </key>

步骤 8:连接到 Amazon Client VPN

Amazon Client VPN 的客户端是免费提供的。您可以将计算机直接连接到 Amazon Client VPN,以获得端到端的 VPN 体验。

连接到客户端 VPN
  1. 下载并安装桌面版 Amazon Client VPN

  2. 打开 Amazon Client VPN。

  3. 在 VPN 客户端菜单中选择文件托管配置文件

  4. 选择添加配置文件,然后选择 downloaded-client-config.ovpn

  5. 显示名称中输入描述性名称。

  6. 选择添加配置文件完成

  7. 选择连接

连接到客户端 VPN 后,您需要断开与其他 VPN 的连接才能查看 Amazon VPC 中的任何资源。

注意

您可能需要退出客户端,然后重新开始,然后才能建立连接。

接下来做什么?

  • 要了解如何创建 Amazon MWAA 环境,请参阅 开始使用 Amazon MWAA。您必须在客户端 VPN 所在的 Amazon 区域中创建环境,并使用与客户端 VPN 相同的 VPC、私有子网和安全组。