DevSecOps/클라우드(Cloud) 실습

Terraform을 활용한 AWS 보안 아키텍처 및 Amazon Q Developer를 활용한 통합모니터링 실습

개발하는지호 2025. 5. 24. 11:13

Key Result : AWS 보안 아키텍처를 표현하고 ISMS 자산 식별 및 AWS 자동화  

ex) Open Source 및 Terraform 활용하여 자산식별 및 ISMS 대응에 따른 자동화 구축

 

 

실습 : Terraform을 활용한 AWS 보안 아키텍처를 표현하고 Amazon Q Developer 를 활용한 ISMS 자산 식별 및 자산 상태 통합모니터링 자동화 구축

 

 

[구상도]

 

[구상 요약]

draw.io를 통해서 기본적인 AWS 아키텍쳐를 구성했다. 이후 ISMS에 입각하여 AWS 아키텍쳐를 보완하고, 자산 식별이 될 수 있도록 람다를 활용한 통합 모니터링을 구축(이번 실습에서는 EC2 Status와 메타 정보등을 불러오는 형태)했다. 그리고 이를 최종적으로 IaC도구인  Terraform을 활용하여 자동화를 진행했다.

 

[구축 순서]

 

1.  네트워크: VPC, Subnet, IGW(인터넷게이트웨이)

 

2. VPC 엔드포인트 생성 

  • S3와 통신하기 위함
  • 인터넷을 통해 통신할 필요가 없기 때문에 보안적 측면에서 좋음

3. EC2에 접근하기 위한 Session Manager 설정

  • PEM키를 활용에 비해 키 보관 등에서 자유롭다.

4. Config 스냅샷 & 데이터 저장을 위한 S3 버킷 생성

 

5.  Config 활성화

  • Status 

6. SNS 토픽생성 

  • EC2 상태 변경 알림을 위한 토픽을 생성
  • ex) pending, running, stopping, stopped, shutting-down, terminated
  •  

7. EventBridge 활성화 및 Rule 생성 

  • EC2 상태 변경 관련 이벤트 패턴 생성

 

8. EventBridge Target(대상)인 SNS에 입력 변환기 활용 및 SNS 토픽 액세스 정책 수정

  • SNS -> Amazon Q -> Slack 을 활용하기 위해 Amazon Q 형식을 따라야 하며, 필요한 정보를 제공해야 하므로 입력 변환기를 활용

 

  • SNS 토픽에서 해당 EventBridge 트리거를 허용하겠다는 액세스 정책 추가

 

9. AWS Amazon Q Developer(ChatBot) 생성 및 연결할 Slack 채널 구성 

  • 보안 알림인 EC2 실행, 중지, 생성, 삭제 등의 SNS 구독
  • 자산 리포트인 EC2 갯수, 용량 등의 SNS 구독

 

10. EC2 자산 식별 리포트용 리소스 추가

  1. 자신 리포트용 SNS 토픽 생성
    • 전체 EC2 갯수, 사용 용량 등 식별
  2. Lambda 역할 및 정책 설정
    • 역할 생성 후, 정책 설정
      1. CloudWatch Logs 쓰기 권한 부여
        • lambda 함수 코드가 정상적으로 실행되고 있는지 디버깅 하기 위함 
        • {
            "Action": [
              "logs:CreateLogGroup",
              "logs:CreateLogStream",
              "logs:PutLogEvents"
            ],
            "Effect": "Allow",
            "Resource": "arn:aws:logs:*:*:*"
          }
      2. EC2 인스턴스 정보와 EBS 볼륨 정보를 가져올 수 있는 권한 부여
        • {
            "Action": [
              "ec2:DescribeInstances",
              "ec2:DescribeVolumes"
            ],
            "Effect": "Allow",
            "Resource": "*"
          }
      3. Lambda가 최종적으로 메시지를 보낼 SNS 토픽에 대해서 Publish 권한 부여
        • {
            "Action": "sns:Publish",
            "Effect": "Allow",
            "Resource": "arn:aws:sns:ap-northeast-2:194722431119:asset-report-dev"
          }
     
  3. Lambda 코드 생성과 변형
    1. 파이썬으로 EC2 정보와 EBS 볼륨 정보를 가져와 자원 식별하는 알고리즘 생성
      • *특이사항 : ChatBot 용으로 JSON 형태로 구성해야 함
    2. 코드 번들로 변형
      • asset_report.py -> asset_report.zip
  4. Lambda 함수 생성
    • function_name : asset-identification-report-dev
    • role : 위에서 만든 역할 부여
    • handler : asset_report.py 내부 함수 lambda_handler
    • runtime : python3.9
    • filname(lambda에 올릴 코드 번들) : asset_report.zip
    • source_code_hash : Terraform이 zip 파일의 내용에 변경이 생겼는지 감지하기 위해 사용하는 무결성 검사 값
      • Terraform은 이 해시 가 이전 상태와 달라졌을 때만 Lambda 코드를 업데이트 하도록 동작한다.
     
  5. Lambda 스케쥴링 설정
    • 10분 마다 Lambda를 트리거 할 수 있도록 EventBridge 규칙 설정

 

 

 

[최종결과]

 

1. EC2 상태 변화에 따른 알림

 

 

2. EC2 인스턴스 자산 식별 리포트

 

 

[Terraform 코드]

main.tf
0.01MB

 

 

[Lamda 코드]

asset_report.py
0.00MB

 

[결론]

이번 실습을 통해 Terraform을 활용해서 ISMS에 입각한 아키텍쳐 구성과 자산 식별을 수월하게 통합 관리를 할 수 있음을 확인할 수 있었다. 

 

비록 시행 착오와 여러 삽질은 있었지만, 다음 실습 때에는 더 나은 형태로 진행할 수 있을 것 같다.

 

파이팅!

 

 

[참고자료]

 

https://docs.aws.amazon.com/ko_kr/config/latest/developerguide/monitor-config-with-cloudwatchevents.html

 

Amazon EventBridge AWS Config 를 사용한 모니터링 - AWS Config

이벤트 버스는 소스로부터 이벤트를 수신하고, 규칙을 사용하여 이벤트를 평가하고, 구성된 입력 변환을 적용하고, 적절한 대상(들)으로 라우팅합니다. 계정의 기본 이벤트 버스는에서 이벤트

docs.aws.amazon.com

https://docs.aws.amazon.com/ko_kr/eventbridge/latest/APIReference/API_InputTransformer.html

 

InputTransformer - Amazon EventBridge

InputTransformer Contains the parameters needed for you to provide custom input to a target based on one or more pieces of data extracted from the event. Contents InputTemplate Input template where you specify placeholders that will be filled with the valu

docs.aws.amazon.com

https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/monitoring-instance-state-changes.html?utm_source=chatgpt.com

 

Amazon EC2 인스턴스의 상태 변경 이벤트 - Amazon Elastic Compute Cloud

Amazon EC2 인스턴스의 상태 변경 이벤트 Amazon EC2는 인스턴스 상태가 변경되면 EC2 Instance State-change Notification 이벤트를 Amazon EventBridge로 보냅니다. 다음은 이 이벤트의 예제 데이터입니다. 이 예제에

docs.aws.amazon.com