[AWS] 서버 보안 : 팀원의 EC2 접근, 어떻게 열어줘야 할까?

2025. 3. 28. 14:40·백엔드 개발
반응형

AWS에서 프라이빗 서브넷에 EC2를 배포하고 Bastion Host를 통해 관리자가 SSH 접속하는 구조는 보안성과 실용성 면에서 굉장히 유리하다.
하지만 실무에서는 혼자만 접속하는 게 아니라, 팀원 혹은 다른 개발자와도 EC2를 함께 사용해야 하는 상황이 생긴다.

"팀원이 내 EC2에 접속하려고 하는데, PEM 키는 공유해도 되는 걸까?"
답은 절대 아니다.

 

이번 글에서는 개발자에게 받은 Public Key를 활용해 별도의 EC2 사용자 계정(backend-dev)을 만들고, Bastion Host를 통해 접속할 수 있도록 구성하는 과정을 소개한다.


왜 PEM 키를 공유하면 안될까?

PEM 키는 EC2 인스턴스의 루트 권한에 해당하는 키로, 이를 공유하는 건 비밀번호를 공유하는 것보다 더 위험하다.

1. 접속자 추적이 불가능해지고,
2. 보안 사고 발생 시 책임 소재 파악도 어려워지는 명확한 보안위험성이 있다.

그래서 실무에서는 팀원에게 공개키(Public Key)를 요청해서 등록하는 방식을 사용한다.
더 나아가, 접속하는 유저를 분리하여 EC2 인스턴스에 대한 권한을 최소권한으로 설정한다.

 

EC2 접근 흐름 (요약)

  • 관리자: 기존 PEM키 기반 Bastion Host 통해 EC2 접속 가능
  • 팀원(개발자): 개인 SSH 키 쌍 생성 (로컬) → 관리자에게 공개키 제공
  • 관리자: EC2 개발자 계정 생성 -> EC2 개발자 계정 팀원 공개키 등록
  • 팀원(개발자): 개인 SSH PEM 키 기반 Bastion Host 통해 EC2 접속

관리자, 팀원 EC2 공개키 등록방법

1. 팀원이 공개키 생성 및 전달

팀원(개발자)는 로컬 CLI에서 아래 프롬프트로 개인 SSH 키 쌍 생성한다.

ssh-keygen -t rsa -b 4096 -C "팀원이름 | 개발직군"

 

생성된 SSH 키 쌍의 Public key 내용을 조회

cat ~/.ssh/id_rsa.pub

 

아래와 같이 Public Key 내용 전체를 복사 후, 관리자에게 전달하면 된다.

 

2. Bastion Host 통해 EC2 접속 (관리자)

관리자는 기존처럼 PEM 키를 이용해 EC2에 접속한다.

ssh -i my-key.pem ec2-user@<bastion-host-ip> ssh ec2-user@<private-ec2-ip>

 

3. EC2에 팀원 계정(backend-dev) 생성

팀원(백엔드 개발자) 계정 생성

sudo adduser backend-dev

 

팀원(개발자) 계정에 SSH 공개 키 등록
sudo mkdir /home/backend-dev/.ssh
sudo nano /home/backend-dev/.ssh/authorized_keys

 

nano 편집창에 전달받은 팀원의 공개키 텍스트 내용을 authorized_keys에 붙여넣기

OS 리눅스 기준 Ctrl + X + Y + Enter 로 저장

 

4. 팀원의 SSH 접속 가이드

팀원은 자신의 프라이빗 키를 사용해서 다음처럼 접속이 가능하다.

ssh -i ~/.ssh/id_rsa backend-dev@<bastion-host-ip> -J ec2-user@<private-ec2-ip>

 

백엔드 프라이빗 EC2 환경이면, 다음처럼 RDS에 접속할 수 있다.

ssh -i ~/.ssh/id_rsa -L 3306:<RDS 엔드포인트>:3306 -J 
backend-dev@<Bastion Host IP> backend-dev@<Private EC2 IP>

 

해당 방식은 SSH 터널링으로 우회하여 프라이빗 RDS에 접근한다.

SSH 터널링으로 접근 시, 로컬 포트를 AWS 내부 리소스 RDS와 연결된다.

 

결과적으로 개발자는 로컬에서 DB URL를 localhost:3306에 접속하면
Bastion Host -> 프라이빗 EC2 -> RDS로 최종 연결된다.

 

