연결 권한 부여 - AWS 클라이언트 VPN

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

연결 권한 부여

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

Client VPN 엔드포인트에 대한 클라이언트 연결 핸들러를 구성하려면 디바이스, 사용자 및 연결 속성을 입력으로 사용하고 결정을 Client VPN 서비스에 반환하여 새 연결을 허용하거나 거부하는 AWS Lambda 함수를 생성합니다. Client VPN 엔드포인트에서 Lambda 함수를 지정합니다. 디바이스가 Client VPN 엔드포인트에 연결되면 클라이언트 VPN 서비스가 사용자를 대신하여 Lambda 함수를 호출합니다. Lambda 함수가 권한을 부여한 연결만 Client VPN 엔드포인트에 연결하도록 허용됩니다.

참고

현재 지원되는 유일한 클라이언트 연결 핸들러 유형은 Lambda 함수입니다.

요구 사항 및 고려 사항

다음은 클라이언트 연결 핸들러에 대한 요구 사항 및 고려 사항입니다.

  • Lambda 함수의 이름은 AWSClientVPN- 접두사로 시작해야 합니다.

  • 정규화된 Lambda 함수가 지원됩니다.

  • Lambda 함수는 클라이언트 VPN 엔드포인트와 AWS 동일한 지역 및 AWS 동일한 계정에 있어야 합니다.

  • Lambda 함수는 30초 후에 시간 초과됩니다. 이 값은 변경할 수 없습니다.

  • Lambda 함수는 동기식으로 호출됩니다. 이 함수는 디바이스 및 사용자 인증 후 권한 부여 규칙을 평가하기 전에 호출됩니다.

  • 새 연결에 대해 Lambda 함수가 호출되고 클라이언트 VPN 서비스가 함수에서 예상 응답을 받지 못하면 클라이언트 VPN 서비스가 연결 요청을 거부합니다. 예를 들어, Lambda 함수가 제한되거나 시간 초과되거나 기타 예기치 않은 오류가 발생하거나 함수의 응답이 유효한 형식이 아닌 경우 이 문제가 발생할 수 있습니다.

  • 지연 시간의 변동 없이 확장할 수 있도록 Lambda 함수에 대해 프로비저닝된 동시성을 구성하는 것이 좋습니다.

  • Lambda 함수를 업데이트하더라도 Client VPN 엔드포인트에 대한 기존 연결은 영향을 받지 않습니다. 기존 연결을 종료한 다음 클라이언트에 새 연결을 설정하도록 지시할 수 있습니다. 자세한 정보는 클라이언트 연결 종료을 참조하세요.

  • 클라이언트가 AWS 제공된 클라이언트를 사용하여 Client VPN 엔드포인트에 연결하는 경우 Windows의 경우 버전 1.2.6 이상을 사용하고 macOS의 경우 버전 1.2.4 이상을 사용해야 합니다. 자세한 내용은 AWS 제공 클라이언트를 사용하여 연결을 참조하세요.

Lambda 인터페이스

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 | false)입니다.

  • error-msg-on-denied-connection - 필수입니다. Lambda 함수가 연결을 거부한 경우 클라이언트에 단계 및 지침을 제공하는 데 사용할 수 있는 최대 255자의 문자열입니다. Lambda 함수를 실행하는 동안 장애가 발생할 경우(예: 조절로 인해) 다음과 같은 기본 메시지가 클라이언트에게 반환됩니다.

    Error establishing connection. Please contact your administrator.
  • posture-compliance-statuses - 필수입니다. Lambda 함수를 태세 평가에 사용하는 경우 이 필드는 연결 디바이스의 상태 목록입니다. 디바이스의 태세 평가 범주(예: compliant, quarantined, unknown 등)에 따라 상태 이름을 정의합니다. 각 이름의 최대 길이는 255자입니다. 최대 10개의 상태를 지정할 수 있습니다.

  • schema-version - 필수입니다. 스키마 버전입니다. 기본값은 v3입니다.

동일한 리전의 여러 Client VPN 엔드포인트에 동일한 Lambda 함수를 사용할 수 있습니다.

Lambda 함수 생성에 대한 자세한 내용은 AWS Lambda 개발자 안내서AWS Lambda시작하기를 참조하세요.

태세 평가에 클라이언트 연결 핸들러 사용

클라이언트 연결 핸들러를 사용하여 Client VPN 엔드포인트를 기존 디바이스 관리 솔루션과 통합하여 연결 디바이스의 규정 준수 태세를 평가할 수 있습니다. Lambda 함수가 디바이스 권한 부여 핸들러로 작동하려면 상호 인증을 Client VPN 엔드포인트에 사용합니다. Client VPN 엔드포인트에 연결할 각 클라이언트(디바이스)에 대해 고유한 클라이언트 인증서 및 키를 생성합니다. Lambda 함수는 클라이언트 VPN 서비스에서 전달된 클라이언트 인증서의 고유한 일반 이름을 사용하여 디바이스를 식별하고 디바이스 관리 솔루션에서 해당 규정 준수 태세 상태를 가져올 수 있습니다. 사용자 기반 인증과 결합된 상호 인증을 사용할 수 있습니다.

또는 Lambda 함수 자체에서 기본 태세 평가를 수행할 수 있습니다. 예를 들어 클라이언트 VPN 서비스가 Lambda 함수에 전달하는 platformplatform-version 필드를 평가할 수 있습니다.

참고

연결 처리기를 사용하여 최소 AWS Client VPN 응용 프로그램 버전을 적용할 수 있지만 연결 처리기의 필드는 aws-client-version AWS Client VPN 응용 프로그램에만 적용할 수 있으며 사용자 장치의 환경 변수로 채워집니다.

클라이언트 연결 핸들러 활성화

클라이언트 연결 핸들러를 활성화하려면 Client VPN 엔드포인트을 생성하거나 수정하고 Lambda 함수의 Amazon 리소스 이름(ARN)을 지정합니다. 자세한 내용은 Client VPN 엔드포인트를 생성합니다.Client VPN 엔드포인트를 수정합니다. 단원을 참조하십시오.

서비스 연결 역할

AWS Client VPN 라는 계정에 서비스 연결 역할을 자동으로 생성합니다. AWSServiceRoleForClientVPNConnections 역할에는 Client VPN 엔드포인트에 연결할 때 Lambda 함수를 호출할 수 있는 권한이 있습니다. 자세한 정보는 Client VPN에 서비스 연결 역할 사용을 참조하십시오.

연결 권한 부여 실패 모니터링

Client VPN 엔드포인트 연결의 연결 권한 부여 상태를 볼 수 있습니다. 자세한 정보는 클라이언트 연결 보기을 참조하십시오.

클라이언트 연결 핸들러를 태세 평가에 사용하면 연결 로그에서 Client VPN 엔드포인트에 연결하는 디바이스의 태세 규정 준수 상태도 볼 수 있습니다. 자세한 정보는 연결 로깅을 참조하십시오.

디바이스가 연결 권한 부여에 실패하면 연결 로그의 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 - 연결 시도 중에 서비스 측 오류가 발생했습니다.