Authentication - AWS クライアント VPN

Authentication

認証は AWS クラウドへの最初のエントリポイントで実装されます。クライアントがクライアント VPN エンドポイントへの接続を許可されているかどうかを判断するために使用されます。認証が成功すると、クライアントはクライアント VPN エンドポイントに接続して VPN セッションを確立します。認証が失敗すると、接続は拒否され、クライアントは VPN セッションを確立できなくなります。

クライアント VPN では、次のタイプのクライアント認証を使用できます。

次のいずれか、または組み合わせを使用できます。

  • 相互認証とフェデレーション認証

  • 相互認証と Active Directory 認証

重要

クライアント VPN エンドポイントを作成するには、使用する認証のタイプに関係なく、AWS Certificate Manager でサーバー証明書のプロビジョニングを行う必要があります。サーバー証明書の作成とプロビジョニングの詳細については、「相互認証」の手順を参照してください。

クライアント VPN は と統合することによって Active Directory サポートを提供しますAWS Directory Service Active Directory 認証では、クライアントは既存の Active Directory グループに対して認証されます。AWS Directory Service を使用して、クライアント VPN は AWS またはオンプレミスネットワークでプロビジョニングされた既存の Active Directory に接続できます。これにより、既存のクライアント認証インフラストラクチャを使用することができます。オンプレミスの Active Directory を使用していて、既存の AWS Managed Microsoft AD がない場合は、Active Directory Connector (AD Connector) を設定する必要があります。1 つの Active Directory サーバーを使用してユーザーを認証できます。Active Directory 統合の詳細については、AWS Directory Service 管理ガイドを参照してください。

クライアント VPN は、AWS Managed Microsoft AD または AD Connector で有効になっている場合、多要素認証 (MFA) をサポートします。MFA が有効になっている場合、クライアントはクライアント VPN エンドポイントに接続するときにユーザー名、パスワード、および MFA コードを入力する必要があります。MFA を有効にする詳細については、AWS Directory Service 管理ガイドの「AWS Managed Microsoft AD の多要素認証を有効にするには」および「AD Connector の多要素認証を有効にするには」を参照してください。

Active Directory でユーザーとグループを設定するためのクォータとルールについては、「ユーザーとグループのクォータ」を参照してください。

相互認証

相互認証では、クライアント VPN は証明書を使用してクライアントとサーバー間の認証を実行します。証明書とは、認証機関 (CA) によって発行された識別用デジタル形式です。クライアントがクライアント VPN エンドポイントに接続を試みると、サーバーはクライアント証明書を使用してクライアントを認証します。サーバー証明書とキー、および少なくとも 1 つのクライアント証明書とキーを作成する必要があります。

サーバー証明書は AWS Certificate Manager (ACM) にアップロードし、クライアント VPN エンドポイントの作成時に指定する必要があります。サーバー証明書を ACM にアップロードするときは、認証局 (CA) も指定します。クライアント証明書を ACM にアップロードする必要があるのは、クライアント証明書の CA がサーバー証明書の CA と異なる場合だけです。ACM の詳細については、AWS Certificate Manager ユーザーガイドを参照してください。

クライアント VPN エンドポイントに接続するクライアントごとに、個別のクライアント証明書とキーを作成できます。これにより、ユーザーが組織を離れた場合に、特定のクライアント証明書を取り消すことができます。この場合、クライアント VPN エンドポイントを作成するときに、クライアント証明書がサーバー証明書と同じ CA によって発行されていれば、クライアント証明書のサーバー証明書 ARN を指定できます。

クライアント VPN エンドポイントは、1024 ビットおよび 2048 ビットの RSA キーサイズのみサポートしています。

Linux/macOS

次の手順では、OpenVPN easy-rsa を使用してサーバーとクライアントの証明書とキーを生成してから、そのサーバーの証明書とキーを ACM にアップロードします。詳細については、「Easy-RSA 3 Quickstart README」を参照してください。

