

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# AWS Client VPN 작동 방식
<a name="how-it-works"></a>

AWS Client VPN에는 Client VPN 엔드포인트와 상호 작용하는 두 가지 유형의 사용자 페르소나가 있습니다. 이 두 가지는 관리자와 클라이언트입니다.

Client VPN은 IPv4, IPv6 및 듀얼 스택(IPv4 및 IPv6 모두) 연결을 지원합니다. IPv4, IPv6 또는 둘 다를 사용하는 엔드포인트를 생성하여 VPC의 IPv6 리소스에 연결하거나 IPv6 네트워크의 클라이언트에서 연결할 수 있습니다. 이러한 유연성은 IPv6 인프라를 이미 구현했거나 IPv6 인프라로 전환하는 조직에 도움이 됩니다.

*관리자*는 서비스 설정 및 구성을 담당합니다. 여기에는 Client VPN 엔드포인트 생성, 대상 네트워크 연결, 권한 부여 규칙 구성, 추가 라우팅 설정(필요한 경우)이 포함됩니다. Client VPN 엔드포인트를 설정하고 구성한 후, 관리자는 Client VPN 엔드포인트 구성 파일을 다운로드하여 액세스가 필요한 클라이언트에 배포합니다. Client VPN 엔드포인트 구성 파일에는 VPN 세션을 설정하는 데 필요한 Client VPN 엔드포인트 및 인증 정보의 DNS 이름이 포함되어 있습니다. 서비스 설정에 대한 자세한 내용은 [시작하기 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/ko_kr/vpn/latest/clientvpn-admin/images/architecture.png)


##  Client VPN의 시나리오 및 예제
<a name="scenario"></a>

AWS Client VPN은 클라이언트가 AWS 및 온프레미스 네트워크 내 리소스에 안전하게 액세스할 수 있도록 하는 데 사용하는 완전 관리형 원격 액세스 VPN 솔루션입니다. 액세스를 구성하는 방법에는 여러 옵션이 있습니다. 이 단원에서는 클라이언트에 대한 Client VPN 액세스 권한을 생성하고 구성하는 예를 제공합니다.

