개인정보보호 위한 AWS 서비스 보안 가이드(1)
상태바
개인정보보호 위한 AWS 서비스 보안 가이드(1)
  • 데이터넷
  • 승인 2022.11.06 16:31
  • 댓글 0
이 기사를 공유합니다

IAM 사용자 대신 IAM 역할 사용 권고…MFA 적용·버킷 제어도 병행해야

[데이터넷] 개인이나 기업이 개인정보를 데이터센터 환경에서 처리할 수도 있지만, 다양한 최신 기술을 손쉽게 활용할 수 있는 아마존웹서비스(AWS)와 같은 클라우드 서비스를 이용한다면 보다 효율적으로 관리하고 필요에 따라 적절하게 활용할 수 있다. AWS는 고객이 보다 안전하게 개인정보를 클라우드 환경에서 처리할 수 있도록 다양한 보안 서비스를 제공하고 모범 사례를 공유하고 있다. 

신은수 AWS 코리아 보안 전문 솔루션즈 아키텍트
신은수 AWS 코리아 보안 전문 솔루션즈 아키텍트

‘개인정보보호법’에서 이야기하는 개인정보란 살아있는 개인에 관한 정보를 일컫는다. 이는 우리가 쉽게 생각할 수 있는 성명이나 주민등록번호처럼 개인을 특정할 수 있는 정보뿐만 아니라 다른 정보와 쉽게 결합해 개인을 특정할 수 있는 정보도 포함한다.

이에 더해 적절한 처리를 통해 개인을 특정할 수 없도록 처리한 ‘가명정보’도 개인정보의 일종이다. 이러한 개인정보는 조직이 서비스를 제공하기 위해 어떤 개인을 특정하는 용도로도 사용되지만, 최근 각광받고 있는 인공지능(AI)이나 머신러닝(ML)에 기반한 데이터 분석에도 활용되고 있다.

클라우드 환경에서 높은 수준의 보안을 적용하고 보안 모범 사례를 준수한다는 것은 비단 개인정보보호만을 위한 것은 아니다. 클라우드 서비스의 특성상 개인정보를 다루지 않더라도 클라우드 서비스를 관리하는 관리 계정이 유출되는 경우, 해당 계정의 권한을 악용하여 아마존 EC2 인스턴스를 랜섬웨어에 감염시켜 데이터 복구를 빌미로 막대한 금액을 요구한다거나 임의로 수많은 가상머신을 실행해 암호화폐 채굴에 사용하는 등 악의적인 행위에 노출될 위험이 높다.

즉 클라우드에서 높은 수준의 보안을 유지하고 보안 모범 사례를 준수한다는 것은 개인정보보호법에서 요구하고 있는 안전성 확보를 위한 조치의 일부가 될 수 있을 뿐만 아니라 외부의 위협으로부터 조직의 자산을 보호하고 안전한 서비스를 운영하기 위한 필수 요소라고 볼 수 있다.

개인정보보호법 준수를 위해 많은 기업들이 참고하는 개인정보보호위원회에서 고시한 ‘개인정보보호의 기술적/관리적 보호조치 기준’과 그 해설서를 보면 개인정보를 처리하는 조직에서 어떠한 기술적/관리적 보호조치를 구현해야 하는지 나타나 있다. 이와 같은 보호조치 기준과 해설서는 개인정보를 처리하는 온프레미스 환경에 대해서는 기술적/관리적 조치 방안에 대해 도움이 되는 정보들을 포괄한다.

하지만 AWS와 같은 클라우드 환경에서는 개인정보를 보호하기 위해 어떤 보호조치를 수행해야하는지 그 내용이 명확하지 않은 것이 현실이다. 따라서 정보통신서비스 제공회사의 개인정보보호 담당자 혹은 중소 규모의 보안담당자 입장에서는 AWS 환경에서 어떻게 서비스를 구성하고 운영하며 어떤 보호조치를 구현하는 것이 개인정보보호를 위한 안전한 조치인지 정확히 파악하기 어려운 경우가 많다.

