Final Project Day2 서비스 조사 2

쿡쿡·2023년 6월 13일

DevOps(Code States)

목록 보기
13/25

Github에 있는 Kanban 기능을 이용해서 달성하고자 하는 목표 설정 후 시각화 하여

더 집중할 수 있도록 했다.

오늘 내가 해야하는 것은 아래와 같다.

  1. Security Hub와 grafana 연동 확인
  2. Security Hub 리포팅 확인


📌 1. Security Hub와 grafana 연동 확인

Security Hub와 AWS Grafana를 직접 연결할 수 없는 것 같다.

하지만 EventBridge를 통해 연결할 수 있는 것 확인 했다.

(https://www.ibm.com/docs/ko/dsm?topic=hub-creating-eventbridge-rule-sending-events)

AWS Grafana를 사용하지 않고 Grafana를 사용해서 Amazon CloudWatch의 로그를 받는 방법도 있다.

(https://grafana.com/docs/grafana/latest/datasources/aws-cloudwatch/)

또한 Security Hub에서 AWS Config와 Amazon Inspector의 분석 결과를 받을 수 있는 부분도 있다.Security Hub에서 AWS Config와 Amazon Inspector의 정보를 받을 수 있다.EventBridge를 통해 Security Hub와 CloudWatch를 연결할 수 있다.AWS Grafana에서는 CloudWatch의 데이터를 가져와 가시화 할 수 있다.



📌 2. Security Hub 리포팅 확인

AWS Security Hub를 사용하면 AWS 보안 서비스뿐만 아니라 파트너 솔루션에서 제공되는 보안 경고를 단일 공간에서 수집 및 처리 가능하다.
Insight 기능을 통해 리소스 탐지 결과 선택도 가능하다.

Cloud Watch Event를 통해 SIME, Ticketing, Chat, SOAR 환경과 연계 가능하다.
(이 말은 Cloud Watch를 통해 확인 가능하다고 생각?이 되는데 확인이 필요하다…)

이벤트에 이메일을 추가해서 보안 결과 알람이 가능하다.

https://www.youtube.com/watch?v=4PgY1pLCD6A

https://byounghee.tistory.com/340



📌 3. 1차 아키텍처와 프로젝트 변경사항

1차 아키텍처를 완성 했다. 앞으로 많은 수정이 있을 것 이다…

예상 비용 산출은 AWS의 Budget 기능을 사용해서 해보기로 했다.

보안 경고나 검사완료에 대한 알림은 이메일과 Slack을 이용해서 받기로 했다.

변경사항

  1. 파트너사 데이터베이스는 EC2가 아니라 RDS를 사용하기로 했다. EC2로 하면 관리의 필요성이 생겨 그럴 필요 없는 RDS를 이용하기로 하였다.
  2. WAS와 Web Server는 OpenTelemetry를 이용해 로그를 수집하여 Cloud Watch와 X-Ray로 보내기로 했다.
  3. CodePipeline을 사용하기로 했다. Secrets Manager를 사용하기 위해서 선택했다.




📌 4. 팀 조사

👉 was, wsb 로그 수집 후 시각화 가능 여부 확인(Opentelemetry Collector, grafana)




[수집 대상]

ECS Fargate (Web Server, WAS)

[수집 항목]

Metric (Web Server, WAS)

Trace (WAS)

[아키텍처]

[출처] https://github.com/aws-observability/terraform-aws-observability-accelerator/blob/main/docs/images/light-o11y-accelerator-amp-xray.png

  • 프로메테우스 사용 불필요 시 CloudWatch Metric 로 대체 (Grafana 연동 가능)

[Opentelemetry 적용 방법]

Opentelemetry Collector Sidecar 컨테이너 배포

👉 cce 점검 후 ses 서비스 통해 알림 가능 여부 확인

CCE(Common Configuration Enumeration) 취약점

사용자에게 허용된 권한 이상의 동작을 허용하거나, 범위 이상의 정보 열람, 변조, 유출을 가능하게 하는 시스템 설정 상의 취약점

진단 방법 : 정보시스템 (서버, 네트워크, DBMS, Web/Was, PC 등)의 설정값(Configuration)을 통하여 진단

개선 가능 여부 : 운영자가 환경설정값 변경을 통해 자체 개선이 가능

AWS Config 작동 방식

AWS Config를 켜면 먼저 계정에 있는 지원되는 AWS 리소스를 찾고, 각 리소스에 대한 구성 항목 생성

구성 항목의 구성 요소 : 메타데이터, 속성, 관계, 현재 구성, 관련 이벤트

기본적으로 AWS Config는 해당 리전에서 지원되는 모든 리소스에 대한 구성 항목을 만든다.

AWS Config는 계정 내 각 리소스에 대한 Describe 또는 List API 호출을 호출하여 리소스에 대한 모든 변경 사항을 추적

예를 들어, VPC 보안 그룹에서 송신 규칙을 제거하면 AWS Config가 해당 보안 그룹에 Describe API를 호출합니다. 그런 다음 AWS Config는 해당 보안 그룹과 연결된 모든 인스턴스에 Describe API를 호출합니다. 보안 그룹 (리소스) 및 각 인스턴스 (관련 리소스) 의 업데이트된 구성은 구성 항목으로 기록되고 구성 스트림으로 Amazon Simple Storage Service (Amazon S3) 버킷으로 전송

또한 AWS Config는 해당 API에서 시작하지 않은 구성 변경도 추적합니다. AWS Config는 리소스 구성을 주기적으로 검토하고, 변경된 구성에 대한 구성 항목을 생성

AWS Config 규칙을 사용하는 경우, AWS Config는 AWS 리소스 구성이 원하는 설정인지 여부를 지속적으로 평가

각 규칙은 이 규칙에 대한 평가 논리가 포함된 AWS Lambda 함수와 연결되어 있다. AWS Config는 리소스를 평가할 때 해당 규칙의 AWS Lambda 함수를 호출한다. 이 함수는 평가된 리소스의 준수 상태를 반환합니다. 리소스가 규칙의 조건을 위반한 경우, AWS Config는 해당 리소스와 규칙을 규칙 미준수로 표시한다. 리소스의 규정 준수 상태가 변경되면 Amazon SNS 주제로 알림을 AWS Config 보낸다.

구성 항목 전달

Amazon S3 버킷

AWS리소스 구성의 변경 사항을 추적하고 정기적으로 업데이트된 구성 세부 정보를 지정한 Amazon S3 버킷으로 전송. AWS Config가 기록하는 각 리소스 유형에 대해 6시간마다 구성 기록 파일을 보냄. 각 구성 기록 파일에는 6시간 동안 변경된 리소스에 대한 세부 정보가 포함되어 있다. 구성 변경이 발생하지 않은 경우 AWS Config는 파일을 보내지 않는다.

결과 : JSON 형식으로 전달

Amazon SNS 주제

messageType 키의 값으로 표시

"messageType": "ConfigurationHistoryDeliveryCompleted”

알림의 메시지 유형

ComplianceChangeNotification

AWS Config가 평가하는 리소스의 준수 유형 변경. 준수 유형은 리소스가 특정 AWS Config 규칙을 준수하는지 여부를 나타내며, 메시지의 ComplianceType 키로 표시. 이 메시지에는 비교를 위해 newEvaluationResult 및 oldEvaluationResult 객체가 포함되어 있다.

ConfigRulesEvaluationStarted

AWS Config가 지정한 리소스와 대조하여 규칙 평가 시작.

ConfigurationSnapshotDeliveryStarted

AWS Config구성 스냅샷을 Amazon S3 버킷으로 전송 시작. Amazon S3 버킷의 이름은 메시지의 s3Bucket 키로 제공.

ConfigurationSnapshotDeliveryCompleted

AWS Config구성 스냅샷을 Amazon S3 버킷으로 성공적으로 전송.

ConfigurationSnapshotDeliveryFailed

AWS Config구성 스냅샷을 Amazon S3 버킷으로 전송하지 못함.

ConfigurationHistoryDeliveryCompleted

AWS Config구성 기록을 Amazon S3 버킷으로 성공적으로 전송.

ConfigurationItemChangeNotification

리소스가 구성에서 생성, 삭제 또는 변경. 이 메시지에는 AWS Config가 이 변경 사항에 대해 만드는 구성 항목의 세부 정보는 물론 변경 유형도 포함

OversizedConfigurationItemChangeNotification

이 메시지 유형은 구성 항목 변경 알림이 Amazon SNS SNS에서 허용하는 최대 크기를 초과할 때 전송. 이 메시지에는 구성 항목의 요약 포함. SMS 메시지를 제외하고 Amazon SNS 메시지에는 XML, JSON 및 형식이 지정되지 않은 텍스트를 포함하여 최대 256KB의 텍스트 데이터가 포함될 수 있다.

OversizedConfigurationItemChangeDeliveryFailed

AWS ConfigAmazon S3 버킷으로 크기가 큰 구성 항목 변경 알림을 전송하지 못했다.

지원되는 리소스 유형

Amazon API Gateway, Amazon CloudFront, Amazon CloudWatch, Amazon DynamoDB, Amazon Elastic Container Service, Amazon Elastic Kubernetes 서비스, Amazon Quantum Ledger Database(Amazon QLDB), Amazon Relational Database Service, AWS Auto Scaling, AWS Lambda 함수, AWS Secrets Manager

출처 - https://docs.aws.amazon.com/ko_kr/config/latest/developerguide/how-does-config-work.html

결론 : AWS Config로 CCE 확인 가능 및 SNS 가능

Systems Manager

스테이트 매니저

패치 매니저가 인스턴스에 대한 동일한 패치 수준을 유지하도록 돕는 도구라면, 스테이트 매니저는 여러분이 정의한 방식대로 소프트웨어를 가져오고 환경을 설정하는 환경설정 도구

인사이트(Insights)

일부 인사이트는 AWS 리전 내 리소스 모음인 AWS 리소스 그룹에 따라 카테고리화되며, 사용자는 태그 키와 태그 밸류를 이용해서 리소스 그룹을 정의할 수 있다.

예를 들어, EC2 인스턴스, S3 버킷, EBS 볼륨, 시큐리티 그룹 등 특정 애플리케이션과 관련된 모든 리소스에 동일한 태그 키를 적용할 수 있다.

빌트인 인사이트

빌트인 인사이트는 Systems Manager가 기본적으로 제공하는 모니터링 내역을 담고 있으며, 다음 내용을 포함.

  • AWS Config Compliance, AWS 룰 및 리소스 별 컴플라이언스의 적용을 받거나, 받지 않는 리소스 그룹에 포함된 전체 리소스 수 및 AWS Config가 추적한 환경설정 변경 사항 이력을 보여준다.
  • CloudTrail Events, 그룹에 있는 리소스, 리소스 타입, 해당 리소스에 대해 CloudTrail이 마지막으로 기록한 이벤트 등을 보여준다.
  • Personal Health Dashboard, 리소스에 영향을 미칠 수 있는 각종 이슈에 대한 경고를 제공. 예를 들어, 일부 서비스 API의 응답 속도가 가끔식 느려지는 현상에 대한 이슈를 제기할 수 있다. 또한 지난 24시간동안 AWS에서 파악한 각종 이벤트의 수를 보여준다.
  • Trusted Advisor Recommendations, 트러스티드 어드바이저는 비용최적화, 성능, 보안, 내오류성 등의 측면에서 AWS 환경 요소의 최적화를 돕고 적절한 권장안을 제시. 또한 서비스 제한 수준의 80%를 초과한 내역도 보여준다.

인벤토리 매니저

OS, 애플리케이션 버전 등 인스턴스의 데이터를 수집

  • OS 이름 및 버전
  • 애플리케이션 및 파일네임, 버전, 사이즈
  • IP 및 MAC 주소 등 네트워크 환경설정
  • Windows 업데이트, 롤, 서비스, 레지스트리 밸류
  • CPU 모델, 코어, 스피드

AWS-GatherSoftwareInventory 정책 도큐먼트를 실행해서 리전별로 생성된 인벤토리에서 데이터를 수집할 인스턴스를 선택 가능.

인벤토리 수집 작업은 최소 30분마다 이루어진다.

출처 - https://kimjingo.tistory.com/187

AWS Config 규칙을 사용하여 비준수 리소스 자동 개선

개선 조치는 AWS Config 콘솔 또는 API를 통해 손쉽게 설정할 수 있다. 미리 채워진 목록에서 연결할 개선 조치를 선택하거나 AWS Systems Manager Automation 문서를 사용하여 자체적으로 사용자 지정 개선 조치 생성. 수동 또는 자동 개선을 선택할 수 있으며, 개선 조치와 관련된 파라미터를 추가로 설정할 수도 있다.

AWS Config 규칙을 사용한 자동 개선은 미국 동부(오하이오), 미국 동부(버지니아 북부), 미국 서부(캘리포니아 북부), 미국 서부(오레곤), 아시아 태평양(뭄바이), 아시아 태평양(서울), 아시아 태평양(싱가포르), 아시아 태평양(시드니), 아시아 태평양(도쿄), 캐나다(중부), EU(프랑크푸르트), EU(아일랜드), EU(런던), EU(파리), EU(스톡홀름), 남아메리카(상파울루) 및 AWS GovCloud(US) 지역의 고객이 사용 가능.

출처 - https://aws.amazon.com/ko/about-aws/whats-new/2019/09/use-aws-config-rules-to-automatically-remediate-non-compliant-resources/

결론 : AWS Config 에서 발생한 환경설정은 AWS Systems Manager Automation 로 변경 가능할 것으로 보여진다.

👉 cve 점검 후 ses 서비스 통해 알림 가능 여부 확인


자산관리시스템 취약점 점검을 자동화하기 위한 Amazon Inspector 서비스 선택

Amazon Inspector 특징

  • 취약성 및 네트워크 노출이 있는지 지속적으로 환경 검사
  • 리스크 점수로 취약성을 정확하게 평가
  • 다른 서비스 및 시스템과의 결과 모니터링 및 처리

AWS Inspector가 스캔할 수 있는 리소스⭕

  • Amazon EC2 인스턴스
  • Amazon ECS 컨테이너 인스턴스
  • Amazon EKS 클러스터
  • AWS Lambda 함수
  • Amazon RDS 데이터베이스 인스턴스

AWS Inspector가 스캔할 수 없는 리소스 ❌

  • Amazon S3 버킷
  • Amazon DynamoDB 테이블
  • AWS Elastic Beanstalk 환경

Amazon EventBridge를 사용하여 Amazon Inspector 결과에 대한 사용자 지정 응답 생성 가능

관련 레퍼런스 링크

AWS Inspector 결과보고서 예시

요약

이 보고서는 AWS Inspector를 사용하여 수행한 보안 평가 및 취약점 스캐닝의 결과를 제공합니다. 이 보고서는 취약점에 대한 상세한 정보와 조치 방안을 포함하고 있습니다.

보안 평가 요약

  • 총 검사 대상: 10개의 EC2 인스턴스
  • 총 취약점: 35개의 취약점이 감지되었습니다.
  • 중요도 수준:
    • 매우 심각 (Critical): 5개
    • 심각 (High): 10개
    • 중간 (Medium): 15개
    • 낮음 (Low): 5개

취약점 상세 정보

매우 심각 (Critical)

  1. CVE-XXXX-XXXX: 원격 코드 실행 취약점
    • 취약성 설명: 해당 취약점은 원격 공격자가 악성 코드를 실행하여 시스템을 임의로 제어할 수 있는 취약점입니다.
    • 권고 사항: 이 취약점을 해결하기 위해 시스템의 패치를 적용하십시오. 최신 보안 업데이트를 적용하여 취약성을 제거하세요.
  2. CVE-XXXX-XXXX: 인증 우회 취약점
    • 취약성 설명: 해당 취약점은 인증 절차를 우회하여 인가되지 않은 액세스를 허용하는 취약점입니다.
    • 권고 사항: 인증 및 인가 메커니즘을 검토하고 강화하십시오. 안전한 인증 방식을 사용하여 액세스 제어를 강화하세요.

심각 (High)

  1. CVE-XXXX-XXXX: 웹 애플리케이션 SQL 인젝션 취약점
    • 취약성 설명: 해당 취약점은 악의적인 SQL 쿼리를 삽입하여 데이터베이스를 조작할 수 있는 취약점입니다.
    • 권고 사항: 입력 유효성 검사 및 매개변수화된 쿼리 사용과 같은 보안 조치를 적용하여 SQL 인젝션 공격을 방지하세요.
  2. CVE-XXXX-XXXX: 크로스 사이트 스크립팅 (XSS) 취약점
    • 취약성 설명: 해당 취약점은 사용자 입력을 신뢰하지 않고 웹 페이지에 삽입되....

✅ 위의 예처럼 취약점보고서를 알림을 받고 관리자가 해당 내용으로 취약점을 제거합니다.

👉 CostExplorer 비용 관리


### 비용 관리 이유
  • 프로젝트 진행 도중 예기치 않은 비용 방지
  • 향후 요금이 청구되지 않도록 특정 단계를 수행하기 위함

비용 관리 계획

  1. 예산 계획 및 설정
  2. 비용 관리 기능 중 Budgets 기능 사용이메일로 알림을 받거나 Slack 채널, Amazon Chime 룸 또는 원하는 Amazon SNS 주제에 업데이트를 게시
  3. 마일스톤 발생시 남은 기간에 대한 예상 비용을 확인
  4. 프로젝트 완료 시일이 가까울 때쯤 지속적으로 운영을 가정한 평균 소비 금액 산출(Optional) 불필요한 리소스 사용이 있었는지 확인
profile
https://www.notion.so/a67850905fb843fc9cdcdb173f888338

0개의 댓글