サーバーとクライアントの証明書とキーを生成し、それらを ACM にアップロードするには

  1. OpenVPN easy-rsa リポジトリのクローンをローカルコンピュータに作成して、easy-rsa/easyrsa3 フォルダに移動します。

    $ git clone https://github.com/OpenVPN/easy-rsa.git
    $ cd easy-rsa/easyrsa3
  2. 新しい PKI 環境を初期化します。

    $ ./easyrsa init-pki
  3. 新しい認証局 (CA) を構築するには、このコマンドを実行し、プロンプトに従います。

    $ ./easyrsa build-ca nopass
  4. サーバー証明書とキーを生成します。

    $ ./easyrsa build-server-full server nopass
  5. クライアント証明書とキーを生成します。

    クライアント証明書とクライアントプライベートキーは、クライアントを設定するときに必要になるため、必ず保存してください。

    $ ./easyrsa build-client-full client1.domain.tld nopass

    必要に応じて、クライアント証明書とキーを必要とするクライアント (エンドユーザー) ごとにこの手順を繰り返すことができます。

  6. サーバー証明書とキー、およびクライアント証明書とキーをカスタムフォルダにコピーしてから、カスタムフォルダに移動します。

    証明書とキーをコピーする前に、mkdir コマンドを使用してカスタムフォルダを作成します。次の例では、ホームディレクトリにカスタムフォルダを作成します。

    $ mkdir ~/custom_folder/ $ cp pki/ca.crt ~/custom_folder/ $ cp pki/issued/server.crt ~/custom_folder/ $ cp pki/private/server.key ~/custom_folder/ $ cp pki/issued/client1.domain.tld.crt ~/custom_folder $ cp pki/private/client1.domain.tld.key ~/custom_folder/ $ cd ~/custom_folder/
  7. サーバー証明書とキー、およびクライアント証明書とキーを ACM にアップロードします。必ずクライアント VPN エンドポイントを作成する予定のリージョンと同じリージョンにアップロードしてください。以下のコマンドは、AWS CLI を使用して証明書をアップロードします。代わりに ACM コンソールを使用して証明書をアップロードするには、AWS Certificate Manager ユーザーガイドの「証明書のインポート」を参照してください。

    $ aws acm import-certificate --certificate fileb://server.crt --private-key fileb://server.key --certificate-chain fileb://ca.crt
    $ aws acm import-certificate --certificate fileb://client1.domain.tld.crt --private-key fileb://client1.domain.tld.key --certificate-chain fileb://ca.crt

    クライアント証明書の CA がサーバー証明書の CA と異なる場合を除いて、クライアント証明書を ACM にアップロードする必要はありません。上記の手順では、サーバー証明書と同じ CA がクライアント証明書にも使用されます。ただしここでは、完全なプロセスを示すために、クライアント証明書をアップロードする手順も含めています。

Windows

次の手順では、OpenVPN ソフトウェアをインストールし、それを使用してサーバーとクライアントの証明書およびキーを生成します。

サーバーとクライアントの証明書とキーを生成し、それらを ACM にアップロードするには

  1. OpenVPN コミュニティのダウンロードページを開き、お使いの Windows のバージョン用の Windows インストーラをダウンロードして、インストーラーを実行します。

  2. EasyRSA リリースページを開き、お使いの Windows のバージョン用の ZIP ファイルをダウンロードします。ZIP ファイルを解凍し、EasyRSA フォルダを \Program Files\OpenVPN フォルダにコピーします。

  3. 管理者としてコマンドプロンプトを開き、\Program Files\OpenVPN\EasyRSA ディレクトリに移動し、次のコマンドを実行して EasyRSA 3 シェルを開きます。

    C:\Program Files\OpenVPN\EasyRSA> EasyRSA-Start
  4. 新しい PKI 環境を初期化します。

    # ./easyrsa init-pki
  5. 新しい認証局 (CA) を構築するには、このコマンドを実行し、プロンプトに従います。

    # ./easyrsa build-ca nopass
  6. サーバー証明書とキーを生成します。

    # ./easyrsa build-server-full server nopass
  7. クライアント証明書とキーを生成します。

    # ./easyrsa build-client-full client1.domain.tld nopass

    必要に応じて、クライアント証明書とキーを必要とするクライアント (エンドユーザー) ごとにこの手順を繰り返すことができます。

  8. EasyRSA 3 シェルを終了します。

    # exit
  9. サーバー証明書とキー、およびクライアント証明書とキーをカスタムフォルダにコピーしてから、カスタムフォルダに移動します。

    証明書とキーをコピーする前に、mkdir コマンドを使用してカスタムフォルダを作成します。以下の例では、C:\ ドライブにカスタムフォルダを作成します。

    C:\Program Files\OpenVPN\EasyRSA> mkdir C:\custom_folder C:\Program Files\OpenVPN\EasyRSA> copy pki\ca.crt C:\custom_folder C:\Program Files\OpenVPN\EasyRSA> copy pki\issued\server.crt C:\custom_folder C:\Program Files\OpenVPN\EasyRSA> copy pki\private\server.key C:\custom_folder C:\Program Files\OpenVPN\EasyRSA> copy pki\issued\client1.domain.tld.crt C:\custom_folder C:\Program Files\OpenVPN\EasyRSA> copy pki\private\client1.domain.tld.key C:\custom_folder C:\Program Files\OpenVPN\EasyRSA> cd C:\custom_folder
  10. サーバー証明書とキー、およびクライアント証明書とキーを ACM にアップロードします。必ずクライアント VPN エンドポイントを作成する予定のリージョンと同じリージョンにアップロードしてください。以下のコマンドは、AWS CLI を使用して証明書をアップロードします。代わりに ACM コンソールを使用して証明書をアップロードするには、AWS Certificate Manager ユーザーガイドの「証明書のインポート」を参照してください。

    aws acm import-certificate --certificate fileb://server.crt --private-key fileb://server.key --certificate-chain fileb://ca.crt
    aws acm import-certificate --certificate fileb://client1.domain.tld.crt --private-key fileb://client1.domain.tld.key --certificate-chain fileb://ca.crt

    クライアント証明書の CA がサーバー証明書の CA と異なる場合を除いて、クライアント証明書を ACM にアップロードする必要はありません。上記の手順では、サーバー証明書と同じ CA がクライアント証明書にも使用されます。ただしここでは、完全なプロセスを示すために、クライアント証明書をアップロードする手順も含めています。

