
aws 밖에 있는 워크로그(온프렘/다른 클라우드)가 IAM Roles Anywhere + ACM 인증서를 이용해서 임시 Role 자격증명으로 S3·Aurora·Lambda 등에 접근하는 구조
온프렘 서버가 “X.509 인증서(신분증)”로 AWS에 본인 인증 →
IAM Roles Anywhere가 이 인증서를 검증 → STS가 “임시 출입증(AccessKey/Secret/Token)” 발급 →
서버는 그 출입증으로 S3·Aurora·Lambda에 접근
AWS 밖에 있는 자원들
이 애들이 AWS 리소스에 접근해야 하는 상황 (예: 백업을 S3에 올리기, Aurora에 접속 등)
AssumeRole 해서Application account 안에
Roles Anywhere는 여기 있는 Role을 대신 Assume해서 권한을 얻는다.
ACM(또는 ACM Private CA)을 사용해 클라이언트 인증서(leaf certificate) 를 발급.
이 인증서는 나중에 Non-AWS 서버에 설치된다.
실제로는:
비유: 회사 인사팀(ACM)이 직원에게 사원증(leaf cert)을 발급하는 단계.
그림에서 “Leaf certificate” ↔ “IAM Roles Anywhere” 사이에 ② 표시.
Non-AWS 서버는 Roles Anywhere credential helper / SDK를 사용해
IAM Roles Anywhere는
비유: 출입구(IAM Roles Anywhere)에서 경비가 서버의 사원증(인증서)을 스캐너에 찍어서 진짜 직원인지 검증하는 과정.
③ 번호가 AWS STS ↔ IAM Roles Anywhere 사이에 있음.
인증서가 유효하다고 판단되면, Roles Anywhere는
AssumeRole(혹은 내부 API)을 STS에 호출해서
임시 Role 자격증명을 요청.
비유: 경비(IAM Roles Anywhere)가 인사 시스템(STS)에 전화해서
“이 직원에게 오늘 하루짜리 방문자 출입증 좀 발급해줘요”라고 요청하는 단계.
STS가 발급한 임시 자격증명
(AccessKeyId, SecretAccessKey, SessionToken, 만료 시간)을
IAM Roles Anywhere가 받아서 Non-AWS workload에 돌려준다.
그림에서는:
비유: 인사 시스템이 방문증을 만들어 경비에게 주고,
경비가 그걸 직원에게 건네주는 단계.
Non-AWS workload는 받은 임시 자격증명을
AWS_ACCESS_KEY_ID, ...)에 세팅해서그림에서:
권한은 그 Role에 붙어 있는 IAM Policy 가 결정:
예:
s3:PutObject on my-backup-bucket/*rds-db:connect to 특정 Auroralambda:InvokeFunction on 특정 함수비유: 직원이 받은 방문증(임시 자격증명)을 들고
“S3 창고”, “DB 방”, “Lambda 작업실” 같은 특정 방에만 들어갈 수 있는 것.
장점
Non-AWS 환경에서도 장기 Access Key를 파일에 저장하지 않고
짧은 수명의 STS 토큰만 사용 → 유출 리스크 감소.
인증서 기반이기 때문에
IAM Role으로 접근하므로
주의점
인증서(특히 private key) 보안이 뚫리면 그 서버로 가장해서 Role을 얻을 수 있음 →
온프렘/타클라우드 쪽 키 관리 중요.
IAM Roles Anywhere에서
STS 토큰 만료 시간/회전 주기 고려해서 애플리케이션이
자동 재발급 로직을 갖고 있어야 함.