본 기고에서는 이와 같은 AWS 사용자의 어려움에 도움이 될 수 있도록 AWS 계정을 포함한 AWS IAM(Identity and Access Management, 아이덴티티 및 접근 관리)에 대한 기본적인 설명과 함께 주요 AWS 서비스에 대한 보안 설정 모범 사례, 접근 제어, 암호화, 개인정보 유출 사례 분석 등을 통해 안전하게 AWS 클라우드를 서비스 이용하고 개인정보를 보호할 수 있는 방법에 대해 설명하겠다.

AWS IAM 서비스 사용자·역할 이해
AWS의 여러 보안 모범 사례를 설명하기에 앞서 IAM 서비스에서 사용하는 ‘IAM 사용자 및 역할’의 개념을 정의해보다. IAM 서비스는 AWS 환경에서 각종 서비스 설정 및 관리에 필요한 자격증명을 생성하고 각 자격증명에 권한을 부여할 수 있는 정책을 생성하는 서비스다.

AWS 사용자가 AWS 계정을 생성한 초기 단계에는 IAM을 포함한 모든 AWS 서비스에는 아무런 설정이 되어 있지 않은 상태다. 따라서 AWS 사용자는 계정 생성 후 루트(Root) 계정을 이용해 IAM 서비스에 대한 관리자 설정(위임된 사용자)을 지정해야 한다.

루트 계정을 통해 IAM 서비스를 관리할 관리자 권한의 IAM 사용자 혹은 역할을 생성한 후에는 이를 사용하지 않고 IAM 관리자 권한의 사용자 혹은 역할을 통해 IAM 서비스를 관리해야한다.

IAM 서비스는 IAM 사용자와 IAM 역할이라는 두 가지 유형의 자격증명을 지원한다. IAM 사용자는 우리에게 익숙한 개념으로 AWS 관리 콘솔에 로그인할 때 ID와 패스워드를 사용한다. 그리고 IAM 사용자를 이용해 AWS CLI나 API를 호출할 때는 고정적인 접근 키/암호 키를 사용한다.

반면에 IAM 역할은 AWS 관리 콘솔에 로그인할 수 있는 고정된 ID나 패스워드가 없으며, 고정적인 접근 키/암호 키를 사용하지 않는다. 따라서 IAM 역할만으로는 AWS 관리 콘솔에 로그인할 수 없으며 IAM 역할을 이용해 AWS 관리 콘솔에 접근하고자 하는 경우에는 반드시 별도의 인증 서버를 통해 인증을 통합한 후 사용해야 한다. AWS 역할을 이용해 CLI를 사용하는 경우에는 STS(Simple Token Service)를 통해서 만료시간이 설정된 임시 토큰을 발급받아 사용해야 한다.

AWS 환경에서는 IAM 사용자와 IAM 역할을 모두 사용할 수 있다. 그러나 IAM 사용자를 활용하는 경우 사용자 암호나 접근 키/암호 키에 대한 주기적인 변경 관리가 필요하며, 해당 정보를 유출하는 경우 보안위험이 크기 때문에 IAM 사용자보다는 IAM 역할을 사용하는 것을 권고한다.

개인정보보호 위한 주요 모범 사례
AWS 사용자는 필요에 따라 다양한 유형의 데이터를 여러 AWS 서비스를 이용해 저장, 분석 및 처리할 수 있다. 개인정보는 AWS 사용자가 처리하는 여러 가지 데이터 중 가장 중요도가 높은 유형 중 하나로, AWS 사용자는 개인정보보호를 위해 여러 가지 보안 모범 사례를 적용함으로써 개인정보 유출에 대한 위험과 사고 발생 시 영향을 최소화할 수 있다.

적용 방법은 간단하지만 AWS에서의 개인정보보호 수준을 한층 높일 수 있는 다음 보안 모범 사례들을 전체적으로 적용하기를 강력하게 권고한다.

모범 사례 1 - 루트 계정에 MFA 적용

