Amazon Alexa를 이용한 Amazon GuardDuty 탐지 내역 및 통계 정보 받아보기
지금까지 여러분들이 Amazon GuardDuty의 발견 내역을 확인하시는 방법은 GuardDuty 콘솔의 ‘결과’ 페이지나 AWS CLI 혹은 SDK등을 통해 GuardDuty APIs를 이용하는 것이었습니다. 하지만 여기 좀 더 빠르고 쉬운 방법이 있습니다. 바로, Amazon Alexa의 대화형 인터페이스를 이용하는 것입니다. Alexa를 통해 여러분들은 자연스런 음성 경험과 좀 더 직관적인 방식으로 GuardDuty를 이용할 수 있게 됩니다.
이번 포스팅에서는, 맞춤형 Alexa 스킬 샘플을 배포하는 방법과 함께, 여러분들의 전체 어카운트와 리젼 들에서 GuardDuty 탐지내역들에 대한 정보를 확인하기 위해, Amazon Echo 와 같은 Alexa탑재 디바이스를 이용하는 방법을 소개해 드리겠습니다. 예시로 사용되는 샘플 스킬은 GuardDuty 탐지 내역의 집계, 심각도, 상세 설명에 대한 전반적인 내용을 제공합니다. 좀 더 흥미있는 내역에 대해선 GuardDuty 콘솔로 로그인하거나, 해당 내역을 조사할 수 있는 또 다른 분석도구를 사용할 수 있습니다.
Note: 비록 여기에서 다루진 않지만, Alexa for Business를 이용하여 이 샘플 스킬을 배포할 수 있습니다. 그리고 이를 통해 여러분들은 굳이 스킬을 Alexa 스킬 스토어에 등록하지 않고도, 공유된 디바이스들과 확인된 이용자들이 해당 스킬이 사용할 수 있도록 할 수 있습니다.
준비 사항
본 글의 내용을 직접 구현하려면, 사전에 아래 사항들을 확인하시기 바랍니다:
- 여기에서 이야기 하고 있는 샘플 스킬을 배포하는 데 도움이 되는 Alexa 맞춤형 스킬에 대한 기본적인 이해. 만일 Alexa 맞춤형 스킬의 개념과 용어에 대해 잘 모르신다면, documentation resources를 보실것을 권장드립니다.
- 한 곳 이상 GuardDuty가 활성화된 AWS 어카운트.
- Amazon Echo같은 한개의 Alexa 탑재 디바이스.
- 한개의 Amazon 개발자 어카운트.
솔루션 개요
다음 그림을 통해 샘플 Alexa스킬을 생성해 주는 람다 함수를 CloudFormation template 를 이용하여 만드는 과정을 알 수 있습니다.
다이어그램에 표시된 각각의 단계는 다음과 같이 진행됩니다:
- 사용자는 “Alexa ask GuardDuty.”나 “Alexa, open GuardDuty.”를 말함으로써 해당 스킬을 시작합니다.
- 스킬이 시작되면 사용자는 “Get flash briefing.”과 같이 지원되는 Intent를 말합니다.
- Alexa 서비스는 해당 Intent를 맞춤형 스킬로 전달하고 그 스킬에서는 람다함수를 통해 GuardDuty API를 호출하여 정보를 요청하게 됩니다.
- GuardDuty 서비스는 요청된 정보를 리턴하고 람다 함수는 이를 받아서 Alexa서비스 쪽에 응답을 줍니다.
- Alexa 서비스는 Alexa 탑재 디바이스를 통해 음성으로 해당 정보를 전달합니다.
솔루션 구현
본 솔루션은 3개의 파트로 구성됩니다:
- CloudFormation 템플릿을 이용하여 람다 함수를 생성합니다.
- Alexa 개발 콘솔에서 맞춤형 스킬을 생성합니다.
- Alexa 탑재 디바이스를 이용하여 스킬을 테스트합니다.
CloudFormation 템플릿을 이용하여 람다 함수를 생성하기
진행하기 전에, 모니터링 하고자 하는 AWS 어카운트 내에서 CloudFormation템플릿을 실행하려고 하는지 확인하시기 바랍니다.
- (아래 테이블 처럼) N.Virginia에 람다 함수를 실행하기 위해, 다음 링크: load the supplied template를 클릭하여 CloudFormation 템플릿을 실행할 수 있습니다. CloudFormation 콘솔의 ‘Select Template’ 페이지에서, Next를 클릭합니다.
Note: 다음 리젼들이 맞춤형 Alexa 스킬을 지원하고 있습니다: US East (N. Virginia), Asia Pacific (Tokyo), EU (Ireland), West (Oregon). N. Virginia가 아닌 다른 리젼으로 변경하려면, 선택한 리젼의 S3버킷 쪽으로 custom skill’s Lambda deployment package(코드가 담긴 zip파일)을 업로드 할 필요가 있습니다.
- 템플릿 업로드 후, 다음 파라메터들을 입력하기 바랍니다:
입력 파라메터 입력 파라메터 설명 FLASHREGIONS Flash Briefing 집계의 대상이 되는 리젼별로 각 region Id 들을 중간 공백없이 ‘,’로 구별하여 설정. 적어도 한개의 리전은 설정이 되어야 함. 반드시 GuardDuty가 활성화된 리전이어야 함. MAXRESP 한번의 응답으로 리턴할 탐지 내역의 최대치 ArtifactsBucket 람다 패키지가 담긴 S3 Bucket. 디폴트 리전(N. Virginia)으로 진행. ArtifactsPrefix 람다 패키지가 담긴 S3 bucket의 Prefix경로. 디폴트 리전(N. Virginia)으로 진행. - ‘Specify Details’ 페이지 상에서, 다음과 같이 입력 파라메터 값을 설정하고 Next를 눌러 진행하기 바랍니다.
- Options 페이지에서, 기본 설정 값들을 놔두고, Next를 눌러 계속 진행하기 바랍니다.
- Review 페이지에서, 지금까지의 설정 내역을 확인하고 Create을 클릭합니다. 스택 실행을 완료하는데 대략 2분 정도 소요됩니다.
Alexa 개발자 콘솔에서 맞춤형 스킬 생성하기
구현의 두번째 파트에서는 Amazon 개발자 콘솔에서 스킬을 생성하게 됩니다.
- Amazon 개발자 콘솔의 Alexa로 로그인하고, 오른쪽 위에 있는 ‘Your Alexa Consoles’ 을 선택하고 나서 Skills를 선택하세요.
- ‘Create Skill’을 선택하세요.
- 이름 란에, ‘Ask Amazon GuardDuty’라고 입력하고, Next를 클릭합니다.
- ‘Choose a model to add to your skill’ 페이지에서, Custom을 선택하고, ‘Create skill’을 선택합니다.
- JSON Editor를 선택하고 코드 편집기로 alexa_ask_guardduty_skill.json 파일의 내용을 복사해서 기존 내용을 지우고 붙여 넣습니다. 이 파일은 Alexa 서비스가 승인하고 처리할 수 있는 intent의 집합을 정의하고 있는 intent schema를 포함하고 있습니다.
- ‘Save Model’을 선택하고, ‘Build Model’을 클릭한 뒤, 빌드가 종료될 때까지 잠깐 동안 기다립니다.
- 모델의 빌드가 완료되면, 왼쪽에 있는 Endpoint를 클릭합니다.
- Endpoint 페이지에서, ‘Service Endpoint Type’섹션에서, ‘AWS Lambda ARN (Amazon Resource Name)’을 선택합니다.
- ‘AlexaAskGDSkillArn’으로 명명된 CloudFormation Stack의 Output 키의 값을 복사해서 Default Region 필드에 넣습니다. 나머지 옵션들은 설정된 대로 놔두고, ‘Save Endpoints’를 클릭합니다.
아직까지 해당 스킬을 배포하지 않았기 때문에, 구성 단계의 Launch 섹션을 완료할 필요는 없습니다. 이 스킬은 여전히 “Development” 상태에 있으며, 해당 스킬을 생성한 Amazon 개발자 어카운트에 연결된 Alexa디바이스에서만 사용 가능합니다. 그렇다고 해도, 해당 Alexa 탑재 디바이스에 물리적으로 접근할 수 있는 누구라도 해당 스킬을 이용할 수 있습니다. 이 부분에 대한 좀 더 나은 모범사례로서, CloudFormation 템플릿이 만들었던 람다 트리거를 삭제하고, ‘Add an Alexa Skills Kit Trigger’에 있는 내용대로 새로 만들 것을 권장합니다.
Alexa탑재 디바이스를 이용한 스킬 테스트
방금 여러분은 샘플 솔루션을 배포한 것입니다. 다음 단계로는 배포된 스킬을 테스트하겠습니다. 먼저 해당 스킬을 생성했던 Amazon 개발자 어카운트와 연결된 Alexa탑재 디바이스 임을 확인하기 바랍니다. 만일 GuardDuty 탐지내역이 한 개도 없으면, 테스팅 전에 콘솔에서 ‘generate sample findings’의 내용대로 샘플 탐지 내역을 생성시킬 수 있습니다. GuardDuty는 샘플 탐지 내역을 생성하는 과정에서 현재 탐지 내역 목록에 지원되는 탐지 유형 별로 한 개씩의 샘플 탐지 내역을 생성하게 됩니다.
다음 음성 명령들을 통해 테스트해 볼 수 있습니다:
- “Alexa, Open GuardDuty” — 스킬이 오픈되면서, 환영 메세지가 나오게 됩니다. “Alexa, Ask GuardDuty” 라고 말해도 됩니다.
- “Get flash briefing” — 낮음, 중간, 높음 등급의 탐지 내역들의 글로벌 전체 및 리전 별 집계에 대한 응답이 리턴됩니다. 여기서의 리전은 ‘FLASHREGIONS’ 파라메터에 설정되었던 리전을 말합니다. 환영 메세지를 생략하려면, “Ask GuardDuty to get flash briefing” 라고 말해도 됩니다. 탐지 내역의 등급부분에 대해 GuardDuty severity levels in the documentation에서 좀 더 자세한 정보를 알 수 있습니다.
다음과 같은 명령어를 통해, <Virginia>, <Oregon>, <Ireland>등과 같이 리젼 이름을 이용하여 리전 별로 명령할 수 있습니다:
- “Get statistics for region” — 낮음, 중간, 높음 등급별로 탐지 내역들에 대한 리전 집계 치가 제공됩니다.
- “Get findings for region” — 요청된 리전의 탐지 내역이 제공됩니다. 제공되는 탐지내역의 갯수는 MAXRESP 파라메터에 의해 설정된 갯수까지 입니다.
- “Get <high/medium/low> severity findings for region” – 해당 리전의 지정된 등급에 해당하는 탐지 내역 정보가 제공됩니다. 제공되는 탐지 내역의 갯수는 MAXRESP 파라메터에 의해 설정된 갯수까지 입니다.
- “Help” — 해당 스킬과 지원되는 어투에 대한 정보가 제공됩니다. 또한 FLASHREGIONS 과MAXRESP에 설정된 수치에 대해서도 알려줍니다..
이 스킬은 음성 메세지와 더불어, Alexa mobile application의 Home Cards 에 동일한 내용의 텍스트 메세지도 보여줍니다.
결론
여러분은 본 샘플 솔루션을 이용하여 Alexa의 대화형 인터페이스를 통해 GuardDuty의 집계 및 탐지 내역을 받아 볼 수 있습니다. 그리고 이를 통해 좀 더 빠르게 추가 조사가 필요한 탐지 내역들을 확인할 수 있게 됩니다. 본 솔루션의 코드는 GitHub에 있습니다.
본 포스팅에 대한 코멘트가 있다면, 아래 있는 Comments 섹션을 이용해 주시기 바랍니다. GuardDuty이용에 대한 질문은 GuardDuty forum 이나 contact AWS Support를 이용할 수 있습니다. 또한 Alexa에 대한 질문은 Alexa Developer Forum 이나 Alexa for Business Forum로 보낼 수 있습니다.
이 글은 AWS Security Blog의 How to Use Amazon Alexa to Get Amazon GuardDuty Statistics and Findings의 한국어 번역본으로, 임기성 AWS 보안 솔루션즈아키텍트께서 수고해 주셨습니다.
Source: Amazon Alexa를 이용한 Amazon GuardDuty 탐지 내역 및 통계 정보 받아보기
Leave a Reply