본문 바로가기
CSP (Cloud Service Provider)/AWS

[AWS] Lambda Connection Handler

by BTC_One 2024. 6. 17.

베하! 1-tier팀의 One입니다.

그간 바쁜 업무로 인해 포스팅을 많이 하지 못했는데요 오늘 그간 밀려 있던 포스팅을 열심히 해보려고 합니다.

 

업무 중에 새로 습득한 지식을 마구 마구 방출 할 예정인데요 😊😊

모두 모두 집중 해주세요 👀

 

4월에 아주 좋은 기회로 AWS workshop에 참석하게 되었는데요!

그때 알게된 서비스에 대해 설명해보려고 합니다.

 

Lambda Connection Handler

AWS상에서 네트워크 리소스에 접근 할때, 보안을 위해 VPN을 많이 사용하는데요,

원격 근무자가 AWS 환경에 연결된 네트워크에 안전하게 접속하기 위해 Client VPN을 사용합니다.

 

만약 원격 접속하려는 근무자가 많을 경우, 관리자가 이를 다 관리하기 힘들텐데요

이때 Lambda Connection Handler를 사용하여 추가적인 보안 정책 및 VPN 운영 정책을 관리하고 적용할 수 있습니다! 

 

Handler는 AWS 람다 기능을 통해 구현되며, 사전에 정책들을 검토하고 정책이 통과되었을 경우에만 새 연결을 맺을 수 있게 구성을 할 수 있습니다.

 

예를 들어, 지정 시간에만 접속을 허용하는 간단한 정책을 구성해봅시다.

 

1. 먼저 Lambda 콘솔에서 정책에 사용 할 함수를 생성해줍니다.

 

2. 생성 시 "Author form scratch" 옵션으로 선택합니다.

참고로 Lambda 함수의 이름은 AWSClientVPN로 시작해야 커넥션 핸들러로 사용이 가능합니다.

 

3. 함수를 생성하고, 해당 함수의 handler에 아래의 python 코드를 붙여넣습니다.

import datetime

def is_weekday():
    week_index = datetime.datetime.today().weekday()
    if week_index < 5:
        return True
    return False

def lambda_handler(event, context):
    allow = False
    error_msg = "You are not allowed to connect on a weekend day."
    if is_weekday():
        allow = True
    return {
        "allow": allow,
        "error-msg-on-failed-posture-compliance": error_msg,
        "posture-compliance-statuses": [],
        "schema-version": "v1"
    }

해당 코드는 지정된 시간(주중)에만 연결을 허용하고, 주중이 아닐 경우 "You are not allowed to connect on a weekend day" 라는 문구를 반환하는 코드입니다. 

 

4. Deploy 버튼을 눌러 변경 사항을 저장 후 VPC 콘솔로 이동하여 Client VPN Endpoing 설정을 변경합니다.

정책을 적용할 CVPN-endpoint를 선택하고 Actions -> Modify client VPN endpoint를 선택합니다.

 

5. Client connect handler 메뉴로 이동하여 "Enable client connect handler" 옵션을 On 한 뒤 ARN에서 방금 생성한 함수를 선택합니다.

 

6. 모든 설정을 완료하고, VPN Client 정책에 반하는 조건으로 접속 시 아래와 같은 에러 메시지가 반환됩니다. 

 

상황에 맞게 잘 활용하면 좋겠죠 ?!

다음 포스팅에서 만나요~

댓글