

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# AWS Client VPN 運作方式
<a name="how-it-works"></a>

使用 時 AWS Client VPN，有兩種類型的使用者角色會與 Client VPN 端點互動：管理員和用戶端。

Client VPN 支援 IPv4, IPv6 和雙堆疊 (IPv4 和 IPv6) 連線。您可以建立使用 IPv4, IPv6 或兩者的端點，讓您連線到 VPCs中的 IPv6 IPv6 資源，或從 IPv6 網路的用戶端連線。此彈性可協助已實作或正在轉換至 IPv6 基礎設施的組織。

*管理員*負責安裝和設定服務。這包括建立 Client VPN 端點、關聯目標網路、設定授權規則，以及設定其他路由 （如果需要）。在安裝和設定 Client VPN 端點後，管理員會下載 Client VPN 端點組態檔案，並分配給需要存取的用戶端。Client VPN 端點組態檔案包含 Client VPN 端點的 DNS 名稱，以及建立 VPN 工作階段所需的身分驗證資訊。如需設定此服務的詳細資訊，請參閱[開始使用 AWS Client VPN](cvpn-getting-started.md)。

*用戶端*是終端使用者。這是連線到 Client VPN 端點以建立 VPN 工作階段的人。用戶端從本機電腦或行動裝置，使用以 OpenVPN 為基礎的 VPN 用戶端應用程式建立 VPN 工作階段。他們建立 VPN 工作階段後，就可以安全地存取相關聯子網路所在 VPC 中的資源。如果已設定必要的路由和授權規則 AWS，他們也可以存取 中的其他資源、內部部署網路或其他用戶端。如需連線至 Client VPN 端點以建立 VPN 工作階段的詳細資訊，請參閱*AWS Client VPN 《 使用者指南*》中的[入門](https://docs.aws.amazon.com/vpn/latest/clientvpn-user/user-getting-started.html)。

下圖說明基本的 Client VPN 架構。

![\[Client VPN 架構\]](http://docs.aws.amazon.com/zh_tw/vpn/latest/clientvpn-admin/images/architecture.png)


## Client VPN 的案例和範例
<a name="scenario"></a>

AWS Client VPN 是一種全受管遠端存取 VPN 解決方案，可讓您用來允許用戶端安全存取 AWS 和內部部署網路內的資源。設定存取的方式有多種選項。本節提供範例來示範為您的用戶端建立和設定 Client VPN 存取。

**案例**
+ [使用 Client VPN 存取 VPC](#scenario-vpc)
+ [使用 Client VPN 存取對等 VPC](#scenario-peered)
+ [使用 Client VPN 存取內部部署網路](#scenario-onprem)
+ [使用 用戶端 VPC 存取網際網路](#scenario-internet)
+ [使用 用戶端 VPC 取得用戶端對用戶端的存取權限](#scenario-client-to-client)
+ [使用 Client VPN 限制存取您的網路](#scenario-restrict)

### 使用 Client VPN 存取 VPC
<a name="scenario-vpc"></a>

此案例的 AWS Client VPN 組態包含單一目標 VPC。如果您需要讓用戶端只存取單一 VPC 內的資源，我們建議使用此組態。

![\[存取 VPC 的 Client VPN\]](http://docs.aws.amazon.com/zh_tw/vpn/latest/clientvpn-admin/images/client-vpn-scenario-vpc.png)


開始之前，請執行以下動作：
+ 建立或識別至少具有一個子網路的 VPC。識別與 Client VPN 端點關聯的 VPC 中的子網路，並記下其 IPv4 CIDR 範圍。
+ 識別與 VPC CIDR 不重疊的用戶端 IP 地址適當的 CIDR 範圍。
+ 於 [使用 的規則和最佳實務 AWS Client VPN](what-is-best-practices.md) 檢閱 Client VPN 端點的規則和限制。

**實作此組態**

1. 在與 VPC 相同的區域中建立 Client VPN 端點。若要執行此作業，請執行[建立AWS Client VPN端點](cvpn-working-endpoint-create.md)中所述的步驟。

1. 將子網路與 Client VPN 端點建立關聯。若要執行此作業，請執行[將目標網路與 AWS Client VPN 端點建立關聯](cvpn-working-target-associate.md)中所述的步驟，然後選擇您稍早所識別的子網路和 VPC。

1. 新增授權規則讓用戶端存取 VPC。若要執行此作業，請執行[新增授權規則](cvpn-working-rule-authorize-add.md)中所述的步驟；並對於**目的地網路**，輸入 VPC 的 IPv4 CIDR 範圍。

1. 將規則新增至資源的安全群組，以允許來自步驟 2 中套用至子網路關聯的安全性群組的流量。如需詳細資訊，請參閱[安全群組](client-authorization.md#security-groups)。

### 使用 Client VPN 存取對等 VPC
<a name="scenario-peered"></a>

此案例的 AWS Client VPN 組態包含與其他 VPC (VPC B) 對等的目標 VPC (VPC A)。如果您需要讓用戶端存取目標 VPC 內的資源，以及與其對等的其他 VPCs （例如 VPC B)，建議您使用此組態。

**注意**  
只有在 Client VPN 端點設定為分割通道模式時，才需要允許存取對等 VPC （概述於網路圖表） 的程序。在完整通道模式下，依預設會允許對等 VPC 存取權。

![\[存取對等 VPC 的 Client VPN\]](http://docs.aws.amazon.com/zh_tw/vpn/latest/clientvpn-admin/images/client-vpn-scenario-peer-vpc.png)


開始之前，請執行以下動作：
+ 建立或識別至少具有一個子網路的 VPC。識別與 Client VPN 端點關聯的 VPC 中的子網路，並記下其 IPv4 CIDR 範圍。
+ 識別與 VPC CIDR 不重疊的用戶端 IP 地址適當的 CIDR 範圍。
+ 於 [使用 的規則和最佳實務 AWS Client VPN](what-is-best-practices.md) 檢閱 Client VPN 端點的規則和限制。

**實作此組態**

1. 在 VPC 之間建立 VPC 對等連線。遵循《Amazon VPC 對等連線指南》**中的[建立和接受 VPC 對等連線](https://docs.aws.amazon.com/vpc/latest/peering/create-vpc-peering-connection.html)的步驟。確認 VPC A 中的執行個體可以使用對等連線與 VPC B 中的執行個體通訊。

1. 在與目標 VPC 相同的區域中建立 Client VPN 端點。在圖表中，這是 VPC A。請執行 [建立AWS Client VPN端點](cvpn-working-endpoint-create.md) 中所述的步驟。

1. 將您稍早識別的子網路與您建立的 Client VPN 端點建立關聯。若要執行此作業，請執行 [將目標網路與 AWS Client VPN 端點建立關聯](cvpn-working-target-associate.md) 中所述的步驟，選取 VPC 和 子網路。依預設，我們會將 VPC 的預設安全群組與 Client VPN 端點建立關聯。您可以使用 [在 中將安全群組套用至目標網路 AWS Client VPN](cvpn-working-target-apply.md) 中所述步驟來關聯不同安全群組。

1. 新增授權規則讓用戶端存取目標 VPC。若要執行此作業，請執行[新增授權規則](cvpn-working-rule-authorize-add.md)中所述的步驟。在**要啟用的目的地網路**中，輸入 VPC 的 IPv4 CIDR 範圍。

1. 新增路由將流量引導至對等 VPC。在圖表中，這是 VPC B。如要執行此操作，請執行 [建立 AWS Client VPN 端點路由](cvpn-working-routes-create.md) 中所述的步驟。在 **路由目的地** 中，輸入對等 VPC 的 IPv4 CIDR 範圍。在 **目標 VPC 子網路 ID**，選取與 Client VPN 端點關聯的子網路。

1. 新增授權規則讓用戶端存取對等 VPC。若要執行此作業，請執行[新增授權規則](cvpn-working-rule-authorize-add.md)中所述的步驟。在 **目的地網路** 中，輸入對等 VPC 的 IPv4 CIDR 範圍。

1. 在 VPC A 和 VPC B 中為您的執行個體新增規則至安全群組，以允許來自步驟 3 中套用 Client VPN 端點的安全群組流量。如需詳細資訊，請參閱[安全群組](client-authorization.md#security-groups)。

### 使用 Client VPN 存取內部部署網路
<a name="scenario-onprem"></a>

此案例的 AWS Client VPN 組態僅包含對內部部署網路的存取。如果您需要讓用戶端只存取現場部署網路內的資源，我們建議使用此組態。

![\[Client VPN 存取內部部署網路\]](http://docs.aws.amazon.com/zh_tw/vpn/latest/clientvpn-admin/images/client-vpn-scenario-on-premises.png)


開始之前，請執行以下動作：
+ 建立或識別至少具有一個子網路的 VPC。識別與 Client VPN 端點關聯的 VPC 中的子網路，並記下其 IPv4 CIDR 範圍。
+ 識別與 VPC CIDR 不重疊的用戶端 IP 地址適當的 CIDR 範圍。
+ 於 [使用 的規則和最佳實務 AWS Client VPN](what-is-best-practices.md) 檢閱 Client VPN 端點的規則和限制。

**實作此組態**

1. 啟用 VPC 與您自己的內部部署網路之間透過 an AWS Site-to-Site VPN 連線的通訊。若要執行此動作，請執行 *AWS Site-to-Site VPN 使用者指南*中[入門](https://docs.aws.amazon.com/vpn/latest/s2svpn/SetUpVPNConnections.html)所述的步驟。
**注意**  
或者，您可以使用 VPC 與內部部署網路之間的 Direct Connect 連線來實作此案例。如需詳細資訊，請參閱[「Direct Connect 使用者指南」](https://docs.aws.amazon.com/directconnect/latest/UserGuide/)。

1. 測試您在上一個步驟中建立的 AWS Site-to-Site連接。若要執行此作業，請執行 *AWS Site-to-Site VPN 使用者指南*中[測試 Site-to-Site VPN 連接](https://docs.aws.amazon.com/vpn/latest/s2svpn/HowToTestEndToEnd_Linux.html)所述的步驟。如果 VPN 連接的運作符合預期，請繼續下一個步驟。

1. 在與 VPC 相同的區域中建立 Client VPN 端點。若要執行此作業，請執行[建立AWS Client VPN端點](cvpn-working-endpoint-create.md)中所述的步驟。

1. 將您稍早所識別的子網路與 Client VPN 端點建立關聯。若要執行此作業，請執行[將目標網路與 AWS Client VPN 端點建立關聯](cvpn-working-target-associate.md)中所述的步驟，然後選取 VPC 和子網路。

1. 新增允許存取 AWS Site-to-Site連接的路由。若要執行此操作，請執行中所述的步驟[建立 AWS Client VPN 端點路由](cvpn-working-routes-create.md)；對於**路由目的地**，輸入 AWS Site-to-Site VPN 連線的 IPv4 CIDR 範圍，對於**目標 VPC 子網路 ID**，請選取您與 Client VPN 端點相關聯的子網路。

1. 新增授權規則，讓用戶端存取 AWS Site-to-Site連接。若要這樣做，請執行中所述的步驟[將授權規則新增至 AWS Client VPN 端點](cvpn-working-rule-authorize-add.md)；對於**目的地網路**，輸入 AWS Site-to-Site連接 IPv4 CIDR 範圍。

### 使用 用戶端 VPC 存取網際網路
<a name="scenario-internet"></a>

此案例的 AWS Client VPN 組態包含單一目標 VPC 和網際網路的存取。如果您需要讓用戶端存取單一目標 VPC 內的資源，並允許存取網際網路，建議您使用此組態。

如果您已完成 [開始使用 AWS Client VPN](cvpn-getting-started.md)教學課程，則您已實作此案例。

![\[存取網際網路的 Client VPN\]](http://docs.aws.amazon.com/zh_tw/vpn/latest/clientvpn-admin/images/client-vpn-scenario-igw.png)


開始之前，請執行以下動作：
+ 建立或識別至少具有一個子網路的 VPC。識別與 Client VPN 端點關聯的 VPC 中的子網路，並記下其 IPv4 CIDR 範圍。
+ 識別與 VPC CIDR 不重疊的用戶端 IP 地址適當的 CIDR 範圍。
+ 於 [使用 的規則和最佳實務 AWS Client VPN](what-is-best-practices.md) 檢閱 Client VPN 端點的規則和限制。

**實作此組態**

1. 確定您將用於 Client VPN 端點的安全群組允許進出網際網路的傳出流量。若要這樣做，請新增允許 HTTP 和 HTTPS 流量進出 0.0.0.0/0 的傳出流量規則。

1. 建立網際網路閘道，並將它連接至您的 VPC。如需詳細資訊，請參閱《Amazon VPC 使用者指南》**中的[建立和連接網際網路閘道](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Internet_Gateway.html#Add_IGW_Attach_Gateway)。

1. 將網際網路閘道的路由新增到其路由表，以公開您的子網路。在 VPC 主控台，選擇 **Subnets** (子網路)，選取要與 Client VPN 端點相關聯的子網路，選擇 **Route Table** (路由表)，然後選擇路由表 ID。選擇 **Actions (動作)**，選擇 **Edit routes** (編輯路由)，然後選擇 **Add route** (新增路由)。對於 **Destination** (目的地)，輸入 `0.0.0.0/0`，對於 **Target** (目標)，選擇上一個步驟中的網際網路閘道。

1. 在與 VPC 相同的區域中建立 Client VPN 端點。若要執行此作業，請執行[建立AWS Client VPN端點](cvpn-working-endpoint-create.md)中所述的步驟。

1. 將您稍早所識別的子網路與 Client VPN 端點建立關聯。若要執行此作業，請執行[將目標網路與 AWS Client VPN 端點建立關聯](cvpn-working-target-associate.md)中所述的步驟，然後選取 VPC 和子網路。

1. 新增授權規則讓用戶端存取 VPC。若要執行此作業，請執行[新增授權規則](cvpn-working-rule-authorize-add.md)中所述的步驟；並對於**要啟用的目的地網路**，輸入 VPC 的 IPv4 CIDR 範圍。

1. 新增路由以允許流向網際網路的流量。若要執行此作業，請執行[建立 AWS Client VPN 端點路由](cvpn-working-routes-create.md)中所述的步驟；並對於**路由目的地**，輸入 `0.0.0.0/0`，對於**目標 VPC 子網路 ID**，選擇與 Client VPN 相關聯的子網路。

1. 新增授權規則讓用戶端存取網際網路。若要執行此作業，請執行[新增授權規則](cvpn-working-rule-authorize-add.md)中所述的步驟；對於**目的地網路**，輸入 `0.0.0.0/0`。

1. 確定 VPC 中資源的安全群組具有允許從與 Client VPN 端點關聯的安全群組存取的規則。這可讓您的用戶端存取 VPC 中的資源。

### 使用 用戶端 VPC 取得用戶端對用戶端的存取權限
<a name="scenario-client-to-client"></a>

此案例的 AWS Client VPN 組態可讓用戶端存取單一 VPC，並讓用戶端將流量路由至彼此。如果連線到相同 Client VPN 端點的用戶端也需要彼此通訊，建議您使用此設定。當用戶端連線到 Client VPN 端點時，您可以使用從用戶端 CIDR 範圍指派給用戶端的唯一 IP 地址彼此通訊。

![\[用戶端對用戶端的存取權限\]](http://docs.aws.amazon.com/zh_tw/vpn/latest/clientvpn-admin/images/client-vpn-scenario-client-to-client.png)


開始之前，請執行以下動作：
+ 建立或識別至少具有一個子網路的 VPC。識別與 Client VPN 端點關聯的 VPC 中的子網路，並記下其 IPv4 CIDR 範圍。
+ 識別與 VPC CIDR 不重疊的用戶端 IP 地址適當的 CIDR 範圍。
+ 於 [使用 的規則和最佳實務 AWS Client VPN](what-is-best-practices.md) 檢閱 Client VPN 端點的規則和限制。

**注意**  
在此案例中不支援使用 Active Directory 群組或 SAML 型 IdP 群組的網路授權規則。

**實作此組態**

1. 在與 VPC 相同的區域中建立 Client VPN 端點。若要執行此作業，請執行[建立AWS Client VPN端點](cvpn-working-endpoint-create.md)中所述的步驟。

1. 將您稍早所識別的子網路與 Client VPN 端點建立關聯。若要執行此作業，請執行[將目標網路與 AWS Client VPN 端點建立關聯](cvpn-working-target-associate.md)中所述的步驟，然後選取 VPC 和子網路。

1. 在路由表中新增路由至區域網路。若要執行此作業，請執行[建立 AWS Client VPN 端點路由](cvpn-working-routes-create.md)中所述的步驟。在**路由傳送目的地**中，輸入用戶端 CIDR 範圍，並在**目標 VPC 子網路 ID** 中指定 `local`。

1. 新增授權規則讓用戶端存取 VPC。若要執行此作業，請執行[新增授權規則](cvpn-working-rule-authorize-add.md)中所述的步驟。在**要啟用的目的地網路**中，輸入 VPC 的 IPv4 CIDR 範圍。

1. 新增授權規則，以讓用戶端存取用戶端 CIDR 範圍。若要執行此作業，請執行[新增授權規則](cvpn-working-rule-authorize-add.md)中所述的步驟。在**要啟用的目的地網路**中，輸入用戶端的 CIDR 範圍。

### 使用 Client VPN 限制存取您的網路
<a name="scenario-restrict"></a>

您可以設定 AWS Client VPN 端點以限制對 VPC 中特定資源的存取。針對使用者類型身分驗證，您也可以根據存取 Client VPN 端點的使用者群組，將存取限制在一部分的網路。

#### 使用安全群組限制存取
<a name="scenario-restrict-security-groups"></a>

您可以透過新增或移除參考套用至目標網路關聯之安全群組 (Client VPN 安全群組) 的安全群組規則，來授與或拒絕 VPC 中特定資源的存取權。此組態闡明[使用 Client VPN 存取 VPC](#scenario-vpc) 中所述的案例。除了該案例中設定的授權規則，還會套用此組態。

若要授與特定資源的存取權，請識別與執行資源的執行個體相關聯的安全群組。然後，建立允許來自 Client VPN 安全群組的流量的規則。

在下圖中，安全群組 A 是Client VPN 安全群組，安全群組 B 與 EC2 執行個體相關聯，而安全群組 C 則與 EC2 執行個體相關聯。若您將規則新增至安全群組 B，允許來自安全群組 A 的存取權限，則用戶端可以存取與安全群組 B 關聯的執行個體。若安全群組 C 沒有規則允許來自安全群組 A 的存取權限，則用戶端無法存取與安全群組 C 關聯的執行個體。

![\[限制對 VPC 中資源的存取\]](http://docs.aws.amazon.com/zh_tw/vpn/latest/clientvpn-admin/images/client-vpn-scenario-security-groups.png)


開始之前，請先檢查 Client VPN 安全群組是否與 VPC 中的其他資源相關聯。如果您新增或移除參考 Client VPN 安全群組的規則，您可能也會授與或拒絕其他關聯資源的存取權。若要避免這種情況，請使用特別建立以搭配 Client VPN 端點使用的安全群組。

**建立安全群組規則**

1. 在 [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) 開啟 Amazon VPC 主控台。

1. 在導覽窗格中，選擇 **Security Groups** (安全群組)。

1. 選擇與執行資源之執行個體相關聯的安全群組。

1. 選擇 **Actions** (動作)、**Edit inbound rules** (編輯傳入規則)。

1. 選擇 **Add rule** (新增規則)，然後執行下列動作：
   + 在 **Type** (類型) 中，選擇 **All traffic** (所有流量) 或您要允許的特定流量類型。
   + 在 **Source** (來源) 中，選擇 **Custom** (自訂)，然後輸入或選擇 Client VPN 安全群組的 ID。

1. 選擇 **Save rules** (儲存規則)

若要移除特定資源的存取權，請檢查與執行資源之執行個體相關聯的安全群組。如果規則允許來自 Client VPN 安全群組的流量，請將其刪除。

**檢查安全群組規則**

1. 在 [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) 開啟 Amazon VPC 主控台。

1. 在導覽窗格中，選擇 **Security Groups** (安全群組)。

1. 選擇 **Inbound Rules** (傳入規則)。

1. 檢閱規則清單。如果有規則的 **Source** (來源)是 Client VPN 安全群組，請選擇 **Edit Rules** (編輯規則)，然後選擇規則的 **Delete** (刪除) (x 圖示)。選擇 **Save rules** (儲存規則)。

#### 根據使用者群組限制存取
<a name="scenario-restrict-groups"></a>

如果您的 Client VPN 端點設定為使用者型的身分驗證，您可以授與特定使用者群組對網路特定部分的存取權。若要執行此動作，請執行下列步驟。

1. 設定 Directory Service 或 IdP 中的使用者和群組。如需詳細資訊，請參閱下列主題：
   + [Client VPN 中的 Active Directory 身分驗證](ad.md)
   + [SAML 型聯合身分驗證的需求和考量](federated-authentication.md#saml-requirements)

1. 為您的 Client VPN 端點建立授權規則，以允許指定的群組存取全部或部分網路。如需更多詳細資訊，請參閱 [AWS Client VPN 授權規則](cvpn-working-rules.md)。

如果您的 Client VPN 端點設定為進行交互身分驗證，則無法設定使用者群組。當您建立授權規則時，您必須將存取權授與所有使用者。若要讓特定使用者群組存取您的網路的特定部分，您可以建立多個 Client VPN 端點。例如，對於存取您網路的每個使用者群組，請執行下列動作：

1. 為該使用者群組建立一組伺服器和用戶端憑證和金鑰。如需更多詳細資訊，請參閱 [中的相互身分驗證 AWS Client VPN](mutual.md)。

1. 建立 Client VPN 端點。如需更多詳細資訊，請參閱 [建立AWS Client VPN端點](cvpn-working-endpoint-create.md)。

1. 建立授權規則，授與全部或部分網路的存取權。例如，對於系統管理員所使用的 Client VPN 端點，您可以建立授權規則來授與整個網路的存取權。如需詳細資訊，請參閱[新增授權規則](cvpn-working-rule-authorize-add.md)。

# 中的用戶端身分驗證 AWS Client VPN
<a name="client-authentication"></a>

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

Client VPN 提供下列類型的用戶端身分驗證：
+ [Active Directory 身分驗證](ad.md) (以使用者為基礎)
+ [交互身分驗證](mutual.md) (以憑證為基礎)
+ [單一登入 (SAML 型聯合身分驗證)](federated-authentication.md) (以使用者為基礎)

您可以單獨使用上述其中一種方法，也可以將交互身分驗證與使用者型方法結合使用，如下所示：
+ 交互身分驗證和聯合身分驗證
+ 交互身分驗證和 Active Directory 身分驗證

**重要**  
若要建立 Client VPN 端點，您必須在 中佈建伺服器憑證 AWS Certificate Manager，無論您使用的身分驗證類型為何。如需建立和佈建伺服器憑證的詳細資訊，請參閱[中的相互身分驗證 AWS Client VPN](mutual.md)中的步驟。
如果您使用交互身分驗證和使用者型身分驗證的組合，則必須使用這兩種方法在 VPN 中正確驗證。

# Client VPN 中的 Active Directory 身分驗證
<a name="ad"></a>

Client VPN 透過與 整合，提供 Active Directory 支援 Directory Service。透過 Active Directory 身分驗證，將會根據現有的 Active Directory 群組來驗證用戶端。使用 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 管理指南](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/)》。

為 AWS 受管 Microsoft AD 或 AD Connector 啟用多重要素驗證 (MFA) 時，Client VPN 支援多重要素驗證 (MFA)。如果啟用 MFA，用戶端必須在連線到 Client VPN 端點時輸入使用者名稱、密碼和 MFA 代碼。如需啟用 MFA 的詳細資訊，請參閱《*AWS Directory Service 管理指南*》中的[為 AWS 受管 Microsoft AD 啟用多重要素驗證](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ms_ad_mfa.html)和[為 AD Connector 啟用多重要素驗證](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ad_connector_mfa.html)。

如需在 Active Directory 中設定使用者和群組的配額和規則，請參閱[使用者和群組配額](limits.md#quotas-users-groups)。

# 中的相互身分驗證 AWS Client VPN
<a name="mutual"></a>

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

您必須將伺服器憑證上傳至 AWS Certificate Manager (ACM)，並在建立 Client VPN 端點時指定它。將伺服器憑證上傳至 ACM 時，您也可以指定憑證授權機構 (CA)。只有當用戶端憑證的 CA 和伺服器憑證的 CA 不同時，您才需要將用戶端憑證上傳到 ACM。如需 ACM 的詳細資訊，請參閱《[AWS Certificate Manager ACM 使用者指南](https://docs.aws.amazon.com/acm/latest/userguide/)》。

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

AWS Client VPN 中使用的憑證必須遵循 [RFC 5280：網際網路 X.509 公有金鑰基礎設施憑證和憑證撤銷清單 (CRL) 設定檔](https://datatracker.ietf.org/doc/html/rfc5280)，包括備註第 4.2 節中指定的憑證延伸。

**注意**  
Client VPN 端點僅支援 1024 位元和 2048 位元 RSA 金鑰大小。此外，用戶端憑證必須在「主旨」欄位中具有 CN 屬性。  
更新與 Client VPN 服務搭配使用的憑證時，無論是透過 ACM 自動輪換、手動匯入新憑證，還是中繼資料更新至 IAM Identity Center，Client VPN 服務都會使用較新的憑證自動更新theClient VPN 端點。這是一個自動化程序，最多可能需要 5 小時。

**Topics**
+ [啟用交互身分驗證](client-auth-mutual-enable.md)
+ [更新您的伺服器憑證](mutual-renew.md)

# 啟用 的交互身分驗證 AWS Client VPN
<a name="client-auth-mutual-enable"></a>

您可以在 Linux/MacOS 或 Windows 的 Client VPN 中啟用交互身分驗證。

------
#### [ Linux/macOS ]

下列程序使用 OpenVPN easy-rsa 產生伺服器和用戶端憑證及金鑰，然後將伺服器憑證和金鑰上傳到 ACM。如需詳細資訊，請參閱 [Easy-RSA 3 Quickstart README](https://github.com/OpenVPN/easy-rsa/blob/v3.0.6/README.quickstart.md)。

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

1. 將 OpenVPN easy-rsa 儲存庫複製到本機電腦並導覽至 `easy-rsa/easyrsa3` 資料夾。

   ```
   $ git clone https://github.com/OpenVPN/easy-rsa.git
   ```

   ```
   $ cd easy-rsa/easyrsa3
   ```

1. 初始化新的 PKI 環境。

   ```
   $ ./easyrsa init-pki
   ```

1. 若要建置新的憑證授權機構 (CA)，請執行此命令並依照提示執行。

   ```
   $ ./easyrsa build-ca nopass
   ```

1. 產生伺服器憑證和金鑰。

   ```
   $ ./easyrsa --san=DNS:server build-server-full server nopass
   ```

1. 產生用戶端憑證和金鑰。

   務必儲存用戶端憑證和用戶端私有金鑰，因為您在設定用戶端時需要它們。

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

   您可以選擇性地為每個需要用戶端憑證和金鑰的用戶端 (終端使用者) 重複此步驟。

1. 將伺服器憑證和金鑰及用戶端憑證和金鑰複製到自訂資料夾，然後導覽到自訂資料夾。

   複製憑證和金鑰之前，請使用 `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/
   ```

1. 將伺服器憑證和金鑰，以及用戶端憑證和金鑰上傳至 ACM。請務必在與您想要建立 Client VPN 端點的相同區域中，將其上傳。下列命令使用 AWS CLI 上傳憑證。若要改為使用 ACM 主控台上傳憑證，請參閱 *《AWS Certificate Manager 使用者指南》* 中的[匯入憑證](https://docs.aws.amazon.com/acm/latest/userguide/import-certificate-api-cli.html)。

   ```
   $ 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
   ```

   您不一定需要將用戶端憑證上傳至 ACM。如果伺服器和用戶端憑證是由發行的同一家憑證授權機構 (CA) 所發行，則當您建立 Client VPN 端點時，您可以為伺服器和用戶端使用伺服器憑證 ARN。在上述步驟中，已使用相同的 CA 來建立這兩個憑證。然而，系統為了完整性，會包含上傳用戶端憑證的步驟。

------
#### [ Windows ]

下列程序會安裝 Easy-RSA 3.x 軟體，然後使用它來產生伺服器和用戶端憑證和金鑰。

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

1. 開啟 [EasyRSA 版本](https://github.com/OpenVPN/easy-rsa/releases)頁面，下載並擷取適用於您 Windows 版本的 ZIP 檔案。

1. 開啟命令提示，然後導覽至 `EasyRSA-3.x` 資料夾被擷取到的位置。

1. 執行下列命令以開啟 EasyRAS 3 殼層。

   ```
   C:\Program Files\EasyRSA-3.x> .\EasyRSA-Start.bat
   ```

1. 初始化新的 PKI 環境。

   ```
   # ./easyrsa init-pki
   ```

1. 若要建置新的憑證授權機構 (CA)，請執行此命令並依照提示執行。

   ```
   # ./easyrsa build-ca nopass
   ```

1. 產生伺服器憑證和金鑰。

   ```
   # ./easyrsa --san=DNS:server build-server-full server nopass
   ```

1. 產生用戶端憑證和金鑰。

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

   您可以選擇性地為每個需要用戶端憑證和金鑰的用戶端 (終端使用者) 重複此步驟。

1. 退出 EasyRSA 3 shell。

   ```
   # exit
   ```

1. 將伺服器憑證和金鑰及用戶端憑證和金鑰複製到自訂資料夾，然後導覽到自訂資料夾。

   複製憑證和金鑰之前，請使用 `mkdir` 命令建立自訂資料夾。下列範例會在您的 C:\$1 磁碟機中建立自訂資料夾。

   ```
   C:\Program Files\EasyRSA-3.x> mkdir C:\custom_folder
   C:\Program Files\EasyRSA-3.x> copy pki\ca.crt C:\custom_folder
   C:\Program Files\EasyRSA-3.x> copy pki\issued\server.crt C:\custom_folder
   C:\Program Files\EasyRSA-3.x> copy pki\private\server.key C:\custom_folder
   C:\Program Files\EasyRSA-3.x> copy pki\issued\client1.domain.tld.crt C:\custom_folder
   C:\Program Files\EasyRSA-3.x> copy pki\private\client1.domain.tld.key C:\custom_folder
   C:\Program Files\EasyRSA-3.x> cd C:\custom_folder
   ```

1. 將伺服器憑證和金鑰，以及用戶端憑證和金鑰上傳至 ACM。請務必在與您想要建立 Client VPN 端點的相同區域中，將其上傳。下列命令使用 AWS CLI 上傳憑證。若要改為使用 ACM 主控台上傳憑證，請參閱 *《AWS Certificate Manager 使用者指南》* 中的[匯入憑證](https://docs.aws.amazon.com/acm/latest/userguide/import-certificate-api-cli.html)。

   ```
   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
   ```

   您不一定需要將用戶端憑證上傳至 ACM。如果伺服器和用戶端憑證是由發行的同一家憑證授權機構 (CA) 所發行，則當您建立 Client VPN 端點時，您可以為伺服器和用戶端使用伺服器憑證 ARN。在上述步驟中，已使用相同的 CA 來建立這兩個憑證。然而，系統為了完整性，會包含上傳用戶端憑證的步驟。

------

# 為 續約您的伺服器憑證 AWS Client VPN
<a name="mutual-renew"></a>

您可以續約並重新匯入已過期的 Client VPN 伺服器憑證。根據您正在使用的 OpenVPN easy-rsa 版本，程序會有所不同。如需詳細資訊，請參閱 [Easy-RSA 3 憑證續約和撤銷文件](https://github.com/OpenVPN/easy-rsa/blob/master/doc/EasyRSA-Renew-and-Revoke.md)。

**續約您的伺服器憑證**

1. 執行下列**其中一項**操作：
   + Easy-RSA 3.1.x 版

     1. 執行憑證更新命令。

       ```
       $ ./easyrsa renew server nopass
       ```
   + Easy-RSA 3.2.x 版

     1. 執行 expire 命令。

        ```
        $ ./easyrsa expire server
        ```

     1. 簽署新的憑證。

        ```
        $ ./easyrsa --san=DNS:server sign-req server server
        ```

1. 建立自訂資料夾，將新檔案複製到該資料夾中，然後導覽至該資料夾。

   ```
   $ mkdir ~/custom_folder2
   $ cp pki/ca.crt ~/custom_folder2/
   $ cp pki/issued/server.crt ~/custom_folder2/
   $ cp pki/private/server.key ~/custom_folder2/
   $ cd ~/custom_folder2/
   ```

1. 將新檔案匯入 ACM。請務必將它們與 Client VPN 端點匯入至相同區域中。

   ```
   $ aws acm import-certificate \
       --certificate fileb://server.crt \
       --private-key fileb://server.key \
       --certificate-chain fileb://ca.crt \
       --certificate-arn arn:aws:acm:region:123456789012:certificate/12345678-1234-1234-1234-12345678901
   ```

# Client VPN 中的單一登入 — SAML 2.0 型聯合身分驗證
<a name="federated-authentication"></a>

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

**Topics**
+ [啟用 SAML](client-auth-enable-saml.md)
+ [身分驗證工作流程](#federated-authentication-workflow)
+ [SAML 型聯合身分驗證的需求和考量](#saml-requirements)
+ [SAML 型 IdP 組態資源](#saml-config-resources)

# 為 啟用 SAML AWS Client VPN
<a name="client-auth-enable-saml"></a>

 您可以完成下列步驟，為 Client VPN 的單一登入啟用 SAML。或者，如果您為 Client VPN 端點啟用了自助入口網站，請指示您的使用者前往自助入口網站，以取得組態檔案和 AWS 提供的用戶端。如需詳細資訊，請參閱[AWS Client VPN 存取自助式入口網站](cvpn-self-service-portal.md)。

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

1. 在您選擇的 IdP 中建立 SAML 型應用程式，以與 AWS Client VPN現有應用程式搭配使用。

1. 設定 IdP 與 建立信任關係 AWS如需資源，請參閱 [SAML 型 IdP 組態資源](federated-authentication.md#saml-config-resources)。

1. 在 IdP 中產生並下載聯合中繼資料文件，以將您的組織描述為 IdP。

   此簽署的 XML 文件用於建立 AWS 和 IdP 之間的信任關係。

1. 在與 Client VPN 端點相同的 AWS 帳戶中建立 IAM SAML 身分提供者。

   IAM SAML 身分提供者會使用 IdP 產生的中繼資料文件，定義組織的 IdP 以 AWS 信任關係。如需詳細資訊，請參閱《IAM 使用者指南》**中的[建立 IAM SAML 身分提供者](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_create_saml.html)。如果您稍後更新 IdP 中的應用程式組態，請產生新的中繼資料文件並更新 IAM SAML 身分提供者。
**注意**  
您不需要建立 IAM 角色即可使用 IAM SAML 身分提供者。

1. 建立 Client VPN 端點。

   指定聯合身分驗證做為身分驗證類型，並指定您建立的 IAM SAML 身分提供者。如需更多詳細資訊，請參閱 [建立AWS Client VPN端點](cvpn-working-endpoint-create.md)。

1. 匯出[用戶端組態檔案](cvpn-working-endpoint-export.md)，並將其分配到您的使用者。指示使用者下載 [AWS 提供的用戶端](https://docs.aws.amazon.com/vpn/latest/clientvpn-user/connect-aws-client-vpn-connect.html)之最新版本，並使用其來載入組態檔案並連線到 Client VPN 端點。

## 身分驗證工作流程
<a name="federated-authentication-workflow"></a>

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

![\[身分驗證工作流程\]](http://docs.aws.amazon.com/zh_tw/vpn/latest/clientvpn-admin/images/federated-auth-workflow.png)


1. 使用者在其裝置上開啟 AWS 提供的用戶端，並啟動與 Client VPN 端點的連線。

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

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

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

1.  AWS 提供的用戶端會將 SAML 聲明傳送至 Client VPN 端點。

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

## SAML 型聯合身分驗證的需求和考量
<a name="saml-requirements"></a>

以下是 SAML 型聯合身分驗證的需求和考量。
+ 如需在 SAML 類型 IdP 中設定使用者和群組的配額和規則，請參閱[使用者和群組配額](limits.md#quotas-users-groups)。
+ SAML 聲明和回應必須簽署。
+ AWS Client VPN 僅支援 SAML 聲明中的「AudienceRestriction」和「NotBefore 和 NotOnOrAfter」條件。
+ SAML 回應的支援大小上限為 128 KB。
+ AWS Client VPN 不提供已簽章的身分驗證請求。
+ 不支援 SAML 單一登出。使用者可以透過中斷與 AWS 所提供用戶端的連線來登出，或者您可以[終止連線](cvpn-working-connections-disassociate.md)。
+ Client VPN 端點僅支援單一 IdP。
+ 在 IdP 中啟用多重要素驗證 (MFA) 時，即支援多重要素驗證 (MFA)。
+ 使用者必須使用 AWS 提供的用戶端連線到 Client VPN 端點。您必須使用版本 1.2.0 或更新的版本。如需詳細資訊，請參閱[使用 AWS 提供的用戶端連線](https://docs.aws.amazon.com/vpn/latest/clientvpn-user/connect-aws-client-vpn-connect.html)。
+ 以下瀏覽器支援 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 呼叫](https://docs.aws.amazon.com/IAM/latest/UserGuide/cloudtrail-integration.html)。
+ AWS Client VPN 透過 HTTP 重新導向繫結將 AuthN 請求傳送至 IdP。因此，IdP 應該支援 HTTP 重新導向繫結，而且它應該存在於 IdP 的中繼資料文件中。
+ 針對 SAML 聲明，您必須使用 `NameID` 屬性的電子郵件地址格式。
+ 使用者名稱 (`NameID`) 長度上限為 1024 個位元組。使用者名稱較長的連線將被拒絕。
+ 與 Client VPN 服務搭配使用的憑證更新時，無論是透過 ACM 自動輪換、手動匯入新憑證，還是中繼資料更新至 IAM Identity Center，Client VPN 服務都會使用較新的憑證自動更新 Client VPN 端點。這是一個自動化程序，最多可能需要 5 小時。

## SAML 型 IdP 組態資源
<a name="saml-config-resources"></a>

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


| IdP | 資源 | 
| --- | --- | 
| Okta | [使用 SAML 驗證 AWS Client VPN 使用者](https://aws.amazon.com/blogs/networking-and-content-delivery/authenticate-aws-client-vpn-users-with-saml/) | 
| Microsoft Entra ID （先前稱為 Azure Active Directory) | 如需詳細資訊，請參閱 [Microsoft 文件網站上的教學課程：Microsoft Entra 單一登入 (SSO) 與 AWS ClientVPN 整合](https://learn.microsoft.com/en-gb/entra/identity/saas-apps/aws-clientvpn-tutorial)。 | 
| JumpCloud | [與 整合 AWS Client VPN](https://jumpcloud.com/support/integrate-with-aws-client-vpn) | 
| AWS IAM Identity Center | [搭配 使用 IAM Identity Center AWS Client VPN 進行身分驗證和授權](https://aws.amazon.com/blogs/networking-and-content-delivery/using-aws-sso-with-aws-client-vpn-for-authentication-and-authorization/)  | 

### 建立應用程式的服務提供者資訊
<a name="saml-config-service-provider-info"></a>

若要使用上表中未列出的 IdP 建立 SAML 型應用程式，請使用以下資訊來設定 AWS Client VPN 服務提供者資訊。
+ 聲明消費者服務 (ACS) URL：`http://127.0.0.1:35001`
+ 對象 URI：`urn:amazon:webservices:clientvpn`

IdP 的 SAML 回應中必須包含至少一個屬性。範例屬性如下。


| 屬性 | Description | 
| --- | --- | 
| FirstName | 使用者的名字。 | 
| LastName | 使用者的姓氏。 | 
| memberOf | 使用者所屬的一或多個群組。 | 

**注意**  
使用 Active Directory 或 SAML IdP 群組型授權規則需要 `memberOf` 屬性。該屬性亦區分大小寫，且必須完全按照指定進行設定。如需詳細資訊，請參閱 [以網路為基礎的授權](client-authorization.md#auth-rules) 和 [AWS Client VPN 授權規則](cvpn-working-rules.md)。

### 自助入口網站支援
<a name="saml-self-service-support"></a>

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

如果您的 IdP 支援多個聲明消費者服務 (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
   ```

1. 產生並下載聯合身分中繼資料文件。

1. 在與 Client VPN 端點相同的 AWS 帳戶中建立 IAM SAML 身分提供者。如需詳細資訊，請參閱《IAM 使用者指南》**中的[建立 IAM SAML 身分提供者](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_create_saml.html)。
**注意**  
除了您[為主要應用程式建立的](#federated-authentication)之外，您還建立了這個 IAM SAML 身分提供者。

1. [建立 Client VPN 端點](cvpn-working-endpoint-create.md)，並指定您建立的 IAM SAML 身分提供者。

# 中的用戶端授權 AWS Client VPN
<a name="client-authorization"></a>

Client VPN 支援兩種用戶端授權類型：安全群組和聯網類型授權 (使用授權規則)。

## 安全群組
<a name="security-groups"></a>

建立 Client VPN 端點時，您可以從特定 VPC 指定要套用至 Client VPN 端點的安全群組。當您將子網路與 Client VPN 端點建立關聯時，我們會自動套用 VPC 的預設安全群組。您可以在建立 Client VPN 端點後變更安全群組。如需更多詳細資訊，請參閱 [在 中將安全群組套用至目標網路 AWS Client VPN](cvpn-working-target-apply.md)。安全群組與 Client VPN 網路界面相關聯。

您可以將規則新增到應用程式的安全群組以允許套用到關聯安全群組所傳來的流量，讓 Client VPN 使用者可以存取 VPC 中的應用程式。

相反地，您可以藉由不指定套用至關聯的安全群組，或是移除參考 Client VPN 端點安全群組的規則，來限制 Client VPN 使用者的存取。您需要的安全群組規則也可能取決於您要設定的 VPN 存取種類。如需更多詳細資訊，請參閱 [Client VPN 的案例和範例](how-it-works.md#scenario)。

如需安全群組的詳細資訊，請參閱《Amazon VPC 使用者指南》**中的 [VPC 的安全群組](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-security-groups.html)。

## 以網路為基礎的授權
<a name="auth-rules"></a>

以網路為基礎的授權是使用授權規則來實作。對於您想要啟用存取的每個網路，您必須設定授權規則來限制有存取權的使用者。對於指定的網路，請設定允許存取的 Active Directory 群組或 SAML 型 IdP 群組。只有屬於指定群組的使用者，才可以存取指定的網路。如果您不是使用 Active Directory 或 SAML 型聯合身分驗證，或是您希望開放所有使用者的存取權，您可以指定規則來將存取權授與給所有用戶端。如需詳細資訊，請參閱[AWS Client VPN 授權規則](cvpn-working-rules.md)。

**Topics**
+ [安全群組](#security-groups)
+ [以網路為基礎的授權](#auth-rules)
+ [建立端點安全群組規則](client-auth-rule-create.md)

# 建立 AWS Client VPN 端點安全群組規則
<a name="client-auth-rule-create"></a>

當您將子網路與 Client VPN 建立關聯時所套用 VPC 的預設安全群組可能會限制來自您想要允許的預設安全群組流量的流量，同時允許您不希望的流量。使用下列步驟建立 Client VPN 端點安全群組規則，以允許或限制與資源或應用程式相關聯之端點安全群組的流量。如需安全群組規則的詳細資訊，請參閱《*Amazon* [VPC 使用者指南》中的 VPC 的安全群組](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-security-groups.html)。

**新增規則，允許來自 Client VPN 端點安全群組的流量**

1. 在 [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) 開啟 Amazon VPC 主控台。

1. 在導覽窗格中，選擇 **Security Groups** (安全群組)。

1. 選擇與您的資源或應用程式相關聯的安全群組，然後選擇**動作**、**編輯傳入規則**。

1. 選擇 **Add rule** (新增規則)。

1. 針對 **Type** (類型)，選擇 **All traffic** (所有流量)。或者，您可以限制存取特定類型的流量，例如 **SSH**。

   針對 **Source** (來源)，指定與 Client VPN 端點目標網路 (子網路) 相關聯的安全群組 ID。

1. 選擇 **Save rules** (儲存規則)。

# 中的連線授權 AWS Client VPN
<a name="connection-authorization"></a>

您可以為 Client VPN 端點設定「用戶端連線處理常式」**。處理常式可讓您根據裝置、使用者和連線屬性，執行可授權新連線的自訂邏輯。用戶端連線處理常式會在 Client VPN 服務驗證過裝置和使用者身分後執行。

若要為 Client VPN 端點設定用戶端連線處理常式，請建立將裝置、使用者和連線屬性視為輸入的 AWS Lambda 函數，並將允許或拒絕新連線的決定傳回 Client VPN 服務。您可以在 Client VPN 端點中指定 Lambda 函數。當裝置連線到 Client VPN 端點時，Client VPN 服務會代您叫用 Lambda 函數。只有經 Lambda 函數授權的連線才可以連線到 Client VPN 端點。

**注意**  
目前唯一支援的用戶端連線處理常式類型是 Lambda 函數。

## 需求和考量事項
<a name="client-connect-handler-reqs"></a>

下列是用戶端連線處理常式的需求和考量事項：
+ Lambda 函數的名稱必須以 `AWSClientVPN-` 前綴開頭。
+ 支援合格的 Lambda 函數。
+ Lambda 函數必須與 Client VPN 端點位於相同的 AWS 區域和相同的 AWS 帳戶。
+ Lambda 函數會在 30 秒後逾時。此值無法變更。
+ 會以同步方式呼叫 Lambda 函數。在驗證設備和使用者身分後、評估授權規則前呼叫。
+ 如果為新連線呼叫 Lambda 函數，但 Client VPN 服務未從函數獲取得預期的回應，則 Client VPN 服務會拒絕此連線要求。例如，如果 Lambda 函數被調節、逾時或遇到其他未預期的錯誤，或者函數的回應格式不正確，就會發生這個問題。
+ 建議您為 Lambda 函數設定[佈建並行](https://docs.aws.amazon.com/lambda/latest/dg/configuration-concurrency.html)，使其能在不造成延遲波動的情況下擴展。
+ 如果您更新 Lambda 函數，現有的 Client VPN 端點連線不會受到影響。您可以終止現有的連線，然後指示用戶端建立新的連線。如需詳細資訊，請參閱[終止 AWS Client VPN 用戶端連線終止用戶端連線](cvpn-working-connections-disassociate.md)。
+ 如果用戶端使用 AWS 提供的用戶端連線至 Client VPN 端點，則必須針對 Windows 使用 1.2.6 版或更新版本，針對 macOS 使用 1.2.4 版或更新版本。如需詳細資訊，請參閱[使用 AWS 提供的用戶端連線](https://docs.aws.amazon.com/vpn/latest/clientvpn-user/connect-aws-client-vpn-connect.html)。

## Lambda 界面
<a name="connection-authorization-lambda"></a>

Lambda 函數會將裝置屬性、使用者屬性和連線屬性視為來自 Client VPN 服務的輸入。然後，必須將允許或拒絕連線的決定傳回 Client VPN 服務。

**請求結構描述**  
Lambda 函數將包含下列欄位的 JSON blob 視為輸入。

```
{
    "connection-id": <connection ID>,
    "endpoint-id": <client VPN endpoint ID>,
    "common-name": <cert-common-name>,
    "username": <user identifier>,
    "platform": <OS platform>,
    "platform-version": <OS version>,
    "public-ip": <public IP address>,
    "client-openvpn-version": <client OpenVPN version>,
    "aws-client-version": <AWS client version>,
    "groups": <group identifier>,
    "schema-version": "v3"
}
```
+ `connection-id` – 連線到 Client VPN 端點的用戶端 ID。
+ `endpoint-id` – Client VPN 端點的 ID。
+ `common-name` – 裝置識別符。在您為裝置建立的用戶端憑證中，通用名稱只能識別裝置。
+ `username` – 使用者識別符 (如果適用)。若為 Active Directory 身分驗證，這是使用者名稱。若為 SAML 型聯合身分驗證，這是 `NameID`。若要交互身分驗證，此欄位為空白。
+ `platform` – 用戶端作業系統平台。
+ `platform-version` – 作業系統的版本。當用戶端連線至 Client VPN 端點，且用戶端正在執行 Windows 平台時，Client VPN 服務會在 OpenVPN 用戶端組態中出現 `--push-peer-info` 指令時提供一個值。
+ `public-ip` – 要連線裝置的公有 IP 地址。
+ `client-openvpn-version` – 用戶端正在使用的 OpenVPN 版本。
+ `aws-client-version` — AWS 用戶端版本。
+ `groups` – 群組識別符 (如果適用)。若為 Active Directory 身分驗證，這將是 Active Directory 群組的清單。若為 SAML 型聯合身分驗證，這將是身分提供者 (IdP) 群組的清單。若要交互身分驗證，此欄位為空白。
+ `schema-version` – 結構描述版本。預設值為 `v3`。

**回應結構描述**  
Lambda 函數必須傳回下列欄位。

```
{
    "allow": boolean,
    "error-msg-on-denied-connection": "",
    "posture-compliance-statuses": [],
    "schema-version": "v3"
}
```
+ `allow` – 必要。布林值 (`true` \$1 `false`)，指出允許或拒絕新連線。
+ `error-msg-on-denied-connection` – 必要。如果 Lambda 函數拒絕連線，您可以向用戶端提供步驟和指導說明，長度不超過 255 個字元。如果在執行 Lambda 函數期間發生失敗 （例如，由於限流），Client VPN 服務會將下列預設訊息傳回給用戶端。

  ```
  Error establishing connection. Please contact your administrator.
  ```
+ `posture-compliance-statuses` – 必要。如果您使用 Lambda 函數[評估狀態](#connection-authorization-posture-assessment)，此即為連線裝置的狀態清單。您可以根據裝置的狀態評估類別定義狀態名稱，例如 `compliant`、`quarantined`、`unknown` 等等。每個名稱的長度上限為 255 個字元。您最多可以指定 10 種狀態。
+ `schema-version` – 必要。結構描述版本。預設值為 `v3`。

您可以為相同區域中的多個 Client VPN 端點使用相同的 Lambda 函數。

如需建立 Lambda 函數的詳細資訊，請參閱《*AWS Lambda 開發人員指南*》中的 [AWS Lambda入門](https://docs.aws.amazon.com/lambda/latest/dg/getting-started.html)。

## 使用用戶端連線處理常式進行姿勢評估
<a name="connection-authorization-posture-assessment"></a>

您可以使用用戶端連線處理常式整合 Client VPN 端點和現有的裝置管理解決方案，以評估連線裝置的狀態合規性。若要讓 Lambda 函數做為裝置授權處理常式運作，請在 Client VPN 端點使用[交互身分驗證](mutual.md)。您可以為要連線至 Client VPN 端點的每個用戶端 (裝置) 建立唯一的用戶端憑證和金鑰。Lambda 函數可使用用戶端憑證的唯一通用名稱 (從 Client VPN 服務傳出) 來識別裝置，並從您的裝置管理解決方案擷取其狀態合規狀態。您可以將交互身分驗證與使用者型身分驗證結合使用。

或者，您可以在 Lambda 函數中執行基本的狀態評估。例如，您可以評估 Client VPN 服務傳遞給 Lambda 函數的 `platform` 和 `platform-version` 欄位。

**注意**  
雖然連線處理常式可用來強制執行最低 AWS Client VPN 應用程式版本，但連線處理常式`aws-client-version`中的 欄位僅適用於 AWS Client VPN 應用程式，並從使用者裝置上的環境變數填入。

## 啟用用戶端連線處理常式
<a name="enable-client-connect-handler"></a>

若要啟用用戶端連線處理常式，請建立或修改 Client VPN 端點，並指定 Lambda 函數的 Amazon Resource Name (ARN)。如需更多詳細資訊，請參閱[建立AWS Client VPN端點](cvpn-working-endpoint-create.md)及[修改 AWS Client VPN 端點](cvpn-working-endpoint-modify.md)。

## 服務連結角色
<a name="connection-authorization-slr"></a>

AWS Client VPN 會在您的帳戶中自動建立稱為 **AWSServiceRoleForClientVPNConnections** 的服務連結角色。連線到 Client VPN 端點時，角色具有呼叫 Lambda 函數的許可。如需詳細資訊，請參閱[使用 的服務連結角色 AWS Client VPN](using-service-linked-roles.md)。

## 監控連線授權失敗
<a name="connection-authorization-monitoring"></a>

您可以檢視 Client VPN 端點連線的連線授權狀態。如需更多詳細資訊，請參閱 [檢視 AWS Client VPN 用戶端連線查看用戶端連線](cvpn-working-connections-view.md)。

使用用戶端連線處理常式評估狀態時，您也可以在連線日誌中檢視連線至 Client VPN 端點之裝置的狀態合規狀態。如需更多詳細資訊，請參閱 [AWS Client VPN 端點的連線記錄](connection-logging.md)。

如果裝置連線授權失敗，則連線日誌中的 `connection-attempt-failure-reason` 欄位會傳回下列失敗原因的其中之一：
+ `client-connect-failed` – 防止建立連線的 Lambda 函數。
+ `client-connect-handler-timed-out` – Lambda 函數已逾時。
+ `client-connect-handler-other-execution-error` – Lambda 函數發生未預期的錯誤。
+ `client-connect-handler-throttled` – 經過調節的 Lambda 函數。
+ `client-connect-handler-invalid-response` – 傳回無效回應的 Lambda 函數。
+ `client-connect-handler-service-error` – 嘗試連線期間在服務端發生錯誤。

# AWS Client VPN 端點上的分割通道
<a name="split-tunnel-vpn"></a>

根據預設，當您有 Client VPN 端點時，來自用戶端的所有流量都會透過 Client VPN 通道路由。當您啟用 Client VPN 端點上的分割通道時，我們會將 [Client VPN 端點路由表](cvpn-working-routes.md)上的路由推送到連線至 Client VPN 端點的裝置。這可確保只有網路目標與 Client VPN 端點路由表之路由相符的流量，才可以透過 Client VPN 通道路由。

如果不希望所有使用者的流量皆透過 Client VPN 端點路由，您可以使用分割通道 Client VPN 端點。

以下範例在 Client VPN 端點上啟用了分割通道。只有以 VPC (`172.31.0.0/16`) 為目標的流量才可以透過 Client VPN 通道路由。目標為現場部署資源的流量，不會透過 Client VPN 通道路由。

![\[分割通道 Client VPN 端點\]](http://docs.aws.amazon.com/zh_tw/vpn/latest/clientvpn-admin/images/client-vpn-split-tunnel.png)


## 分割隧道的優點
<a name="split-tunnel-benefits"></a>

Client VPN 端點上的分割通道有下列優點：
+ 您可以只讓 AWS 目的地流量周遊 VPN 通道，以最佳化來自用戶端的流量路由。
+ 您可以減少傳出流量的量 AWS，進而降低資料傳輸成本。

## 路由傳送考量
<a name="split-tunnel-routing"></a>
+ 當您啟用分割通道模式時，建立 VPN 連接時，Client VPN 端點路由表中的所有路由都會新增至用戶端的路由表。此操作不同於預設行為，也就是以項目 `0.0.0.0/0` 覆寫用戶端路由表，以透過 VPN 路由傳送所有流量。
**注意**  
使用分割通道模式時，將 0.0.0.0/0 路由新增至 Client VPN 端點的路由表，可能會導致連線中斷，不建議這麼做
+ 啟用分割通道模式時，對 Client VPN 端點路由表的任何修改都會導致重設所有用戶端連線。

## 啟用分割通道
<a name="split-tunnel-enable"></a>

您可以在新的或現有的 Client VPN 端點上啟用分割通道。如需詳細資訊，請參閱下列主題：
+ [建立AWS Client VPN端點](cvpn-working-endpoint-create.md)
+ [修改 AWS Client VPN 端點](cvpn-working-endpoint-modify.md)

# AWS Client VPN 端點的連線記錄
<a name="connection-logging"></a>

連線記錄是 的一項功能 AWS Client VPN ，可讓您擷取 Client VPN 端點的*連線日誌*。

連線日誌包含*連線日誌項目*，可擷取連線事件的相關資訊，例如用戶端 （最終使用者） 何時連線、嘗試連線或中斷與 Client VPN 端點的連線。您可以使用此資訊來執行鑑識、分析 Client VPN 端點的使用方式，或偵錯連線問題。

連線記錄適用於所有 AWS Client VPN 可用 的 區域。連線日誌會發佈到您帳戶中的 CloudWatch Logs 日誌群組。

**注意**  
不會記錄失敗的相互驗證嘗試。

## 連線日誌項目
<a name="connection-log-entries"></a>

連線日誌項目是索引鍵/值組的 JSON 格式 Blob。以下是連線日誌項目範例。

```
{
    "connection-log-type": "connection-attempt",
    "connection-attempt-status": "successful",
    "connection-reset-status": "NA",
    "connection-attempt-failure-reason": "NA",
    "connection-id": "cvpn-connection-abc123abc123abc12",
    "client-vpn-endpoint-id": "cvpn-endpoint-aaa111bbb222ccc33",
    "transport-protocol": "udp",
    "connection-start-time": "2020-03-26 20:37:15",
    "connection-last-update-time": "2020-03-26 20:37:15",
    "client-ip": "10.0.1.2",
    "common-name": "client1",
    "device-type": "mac",
    "device-ip": "98.247.202.82",
    "port": "50096",
    "ingress-bytes": "0",
    "egress-bytes": "0",
    "ingress-packets": "0",
    "egress-packets": "0",
    "connection-end-time": "NA",
    "username": "joe"
    }
```

連線日誌項目包含下列金鑰：
+ `connection-log-type`：連線日誌項目的類型 (`connection-attempt` 或 `connection-reset`)。
+ `connection-attempt-status`：連線請求的狀態 (`successful`、`failed`、`waiting-for-assertion`，或 `NA`)。
+ `connection-reset-status`：連線重設事件的狀態 (`NA` 或 `assertion-received`)。
+ `connection-attempt-failure-reason`：連線失敗的原因 (如適用)。
+ `connection-id`：連線的 ID。
+ `client-vpn-endpoint-id`：建立連線的 Client VPN 端點 ID。
+ `transport-protocol`：用於連線的傳輸通訊協定。
+ `connection-start-time`：連線的開始時間。
+ `connection-last-update-time`：連線的上次更新時間。此值在日誌中會定期更新。
+ `client-ip`：從 Client VPN 端點的用戶端 IPv4 CIDR 範圍配置的用戶端 IP 地址。
+ `common-name`：用於憑證類型身分驗證的憑證常用名稱。
+ `device-type`：用於最終使用者連線的裝置類型。
+ `device-ip`：裝置的公有 IP 地址。
+ `port`：連線的連接埠號碼。
+ `ingress-bytes`：連線的輸入 (傳入) 位元組數。此值在日誌中會定期更新。
+ `egress-bytes`：連線的輸出 (傳輸) 位元組數。此值在日誌中會定期更新。
+ `ingress-packets`：連線的輸入 (傳入) 封包數。此值在日誌中會定期更新。
+ `egress-packets`：連線的輸出 (傳出) 封包數。此值在日誌中會定期更新。
+ `connection-end-time`：連線的結束時間。若連線仍在進行中，或連線嘗試失敗，則此值為 `NA`。
+ `posture-compliance-statuses`：[用戶端連線處理器](connection-authorization.md)傳回的狀態合規狀態 (如適用)。
+ `username` — 使用者型驗證 (AD 或 SAML) 用於端點時，會記錄使用者名稱。
+ `connection-duration-seconds` — 持續時間 (以秒為單位)。等於「連接開始時間」和「連接結束時間」之間的差異。

如需啟用連線記錄日誌的詳細資訊，請參閱[AWS Client VPN 連線日誌](cvpn-working-with-connection-logs.md)。

# Client VPN 擴展考量
<a name="scaling-considerations"></a>

當您建立 Client VPN 端點時，請考慮您計劃支援的並行 VPN 連線數量上限。您應該考慮目前支援的用戶端數量，以及您的 Client VPN 端點是否可以視需要擴展以滿足其他需求。

下列因素會影響 Client VPN 端點上可支援的並行 VPN 連線數量上限：

**用戶端 CIDR 範圍大小**  
當您[建立 Client VPN 端點](cvpn-working-endpoint-create.md)時，必須指定用戶端 CIDR 範圍，該範圍是介於 /12 和 /22 網路遮罩之間的 IPv4 CIDR 區塊。每個與 Client VPN 端點的 VPN 連線都會從用戶端 CIDR 範圍指派唯一的 IP 地址。用戶端 CIDR 範圍中的一部分地址也用於支援 Client VPN 端點的可用性模型，而且無法指派給用戶端。建立 Client VPN 端點後，您無法變更用戶端 CIDR 範圍。  
一般而言，我們建議您指定用戶端 CIDR 範圍，其中包含您計劃在 Client VPN 端點上支援的 IP 地址 (以及並行連線) 的兩倍。

**關聯子網路數量**  
當您將[子網路與 Client VPN 端點建立關聯](cvpn-working-target.md)時，您可以讓使用者建立 VPN 工作階段至 Client VPN 端點。您可以將多個子網路與 Client VPN 端點建立關聯，以取得高可用性，並啟用額外的連線容量。  
以下是基於 Client VPN 端點的子網路關聯數量之受支援的並行 VPN 連線數量。      
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/vpn/latest/clientvpn-admin/scaling-considerations.html)

您不能將來自相同可用區域的多個子網路與一個 Client VPN 端點建立關聯。因此，子網路關聯的數目也取決於 AWS 區域中可用的可用區域數目。

例如，如果您預期支援 8,000 個 VPN 連線至 Client VPN 端點，請指定 `/18` 的最小用戶端 CIDR 範圍大小 (16,384 個 IP 地址)，並將至少 2 個子網路與 Client VPN 端點建立關聯。

如果您不確定 Client VPN 端點的預期 VPN 連線數量，建議您指定 `/16` CIDR 區塊的大小或更大範圍。

如需使用用戶端 CIDR 範圍和目標網路的規則和限制的詳細資訊，請參閱 [使用 的規則和最佳實務 AWS Client VPN](what-is-best-practices.md)。

如需 Client VPN 端點配額的詳細資訊，請參閱 [AWS Client VPN 配額](limits.md)。