루트 계정은 해당 계정의 모든 권한을 포함하고 있기에, 루트 계정의 안전한 관리를 위해 다중인증(MFA)을 적용하기를 권고한다. AWS에서는 소프트웨어 방식, 하드웨어 방식, U2F 보안 키 방식의 MFA를 지원한다. 각 MFA 방식마다 장단점이 있지만, 루트계정의 경우 그 중요성을 고려했을 때 U2F 보안 키 방식의 MFA를 적용하는 것이 권고된다.

U2F 보안 키 방식 MFA 이점

- FIDO 얼라이언스의 공개 표준을 따른다.
- 물리적으로 존재하는 보안 장치이며 사용 시 단말기와 연결돼야 한다.
- 건전지와 같은 별도의 전원 공급을 필요로 하지 않는다.

루트 계정의 보다 안전한 사용을 원한다면 이에 등록된 MFA는 금고와 같이 물리적으로 안전한 장소에 보관해 누구나 쉽게 접근할 수 없고 루트 계정이 필요한 경우에 인가된 사용자를 통해서만 사용돼야 한다.

모범 사례 2 - 루트 계정 사용 금지

AWS 서비스는 회원 가입 이후에만 이용 가능하며, 가입 당시에 이메일 주소와 함께 신용카드 정보와 같은 결제 정보가 함께 제공돼야 한다. AWS 고객은 회원 가입 후 회원 가입에 사용한 이메일 주소를 이용해 AWS 서비스 사용을 시작할 수 있다.

AWS에서는 회원 가입 과정에서 등록한 이메일 주소를 루트 계정이라고 한다. 루트 계정은 하나의 AWS 계정을 관리하는 관리자 계정으로, AWS에서 제공하는 모든 서비스에 대한 권한을 포함하고 있다. 리눅스 시스템에서 사용자가 슈퍼 유저로서 모든 권한을 가지는 것처럼 AWS의 루트 계정도 AWS 서비스의 모든 권한을 가지고 있으며, 루트 계정을 이용해 AWS 서비스를 구성하는 것도 가능하다.

다만 이 루트 계정은 너무나 강력한 권한을 가지고 있기 때문에 적절한 관리 체계가 필요하다. 적절하지 않은 보호 조치 아래에서 무분별하게 루트 계정이 사용돼 혹시라도 루트 계정이 유출된다면 그때는 상상하기 힘든 피해가 초래될 수 있다. 따라서 루트 계정은 최소한의 환경에서만 사용하기를 권고한다.

루트 계정 사용이 필요한 경우

- 계정 설정 변경(계정 이름, 이메일 주소, 루트 사용자 암호 및 루트 사용자 접근 키 등)
- IAM 사용자 권한 복원
- 과금 정보에 대한 IAM 접근 권한 활성화
- 특정 세금 계산서 조회
- AWS 계정 삭제
- AWS 지원 플랜 변경/취소
- 예약 인스턴스 마켓플레이스에 판매자로 등록
- S3 버킷 삭제에 대해 MFA 활성화
- 잘못된 S3 버킷 정책 편집/삭제

모범 사례 3 - IAM 사용자 비밀번호 및 접근 키의 주기적인 교체

IAM 사용자의 비밀번호와 접근 키/비밀 키는 각각 AWS의 관리 콘솔 로그인과 API 및 CLI에 사용되는 자격 증명이다. 따라서 AWS를 사용하는 사용자는 자신이 사용하는 비밀번호에 대해 안전한 규칙을 사용하되, 주기적(예를 들어 3개월마다)으로 교체하는 규칙을 준수해야 한다. 또한 접근 키/비밀 키 역시 ID/비밀번호처럼 AWS 서비스에 대한 접근 권한을 부여하는 자격증명이기 때문에 주기적으로 변경하는 규칙을 준수해야 한다.

AWS IAM 서비스의 비밀번호 정책은 기본 값으로 ‘암호 만료’ 설정이 비활성화돼 있으며, 주기적으로 비밀번호를 교체하도록 정책을 변경하기 위해서는 계정에 대한 ‘암호 만료’ 옵션을 활성화한 후 비밀번호 교체주기를 설정해야 한다. 비밀번호의 유효기간은 일반적으로 반기별(90일) 혹은 이보다 짧은 주기로 설정하는 것을 권고한다.

