AWS Secrets Manager 변경자는 CloudTrail PutSecretValue로 추적한다
·수정 1회
요약
- Secrets Manager 시크릿이 잘못 변경되었을 때, CloudTrail의
PutSecretValue이벤트로 변경자(IAM user/role), 시점, 소스 IP를 특정할 수 있다. list-secret-version-ids로 AWSCURRENT/AWSPREVIOUS 버전 시점을 먼저 파악한 뒤, CloudTrail에서 해당 시간대를 좁혀 조회하면 효율적이다.
본문
1단계: 버전 이력으로 변경 시점 파악
aws secretsmanager list-secret-version-ids \
--secret-id <SECRET_NAME> \
--region ap-northeast-2
AWSCURRENT(현재)와 AWSPREVIOUS(직전) 두 버전의 CreatedDate가 나온다. 이전 버전 값이 필요하면:
aws secretsmanager get-secret-value \
--secret-id <SECRET_NAME> \
--version-stage AWSPREVIOUS
2단계: CloudTrail에서 변경자 추적
aws cloudtrail lookup-events \
--lookup-attributes AttributeKey=EventName,AttributeValue=PutSecretValue \
--region ap-northeast-2 \
--start-time 2026-05-17 --end-time 2026-05-19 \
--output json
결과에서 Resources[].ResourceName으로 대상 시크릿을 필터링한 뒤, CloudTrailEvent JSON 내부의 핵심 필드를 확인한다:
| 필드 | 용도 |
|---|---|
userIdentity.type |
IAMUser, AssumedRole 등 |
userIdentity.arn |
변경자의 정확한 ARN |
userIdentity.userName |
IAM 사용자명 |
sourceIPAddress |
변경 요청 출처 IP |
eventTime |
변경 시각 (UTC) |
조회 팁
lookup-events는 EventName 기준 필터만 지원한다. 시크릿명 필터링은 결과를 받은 뒤 클라이언트에서 해야 한다.- CloudTrail 이벤트는 기본 90일 보관. 그 이상은 S3 trail export 필요.
GetSecretValue(읽기) 이벤트가 대량으로 섞여 나오므로 반드시PutSecretValue로 좁혀야 한다.
실전 사례
시크릿 내 특정 키(예: API 토큰)가 무효 값으로 바뀌어 10일간 외부 API 호출이 실패한 사례:
list-secret-version-ids로 AWSPREVIOUS가 특정 날짜에 생성된 것을 확인get-secret-value --version-stage AWSPREVIOUS로 이전 값이 무효 토큰임을 확인- CloudTrail
PutSecretValue에서 해당 시간대 변경자를 특정 → 다른 키를 수정하면서 의도치 않게 토큰이 덮어씌워진 것으로 판명
관련 노트
참고
함께 읽기 좋은 글
- GCP SA key의 사용 흔적은 private_key_id로 필터링한다
- enhanced Container Insights는 TaskId로 series를 폭증시키지만 CloudWatch proration이 비용을 수렴시킨다
- GCP API 키 호출자 IP는 Cloud Audit Data Access Log를 켜야 추적할 수 있다
- SageMaker Async Inference는 ApproximateBacklogSizePerInstance로 Scale-to-Zero가 가능하다
- ECS Exec SSM Agent는 readonlyRootFilesystem에서 동작하지 않는다