WiseN

[Reinvent2019] 내 AWS 자원의 외부 접근을 감시 - IAM Access Analyzer 소개

Dec 20, 2019   |   AWS

작성자_박제호

페이스북 공유하기 트위터 공유하기
Blog thumbnail

들어가며



안녕하십니까. GS네오텍 박제호입니다.

우리가 클라우드를 사용함에 있어 처음부터 보안을 고려하면서 사용하는 경우는 거의 없을 것입니다. 일반적으로 먼저 기능중심으로 구현을 하고 나중에 보안적으로 취약한 부분을 스스로 찾아내거나 때로는 타인이(?) 찾아주게 되어 강제적으로 보안을 고려해야만 하는 상황이 발생하게 됩니다. 특히 후자의 경우 그 여파가 어디까지 미칠지 알 수 없으므로, 우리는 취약한 부분을 찾아 관리해야 합니다.

AWS에서는 공유 책임 모델이 존재하여 고객에게 자원에 대한 책임을 부담하게 합니다. 일반적으로 AWS가 제공하는 서비스는 프라이빗한 서비스이지만 실수 혹은 편리성을 위해 외부 액세스를 허용하게 될 경우 우리가 뉴스에서 접했던 클라우드 사고사례의 또 다른 주인공이 될 수 있습니다. 이를 방지하기 위해 추가적인 보안 기능이 출시되었습니다. 

이번 포스팅에서는 AWS 리인벤트 2019에서 발표된, 자원에 대한 외부 접근 권한을 확인할 수 있는 서비스인 IAM Access Analyzer를 소개하도록 하겠습니다.

 

IAM Access Analyzer 소개


IAM Access Analyzer는 소유하고 있는 자원에 의도하지 않게 외부에서 접근할 수 있는 권한이 있는지 파악하고 사용자에게 이를 알려주는 서비스입니다. 이미 클라우드의 보안 서비스를 사용해본 경험이 있으시다면 비슷한 서비스가 있다고 느끼실지도 모르겠습니다. AWS Config, AWS CloudTrail 등을 이용하면 이와 비슷한 효용을 얻을 수 있는데, 이 경우 생각보다 공수가 들어가게 됩니다. IAM Access Analyzer는 특정 자원에 대해서 클릭 몇 번으로 아주 편리하게 활성화 할 수 있다는 점이 장점이라고 생각하시면 됩니다. 

해당 서비스에서는 "provable-security​" 개념이 적용되어 있습니다. AWS에서는 이 개념에 대해 수학적 증명을 제시합니다. 특히 Zelkova, Tiros라는 기술을 통해 이를 증명할 수 있다고 합니다. 자세한 내용은 다음 링크로 확인하시면 됩니다. #링크1 #링크2

다시 본론으로 돌아와서, 위에서 말씀드린 "소유하고 있는 자원"의 범위는 다음과 같습니다.

  • S3 Bucket
  • IAM Role
  • KMS Key
  • Lambda Fuction
  • SQS Queue

위 자원에 대해 무차별 대입이나 기존의 패턴 매칭을 통해 검증하지 않고 수학적 증명을 통해 검증합니다. 이렇게 확인된 자원에 대해서는 쉽게 조치할 수 있도록 자원에 대한 링크를 제공하고 있으며 의도된 외부 접근 설정의 경우에는 예외처리 할 수 있습니다. 또, 한눈에 외부 권한의 부여 현황을 파악할 수 있어 매우 효과적입니다. 사용 방법은 데모를 통해 소개드리겠습니다.

 

IAM Access Analyzer 데모


▨ How to Use

사용 방법은 아주 간단합니다. 리전을 확인하고 서비스 시작 버튼을 누르면, 서비스가 활성화되면서 분석을 시작합니다. 사용자는 그저 결과를 확인하고 조치를 수행하면 됩니다. 이를 정리하면 다음과 같습니다.

  • 분석을 원하는 리전의 IAM > Access analyzer로 이동하여 "Create analyzer"를 시작합니다.
  • 분석 결과를 확인합니다.
  • 분석 결과에 대한 조치를 수행합니다.

 

▨ Demo

첫 실행 화면입니다. 분석하고자 하는 리전에서 해당 서비스를 찾아 활성화합니다.


 

다음으로 analyzer의 이름을 지정합니다. 기본적으로 랜덤 이름이 적혀 있습니다. 이름을 확인하고 다시 "Create analyzer"를 클릭합니다.



