BLOG
본 글의 원문은 AWS의 보안 엔지니어인 Lanre Ogunmola와 AWS의 클라우드 지원 엔지니어인 Eduardo Suzuki에 의해 작성되었습니다.
저희는 고객들에게서 “어떻게 CloudHSM 감사 로그를 시각화하고 의미 있는 인사이트를 얻을 수 있을까요?”라는 질문을 가장 많이 듣고 있습니다. .
하여 오늘은 블로그 글을 통해 CloudHSM에서 생성된 감사 로그를 Splunk로 보내는 방법을 보여드리고자 합니다. 또한, Splunk에 암호화 관리자 로그인 시도 실패, 암호화 키 생성 및 삭제 이벤트와 같은 중요한 메트릭을 시각화하는 대시 보드도 만들어 보겠습니다.
AWS CloudHSM은 암호화 키를 쉽게 생성, 저장, 가져오기, 내보내기 및 관리 할 수 있는 클라우드 기반 하드웨어 보안 모듈 (HSM)입니다.
또한, hash 함수가 메시지 digests 및 hash 기반 메시지 인증 코드 (HMAC)를 계산하고 FIPS 140-2 레벨 3 검증 HSM을 사용하여 Amazon Web Services (AWS)에서 데이터를 암호화하여 서명하고 서명을 확인할 수 있습니다.
CloudHSM은 또한 HSM 어플라이언스에서 실행되는 모든 관리 명령에 대한 감사 로깅 기능을 제공합니다. 감사 로깅은 기본적으로 활성화되어 있으며 각 HSM에서 생성된 다음 CloudHSM에 의해 사용자 대신 Amazon CloudWatch 로 전달됩니다.
감사 로그에 의해 캡처된 이벤트의 예로는 키 생성, 사용자 로그인, 키 내보내기 및 사용자 또는 키 삭제가 있습니다.
본 게시물에서는 HSM 감사 로그를 Splunk로 전송하는 파이프 라인 생성을 위한 AWS서비스를 다뤄보겠습니다. 또한 감사 이벤트를 해석하고 CloudHSM 어플라이언스에서 발생하는 중요한 이벤트를 표시할 수 있는 특정 데이터 인사이트를 얻는 방법을 배우게 됩니다. 여기에는 실패한 암호화 사용자/ 관리자 로그인, HSM에서 암호화 키 자료 생성 및 삭제가 포함될 수 있습니다.
Splunk는 데이터 및 분석, DevOps 및 보안과 같은 영역에서 다양한 AWS 컴피턴시을 보유한 AWS 파트너 네트워크(APN) Select Technology Partner입니다. Splunk 소프트웨어 및 클라우드 서비스를 통해 고객은 웹 사이트, 어플리케이션, 서버, 네트워크, IoT 및 모바일 장치에서 머신 기반 생성 빅데이터 빅데이터를 검색, 모니터링, 분석 및 시각화할 수 있습니다.
CloudHSM 감사 이벤트를 시각화하는 Splunk 대시 보드
아래의 그림 1 에서는 CloudHSM 어플라이언스에서 Splunk로 보내진 감사 이벤트의 총 개수와 로그인 실패 횟수, HSM에 실행된 명령 고장, 암호화의 키 삭제와 같은 중요한 이벤트 개수가 있는 Splunk 대시보드를 보실 수 있습니다.
그림 1 – Splunk를 사용한 CloudHSM 감사 이벤트 시각화
다음 AWS 서비스 및 Splunk HEC를 사용하여 HSM 감사 로그를 Splunk로 전송하는 파이프라인을 생성해보겠습니다.
- AWS CloudHSM: 암호화 작업을 처리하고 암호화 키를 위한 안전한 스토리지를 제공하는 AWS의 하드웨어 보안 모듈입니다. 감사 로그는 CloudHSM에서 CloudWatch Logs로 보내집니다.
- AWS Lambda: 필요할 때만 코드를 실행하고 하루에 몇 번의 요청에서 초당 수천까지 자동으로 확장합니다. Lambda를 사용하여 Amazon S3(Amazon Simple Storage Service) 버킷의 데이터 변경 또는 CloudWatch Logs의 데이터 입력과 같은 이벤트에 대한 응답으로 코드를 실행할 수 있습니다.
- Amazon CloudWatch Logs: 리소스, 애플리케이션 및 서비스에서 거의 실시간으로 로그를 수집하고 저장할 수 있습니다. CloudHSM은 클러스터의 모든 HSM에서 감사 로그를 수집하여 CloudWatch Logs에 게시합니다.
- Splunk HEC 클러스터: Splunk는 다양한 어플리케이션의 데이터에 액세스하고, 대용량 파일을 인덱싱하고, 데이터를 이해할 수 있도록 구문 분석하는 구성 요소들의 포트폴리오를 구축했습니다. Splunk는 HTTP 및 보안 HTTPS 프로토콜을 통해 Splunk 클러스터에 데이터 및 어플리케이션 이벤트를 보낼 수 있는 HTTP 이벤트 수집기 (HEC)를 개발했습니다.
솔루션 개요
아래 그림 2 의 참조 아키텍처는 CloudHSM 어플라이언스의 감사 로그가 Splunk(Enterprise 또는 Cloud)로 스트리밍되는 방법을 보여줍니다.
여기에는 CloudHSM에서 CloudWatch로의 감사 로그의 기본 전달 및 CloudWatch에서 이벤트를 수신하여 Splunk HEC로 전송하는 Lambda 함수가 포함됩니다.
그림 2 – CloudHSM 감사 이벤트를 Splunk로 보내기
프로세스 작동 방식은 다음과 같습니다.
- CloudHSM은 HSM 어플라이언스에서 감사 로그를 수집하여 계정의 CloudWatch Logs에 게시합니다.
- 감사 로그 이벤트는 Lambda 함수로 스트리밍되어 Splunk HEC에 로그를 전달합니다.
- 데이터가 Splunk에 도달하면 대시 보드를 사용하여 쿼리 및 시각화할 수 있습니다.
전제 조건
전제조건 완료에 도움이 필요하시다면 AWS CloudHSM 가이드 시작하기를 살펴보십시오.
- CloudHSM 클러스터를 생성하십시오.
- AWS Elastic Compute Cloud (아마존 EC2) 인스턴스를 시작하십시오.
- HSM을 작성하십시요.
- CloudHSM 클러스터를 초기화하십시요.
- AWS CloudHSM 클라이언트를 설치하고 구성하십시요.
배포 단계
이 섹션에서는 CloudWatch Logs에서 Splunk로 감사 이벤트를 전송하고 이러한 이벤트를 의미 있는 시각화된 데이터로 변환하는 배포 단계를 설명해드리겠습니다.
- 블루 프린트 Lambda 함수를 작성하고 구성하세요.
- HSM 감사 로그를 Lambda 블루 프린트 기능으로 스트리밍하도록 CloudWatch Log Group을 구성합니다.
- 감사 로그를 수집하고 시각화하는 Splunk 대시 보드를 만듭니다.
- 키 및 사용자 관리 작업을 수행하여 HSM 감사 이벤트를 작동시킵니다.
- Splunk에서 HSM 감사 로그 이벤트를 검색하고 대시 보드를 검토합니다.
1 단계: 블루 프린트 Lambda 함수 생성 및 구성
- AWS Lambda Console에 로그인합니다.
- Get Started 하단의 Create a Function를 선택합니다.
- HEC를 사용하여 CloudWatch 로그들을 Splunk로 처리할 설계안을 얻기 위해 Create Function에서 Blueprints를 선택하고 Filter에 splunk-cloudwatch-logs-processor를 입력합니다.
- blueprint function을 선택하고 Configure을 클릭합니다.
- friendly function name입력하고 Lambda execution role 실행 역할을 선택합니다.
- Lambda 로그를 CloudWatch로 푸시할 수 있도록 AWS Identity and Access Management (IAM) 역할에 적절한 권한이 적용되어 있는지 확인합니다.
해당 링크의 설명서는 본 프로세스에 대한 역할을 생성하는 방법을 보여줍니다. 아래는 권한 방침의 예시입니다:
{ “Version”: “2012-10-17”, “Statement”: [ { “Effect”: “Allow”, “Action”: [ “logs:CreateLogGroup”, “logs:CreateLogStream”, “logs:PutLogEvents” ], “Resource”: “arn:aws:logs:*:*:*” } ]
}
- CloudWatch Logs Trigger에서 계정의 클러스터 이름인 로그 그룹을 선택하고 friendly filter name를 준비합니다.
- 환경 변수에는 Splunk HEC 토큰과 HEC URL이 필요합니다. Splunk웹에서 HEC 토큰을 만들 수 있습니다.
- Settings 메뉴로 이동하여 Data Inputs을 선택한 다음 HTTP Event Collector를 선택합니다.
- Global Settings을 선택하고 All Tokens이 활성화되어 있는지 확인한 다음 Save 을 선택합니다.
- New Token을 선택하여 새 HEC 엔드 포인트 및 토큰을 생성합니다.
- Lambda 환경 변수에 HEC 토큰 및 HEC URL을 제공하고 Create Function을 클릭합니다.
- 새로 작성된 Lambda 함수를 편집하고 아래 표시된 대로 소스 코드의 주석을 해제합니다
- 기본 httpevent, 주석처리 time, index, event 및 save 을 대체 하는 friendly sourcetype을 준비합니다.
- 데모 목적으로 aws : cloudwatch : cloudhsm을 지정합니다. 여기에 지정된 소스 유형은 Splunk의 검색 쿼리에 사용될 것입니다.
2 단계: HSM 감사 로그를 Lambda로 스트리밍하도록 CloudWatch Log Group 구성
- Amazon CloudWatch Console을 열고 탐색 창에서 Logs를 선택합니다.
- 클러스터의 log group을 선택하세요. 로그 그룹 이름은 / aws / cloudhsm / <cluster ID> 입니다.
- Action을 클릭 하고 Stream to AWS Lambda를 선택합니다.
- 1단계에서 생성한 Lambda 함수를 선택하고 Next을 클릭합니다.
- 로그의 경우 Format, 드롭 다운에서 Others을 선택하고 Next를 클릭합니다.
- Start Streaming을 클릭하여 완료합니다.
3 단계: Splunk 대시 보드를 만들어 HSM 감사 로그를 수집하고 시각화
- 대시 보드 정의가 포함된 XML 파일을 가져와서 Splunk 대시 보드를 만듭니다. 이를 위해 Splunk 대시 보드 및 시각화 정의 XML 파일을 다운로드합니다.
- Splunk Console에서 Create New Dashboard를 선택합니다.
- Title과 Description를 준비한 다음, Create Dashboard를 클릭합니다.
- Edit Dashboard 페이지에서 Source를 선택합니다.
- 아래 표시 창에서 컨텐츠를 지우고 1 단계에서 다운로드한 XML 정의 파일의 컨텐츠를 붙여넣고 Save을 클릭합니다.
4 단계: 감사 로그를 작동시키기 위해 HSM에서 작업 수행
cloudhsm_mgmt_util,key_mgmt_util 또는 SDK (Software Developer Kit) 라이브러리를 사용하여 HSM 어플라이언스와 상호 작용할 수 있습니다. key_mgmt_util을 사용하여 HSM에서 암호화 작업을 진행할 수 있습니다.
클라이언트 인스턴스에 연결하여 시작하고 cloudhsm-client가 실행 중인지 확인하세요. 확실하지 않은 경우 start 명령을 실행하십시오.
아마존 리눅스
$ sudo start cloudhsm-client
윈도우
C:\Program Files\Amazon\CloudHSM> net.exe start AWSCloudHSMClient
이제 다음 명령을 실행하여 key_mgmt_util을 시작합니다.
$ /opt/cloudhsm/bin/key_mgmt_util
프롬프트가 표시되면 CU로 로그인하여 키를 작성하고 <USERNAME> 및 <PASSWORD>를 실제 CU 사용자의 사용자 이름 및 비밀번호로 바꿉니다.
Command: loginHSM -u CU -s <USERNAME> -p <PASSWORD>
이 예제의 키를 만들기 위해 key_mgmt_util을 사용하여 대칭 키를 생성합니다. 다음은 예시입니다.
genSymKey -t 31 -s 32 -l aes256
예제 명령에서:
- genSymKey 는 대칭 키를 작성합니다.
- -t는 키 유형을 선택합니다. 이 경우 AES입니다.
- -s는 키 크기를 나타내며 이 경우 32 바이트입니다.
- -l은 키를 쉽게 인식 할 수 있는 레이블을 작성합니다.
그런 다음 아래 단계에 따라 CloudHSM Java 라이브러리를 사용하여 HSM에서 작업을 수행하십시오.
- AWS CloudHSM Java 라이브러리를 설치하십시오.
- 기본 기능 테스트를 사용하여 기본 로그인, AES 키 생성, 암호화 및 키 작업을 진행하십시오.
- Github 에서 제공되는 샘플 Java 코드를 사용할 수도 있습니다.
5 단계: Splunk에서 HSM 이벤트 검색 및 대시 보드 검토
- 감사 로그 이벤트가 Splunk로 스트리밍되었는지 확인합니다. 검색 창을 열고 쿼리를 실행하세요.
index=main sourcetype=”aws:cloudwatch:cloudhsm”
아래에서 소스 유형이 aws: cloudwatch: cloudhsm인 검색이 실행될 때 감사 이벤트가 Splunk에 표시되는 것을 볼 수 있습니다.
그림 3 – 로그 유형별 이벤트 필터링
작동 중인 대시 보드
이 섹션에서는 MGMT_KEY_DETAIL_LOG (암호화 작업) 및 MGMT_USER_DETAIL_LOG (사용자 관리 작업)와 같은 로그 유형을 기준으로 대시 보드를 탐색하고 이벤트를 필터링하는 방법을 보여줍니다.
- Splunk Console에서 상단 바의 Dashboards를 선택하세요.
- 목록에서CloudHSM Event Dashboard를 선택하세요.
그림 4 – 로그 유형별로 이벤트 필터링
- Log Type에서 MGMT_USER_DETAILS_LOG을 선택하고 Submit을 클릭해 사용자 작업만 볼 수 있도록 합니다. 로그 유형 MGMT_USER_DETAILS_LOG는 로그인, 로그 아웃, 비밀번호 변경, 삭제 또는 사용자 작업 생성과 같은 사용자 관련 이벤트를 캡처합니다.
- 대시 보드에서 HSM Command를 위한 이벤트만 보려면 드롭다운 CN_GENERATE_KEY에서 명령을 선택하고, 생성된 대칭 키에 대한 이벤트를 보려면 Submit을 클릭하세요. CN_GENERATE_KEY는 비대칭 키가 HSM에서 생성될 때 기록되는 이벤트입니다.
자세한 내용은 HSM 감사 로그 해석 문서를 참고해 주시기 바랍니다.
그림 5 – HSM 명령 별 Splunk 대시 보드 필터
CN_GENERATE_KEY 이벤트를 클릭하면 유용한 정보를 캡처하는 추가 필드가 포함된 더 자세한 보기가 표시됩니다. 예를 들면 다음과 같습니다.
- Opcode 는 CN_GENERATE_KEY를 기록 중인 관리 명령을 식별합니다.
- Sequence No는 로그 스트림에서 이벤트를 식별하고 기록된 순서를 나타냅니다.
- Priv/Secret key handle은 생성된 대칭 키의 논리적 식별자를 나타냅니다.
- Response field는 관리 명령에 대한 응답을 기록하며 값은 SUCCESS 및 ERROR입니다.
글을 마치며…
이 게시물에서는 Amazon CloudWatch Log Group, Blueprint AWS Lambda 함수 및 Splunk HTTP 이벤트 콜렉터 (HEC)를 사용하여 AWS CloudHSM에서 Splunk로 전송된 감사 이벤트를 해석하고 시각화하는 방법을 보여드렸습니다.
Amazon CloudHSM은 고객이 AWS 클라우드 내 전용 HSM(Hardware Security Module) 인스턴스를 사용하여 데이터 보안에 대한 기업, 계약 및 규정 준수 요구 사항을 충족하도록 도와줍니다.
이 솔루션을 사용하여 조직은 CloudHSM에서 생성된 감사 로그를 분석하여 CloudHSM 어플라이언스 내에서 발생하는 중요한 활동에 대한 가시성을 확보하고 보안 또는 운영 요구 사항에 대한 시각화 및 대시 보드를 구축할 수 있습니다.
** 메가존클라우드 TechBlog는 AWS BLOG 영문 게재 글 중에서 한국 사용자들에게 유용한 정보 및 콘텐츠를 우선적으로 번역하여 내부 엔지니어 검수를 받아서, 정기적으로 개제하고 있습니다. 추가로 번역 및 게재를 희망하는 글에 대해서 관리자에게 메일 또는 SNS 페이지에 댓글을 남겨주시면, 우선적으로 번역해서 전달 드리도록 하겠습니다.