IAM 서비스 비밀번호 정책 수정 화면
IAM 서비스 비밀번호 정책 수정 화면
모범 사례 4 - 미사용 IAM 사용자 접근 키/비밀 키 삭제

AWS 서비스 이용 환경에서는 내부관리자의 직무변경이나 퇴사 등 다양한 환경적인 요인에 의해 AWS 서비스에 대한 관리 권한이 부여된 접근 키/비밀 키가 미사용 상태로 남아있는 경우가 발생할 수 있다. 권한이 부여된 미사용 접근 키/비밀 키는 IAM 서비스의 사용자 메뉴에서 제공하는 ‘활성 키 수명’ 정보를 통해 확인할 수 있다. ‘활성 키 수명’의 값이 일정 기간(예를 들어 90일)을 초과한 경우라면 해당 접근 키를 할당받은 사용자를 통해 접근 키의 사용계획 등을 확인한 후 미사용 시 삭제하거나 교체하는 것을 권고한다.

IAM 사용자별 활성키 수명 확인
IAM 사용자별 활성키 수명 확인
모범 사례 5 - 소스 코드에 접근 키 하드 코딩 금지

개인정보에 대한 접근 권한을 가지고 있는 계정 정보가 탈취된 보안 사고 사례를 살펴보면, 서비스나 애플리케이션 개발 과정에서 개인정보처리시스템에 접근할 수 있는 계정정보를 소스 코드에 하드코딩해 발생된 경우가 많다는 것을 알 수 있다. 이는 개발자가 서비스나 애플리케이션을 개발하는 과정에서 외부 서비스와 연동이 필요한 경우 서비스나 애플리케이션이 쉽게 호출할 수 있도록 자격증명정보를 코드에 삽입해 저장했기 때문이다.

AWS 환경에서 서비스나 애플리케이션을 개발하는 경우에도 이와 같은 보안 사고는 발생할 수 있다. AWS에는 수많은 서비스가 존재하고 있으며, 개발자는 이러한 다양한 서비스와의 연동을 위해 자신이 개발하는 서비스나 애플리케이션의 소스 코드에 AWS 서비스를 호출할 수 있는 접근 키/비밀 키와 같은 자격증명정보를 삽입하는 실수를 저지를 수 있다.

따라서 조직에서는 개발자가 소스 코드에 접근 키/비밀 키와 같은 AWS 자격증명을 삽입하지 않도록 적절한 보안가이드를 제시해야 한다. 또 소스 코드가 저장소에 저장되기 전 소스 코드에 자격증명이 부적절하게 삽입돼 있는지 여부를 점검해 혹시 모를 자격 증명 유출 사고를 미연에 방지해야 한다.

개발자들은 소스 코드에 자격 증명을 하드코딩하는 대신 안전한 방법을 이용해 서비스나 애플리케이션에서 AWS 서비스를 이용할 수 있도록 접근 권한을 부여해야 한다.

모범 사례 6 - S3 BPA 기능 활성화

아마존 S3는 AWS의 대표적인 데이터 저장 서비스다. AWS를 사용하는 대부분의 고객이라고 봐도 무방할 정도로 많은 고객들이 S3 서비스를 사용하고 있으며, 그만큼 개인정보를 저장하는 용도로도 많이 사용된다.

S3에 저장된 개인정보를 안전하게 보관하기 위해서 취할 수 있는 가장 기본적인 조치 방법은 S3 버킷(Bucket-데이터저장소)을 비공개로 설정하는 것이다. S3 서비스에서 사용하는 버킷은 관리자의 설정에 따라 접근 권한이 있는 사용자에게만 접근이 허용되는 ‘비공개’로 운영되거나 접근 권한이 없는 사용자에게도 접근이 허용이 되는 ‘공개’로 운영될 수 있다.