シングルサインオン (SAML 2.0 ベースのフェデレーション認証)

AWS Client VPN はクライアント VPN エンドポイントに対して、Security Assertion Markup Language 2.0 (SAML 2.0) を使用して ID フェデレーションをサポートしています。SAML 2.0 をサポートする ID プロバイダー (IdP) を使用して、一元化されたユーザー ID を作成できます。その後、SAML ベースのフェデレーション認証が使用されるようにクライアント VPN エンドポイントを設定し、IdP に関連付けることができます。その後、ユーザーは、一元化された認証情報を使用してクライアント VPN エンドポイントに接続します。

SAML ベースの IdP をクライアント VPN エンドポイントに使用するには、次の操作を行う必要があります。

  1. AWS Client VPN と連携するには、選択した IdP で SAML ベースのアプリを作成するか、既存のアプリを使用します。

  2. との信頼関係を確立するために IdP を設定しますAWS リソースについては、「SAML ベースの IdP 設定リソース」を参照してください。

  3. IdP で、組織を IdP として定義するフェデレーションメタデータドキュメントを生成し、ダウンロードします。この署名付き XML ドキュメントは、AWS と IdP の間の信頼関係を確立するために使用されます。

  4. クライアント VPN エンドポイントと同じ AWS アカウントに IAM SAML ID プロバイダーを作成します。IAM SAML ID プロバイダーは、IdP によって生成されたメタデータドキュメントを使用して、組織の IdP と AWS の信頼関係を定義します。詳細については、IAM ユーザーガイドの「SAML ID プロバイダーの作成」を参照してください。後で IdP のアプリ設定を更新する場合は、新しいメタデータドキュメントを生成し、IAM SAML ID プロバイダーを更新します。

    注記

    IAM SAML ID プロバイダーを使用するために IAM ロールを作成する必要はありません。

  5. クライアント VPN エンドポイントを作成します。認証タイプとしてフェデレーション認証を指定し、作成した IAM SAML ID プロバイダーを指定します。詳細については、「」を参照してくださいクライアント VPN エンドポイントを作成する

  6. クライアント設定ファイルをエクスポートし、ユーザーに配布します。AWS が提供するクライアントの最新バージョンをダウンロードし、これを使用して設定ファイルをロードして、クライアント VPN エンドポイントに接続するようにユーザーに指示します。または、クライアント VPN エンドポイントのセルフサービスポータルを有効にした場合は、セルフサービスポータルにアクセスして設定ファイルと AWS が提供するクライアントを取得するようにユーザーに指示します。詳細については、「」を参照してくださいセルフサービスポータルにアクセスする

認証ワークフロー

次の図に、SAML ベースのフェデレーション認証を使用するクライアント VPN エンドポイントの認証ワークフローの概要を示します。クライアント VPN エンドポイントを作成および設定するときは、IAM SAML ID プロバイダーを指定します。


		                    認証ワークフロー
  1. ユーザーは AWS が提供するクライアントをデバイスで開き、クライアント VPN エンドポイントへの接続を開始します。

  2. クライアント VPN エンドポイントは、IAM SAML ID プロバイダーで提供された情報に基づいて IdP URL と認証リクエストをクライアントに送信します。

  3. AWS が提供するクライアントは、ユーザーのデバイスで新しいブラウザウィンドウを開きます。ブラウザは IdP にリクエストを送信し、ログインページを表示します。

  4. ユーザーがログインページに認証情報を入力し、IdP は署名付き SAML アサーションをクライアントに返します。

  5. AWS が提供するクライアントは、クライアント VPN エンドポイントに SAML アサーションを送信します。

  6. クライアント VPN エンドポイントはアサーションを検証し、ユーザーへのアクセスを許可または拒否します。

SAML ベースのフェデレーション認証の要件と考慮事項

