身份驗證 - AWS Client VPN

身份驗證

身份驗證是在 AWS 雲端的第一個進入點實作。其會用於決定是否允許用戶端連線到 Client VPN 端點。如果身份驗證成功,則用戶端會連線到 Client VPN 端點並建立 VPN 工作階段。如果身份驗證失敗,則拒絕連線,並防止用戶端建立 VPN 工作階段。

Client VPN 提供下列類型的用戶端身份驗證:

您可以使用下列其中一項或組合:

  • 交互身份驗證和同盟驗證

  • 交互身份驗證和 Active Directory 身份驗證

重要

如要建立 Client VPN 端點,無論使用何種身份驗證類型,您都必須在 AWS Certifcate Manager 中佈建伺服器憑證。如需建立和佈建伺服器憑證的詳細資訊,請參閱交互身份驗證中的步驟。

Client VPN 透過整合 AWS Directory Service 來提供 Active Directory 支援。透過 Active Directory 身份驗證,將會根據現有的 Active Directory 群組來驗證用戶端。使用 AWS Directory Service,Client VPN 可以連線到在 AWS 中或是在您現場部署網路中佈建的 Active Directory。這可讓您使用現有的用戶端身份驗證基礎設施。如果您使用內部部署 Active Directory,但沒有現有的 AWS Managed Microsoft AD,則必須設定 Active Directory Connector (AD Connector)。您可以使用一個 Active Directory 伺服器來驗證使用者。如需 Active Directory 整合的詳細資訊,請參閱《AWS Directory Service 管理指南》。

為 AWS 受管 Microsoft AD 或 AD Connector 啟用多重因素認證 (MFA) 時,Client VPN 支援 Multi-Factor Authentication (MFA)。如果啟用 MFA,用戶端必須在連線到 Client VPN 端點時輸入使用者名稱、密碼和 MFA 代碼。如需啟用 MFA 的詳細資訊,請參閱《AWS Directory Service 管理指南》中的為 AWS 受管 Microsoft AD 啟用多重因素認證,以及為 AD Connector 啟用多重因素認證

如需在 Active Directory 中設定使用者和群組的配額和規則,請參閱使用者和群組配額

交互身份驗證

透過交互身份驗證,Client VPN 使用憑證在用戶端和伺服器之間執行身份驗證。憑證為憑證授權機構 (CA) 發出的數位形式身分證明。當用戶端嘗試連線到 Client VPN 端點時,伺服器會使用用戶端憑證來對用戶端進行身份驗證。您必須建立伺服器憑證和金鑰,以及至少一個用戶端憑證和金鑰。

您必須將伺服器憑證上傳至 AWS Certificate Manager (ACM),並在建立 Client VPN 端點時加以指定。將伺服器憑證上傳至 ACM 時,您也可以指定憑證授權機構 (CA)。只有當用戶端憑證的 CA 和伺服器憑證的 CA 不同時,您才需要將用戶端憑證上傳到 ACM。如需 ACM 的詳細資訊,請參閱《AWS Certificate Manager 使用者指南》。

您可以為將連線至 Client VPN 端點的每個用戶端建立個別的用戶端憑證和金鑰。這可讓您在使用者離開您的組織時撤銷特定的用戶端憑證。在這種情況下,當您建立 Client VPN 端點時,您可以為用戶端憑證指定伺服器憑證 ARN,前提是用戶端憑證是由與伺服器憑證相同的 CA 所發行。

Client 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 使用者指南》中的匯入憑證

    注意

    請務必在與您想要建立 Client VPN 端點的相同區域中,上傳憑證和金鑰。

    只有當用戶端憑證的 CA 和伺服器憑證的 CA 不同時,您才需要將用戶端憑證上傳到 ACM。在上述步驟中,用戶端憑證使用與伺服器憑證相同的 CA,但為了完整起見,此處會包含用戶端憑證的上傳步驟。

Windows

下列程序會安裝 OpenVPN 軟體,然後使用它來產生伺服器和用戶端憑證和金鑰。

