클라우드 권한 설계 · 역할과 임시 자격증명 · 실습
장기 키 없이 권한을 넘긴다
목표
역할이 장기 키보다 안전한 것은 맞지만, **신뢰 정책을 느슨하게 쓰면 그 안전이
통째로 사라집니다.** 이 실습은 클라우드 계정 없이 신뢰 정책을 직접 쓰고,
위험한 형태를 잡아내는 검사기를 손으로 만들어 그 자리를 확인합니다.
신뢰 정책과 권한 정책
두 문서를 헷갈리면 아무것도 안 맞습니다.
- 권한 정책 — 이 역할이 무엇을 할 수 있는가
- 신뢰 정책 — 누가 이 역할을 맡을 수 있는가
이 실습에서 쓰는 것은 신뢰 정책 쪽입니다. 마지막 단계 하나만 권한 정책입니다.
조건
- 애플리케이션은 EC2 인스턴스 위에서 돕니다.
- 협력사 계정
210987654321에 읽기 권한을 열어 줘야 합니다. - CI 는 저장소
acme/platform의refs/heads/main에서만 배포합니다. - 개발자는 ECS 태스크를 만들 때 태스크 역할을 붙일 수 있어야 합니다.
문법 확인
정책은 대개 콘솔이 아니라 코드로 들어갑니다. JSON 이 깨지면 오류 메시지가
정책 내용과 무관하게 나오므로 매번 확인하는 편이 빠릅니다.
python3 -m json.tool /root/roles/trust-ec2.json만드는 것
| 파일 | 내용 |
|---|---|
| /root/roles/trust-ec2.json | 인스턴스가 맡는 역할 |
| /root/roles/trust-partner.json | 외부 계정에 여는 역할 |
| /root/roles/trust-ci.json | 연합으로 맡는 역할 |
| /root/roles/lint_trust.py | 위험한 신뢰 정책 검사기 |
| /root/roles/passrole.json | 역할을 넘기는 권한 |
| /root/roles/06-session.md | 세션 시간 계산 |
| /root/roles/07-notes.md | 정리 |
참고
4단계의 검사기는 숨겨 둔 정책 넷과 당신이 만든 정책 셋에 함께 돌아갑니다.
위험한 것을 놓쳐도 실패이고, 안전한 것을 잡아내도 실패입니다.
단계 7개
- 인스턴스가 스스로 자격증명을 받게 한다
- 외부 계정에 열 때 한 칸을 더 채운다
- CI 에서 키를 없앤다
- 위험한 신뢰 정책을 잡는 검사기
- 역할을 넘기는 권한을 좁힌다
- 세션 시간이 곧 대응 속도다
- 세 가지를 정리한다