チュートリアル: AWS Client VPN を使用したプライベートネットワークアクセスの設定
このチュートリアルでは、Amazon Managed Workflows for Apache Airflow 環境用に、コンピュータから Apache Airflow ウェブサーバーへの VPN トンネルを作成する手順を説明します。VPN トンネルを介してインターネットに接続するには、まず AWS Client VPN エンドポイントを作成する必要があります。設定が完了すると、クライアント VPN エンドポイントは VPN サーバーとして機能し、コンピューターから VPC 内のリソースへの安全な接続を可能にします。次に、AWS Client VPN デスクトップ用
セクション
- プライベートネットワーク
- ユースケース
- 開始する前に
- 目的
- (オプション) ステップ 1: VPC、CIDR ルール、VPC セキュリティを特定する
- ステップ 2: サーバーとクライアントの証明書を作成する
- ステップ 3: AWS CloudFormation テンプレートをローカルに保存する
- ステップ 4: クライアント VPN AWS CloudFormation スタックを作成する
- ステップ 5: サブネットをクライアント VPN に関連付ける
- ステップ 6: クライアント VPN に認可進入ルールを追加する
- ステップ 7:クライアント VPN のエンドポイント設定ファイルをダウンロードします
- ステップ 8: AWS Client VPN に接続する
- 次のステップ
プライベートネットワーク
このチュートリアルでは、Apache Airflow ウェブサーバーの [プライベートネットワーク] アクセスモードを選択していることを前提としています。
プライベートネットワークアクセスモードは、Apache Airflow UI へのアクセスを、お使いの環境の IAM ポリシーへのアクセスが許可されている Amazon VPC 内のユーザーに制限します。
プライベートなウェブサーバーアクセスを持つ環境を作成する場合、すべての依存関係を Python Wheel アーカイブ (.whl
) にパッケージ化し、その後、requirements.txt
で .whl
を参照する必要があります。wheel を使用して依存関係をパッケージ化およびインストールする手順については、「Python wheel を使用した依存関係の管理」を参照してください。
以下の画像は、Amazon MWAA コンソールの [プライベートネットワーク] オプションの場所を示しています。
ユースケース
このチュートリアルは、Amazon MWAA 環境を作成する前でも後でも使用できます。環境と同じ Amazon VPC、VPC セキュリティグループ、プライベートサブネットを使用する必要があります。Amazon MWAA 環境を作成した後にこのチュートリアルを使用する場合、手順を完了したら Amazon MWAA コンソールに戻り、Apache Airflow ウェブサーバーのアクセスモードを [プライベートネットワーク] に変更できます。
開始する前に
-
ユーザー許可を確認してください。AWS Identity and Access Management (IAM) のアカウントに VPC リソースを作成および管理するための十分な権限があることを確認してください。
-
Amazon MWAA VPC を使用してください。このチュートリアルでは、クライアント VPN を既存の VPC に関連付けることを前提としています。Amazon VPC は、Amazon MWAA 環境と同じ AWS のリージョンにある必要があり、かつ 2 つのプライベートサブネットを持っている必要があります。Amazon VPC を作成していない場合、オプション 3: インターネットにアクセスせずに Amazon VPC ネットワークを作成する で AWS CloudFormation テンプレートを使用してください。
目的
このチュートリアルでは、以下の作業を行います。
-
既存の Amazon VPC に対して、AWS CloudFormation テンプレートを使用して AWS Client VPN エンドポイントを作成します。
-
サーバーおよびクライアントの証明書とキーを生成し、その後、Amazon MWAA 環境と同じ AWS のリージョンにある AWS Certificate Manager にサーバー証明書とキーをアップロードします。
-
クライアント VPN のクライアント VPN エンドポイント設定ファイルをダウンロードして変更し、このファイルを使用して、デスクトップ用クライアント VPN を用いて接続するための VPN プロファイルを作成します。
(オプション) ステップ 1: VPC、CIDR ルール、VPC セキュリティを特定する
次のセクションでは、Amazon VPC、VPC セキュリティグループの ID を検索する方法と、以降のステップでクライアント VPN を作成するために必要な CIDR ルールを特定する方法について説明します。
CIDR ルールを特定してください。
次のセクションでは、クライアント VPN を作成するために必要な CIDR ルールを特定する方法を示します。
クライアント VPN の CIDR を識別するには
-
Amazon VPC コンソールの Amazon VPC ページ
を開きます。 -
ナビゲーションバーのリージョンセレクターを使用して、Amazon MWAA 環境と同じ AWS リージョンを選択します。
-
Amazon VPC を選択してください。
-
プライベートサブネットの CIDR が以下のようになっていると仮定します。
-
プライベートサブネット 1: 10.192.10.0
/24
-
プライベートサブネット 2: 10.192.11.0
/24
Amazon VPC の CIDR が 10.192.0.0
/16
の場合、クライアント VPN に指定するクライアント IPv4 CIDR は 10.192.0.0/22
になります。 -
-
この CIDR 値と VPC ID の値を後続のステップのために保存してください。
VPC とセキュリティグループを特定する
次のセクションでは、クライアント VPN を作成するために必要な Amazon VPC とセキュリティグループの ID を確認する方法を示します。
注記
複数のセキュリティグループを使用している可能性があります。後続のステップでは、VPC のセキュリティグループをすべて指定する必要があります。
セキュリティグループを特定するには
-
Amazon VPC コンソールのセキュリティグループページ
を開きます。 -
ナビゲーションバーのリージョンセレクターを使って、AWS リージョンを選択します。
-
VPC ID で Amazon VPC を探し、その VPC に関連付けられているセキュリティグループを特定します。
-
セキュリティグループと VPC の ID を後続のステップのために保存します。
ステップ 2: サーバーとクライアントの証明書を作成する
クライアント VPN エンドポイントは、1024 ビットおよび 2048 ビットの RSA キーサイズのみサポートしています。以下のセクションでは、OpenVPN easy-rsa を使ってサーバーとクライアントの証明書と鍵を生成し、AWS Command Line Interface (AWS CLI) を使って証明書を ACM にアップロードする方法を示します。
クライアント証明書を作成するには
-
以下の簡単な手順に従って、クライアントの認証と認可:相互認証 の AWS CLI から証明書を作成し、ACM にアップロードします。
-
これらの手順では、サーバーおよびクライアント証明書をアップロードする際に、AWS CLI コマンドで Amazon MWAA 環境と同じ AWS リージョンを指定する必要があります。ここでは、これらのコマンドでリージョンを指定する方法を例で示します。
-
例 サーバー証明書のリージョン
aws acm import-certificate --certificate fileb://server.crt --private-key fileb://server.key --certificate-chain fileb://ca.crt
--region us-west-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
-
これらの手順の後、サーバー証明書およびクライアント証明書の ARN に関する AWS CLI のレスポンスで返された値を保存してください。これらの ARN を使用して、クライアント VPN を作成するための AWS CloudFormation テンプレートに ARN を指定します。
-
-
この手順では、クライアント証明書とプライベートキーがコンピューターに保存されます。ここでは、これらの認証情報の確認場所の例。
-
例 macOS 上
macOS では、内容は
/Users/
に保存されます。このディレクトリのすべての (youruser
/custom_folderls -a
) 内容を一覧表示すると、次のような内容が表示されるはずです。. .. ca.crt client1.domain.tld.crt client1.domain.tld.key server.crt server.key
-
これらの手順の後、クライアント証明書の内容または場所を
client1.domain.tld.crt
に保存し、プライベートキーの場所をclient1.domain.tld.key
にメモしてください。これらの値をクライアント VPN の設定ファイルに追加します。
-
ステップ 3: AWS CloudFormation テンプレートをローカルに保存する
次のセクションには、クライアント VPN を作成するための AWS 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 ルールが提供されています。 -
VpcId
の Amazon VPC ID 。vpc-010101010101
の VPC が提供されています。 -
SecurityGroupIds
内の VPC セキュリティグループ ID。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 AWS CloudFormation スタックを作成する
AWS Client VPN を作成するには
-
AWS CloudFormation コンソール
を開きます。 -
[テンプレートは準備できている]、[テンプレートファイルをアップロードする] を選択します。
-
[ファイルのを選択] を選択し、
mwaa_vpn_client.yaml
ファイルを選択します。 -
[次へ]、[次へ] を選択します。
-
アクノレッジメントを選択し、[スタックを作成] を選択します。
ステップ 5: サブネットをクライアント VPN に関連付ける
プライベートサブネットを AWS Client VPN に関連付けるには
-
Amazon VPC コンソール
を開きます。 -
[クライアント VPN エンドポイント] ページを選択します。
-
クライアント VPN を選択し、次に [アソシエーション] タブの [アソシエイト] を選択します。
-
ドロップダウンリストから次の項目を選択します。
-
[VPC] 内の Amazon VPC。
-
[関連付けるサブネットを選択] にあるプライベートサブネットの 1 つ。
-
-
[関連付ける] を選択します。
注記
VPC とサブネットがクライアント VPN に関連付けられるまでに数分かかります。
ステップ 6: クライアント VPN に認可進入ルールを追加する
VPC の CIDR ルールを使用する認可進入ルールをクライアント VPN に追加する必要があります。Active Directory グループまたは SAML ベースのアイデンティティプロバイダー (IdP) から特定のユーザーまたはグループを承認する場合は、Client VPN ガイドの「承認ルール」を参照してください。
CIDR を AWS Client VPN に追加するには
-
Amazon VPC コンソール
を開きます。 -
[クライアント VPN エンドポイント] ページを選択します。
-
クライアント VPN を選択し、[承認] タブの [進入を許可] を選択します。
-
次を指定します:
-
[有効化する送信先ネットワーク] にある Amazon VPC の CIDR ルール。例:
10.192.0.0/16
-
[アクセスを付与する対象] で、[すべてのユーザーにアクセスを許可する] を選択します。
-
[説明] で、分かりやすい名前を入力します。
-
-
[認可ルールを追加する] を選択します。
注記
Amazon VPC のネットワークコンポーネントによっては、ネットワークアクセスコントロールリスト (NACL) へのこの承認進入ルールが必要な場合もあります。
ステップ 7:クライアント VPN のエンドポイント設定ファイルをダウンロードします
設定ファイルをダウンロードするには
-
Client VPN エンドポイント設定ファイルのダウンロードにある Client VPN 設定ファイルをダウンロードするには、以下の簡単な手順に従ってください。
-
このステップでは、クライアント VPN エンドポイントの DNS 名の前に文字列を追加するように求められます。例を示します。
-
例 エンドポイント 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
-
-
これらの手順では、クライアント証明書の内容を新しい
<cert></cert>
のタグの間に追加し、プライベートキーの内容を新しい<key></key>
のタグの間に追加するように求められます。例を示します。-
コマンドプロンプトを開き、ディレクトリをクライアント証明書とプライベートキーの場所に変更します。
-
例 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> -
例 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: AWS Client VPN に接続する
AWS Client VPN のクライアントは無料で提供されています。コンピュータを AWS Client VPN に直接接続して、エンドツーエンドの VPN 体験をすることができます。
クライアント VPN に接続するには
-
AWS Client VPN for Desktop
をダウンロードしてインストールします。 -
AWS Client VPNを開きます。
-
VPN クライアントメニューで [ファイル]、[管理対象プロファイル] を選択します。
-
[プロファイルを追加] を選択し、
downloaded-client-config.ovpn
を選択します。 -
[表示名] にわかりやすい名前を入力します。
-
[プロフィールを追加] を選択し、[完了] を選択します。
-
[接続]を選択します。
クライアント VPN に接続したら、Amazon VPC 内のすべてのリソースを表示するには、他の VPN との接続を切断する必要があります。
注記
接続する前に、クライアントを終了して再起動する必要がある場合があります。
次のステップ
-
Amazon Managed Workflows for Apache Airflow を使い始める で Amazon MWAA 環境を作成する方法を学びます。クライアント VPN と同じ AWS のリージョンに、クライアント VPN と同じ VPC、プライベートサブネット、セキュリティグループを使用して環境を作成する必要があります。