產生伺服器和用戶端憑證及金鑰並上傳到 ACM

  1. 前往 OpenVPN Community Downloads (OpenVPN 社群下載) 頁面,並下載適用您 Windows 版本的 Windows 安裝程式。

  2. 執行安裝程式。在 OpenVPN 安裝程式的第一頁上,選擇自訂

  3. 自訂安裝頁面上,選擇 EasyRSA 3 憑證管理指令碼,然後選擇將安裝在本機硬碟上

  4. 選擇立即安裝

    注意

    安裝完成後,您可能會收到錯誤訊息,指出找不到可讀取的連線設定檔。您可以選擇確定來關閉此訊息。

  5. 以管理員身分打開命令提示,導覽至 OpenVPN 目錄,然後執行 EasyRSA-Start 以開啟 EasyRSA 3 shell。

    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 shell。

    # 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 使用者指南》中的匯入憑證

    注意

    請務必在與您想要建立 Client VPN 端點的相同區域中,上傳憑證和金鑰。

    只有當用戶端憑證的 CA 和伺服器憑證的 CA 不同時,您才需要將用戶端憑證上傳到 ACM。在上述步驟中,用戶端憑證使用與伺服器憑證相同的 CA,但為了完整起見,此處會包含用戶端憑證的上傳步驟。

單一登入 (SAML 2.0 型同盟驗證)

針對 Client VPN 端點,AWS Client VPN 支援使用安全聲明標記語言 2.0 (SAML 2.0) 的聯合身分。您可以使用支援 SAML 2.0 的身分提供者 (IdP),來建立集中式使用者身分。然後,您可以將 Client VPN 端點設為使用 SAML 類型聯合身份驗證,並將其與 IdP 建立關聯。然後,使用者可使用其集中式登入資料連線至 Client VPN 端點。

若要讓 SAML 類型的 IdP 使用 Client VPN 端點,您必須執行下列作業。

  1. 在您選擇的 IdP 中建立 SAML 類型應用程式,以使用 AWS Client VPN,或是使用現有的應用程式。

  2. 設定 IdP 與 AWS 建立信任關係。如需資源,請參閱 SAML 型 IdP 組態資源

  3. 在 IdP 中產生並下載聯合中繼資料文件,以將您的組織描述為 IdP。此簽署的 XML 文件用於建立 AWS 和 IdP 之間的信任關係。

  4. 在與 Client VPN 端點相同的 AWS 帳戶中建立 IAM SAML 身分提供者。IAM SAML 身分提供者會使用 IdP 產生的中繼資料文件,定義組織的 IdP 對 AWS 信任關係。如需詳細資訊,請參閱《IAM 使用者指南》中的建立 IAM SAML 身分提供者。如果您稍後更新 IdP 中的應用程式組態,請產生新的中繼資料文件並更新 IAM SAML 身分提供者。

    注意

    您不需要建立 IAM 角色即可使用 IAM SAML 身分提供者。

  5. 建立 Client VPN 端點。指定聯合身份驗證做為身份驗證類型,並指定您建立的 IAM SAML 身分提供者。如需更多詳細資訊,請參閱 建立 Client VPN 端點。

  6. 匯出用戶端組態檔案,並將其分配到您的使用者。指示使用者下載 AWS 所提供用戶端的最新版本,並使用其來載入組態檔案並連線到 Client VPN 端點。或者,如果您為 Client VPN 端點啟用了自助入口網站,請指示您的使用者前往自助入口網站,以取得組態檔案和 AWS 提供的用戶端。如需詳細資訊,請參閱存取自助式入口網站

驗證工作流程