보안과 협업의 균형

  • EC2 인스턴스 내 권한을 유저별로 나누면 작업 추적이 용이하고, 실수로 인한 사고를 줄일 수 있다.
  • backend-dev 계정은 기본적으로 sudo 권한이 없다. 필요하다면 sudo 그룹에 추가하거나 제한된 명령어만 허용한다.
  • 다중 유저 환경에서 auditd, history, authorized_keys 주기적 관리도 추천하고 있다.

마치는 글

프라이빗 EC2는 Bastion Host를 통해 접속하는 것만으로도 이미 기본 보안이 갖춰진 구조지만,
팀 단위 협업 환경이라면 계정 분리와 SSH 공개키 등록을 통해 더 탄탄한 구조로 발전 시킬 수 있다.

 

이는 단순한 편의성이나 보안 강화 차원을 넘어,

실무에서 자주 언급되는 ""최소 권한 원칙(Least Privilege Principle)""을 실현하는 중요한 접근 방식이다.

즉, 각 팀원이 자신에게 필요한 범위 내에서만 접근하고 작업할 수 있도록 제한함으로써,

보안 사고의 가능성을 줄이고, 책임 있는 협업 환경을 만드는 기반이 된다.

 

보안을 지키면서도 유연하게 협업할 수 있느 구조

이게 바로, AWS에서의 "접근 설계"가 가져다주는 가치이다.

 

조직 구조도 이해관계 / 신뢰관계

더 나아가 이런 구조는 단순히 기술적인 통제를 넘어, 조직 내에서의 ""이해와 신뢰""에 기반한 협업 문화를 가능하게 한다.

신뢰는 통제 없는 자유에서가 아니라, 서로의 역할과 책임이 명확할 때 더 단단해진다.

 

서비스 프로덕트 차원에서, 리스크 관리는 외부적 요인도 있지만, 내부적 요인도 있다는 것

우리는 ""최소 권한 원칙""에 기반해 내부통제를 수행할 수 있다. VPC, 직군별, 접근방식 분리를 통해 이를 수행할 수 있다.

반응형

'백엔드 개발' 카테고리의 다른 글

[CI/CD] self-hosted runner 기반 EC2 자동화 배포 구축하기  (0) 2025.04.10
[DevOps 실무] 프로젝트 관리 효율을 2배 높이는 폴더 정리법  (1) 2025.04.06
[AWS] 서버 보안 : Bastion Host 기반 Private EC2 구축하기  (0) 2025.03.28
[AWS] VPC로 클라우드 리소스 보호하기  (2) 2025.03.16
[CI/CD] AWS EC2 자동화 배포 파이프라인 구축하기  (0) 2025.01.25
'백엔드 개발' 카테고리의 다른 글
  • [CI/CD] self-hosted runner 기반 EC2 자동화 배포 구축하기
  • [DevOps 실무] 프로젝트 관리 효율을 2배 높이는 폴더 정리법
  • [AWS] 서버 보안 : Bastion Host 기반 Private EC2 구축하기
  • [AWS] VPC로 클라우드 리소스 보호하기
욱22
욱22
우기의 모든 걸 기록합니다.
    반응형
  • 욱22
    우기 때 만나요
    욱22
  • 전체
    오늘
    어제
    • 우기 때 만나요 (263)
      • 💭 경험&생각 (48)
      • 🌤 일상&취미 (12)
      • 📖 북로그 (29)
      • 백엔드 개발 (27)
      • 📚 스터디 (33)
        • 비즈니스 (0)
        • 프론트엔드 (9)
        • 디자인 (4)
        • 데이터베이스 (8)
        • 데이터 분석 (0)
        • 인공지능 (2)
        • 알고리즘 (10)
      • CS 대학강의 (78)
      • 🌤 프로젝트 (0)
        • UMC 2기: 동네 (15)
        • UMC 3기: 당신의 발자취 (6)
        • ERICA: 스타트업톤 (9)
        • ERICA: 또래튜터링 (2)
      • 🌤 대외활동 (5)
  • 링크

    • Github
  • 인기 글

  • 최근 글

  • 태그

    디자인
    자료구조
    객체지향 프로그래밍
    대학생 대외활동
    java
    드럼 레슨
    생각정리
    드럼
    AWS
    파이썬
    디자인베이스
    백준
    자기계발
    스폭크루
    대학생 개발 프로젝트
    안드로이드
    오블완
    창업
    Kotlin
    티스토리챌린지
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.1
욱22
[AWS] 서버 보안 : 팀원의 EC2 접근, 어떻게 열어줘야 할까?
상단으로

티스토리툴바