SAML ベースのフェデレーション認証の要件と考慮事項を次に示します。

  • SAML ベースの IdP でユーザーとグループを設定するためのクォータとルールについては、「ユーザーとグループのクォータ」を参照してください。

  • SAML 応答は署名済みで、暗号化されていない必要があります。

  • SAML 応答でサポートされる最大サイズは 128 KB です。

  • AWS Client VPN では署名付き認証リクエストが提供されません。

  • SAML シングルログアウトはサポートされていません。ユーザーは、AWS が提供するクライアントから切断してログアウトすることも、接続を終了することもできます。

  • 1 つのクライアント VPN エンドポイントでサポートされるのは、単一の IdP のみです。

  • IdP で有効になっている場合は Multi-Factor Authentication (MFA) がサポートされます。

  • ユーザーは AWS が提供するクライアントを使用して、クライアント VPN エンドポイントに接続する必要があります。バージョン 1.2.0 以降を使用する必要があります。詳細については、「AWS が提供するクライアントを使用して接続する」「を参照してください。

  • IdP 認証は、Apple Safari、Google Chrome、Microsoft Edge、Mozilla Firefox の各ブラウザでサポートされています。

  • AWS が提供するクライアントは、SAML 応答用にユーザーのデバイス上の TCP ポート 35001 を予約します。

  • 正しくない URL または悪意のある URL で IAM SAML ID プロバイダーのメタデータドキュメントが更新されると、ユーザーの認証の問題が発生したり、フィッシング攻撃につながる可能性があります。このため、IAM SAML ID プロバイダーに対して行われる更新は、AWS CloudTrail を使用してモニタリングすることをお勧めします。詳細については、IAM ユーザーガイドの「AWS CloudTrail を使用した IAM および AWS STS 呼び出しのログ記録」を参照してください。

  • AWS Client VPN は、HTTP リダイレクトバインディングを介して IdP に AuthN リクエストを送信します。このため、HTTP リダイレクトバインディングが IdP でサポートされ、IdP のメタデータドキュメントに存在する必要があります。

  • SAML アサーションでは、NameID 属性に E メールアドレス形式を使用する必要があります。

SAML ベースの IdP 設定リソース

次の表に、AWS Client VPN での使用がテストされている SAML ベースの IdP と、IdP の設定に役立つリソースを示します。

IdP リソース
Okta SAML を使用した AWS Client VPN ユーザーの認証
Microsoft Azure Active Directory (Azure AD) 詳細については、Microsoft のドキュメントウェブサイトの「チュートリアル: Azure Active Directory シングルサインオン (SSO) と AWS ClientVPN との統合」を参照してください。

アプリを作成するためのサービスプロバイダー情報

上の表に記載されていない IdP を使用して SAML ベースのアプリを作成するには、次の情報を使用して AWS Client VPN サービスプロバイダー情報を設定します。

  • Assertion Consumer Service (ACS) URL: http://127.0.0.1:35001

  • Audience URI: urn:amazon:webservices:clientvpn

以下の属性は必須です:

属性 説明
NameID ユーザーの E メールアドレス。
FirstName ユーザーの名。
LastName ユーザーの姓。
memberOf ユーザーが属するグループ (複数も可)。

属性は大文字と小文字が区別され、指定されたとおりに設定する必要があります。

セルフサービスポータルのサポート

クライアント VPN エンドポイントでセルフサービスポータルを有効にした場合、ユーザーは SAML ベースの IdP 認証情報を使用してポータルにログインします。

IdP が複数の Assertion Consumer Service (ACS) URL をサポートしている場合は、次の ACS URL をアプリに追加します。

https://self-service.clientvpn.amazonaws.com/api/auth/sso/saml

GovCloud リージョンで Client VPN エンドポイントを使用している場合は、代わりに次の ACS URL を使用します。同じ IDP アプリを使用して標準リージョンと GovCloud リージョンの両方で認証する場合は、両方の URL を追加できます。

https://gov.self-service.clientvpn.amazonaws.com/api/auth/sso/saml

IdP が複数の ACS URL をサポートしていない場合は、以下を実行します。

  1. IdP に追加の SAML ベースのアプリを作成し、次の ACS URL を指定します。

    https://self-service.clientvpn.amazonaws.com/api/auth/sso/saml
  2. フェデレーションメタデータドキュメントを生成し、ダウンロードします。

  3. クライアント VPN エンドポイントと同じ AWS アカウントに IAM SAML ID プロバイダーを作成します。詳細については、IAM ユーザーガイドの「SAML ID プロバイダーの作成」を参照してください。

    注記

    メインアプリ用に作成したプロバイダーに加えて、この IAM SAML ID プロバイダーを作成します。

  4. クライアント VPN エンドポイントを作成し、作成した IAM SAML ID プロバイダーを両方指定します。