下圖提供身份驗證工作流程概觀,適用於使用 SAML 類型聯合身份驗證的 Client VPN 端點。建立和設定 Client VPN 端點時,請指定 IAM SAML 身分提供者。


		                    驗證工作流程
  1. 使用者可在其裝置上開啟 AWS 提供的用戶端,並啟動與 Client VPN 端點的連線。

  2. Client VPN 端點會根據 IAM SAML 身分提供者中提供的資訊,將 IdP URL 和身份驗證請求傳回用戶端。

  3. AWS 提供的用戶端會在使用者的裝置上開啟新的瀏覽器視窗。瀏覽器向 IdP 發出請求並顯示登入頁面。

  4. 使用者在登入頁面上輸入登入資料,且 IdP 會將簽署的 SAML 聲明傳回給用戶端。

  5. AWS 提供的用戶端會將 SAML 宣告傳送給 Client VPN 端點。

  6. Client VPN 端點會驗證聲明,並允許或拒絕對使用者的存取。

SAML 型同盟驗證的需求和考量

以下是 SAML 型同盟驗證的需求和考量。

  • 如需在 SAML 類型 IdP 中設定使用者和群組的配額和規則,請參閱使用者和群組配額

  • SAML 回應必須經過簽署和解除加密。

  • SAML 回應的支援大小上限為 128 KB。

  • AWS Client VPN 不會提供簽署的身份驗證請求。

  • 不支援 SAML 單一登出。使用者可以透過中斷與 AWS 所提供用戶端的連線來登出,或是終止連線

  • Client VPN 端點僅支援單一 IdP。

  • 在 IdP 中啟用 Multi-factor authentication (MFA) 時,即支援 Multi-factor authentication (MFA)。

  • 使用者必須使用 AWS 提供的用戶端來連線到 Client VPN 端點。您必須使用版本 1.2.0 或更新的版本。如需詳細資訊,請參閱使用 AWS 提供的用戶端連線

  • 以下瀏覽器支援 IdP 身份驗證:Apple Safari,Google Chrome,Microsoft Edge 和 Mozilla Firefox。

  • AWS 提供的用戶端會在使用者裝置上保留 TCP 連接埠 35001,以供 SAML 回應使用。

  • 如果使用不正確或惡意的 URL 更新 IAM SAML 身分提供者的中繼資料文件,這可能會導致使用者身份驗證問題,或導致網路釣魚攻擊。因此,我們建議您使用 AWS CloudTrail 監視對 IAM SAML 身分提供者所進行的更新。如需詳細資訊,請參閱《IAM 使用者指南》中的使用 AWS CloudTrail 記錄 IAM 和 AWS STS 呼叫日誌

  • AWS Client VPN 透過 HTTP 重新導向繫結,向 IdP 傳送 AuthN 請求。因此,IdP 應該支援 HTTP 重新導向繫結,而且它應該存在於 IdP 的中繼資料文件中。

  • 針對 SAML 聲明,您必須使用 NameID 屬性的電子郵件地址格式。

SAML 型 IdP 組態資源

下表列出我們已經測試可與 AWS Client VPN 搭配使用的 SAML 類型 IdP,以及可協助您設定 IdP 的資源。

建立應用程式的服務提供者資訊

若要使用上表中未列出的 IdP 建立 SAML 類型應用程式,請使用下列資訊設定 AWS Client VPN 服務提供者資訊。

  • 聲明消費者服務 (ACS) URL:http://127.0.0.1:35001

  • 對象 URI:urn:amazon:webservices:clientvpn

以下是必要屬性。

屬性 描述
NameID 使用者的電子郵件地址。
FirstName 使用者的名字。
LastName 使用者的姓氏。
memberOf 使用者所屬的一或多個群組。

屬性區分大小寫,且必須完全按照指定進行設定。

自助入口網站支援

如果您為 Client VPN 端點啟用自助入口網站,使用者可以使用其 SAML 類型的 IdP 登入資料登入入口網站。

如果您的 IdP 支援多個聲明消費者服務 (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. 在與 Client VPN 端點相同的 AWS 帳戶中建立 IAM SAML 身分提供者。如需詳細資訊,請參閱《IAM 使用者指南》中的建立 IAM SAML 身分提供者

    注意

    除了您為主要應用程式建立的之外,您還建立了這個 IAM SAML 身分提供者。

  4. 建立 Client VPN 端點,並指定您建立的 IAM SAML 身分提供者。