IAM 액세스 키 회전 알림 시스템 구축
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
DevOps
대상자
- AWS Lambda, boto3, Terraform 사용자
- IAM 보안 관리 및 자동화 필요 시스템 엔지니어
- 난이도: 중급 (AWS SDK와 DevOps 기초 지식 필요)
핵심 요약
- AWS IAM 액세스 키 회전 알림 시스템 구축
- boto3와 AWS SES를 활용한 자동 이메일 알림 시스템
- Lambda 함수로 IAM 사용자 액세스 키의 나이 계산 및 회전 경고
- Terraform을 통한 Lambda 배포 및 이벤트 브리지(EventBridge) 기반 크론 작업 자동화
섹션별 세부 요약
1. 사용자 및 액세스 키 목록 생성
- boto3.iam.list_users() API로 IAM 사용자 목록 가져오기
- boto3.iam.list_access_keys()로 액세스 키 메타데이터 수집
- datetime 모듈로 생성일 기준 나이 계산 (예:
date.today() - create_date
)
2. 액세스 키 회전 기준 검증
- 20일 이상 사용된 키에 대해 회전 경고 이메일 생성
- 5일 버퍼 기간을 위한 reminder_email_age 설정 (예:
Expiry_days - 5
) - HTML 형식의 이메일 본문 생성 (AWS IAM 사용자 링크 포함)
3. 이메일 전송 구현
- email.mime 모듈로 MIME 메시지 구조 생성
- boto3.ses.send_raw_email() API로 SES를 통해 이메일 전송
- from_email 및 to_email 주소 검증 (SES 샌드박스 계정 사용 시 필수)
4. Lambda 및 Terraform 배포
- Lambda 함수의 main() 메서드 정의 (이벤트 및 컨텍스트 매개변수 포함)
- Terraform을 이용한 압축 파일 생성 (
archive_file
데이터 소스 사용) - AWS IAM 역할 생성 및 IAM 정책 부여 (iam:ListAccessKeys, ses:SendEmail 권한 포함)
- EventBridge 규칙으로 Lambda를 일일 기준으로 트리거
결론
- 로컬 테스트 후 AWS 환경으로 Terraform을 통한 배포 수행
- AWS SES 이메일 전송 시 사용자 및 발신자 이메일 검증 필수
- DevOps 자동화로 IAM 보안 리스크를 정기적 회전 알림으로 관리 가능