Skip to main content
duksoo.dev
Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Back to homepage

Inspector 비용, Dev가 Prod보다 20배 높았던 이유

보안은 공짜가 아니다. 하지만 환경별로 필요한 보안 수준은 다르다. Dev 환경에 Prod 수준의 보안 모니터링을 적용하면 비용만 낭비된다.

AWS Inspector 비용 리포트를 보다가 이상한 점을 발견했다. Dev 환경이 Prod보다 거의 20배 비용이 나오고 있었다. 원인을 추적하다 보니 ECR Enhanced Scanning의 동작 방식을 제대로 이해하게 되었다.

문제 상황

월간 비용 리포트에서 Inspector 비용이 눈에 띄었다.

Read full post gdoc_arrow_right_alt

AWS 미사용 리전에 숨어드는 공격, IAM 키 탈취의 위험성

AWS IAM 키가 탈취되면 어떤 일이 벌어질까? 공격자는 평소 사용하지 않는 리전에 리소스를 생성해서 숨는다. AWS 리전이 30개가 넘는데, 대부분 1~2개 리전만 사용한다. 나머지 리전은 모니터링 사각지대다.

공격 패턴

1단계: IAM 키 탈취

공격자가 IAM Access Key를 얻는 방법:

Read full post gdoc_arrow_right_alt

IRSA 완전 정복: EKS Pod가 AWS 서비스에 접근하는 원리

EKS에서 Pod가 S3에 파일을 올리거나 SQS에 메시지를 보내려면 AWS 자격 증명이 필요하다. 예전에는 AWS Access Key를 환경변수나 ConfigMap에 넣어서 해결했다. 동작은 하지만, 키가 유출되면 누구나 해당 권한을 사용할 수 있고, 키 로테이션도 수동이다.

IRSA(IAM Roles for Service Accounts)는 이 문제를 근본적으로 해결한다. Kubernetes의 ServiceAccount와 AWS IAM Role을 OIDC 프로토콜로 연결해서, Pod에 임시 자격 증명을 자동으로 주입한다. 키를 코드에 넣을 필요가 없고, 토큰은 자동 갱신되며, 네임스페이스 단위로 권한을 분리할 수 있다.

Read full post gdoc_arrow_right_alt

External Secrets Operator: K8s에서 시크릿을 관리하는 두 가지 접근

K8s 환경에서 앱이 DB 비밀번호나 API 키 같은 시크릿을 사용하려면, 어딘가에서 가져와야 한다. 이 “어딘가"와 “가져오는 방식"에 따라 아키텍처가 달라진다.

크게 두 가지 접근이 있다. 앱이 AWS API를 직접 호출해서 읽는 방식과, K8s Operator가 대신 읽어서 환경변수로 넣어주는 방식이다. 전자는 Parameter Store 직접 읽기, 후자는 External Secrets Operator다. 각각의 동작 원리와 트레이드오프를 정리한다.

방식 1: 앱이 직접 읽기 (Parameter Store)

Spring Boot 기준으로, Spring Cloud AWS가 제공하는 Parameter Store 통합 기능을 사용하는 방식이다.

Read full post gdoc_arrow_right_alt