개인정보보호를 위해서는 S3 버킷을 비공개로 설정하는 것을 권고하지만, S3 버킷의 관리 권한을 가진 사용자의 부주의나 악의적인 사용자로 인해 S3 버킷이 ‘공개’로 설정되는 상황을 예상해볼 수 있다. AWS는 이렇게 부주의나 악의적으로 S3 버킷이 ‘공개’로 설정되는 것을 방지하는 기능을 ‘S3 블록 퍼블릭 액세스(S3 Block Public Access)’라는 이름으로 제공하고 있다.

모범 사례 7 - S3 버킷 암호화

개인정보를 포함한 각종 데이터를 저장할 수 있는 S3 버킷은 공개 설정을 적용하는 것과 별개로 암호화를 통해 보안을 강화할 수 있다. 특히 S3 버킷에 암호화를 적용하는 경우 S3 서비스 자체에서 관리하는 아마존 S3 관리형 키(SSE-S3)가 아니라 KMS(Key Management Service)에서 관리하는 AWS KMS 키(SSE-KMS)를 사용하는 경우라면 S3 버킷에 저장된 데이터에 접근 시 S3 버킷에 대한 접근 권한과 함께 KMS에 대한 접근 권한도 필요하기 때문에 암호화 이외에도 접근 권한 제어 관점에서 보안레벨을 높일 수 있다.

S3 버킷 암호화 설정 화면
S3 버킷 암호화 설정 화면
모범 사례 8 – S3 버킷 접근 IP 제한

S3 버킷은 기본적으로 인터넷으로부터 접근이 가능한 서비스다. IAM을 통해 권한을 인가받은 사용자는 자신이 가진 IAM 자격증명을 통해 인터넷이 가능한 환경이라면 어디에서나 S3 버킷에 접근할 수 있다.

따라서 개인정보를 저장하고 있는 S3 버킷이나 중요한 정보를 저장하고 있는 S3 버킷이라면 지정된 개인정보처리자 혹은 데이터센터의 특정 공인 IP를 제외한 모든 IP에 대해 접근을 차단하는 정책을 적용하는 것이 필요하다.

S3 버킷에 저장돼 있던 개인정보가 유출된 사례를 보면, 공격자가 자신이 탈취한 IAM 자격증명을 이용해 해외에서 접근 후 개인정보를 탈취한 경우를 볼 수 있다. 이와 같은 사고 사례에서 만일 S3 버킷에 IP 기반 접근 제어 정책이 적용돼 있다면 공격자가 해당 S3 버킷에 대한 접근 권한을 탈취했다 하더라도 해외에서 접근 시 IP 기반 접근 제어 정책에 의해 개인정보 및 중요 데이터를 보호할 수 있었을 것이다.

모범 사례 9 – 트러스티드 어드바이저 활용

AWS는 AWS 트러스티드 어드바이저(AWS Trusted Advisor)라는 무료 서비스를 통해 AWS 계정에 대한 ‘비용 최적화’, ‘성능’, ‘보안’, ‘내결함성’, ‘서비스 한도’에 대한 모범 사례 점검 기능을 제공하고 있다. 개인정보보호 및 중요 데이터 보호를 위해서는 트러스티드 어드바이저에서 제공하는 ‘보안’ 점검 항목을 주기적으로 모니터링하거나 트러스티드 어드바이저의 ‘보안’ 점검 항목에서 조치 권고 알람이 발생하는 경우 이메일 등을 통해 알람 정보를 수신하도록 구성할 수 있다.

트러스티드 어드바이저 서비스는 고객의 AWS 기술지원 등급에 접근할 수 있는 검사항목에 차이가 있다. AWS 베이직 서포트 및 AWS 개발자 서포트 고객은 핵심 보안 검사 및 서비스 할당량에 대한 모든 검사에 액세스할 수 있다. AWS 비즈니스 서포트 및 AWS 엔터프라이즈 서포트 고객은 비용 최적화, 보안, 내결함성, 성능, 서비스 할당량을 포함한 모든 트러스티드 어드바이저 검사에 액세스할 수 있다.

트러스티드 어드바이저 보안 점검 항목
트러스티드 어드바이저 보안 점검 항목
모범 사례 10 - 아마존 가드듀티 활성화

