보안은 시험 비중이 가장 큰 영역(30%)이고, 그 모든 답의 출발점이 공동 책임 모델이다. "이건 AWS가 해주나, 내가 해야 하나?"에 답할 수 있으면 시험 문제의 상당수가 풀린다. 가장 유명한 한 줄 요약은 이렇다 — AWS는 클라우드 자체(of the cloud)의 보안을 책임지고, 고객은 클라우드 안(in the cloud)의 보안을 책임진다.
AWS 책임 (Security OF the Cloud): 데이터센터 물리 보안, 서버 하드웨어, 네트워크 인프라, 가상화 계층, 관리형 서비스의 기반 소프트웨어.
고객 책임 (Security IN the Cloud): 데이터 자체, 데이터 암호화 설정, 운영체제·애플리케이션 패치(EC2의 경우), 네트워크 방화벽 규칙, IAM을 통한 접근 권한 관리.
항목
책임 주체
데이터센터 출입 통제
AWS
EC2 인스턴스의 OS 패치
고객
물리 서버 폐기 시 디스크 파기
AWS
S3 버킷에 올린 데이터의 접근 권한
고객
IAM 사용자/비밀번호 정책
고객
하이퍼바이저(가상화 계층) 보안
AWS
책임 경계는 서비스 유형에 따라 이동한다. EC2(IaaS)는 OS 패치까지 고객 몫이지만, RDS·Lambda 같은 관리형 서비스로 갈수록 AWS가 더 많은 운영을 책임진다. "관리형일수록 AWS 책임이 커진다"가 핵심 패턴이다. 단, 데이터와 접근 권한은 어떤 서비스든 항상 고객 책임이다.
경계선은 고정된 벽이 아니라 서비스 종류에 따라 위아래로 움직이는 선이다. 내가 직접 다룰 것이 많은 서비스일수록 고객 몫이 늘고, AWS가 알아서 해주는 서비스일수록 AWS 몫이 는다.
내가 쓰는 방식
예시
운영체제 패치
엔진·런타임 관리
내 데이터와 권한
가상 서버를 직접 운영
EC2
고객
고객
고객
관리형 데이터베이스
RDS
AWS
AWS
고객
서버 없이 코드만 실행
Lambda
AWS
AWS
고객
완성된 저장소 사용
S3
AWS
AWS
고객
표의 맨 오른쪽 열을 세로로 훑어본다. 어느 줄에서도 "AWS"로 바뀌지 않는다. 데이터와 접근 권한은 무슨 서비스를 쓰든 끝까지 고객 몫이다. 이 한 줄이 오늘 배우는 내용 중 시험 판단에 가장 널리 쓰인다.
⚠️ 함정: "관리형 서비스를 쓰면 보안은 신경 쓸 필요가 없다" 같은 선택지는 오답이다. RDS를 쓰면 엔진 패치는 AWS가 해주지만, 누가 접속할 수 있는지, 데이터를 암호화할지는 여전히 고객이 정한다. "S3는 AWS가 운영하니 데이터 유출 책임도 AWS에 있다"도 같은 이유로 오답이다.
한 온라인 교육 스타트업이 수강생 자료를 S3에 백업하면서, 개발 편의를 위해 버킷을 잠깐 "누구나 읽기 가능"으로 열어두고는 그대로 잊어버렸다. 시간이 지나 백업 파일이 외부에 노출되며 사고가 됐다. 이때 AWS 인프라에는 아무 문제가 없었다 — 데이터센터도, 가상화 계층도, S3 서비스 자체도 정상이었다. 원인은 고객이 바꿔 놓은 설정 하나였고, 책임도 전적으로 고객에게 있었다. 공동 책임 모델을 "누구를 탓할지"가 아니라 "내가 점검해야 할 목록"으로 읽어야 하는 이유다.
AWS는 건물을 지키고, 나는 내 집 문을 잠근다. 건물 관리를 맡기게 되어 훨씬 편해졌지만, 내 집 문을 잠그는 일까지 대신해 주지는 않는다.
사용자가 세 명일 때는 한 명씩 권한을 줘도 된다. 서른 명이 되면 이야기가 달라진다. 개발자 12명에게 똑같은 권한을 하나씩 따로 붙여 놨다고 가정한다. 개발팀 전체에 새 권한이 필요해지면 같은 작업을 12번 반복해야 하고, 한 명을 빠뜨리면 "왜 나만 안 되지?"가 시작된다. 반대로 "개발자" 그룹에 정책 하나를 붙여두면 수정도 한 번이면 끝나고, 새 팀원은 그룹에 넣기만 하면 된다.
⚠️ 함정: 그룹은 사용자만 담을 수 있다. 그룹 안에 다른 그룹을 넣어 계층 구조를 만들 수는 없다. 또 그룹 이름으로 로그인하거나 그룹에 액세스 키를 발급받을 수도 없다 — 그룹은 권한을 묶어두는 상자일 뿐 자격 증명이 아니다.
직원 40명 규모의 한 물류 회사가 AWS로 옮기면서 초기에는 편의상 계정 하나를 팀 전체가 공유했다. 어느 날 배포 실수로 서버가 삭제됐는데, 기록을 열어보니 모든 작업이 같은 계정 이름으로 남아 있어 누가 무엇을 했는지 구분할 수 없었다. 이후 이 회사는 사람마다 IAM 사용자를 만들고 직무별 그룹으로 권한을 나눴다. 계정 공유가 위험한 이유는 권한이 넓어서만이 아니라 책임이 흐려지기 때문이다.
사용자는 사원증을 발급받은 개인이고, 그룹은 비슷한 사람끼리 묶어 관리하는 단위다. 서비스에는 임시 출입증(역할)을 빌려주고, 열 수 있는 문의 목록은 정책에 적는다.
"쓰지 말라"고만 하면 "그럼 왜 있나" 싶어진다. 루트 사용자는 계정 그 자체에 관한 일부 작업에 필요하다. 계정 설정 변경, 지원 플랜 변경, 계정 해지 같은 일들이다. 자주 생기는 일이 아니므로 평소에는 잠가두고 필요할 때만 꺼내 쓰는 것이 원칙이다.
1. 계정 생성 → 루트 사용자가 생김
2. 루트에 MFA 활성화 ← 가장 먼저 할 일
3. 관리자용 IAM 사용자 생성
4. 이후 일상 작업은 전부 IAM 사용자로
5. 루트 자격 증명은 금고에 넣듯 보관
집으로 치면 루트는 모든 문을 여는 마스터키다. 금고에 넣어두고, 평소 출입은 각자의 열쇠로 한다.
함정: "루트 사용자에게 최소 권한 정책을 붙여 권한을 제한한다" 같은 선택지가 보이면 오답이다. 루트는 권한을 깎아서 안전하게 만드는 대상이 아니라 아예 쓰지 않는 방식으로 보호한다. 마찬가지로 "루트 액세스 키를 만들어 자동화에 사용한다"도 어떤 상황에서든 오답이다.
"일단 관리자 권한을 주고 문제가 생기면 줄이자"는 유혹이 크다. 현실에서는 줄이는 날이 오지 않는다. 권한을 회수하려면 "이 사람이 지금 무엇을 쓰고 있는지"를 전부 알아야 하는데, 그 확인 비용이 애초에 좁게 주는 비용보다 훨씬 크기 때문이다. 그래서 순서를 뒤집는다 — 최소한만 주고, 부족하다는 요청이 오면 그때 더한다.