analyzer 화면으로 이동 후 일정 시간이 지나면 콘솔창 위쪽에 complete 라는 메시지가 나타납니다. 소유한 자원량에 따라 수 초 ~ 최대 30분이 걸립니다.​ 이후 새로고침을 하면 다음과 같이 분석 결과를 확인할 수 있습니다.


 

저는 이 중에서 가장 빈번하게 노출되는 서비스인 S3 Bucket에 접근해 보겠습니다. 해당 자원에 대한 정보가 나타나며 세 가지 선택을 할 수 있습니다. Rescan으로 다시 재분석하거나, Archive 기능을 통해 의도된 접근 설정임을 확인하여 예외처리하거나, 의도하지 않은 접근에 대해서는 자원으로 이동할 수 있도록 기능을 제공합니다. 


 

이제 링크를 통해 해당 버킷이 정말 외부접근이 가능한 상태인지 확인해 보겠습니다.​ 확인해본 결과, 맞습니다. 정말 퍼블릭으로 설정되어 있습니다. 이를 안전하게 프라이빗으로 변경한 후 다시 Analyzer로 돌아가 보겠습니다.


 

Rescan 버튼을 이용하여 결과를 다시 분석해줍니다. 혹은 자원에 대한 변경이 일어나면 대략 30분 정도 후에 자동적으로 분석을 수행합니다. 어쨌든, 결과를 확인하니 "Resolved"로 상태가 변경되었음을 확인할 수 있으며 현재 안전한 상태인것으로 파악됩니다.


 

추가적으로 IAM Role 하나를 Archive 기능을 이용하여 예외처리 해보겠습니다. 별도의 조작 없이 자원에 접근하여 "Archive" 버튼을 클릭하면 적용됩니다. 지금까지 분석한 결과를 analyzer의 All 탭으로 이동하여 확인해본 결과 의도한 대로 분석 결과가 나타나고 있음을 확인할 수 있습니다.

 

마지막으로 지금까지 수행한 작업은 모두 API를 통해 일어나므로 CloudTrail에서 관련 로그를 확인하실 수 있습니다.

 

 

마치며


결과적으로 IAM Access Analyzer 서비스를 이용하여 외부에 연결된 접점을 빠르고 쉽게 파악할 수 있습니다. 이제 보안 설정에 대해 잘 모르더라도 이 서비스를 이용한다면 외부 연결에 대한 현황을 알고 대처할 수 있게 됩니다. 그리고 의도된 외부 접근 설정이 많다면 IAM Access Analyzer의 기능 중 "Archive rules" 기능을 사용하여 자동적인 예외처리를 수행할 수 있습니다.

추가적으로 모니터링 서비스인 CloudWatch와의 연동을 통해 스캔 혹은 스캔 결과 이후의 작업을 자동화할 수 있고, EventBridge라는 서비스를 이용하여 검색 결과를 SNS나 Lambda 등으로도 보낼 수 있습니다. 또, AWS Security Hub라고 하는 중앙 집중식 보안 도구와 연동하여 더 안전한 보안환경을 구축하는데 사용할 수 있습니다.

그러나 각 리전별로 서비스를 활성화해주어야 한다는 점을 주의하셔야 하며, Resolved된 분석 결과는 90일 이후 삭제되므로 관리 측면에서 별도로 분석 결과를 관리해주셔야 합니다. 

모든 보안 서비스가 그렇듯, IAM Access Analyzer 역시 만능은 아닙니다. 보안이라는 영역이 100%를 장담할 수 없는 영역이기 때문에 우리는 최대한 많은 정보 혹은 서비스를 사용하여 서로 상호보완한다는 생각으로 사용하셔야 합니다.

다행히 이 서비스는 유료가 아닌 무료이기에 사용하시는것에 대해 크게 고민하시지 않아도 됩니다. 클릭 몇 번만으로 사고 예방에 도움을 줄 수 있는 방법 중의 하나이므로 유용하게 사용한다면 보안 수준을 높이는데에 도움이 될 것입니다.

IAM Access Analyzer 포스팅은 여기서 마무리 하도록 하겠습니다. 읽어 주셔서 감사합니다. 끝!!

 

참고: AWS IAM Access Analyzer – 수학적 자동 추론을 통한 접근 제어 기능 추가