아마존 가드듀티(Amazon GuardDuty)는 AWS에서 제공하는 완전 관리형 위협 탐지 서비스다. 가드듀티는 내부적으로 VPC 플로우 로그, 클라우드 트레일(CloudTrail) 로그, DNS 로그, 아마존 EKS 감사 로그 등을 분석해 내·외부로부터의 위협을 탐지하는 기능을 제공하고 있다.

아마존 가드듀티는 내부적으로 수집한 데이터 소스들을 위협 인텔리전스와 ML 기반을 통해 분석하며, 사용자가 위협 탐지에 대한 전문 지식이 없더라도 스스로 위협을 탐지할 수 있어 보안인력의 부담을 경감할 수 있는 장점도 있다.

가드듀티는 수집한 데이터를 분석하여 여러 가지 위협 유형을 탐지하며, 그 결과를 ‘낮음(Low)’, ‘보통(Medium)’, ‘높음(High)’의 위험도로 분류해 관리자에게 각 탐지내역별로 적절한 조치를 수행할 수 있도록 안내한다.

또 IAM 접근 키/비밀 키의 비정상적인 사용이나 S3 버킷에 대한 비정상적인 사용을 ML을 이용해 사용자 개입 없이 자동으로 탐지하는 기능을 포함하고 있기 때문에 개인정보보호 관점에서 보면 보안관리자나 개인정보보호책임자가 가장 주시해야 할 위협에 대해 복잡한 설정 없이 손쉽게 탐지할 수 있는 방안을 제공하고 있다.

가드듀티는 멀티 계정 환경도 지원한다. 예를 들어, 다수의 AWS 계정을 사용하고 있는 환경이라면 특정 계정을 가드듀티에 대한 관리계정으로 지정한 후, 해당 계정을 통해 다수의 계정에서 발생하는 각종 위협 정보들을 통합 관리할 수 있다.

아마존 가드듀티 결과 화면
아마존 가드듀티 결과 화면
모범 사례 11 - 아마존 메이시를 통한 개인정보 식별

아마존 S3는 AWS에서 가장 많이 사용되는 객체 기반 저장 서비스다. AWS 사용자들은 S3에 개인정보를 포함해 다양한 데이터를 저장하고 백업용도로 사용하고 있다.

개인정보보호 관점에서 조직이 사용하는 저장 서비스에 저장된 데이터의 유형과 특히 개인정보가 저장된 저장소의 위치를 식별한 후 적절한 보호조치를 수행하는 것은 개인정보보호를 위해 아주 중요한 업무 중 하나다. 아마존 메이시(Amazon Macie)는 이와 같은 정보보안담당자의 기본 업무 중 하나인 개인정보의 존재 유무를 S3에 저장된 데이터를 대상으로 분석하는데 사용할 수 있는 서비스다.

아마존 메이시는 국제적으로 사용되는 주요 민감정보/중요정보에 대한 패턴을 포함하고 있으며 주민등록번호와 기타 국내에서 사용되는 개인정보와 관련된 데이터에 대해서는 관리자가 정규표현식을 이용해 사용자 패턴을 생성할 수 있는 기능을 제공한다.

정보보호담당자는 이와 같은 패턴들을 S3에 저장된 데이터를 대상으로 스캔할 수 있으며, 그 스캔 결과를 기반으로 해당 S3 버킷에 대한 적절한 보호조치를 적용할 수 있다. 또 개인정보가 저장된 S3 버킷을 스캔해 해당 버킷에 저장돼 있는 개인정보가 적절한 보호조치(암호화, 가명화, 익명화 등)가 되어 있는지 여부를 확인할 수 있다.

아마존 메이시 요약 화면
아마존 메이시 요약 화면

 



댓글삭제
삭제한 댓글은 다시 복구할 수 없습니다.
그래도 삭제하시겠습니까?
댓글 0
댓글쓰기
계정을 선택하시면 로그인·계정인증을 통해
댓글을 남기실 수 있습니다.