認証 - AWS クライアント VPN

認証

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

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

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

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

  • 相互認証と Active Directory 認証

重要

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

クライアント VPN は AWS Directory Service と統合することによって Active Directory サポートを提供します。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

    画面の指示に従って、CA を構築します。

  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 にアップロードします。以下のコマンドは AWS CLI を使用します。

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

    ACM コンソールを使用して証明書をアップロードするには、AWS Certificate Manager ユーザーガイドの「証明書のインポート」を参照してください。

    注記

    証明書とキーは、クライアント VPN エンドポイントを作成する予定のリージョンと同じリージョンに必ずアップロードしてください。

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

Windows

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

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

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

  2. インストーラを実行します。OpenVPN インストーラの最初のページで、[Customize (カスタマイズ)] を選択します。

  3. [Custom Installation (カスタムインストール)] ページで、[EasyRSA 3 Certificate Management Scripts (EasyRSA 3 証明書管理スクリプト)]、[Will be installed on local hard drive (ローカルハードドライブにインストール)] の順に選択します。

  4. [Install Now (今すぐインストール)] を選択します。

    注記

    インストールが完了すると、読み取り可能な接続プロファイルが見つからないことを示すエラーメッセージが表示される場合があります。[OK] を選択すると、このメッセージを閉じることができます。

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

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

    # ./easyrsa init-pki
  7. 新しい認証機関 (CA) を構築します。

    # ./easyrsa build-ca nopass

    画面の指示に従って、CA を構築します。

  8. サーバー証明書とキーを生成します。

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

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

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

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

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

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

    C:\> mkdir C:\custom_folder C:\> copy pki\ca.crt C:\custom_folder C:\> copy pki\issued\server.crt C:custom_folder C:\> copy pki\private\server.key C:\custom_folder C:\> copy pki\issued\client1.domain.tld.crt C:\custom_folder C:\> copy pki\private\client1.domain.tld.key C:\custom_folder C:\> cd C:\custom_folder
  12. サーバー証明書とキー、およびクライアント証明書とキーを ACM にアップロードします。以下のコマンドは AWS CLI を使用します。

    C:\> aws acm import-certificate --certificate fileb://"C:\Program Files\OpenVPN\easy-rsa\keys\server.crt" --private-key fileb://"C:\Program Files\OpenVPN\easy-rsa\keys\server.key" --certificate-chain fileb://"C:\Program Files\OpenVPN\easy-rsa\keys\ca.crt" --region region
    C:\> aws acm import-certificate --certificate fileb://"C:\Program Files\OpenVPN\easy-rsa\keys\client.crt" --private-key fileb://"C:\Program Files\OpenVPN\easy-rsa\keys\client.key" --certificate-chain fileb://"C:\Program Files\OpenVPN\easy-rsa\keys\ca.crt" --region region

    ACM コンソールを使用して証明書をアップロードするには、AWS Certificate Manager ユーザーガイドの「証明書のインポート」を参照してください。

    注記

    証明書とキーは、クライアント VPN エンドポイントを作成する予定のリージョンと同じリージョンに必ずアップロードしてください。

    クライアント証明書を ACM にアップロードする必要があるのは、クライアント証明書の CA がサーバー証明書の CA と異なる場合だけです。上記の手順では、サーバー証明書と同じ 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. AWS との信頼関係を確立するために IdP を設定します。リソースについては、「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 を使用して 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

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 プロバイダーを両方指定します。