**시나리오**
+ [ Client VPN을 사용하여 VPC 액세스](#scenario-vpc)
+ [ Client VPN을 사용하여 피어링된 VPC 액세스](#scenario-peered)
+ [ Client VPN을 사용하여 온프레미스 네트워크 액세스](#scenario-onprem)
+ [ Client VPN을 사용하여 인터넷 액세스](#scenario-internet)
+ [ Client VPN을 사용한 클라이언트 간 액세스](#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/ko_kr/vpn/latest/clientvpn-admin/images/client-vpn-scenario-vpc.png)


시작하기 전에 다음을 수행하세요.
+ 하나 이상의 서브넷이 있는 VPC를 생성하거나 식별합니다. VPC에서 Client VPN 엔드포인트와 연결할 서브넷을 식별하고 해당 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)에 설명된 단계를 수행하고 **Destination network(대상 네트워크)**에 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 및 이와 피어링된 다른 VPC(예: VPC B) 내부의 리소스에 대한 액세스 권한을 부여해야 하는 경우 이 구성을 사용하는 것이 좋습니다.

**참고**  
아래 네트워크 다이어그램에 설명된 피어링된 VPC에 대한 액세스가 가능한 절차는 Client VPN 엔드포인트가 분할 터널 모드에 대해 구성된 경우에만 필요합니다. 전체 터널 모드에서는 피어링된 VPC 대한 액세스가 기본적으로 허용됩니다.

![\[피어 VPC에 액세스하는 Client VPN\]](http://docs.aws.amazon.com/ko_kr/vpn/latest/clientvpn-admin/images/client-vpn-scenario-peer-vpc.png)


시작하기 전에 다음을 수행하세요.
+ 하나 이상의 서브넷이 있는 VPC를 생성하거나 식별합니다. VPC에서 Client VPN 엔드포인트와 연결할 서브넷을 식별하고 해당 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)에 설명된 단계를 수행합니다. **활성화할 대상 네트워크(Destination network to enable)**에 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/ko_kr/vpn/latest/clientvpn-admin/images/client-vpn-scenario-on-premises.png)


시작하기 전에 다음을 수행하세요.
+ 하나 이상의 서브넷이 있는 VPC를 생성하거나 식별합니다. VPC에서 Client VPN 엔드포인트와 연결할 서브넷을 식별하고 해당 IPv4 CIDR 범위를 기록해 둡니다.
+ VPC CIDR과 겹치지 않는 클라이언트 IP 주소에 적합한 CIDR 범위를 식별합니다.
+ [사용에 대한 규칙 및 모범 사례 AWS Client VPN](what-is-best-practices.md)에서 Client VPN 엔드포인트에 대한 규칙과 제한 사항을 검토합니다.

**이 구성을 구현하는 방법**

1. AWS Site-to-Site VPN 연결을 통해 VPC와 자체 온프레미스 네트워크 간의 통신을 활성화합니다. 이렇게 하려면 *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 VPN 연결을 테스트합니다. 이렇게 하려면 *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 VPN 연결에 대한 액세스를 허용하는 경로를 추가합니다. 이렇게 하려면 [AWS Client VPN 엔드포인트 라우팅 생성](cvpn-working-routes-create.md)에 설명된 단계를 수행합니다. **경로 대상(Route destination)**에 AWS Site-to-Site VPN 연결의 IPv4 CIDR 범위를 입력하고 **대상 VPC 서브넷 ID(Target VPC Subnet ID)**에서 Client VPN 엔드포인트와 연결한 서브넷을 선택합니다.

1. AWS Site-to-Site VPN 연결에 대한 액세스 권한을 클라이언트에 부여하는 권한 부여 규칙을 추가합니다. 이렇게 하려면 [AWS Client VPN 엔드포인트에 권한 부여 규칙 추가](cvpn-working-rule-authorize-add.md)에 설명된 단계를 수행하고 **대상 네트워크(Destination network)**에 AWS Site-to-Site VPN 연결 IPv4 CIDR 범위를 입력합니다.

###  Client VPN을 사용하여 인터넷 액세스
<a name="scenario-internet"></a>

이 시나리오의 AWS Client VPN 구성에는 단일 대상 VPC와 인터넷 액세스가 포함됩니다. 클라이언트에게 단일 대상 VPC 내부의 리소스에 대한 액세스 권한을 부여하고 인터넷 액세스를 허용해야 하는 경우 이 구성을 사용하는 것이 좋습니다.

[시작하기 AWS Client VPN](cvpn-getting-started.md) 자습서를 완료한 경우 이 시나리오를 이미 구현한 것입니다.

![\[인터넷에 액세스하는 Client VPN\]](http://docs.aws.amazon.com/ko_kr/vpn/latest/clientvpn-admin/images/client-vpn-scenario-igw.png)


시작하기 전에 다음을 수행하세요.
+ 하나 이상의 서브넷이 있는 VPC를 생성하거나 식별합니다. VPC에서 Client VPN 엔드포인트와 연결할 서브넷을 식별하고 해당 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 콘솔에서 **서브넷**을 선택하고, Client VPN 엔드포인트에 연결할 서브넷을 선택한 다음, **라우팅 테이블**을 선택하고, 라우팅 테이블 ID를 선택합니다. **작업**을 선택하고, **Edit routes(라우팅 편집)**을 선택하고, **Add route(라우팅 추가)**를 선택합니다. **대상 주소**에 `0.0.0.0/0`을 입력하고, **대상**에서 이전 단계의 인터넷 게이트웨이를 선택합니다.

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)에 설명된 단계를 수행하고 **Destination network to enable(활성화할 대상 네트워크)**에 VPC의 IPv4 CIDR 범위를 입력합니다.

1. 인터넷 트래픽을 허용하는 라우팅을 추가합니다. 이렇게 하려면 [AWS Client VPN 엔드포인트 라우팅 생성](cvpn-working-routes-create.md)에 설명된 단계를 수행합니다. **Route destination(라우팅 대상)**에 `0.0.0.0/0`을 입력하고 **Target VPC Subnet ID(대상 VPC 서브넷 ID)**에서 Client VPN 엔드포인트에 연결한 서브넷을 선택합니다.

1. 권한 부여 규칙을 추가하여 클라이언트에 인터넷에 대한 액세스 권한을 부여합니다. 이렇게 하려면 [권한 부여 규칙 추가](cvpn-working-rule-authorize-add.md)에 설명된 단계를 수행하고 **Destination network(대상 네트워크)**에 `0.0.0.0/0`을 입력합니다.

1. VPC의 리소스에 대한 보안 그룹에 Client VPN 엔드포인트와 연결된 보안 그룹에서의 액세스를 허용하는 규칙이 있는지 확인합니다. 이렇게 하면 클라이언트가 VPC의 리소스에 액세스할 수 있습니다.

###  Client VPN을 사용한 클라이언트 간 액세스
<a name="scenario-client-to-client"></a>

이 시나리오의 AWS Client VPN 구성을 통해 클라이언트가 단일 VPC에 액세스할 수 있고 클라이언트가 서로 트래픽을 라우팅할 수 있습니다. 동일한 Client VPN 엔드포인트에 연결하는 클라이언트도 서로 통신해야 하는 경우 이 구성을 사용하는 것이 좋습니다. 클라이언트는 Client VPN 엔드포인트에 연결할 때 클라이언트 CIDR 범위에서 할당된 고유한 IP 주소를 사용하여 서로 통신할 수 있습니다.

![\[클라이언트 간 액세스\]](http://docs.aws.amazon.com/ko_kr/vpn/latest/clientvpn-admin/images/client-vpn-scenario-client-to-client.png)


시작하기 전에 다음을 수행하세요.
+ 하나 이상의 서브넷이 있는 VPC를 생성하거나 식별합니다. VPC에서 Client VPN 엔드포인트와 연결할 서브넷을 식별하고 해당 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)에 설명된 단계를 수행합니다. **라우팅 대상(Route destination)**에 클라이언트 CIDR 범위를 입력하고 **대상 VPC 서브넷 ID(Target VPC Subnet ID)**에서 `local`을 지정합니다.

1. 권한 부여 규칙을 추가하여 클라이언트에 VPC에 대한 액세스 권한을 부여합니다. 이렇게 하려면 [권한 부여 규칙 추가](cvpn-working-rule-authorize-add.md)에 설명된 단계를 수행합니다. **활성화할 대상 네트워크(Destination network to enable)**에 VPC의 IPv4 CIDR 범위를 입력합니다.

1. 권한 부여 규칙을 추가하여 클라이언트에 클라이언트 CIDR 범위에 대한 액세스 권한을 부여합니다. 이렇게 하려면 [권한 부여 규칙 추가](cvpn-working-rule-authorize-add.md)에 설명된 단계를 수행합니다. **활성화할 대상 네트워크(Destination network to enable)**에 클라이언트 CIDR 범위를 입력합니다.

###  Client VPN을 사용한 네트워크 액세스 제한
<a name="scenario-restrict"></a>

VPC의 특정 리소스에 대한 액세스를 제한하도록 AWS Client VPN 엔드포인트를 구성할 수 있습니다. 사용자 기반 인증의 경우 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 인스턴스와 연결됩니다. 보안 그룹 A로부터의 액세스를 허용하는 규칙을 보안 그룹 B에 추가하면 클라이언트가 보안 그룹 B와 연결된 인스턴스에 액세스할 수 있습니다. 보안 그룹 C에 보안 그룹 A로부터의 액세스를 허용하는 규칙이 없는 경우 클라이언트는 보안 그룹 C와 연결된 인스턴스에 액세스할 수 없습니다.

![\[VPC의 리소스에 대한 액세스 제한\]](http://docs.aws.amazon.com/ko_kr/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. **작업**, **인바운드 규칙 편집**을 선택합니다.

1. **Add rule(규칙 추가)**를 선택하고 다음을 수행합니다.
   + **유형**에서 **모든 트래픽** 또는 허용할 특정 트래픽 유형을 선택합니다.
   + **소스**에서 **사용자 지정**을 선택한 다음 Client VPN 보안 그룹의 ID를 입력하거나 선택합니다.

1. **규칙 저장** 선택

특정 리소스에 대한 액세스 권한을 제거하려면 리소스가 실행 중인 인스턴스와 연결된 보안 그룹을 확인합니다. Client VPN 보안 그룹의 트래픽을 허용하는 규칙이 있으면 해당 규칙을 삭제합니다.

**보안 그룹 규칙을 확인하는 방법**

1. [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/)에서 Amazon VPC 콘솔을 엽니다.

1. 탐색 창에서 [**Security Groups**]를 선택합니다.

1. **인바운드 규칙**을 선택합니다.

1. 규칙 목록을 검토합니다. **소스**가 Client VPN 보안 그룹인 규칙이 있는 경우 **규칙 편집**을 선택하고 규칙에 대해 **삭제**(x 아이콘)를 선택합니다. **규칙 저장**을 선택합니다.

#### 사용자 그룹을 기준으로 액세스 제한
<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)(인증서 기반)
+ [Single sign-on(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/)를 참조하세요.

Client VPN은 AWS 관리형 Microsoft AD 또는 AD Connector에 대해 활성화된 경우 멀티 팩터 인증(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)에서 발행한 디지털 형태의 ID 증명서입니다. 서버는 클라이언트 인증서를 사용하여 Client VPN 엔드포인트에 연결하려고 시도하는 클라이언트를 인증합니다. 하나의 서버 인증서 및 키와 하나 이상의 클라이언트 인증서 및 키를 생성해야 합니다.

서버 인증서를 AWS Certificate Manager (ACM)에 업로드하고 Client VPN 엔드포인트를 생성할 때 지정해야 합니다. 서버 인증서를 ACM에 업로드할 때 인증 기관(CA)도 지정합니다. 클라이언트 인증서의 CA가 서버 인증서의 CA와 다른 경우 클라이언트 인증서를 ACM에 업로드하기만 하면 됩니다. ACM에 대한 자세한 내용은 [AWS Certificate Manager 사용 설명서](https://docs.aws.amazon.com/acm/latest/userguide/)를 참조하세요.

Client VPN 엔드포인트에 연결할 각 클라이언트에 대해 별도의 클라이언트 인증서 및 키를 생성할 수 있습니다. 이렇게 하면 사용자가 조직을 떠나는 경우 특정 클라이언트 인증서를 취소할 수 있습니다. 이 경우 클라이언트 인증서가 서버 인증서와 동일한 CA에서 발급된 경우 Client VPN 엔드포인트를 생성할 때 클라이언트 인증서에 대한 서버 인증서 ARN을 지정할 수 있습니다.

AWS Client VPN에 사용되는 인증서는 메모의 섹션 4.2에 지정된 인증서 확장을 포함하여 [RFC 5280: Internet X.509 퍼블릭 키 인프라 인증서 및 인증서 해지 목록(CRL) 프로필](https://datatracker.ietf.org/doc/html/rfc5280)을 준수해야 합니다.

**참고**  
Client VPN 엔드포인트는 1024비트 및 2048비트 RSA 키 크기만 지원합니다. 또한 클라이언트 인증서의 제목 필드에 CN 속성이 있어야 합니다.  
Client VPN 서비스에서 사용 중인 인증서가 ACM 자동 교체를 통해 업데이트되거나 새 인증서를 수동으로 가져와 업데이트되거나 IAM Identity Center에 대한 메타데이터 업데이트를 통해 업데이트되면 Client VPN 서비스가 Client 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 릴리스(EasyRSA releases)](https://github.com/OpenVPN/easy-rsa/releases) 페이지를 열고 사용 중인 Windows 버전에 해당하는 ZIP 파일을 다운로드한 후 압축을 풉니다.

1. 명령 프롬프트를 열고 `EasyRSA-3.x` 폴더가 추출된 위치로 이동합니다.

1. 다음 명령을 실행하여 EasyRSA 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 셸을 종료합니다.

   ```
   # 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. 만료 명령을 실행합니다.

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

# Single Sign-On — SAML 2.0 기반 페더레이션 인증 — Client VPN
<a name="federated-authentication"></a>

AWS Client VPN 는 Client VPN 엔드포인트에 대해 Security Assertion Markup Language 2.0(SAML 2.0)을 사용한 ID 페더레이션을 지원합니다. SAML 2.0을 지원하는 자격 증명 공급자(IdP)를 사용하여 중앙 집중식 사용자 자격 증명을 생성할 수 있습니다. 그런 다음 SAML 기반 연동 인증을 사용하도록 Client VPN 엔드포인트를 구성하고 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에 대한 Single Sign-On에 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에서 생성된 메타데이터 문서를 사용하여 신뢰 AWS 관계를 위한 조직의 IdP를 정의합니다. 자세한 내용은 *IAM 사용 설명서*의 [IAM SAML 자격 증명 공급자 생성](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_create_saml.html)을 참조하십시오. 나중에 IdP에서 앱 구성을 업데이트하는 경우 새 메타데이터 문서를 생성하고 IAM SAML 자격 증명 공급자를 업데이트합니다.
**참고**  
IAM SAML 자격 증명 공급자를 사용하기 위해 IAM 역할을 생성할 필요가 없습니다.

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/ko_kr/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 and NotOnOrAfter" 조건만 지원합니다.
+ SAML 응답에 대해 지원되는 최대 크기는 128KB입니다.
+ AWS Client VPN 는 서명된 인증 요청을 제공하지 않습니다.
+ SAML 단일 로그아웃은 지원되지 않습니다. 사용자는 AWS 제공된 클라이언트에서 연결을 해제하여 로그아웃하거나 [연결을 종료할 수 있습니다](cvpn-working-connections-disassociate.md).
+ Client VPN 엔드포인트는 단일 IdP만 지원합니다.
+ Multi-Factor Authentication(MFA)은 IdP에서 활성화될 때 지원됩니다.
+ 사용자는 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 제공된 클라이언트는 SAML 응답을 위해 사용자의 디바이스에 TCP 포트 35001을 예약합니다.
+ IAM SAML 자격 증명 공급자에 대한 메타데이터 문서가 잘못되거나 악의적인 URL로 업데이트되면 사용자에게 인증 문제가 발생하거나 피싱 공격이 발생할 수 있습니다. 따라서 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 리디렉션 바인딩을 통해 IdP에 AuthN 요청을 보냅니다. 따라서 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 Single Sign-On(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 | [인증 및 권한 부여를 AWS Client VPN 위해에서 IAM Identity Center 사용](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 서비스 공급자 정보를 구성합니다.
+ Assertion Consumer Service(ACS) URL: `http://127.0.0.1:35001`
+ 대상 URI: `urn:amazon:webservices:clientvpn`

IdP의 SAML 응답에는 하나 이상의 속성이 포함되어야 합니다. 다음은 속성 예시입니다.


| 속성 | 설명 | 
| --- | --- | 
| FirstName | 사용자의 이름입니다. | 
| LastName | 사용자의 성입니다. | 
| memberOf | 사용자가 속한 그룹입니다. | 

**참고**  
`memberOf` 속성은 Active Directory 또는 SAML IdP 그룹 기반 권한 부여 규칙을 사용하는 데 필요합니다. 속성은 대/소문자를 구분하며 지정된 대로 정확하게 구성해야 합니다. 자세한 내용은 [네트워크 기반 권한 부여](client-authorization.md#auth-rules) 및 [AWS Client VPN 권한 부여 규칙](cvpn-working-rules.md) 섹션을 참조하세요.

### 셀프 서비스 포털에 대한 지원
<a name="saml-self-service-support"></a>

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

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 엔드포인트를 생성할 때 Client VPN 엔드포인트에 적용할 특정 VPC의 보안 그룹을 지정할 수 있습니다. 서브넷을 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)을 참조하십시오.

VPC 보안 그룹에 대한 자세한 내용은 *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 another rule**]을 선택합니다.

1. **Type**에서 **All traffic**을 선택합니다. 또는 **SSH**와 같은 특정 유형의 트래픽에 대한 액세스를 제한할 수 있습니다.

   **Source(소스)**에서 Client VPN 엔드포인트의 대상 네트워크(서브넷)와 연결된 보안 그룹의 ID를 지정합니다.

1. **규칙 저장**을 선택합니다.

# 의 연결 권한 부여 AWS Client VPN
<a name="connection-authorization"></a>

Client VPN 엔드포인트에 대한 *클라이언트 연결 핸들러*를 구성할 수 있습니다. 핸들러를 사용하면 디바이스, 사용자 및 연결 속성을 기반으로 새 연결을 인증하는 사용자 지정 논리를 실행할 수 있습니다. Client VPN 서비스가 디바이스와 사용자를 인증한 후에 클라이언트 연결 핸들러가 실행됩니다.

Client VPN 엔드포인트에 대한 클라이언트 연결 핸들러를 구성하려면 디바이스, 사용자 및 연결 속성을 입력으로 사용하고 결정을 Client VPN 서비스에 반환하여 새 연결을 허용하거나 거부하는 AWS Lambda 함수를 생성합니다. Client VPN 엔드포인트에서 Lambda 함수를 지정합니다. 디바이스가 Client VPN 엔드포인트에 연결되면 클라이언트 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 함수가 호출되고 클라이언트 VPN 서비스가 함수에서 예상 응답을 받지 못하면 클라이언트 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 함수는 디바이스 속성, 사용자 속성 및 연결 특성을 클라이언트 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` - 운영 체제 버전입니다. 클라이언트 VPN 서비스는 클라이언트가 Client VPN 엔드포인트에 연결할 때 및 클라이언트가 Windows 플랫폼을 실행 중일 때 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 함수가 디바이스 권한 부여 핸들러로 작동하려면 [상호 인증](mutual.md)을 Client VPN 엔드포인트에 사용합니다. Client VPN 엔드포인트에 연결할 각 클라이언트(디바이스)에 대해 고유한 클라이언트 인증서 및 키를 생성합니다. Lambda 함수는 클라이언트 VPN 서비스에서 전달된 클라이언트 인증서의 고유한 일반 이름을 사용하여 디바이스를 식별하고 디바이스 관리 솔루션에서 해당 규정 준수 태세 상태를 가져올 수 있습니다. 사용자 기반 인증과 결합된 상호 인증을 사용할 수 있습니다.

또는 Lambda 함수 자체에서 기본 태세 평가를 수행할 수 있습니다. 예를 들어 클라이언트 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 리소스 이름(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/ko_kr/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을 통해 모든 트래픽을 라우팅하는 기본 동작과 다릅니다.
**참고**  
분할 터널 모드를 사용할 때 Client VPN 엔드포인트의 라우팅 테이블에 0.0.0.0/0 경로를 추가하면 연결이 중단될 수 있으므로 권장되지 않습니다.
+ 분할 터널 모드가 활성화된 상태에서 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>

연결 로깅은 Client VPN 엔드포인트에 대한 *연결 로그*를 캡처할 수 있도록 해주는 AWS 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` - 연결 기간(초)입니다. 'connection-start-time'과 'connection-end-time'의 차이와 같습니다.

연결 로깅 활성화에 대한 자세한 내용은 [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 범위를 지정해야 합니다. 이는 a/ 12부터 /22 넷마스크 사이의 IPv4 CIDR 블록입니다. Client VPN 엔드포인트에 대한 각각의 VPN 연결에 클라이언트 CIDR 범위의 고유한 IP 주소가 하나씩 할당됩니다. 클라이언트 CIDR 범위 내 주소 중 일부분은 Client VPN 엔드포인트의 가용성 모델을 지원하는 데도 사용되므로, 클라이언트에 할당될 수 없습니다. Client VPN 엔드포인트를 생성한 후에는 클라이언트 CIDR 범위를 변경할 수 없습니다.  
일반적으로 Client VPN 엔드포인트에서 지원하고자 하는 IP 주소(및 그에 따른 동시 연결) 수의 두 배를 포함하는 클라이언트 CIDR 범위를 지정하는 것이 좋습니다.

**연결된 서브넷 수**  
Client VPN 엔드포인트를 [서브넷과 연결](cvpn-working-target.md)하면 사용자에게 Client VPN 엔드포인트에 대한 VPN 세션을 설정하도록 지원하는 것이 됩니다. Client VPN 엔드포인트 한 개에 여러 개의 서브넷을 연결하여 고가용성을 지향할 수 있으며, 이렇게 하면 추가적인 연결 용량을 지원할 수도 있습니다.  
다음은 Client VPN 엔드포인트의 서브넷 연결 수를 바탕으로 지원되는 동시 VPN 연결 수를 나타낸 것입니다.      
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/vpn/latest/clientvpn-admin/scaling-considerations.html)

동일한 가용 영역의 여러 서브넷을 한 Client VPN 엔드포인트와 연결할 수 없습니다. 따라서, 서브넷 연결 수는 AWS 리전에서 이용 가능한 가용 영역의 수에도 좌우됩니다.

예를 들어 Client VPN 엔드포인트에 대하여 8,000개의 VPN 연결을 지원할 것으로 예상하는 경우, `/18`(IP 주소 16,384개)에 상당하는 최소 클라이언트 CIDR 범위 크기를 지정한 다음 해당 Client VPN 엔드포인트와 최소 2개의 서브넷을 연결합니다.

Client VPN 엔드포인트에 예상되는 VPN 연결 수를 잘 모르는 경우, 크기가 `/16`인 CIDR 블록 또는 그보다 크게 지정하는 것이 좋습니다.

클라이언트 CIDR 범위 및 대상 네트워크를 다룰 때 적용되는 규칙과 한계에 관한 자세한 내용은 [사용에 대한 규칙 및 모범 사례 AWS Client VPN](what-is-best-practices.md)을(를) 참조하세요.

Client VPN 엔드포인트의 할당량에 대한 자세한 정보를 [AWS Client VPN 할당량](limits.md)을(를) 참조하세요.