Photo by Sandy Millar on Unsplash
소개
안녕하세요. WATCHA에서 서버 개발을 하고 있는 Allan 입니다. 이번 포스팅은 이전 포스팅에 이어서 WATCHA 에서 AWS 서버에 접속하는 방법에 대해서 이야기 해보고자 합니다.
현재 WATCHA에서는 3가지 방법을 이용해서 서버에 접속하고 있습니다.
AWS Systems Manager(SSM) Session Manager
SSH(WITH SSH 인증서버)
AWS Systems Manager(SSM) Session Manager 를 통한 SSH(With SSH 인증서버)
위 방법을 이용하는 방식은 내부적으로 개발된 CLI(allakey) 와 SSH 인증서버(bintang)로 편리하게 이용할 수 있으며, 해당 프로그램은 Golang으로 개발되어 있습니다. (allakey, bintang 은 내부 프로젝트 명입니다.)
그럼 3가지 방법에 대해 하나씩 설명해 보도록 하겠습니다.
1. AWS Systems Manager(SSM) Session Manager
SSM Session Manager는 EC2에 설치된 SSM Agent를 통하여 암호화된 연결을 통하여 Interactive Shell 을 제공하는 방식입니다.
해당 방식을 이용하게 되면 SSH 키 설정 및 SSH 포트를 오픈 하지 않고도 이용할수 있어 조금 더 보안측면에서 좋습니다.
또한 IAM을 이용한 권한 관리로 접근 제어가 가능하며, 실행된 명령어 및 응답들도 S3 버킷에 로깅으로 남아서 보안 및 추적 용으로도 좋습니다.
접속 방식은 브라우저에서 AWS Console 또는 터미널에서 AWS CLI + SSM 플러그인을 통하여 터미널에서 접속이 가능합니다.
개발자의 경우에는 터미널을 많이 이용하는데, 이 때 외우기 힘든 실행 명령어 와 EC2 InstanceID를 알아야만 접근할 수 있어서 굉장히 불편합니다.
그래서 내부에서 개발한 CLI(allakey)를 통하여 간단한 명령어로 터미널 Interactive UI 를 실행시켜, 쉽게 서버를 선택하고 접속할 수 있도록 하고 있습니다.
allakey를 이용한 ssm 접속
2. SSH(WITH SSH 인증서버)
이 방식은 OPENSSH 5.4 이후 부터 지원하는 SSH Certificates를 이용하여 CA(Certificate Authority)를 통해 서명한 SSH Public Key를 이용해서 접속하는 방식입니다. (쉽게 설명하면, SSL(TLS) 인증서 방식을 생각하시면 됩니다.)
이 방식을 이용하게 되면, 서버 유저(ec2-user, ubuntu … 등), 시간제한(예: 1시간, 6시간, 1일) 등을 서명 시 적용하여 SSH 접속을 제한할수 있습니다.
해당 방식을 이용한 SSH 접속 방식은 Facebook, Uber, Netflix 등 규모가 큰 회사들도 SSH 키 권한 관리를 위해 활용하고 있습니다.
WATCHA에서는 CLI(allakey)를 이용하여 요청한 개발자의 AWS IAM 유저 권한 및 그룹을 체크한후, 유저 권한(ec2-user, ubuntu … 등)과 시간제한(1시간, 1일 … 등 )이 적용된 SSH Certification 을 발급해주는 SSH 인증서버(bintang)를 운영하고 있습니다.
allakey 와 SSH 인증서버(bintang) 이용한 SSH 접속
CLI(allakey)를 이용하여 SSH 인증서버(bintang)에 요청하면, 요청 유저 AWS 권한을 체크한 후 시간제한 및 권한이 적용된 SSH 인증서와 키를 발급해주고 자동으로 로컬 PC의 ssh-agent 에 등록하게 됩니다. 그래서 따로 SSH Key 파일 인자를 넘겨줄 필요 없이 편하게 SSH 접속을 할 수 있습니다.
3. AWS Systems Manager(SSM) Session Manager를 통한 SSH(With SSH 인증서버)
이 방식은 위 1번과 2번 방식을 동시에 이용한 방법입니다. 해당 방식을 이용하면 아래와 같은 장점이 있습니다:
SSH 포트(22)를 외부에 오픈 하지 않아도 SSH 이용이 가능하여 보안 향상 (SSM Session Manager 보안 채널을 Proxy로 이용한 SSH 접속)
SSM Session Manager에서는 사용할 수 없는 SCP 를 이용 가능
SSH만 이용했을때 쉽지 않은 추적 및 로깅이 가능
WATCHA에서는 CLI(allakey)를 이용하여 SSH Certification을 발급 받은 후, CLI(allakey)를 이용하여 SSM Session Manager를 통한 SSH 또는 SCP를 손쉽게 이용할수 있습니다.
allakey를 이용한 SSM Session Manager를 통한 SSH 연결
결론
WATCHA에서는 주로 1. SSM Session Manager 와 3. SSM Session Manager를 통한 SSH 방식을 활용하고 있습니다.
SSH 포트를 외부에 오픈하거나 동일한 SSH KEY 를 여러 사람에게 공유하게 되면 보안이 취약해 질 수 있어 지양하고 있습니다.
그래서 위 방식(1번, 3번)과 CLI(allakey)를 이용하게 되면 보안측면에서도 안전하며 손쉽게 서버에 접근이 가능합니다. 게다가 요즘과 같은 COVID-19 확산에 따른 재택근무 전환 시에도 보안 이슈 없이 사무실과 동일한 환경으로 접속이 가능합니다.
SSM Session Manager를 이용하는 일부 기능을 이곳에서 오픈소스로 제공하고 있으며, 추후 SSH 인증서버와 클라이언트도 오픈소스로 제공해 보도록 하겠습니다.
다음 포스팅은 COVID-19 확산에 따른 재택근무를 위해 개발한 WATCHA VPN 서버에 대해 포스팅 해보도록 하겠습니다.
긴 글 읽어 주셔서 감사합니다.
WATCHA에서는 다양한 기술들을 활용해 서비스를 지속적으로 개선, 발전시켜 갈 실력 있고 뜻있는 개발자들을 모집하고 있습니다. 관심있는 분은 채용공고를 참고해주세요.