피드로 돌아가기
Dev.toSecurity
원문 읽기
Amazon이 Cedar라는 오픈소스 정책 언어를 개발해 중첩된 400줄의 if-statement 인가 로직을 5~10줄의 선언적 정책으로 변환
Cedar Has a Free API: Amazon's Authorization Language That Makes Access Control Actually Readable
AI 요약
Context
AWS 규모로 성장하면서 애플리케이션 코드에 묻혀 있는 인가 로직이 감사 불가능한 상태가 되었다. 간단한 admin/user 역할 확인이 3명에서 30,000명 사용자 규모로 증가하면서 400줄의 중첩된 조건문으로 변모했고, 보안팀의 감시, 제품팀의 이해, 새로운 기능 추가 모두 어려워졌다.
Technical Solution
- 인가 정책을 애플리케이션 코드에서 분리: 선언적 정책 언어(Cedar)로 정의하고 별도 저장소에서 버전 관리
- 영어에 가까운 문법으로 정책 표현: "User는 Photo가 공개이거나 viewer 목록에 있으면 Photo를 볼 수 있다"와 같은 규칙을 permit/deny 문법으로 작성
- 마이크로초 단위 정책 평가: Cedar 엔진이 요청(principal, action, resource, context)에 대해 인가 결정을 마이크로초 내에 수행
- 형식적 검증 도구 제공: 정책 배포 전에 수학적 증명 또는 반례를 통해 권한 누락, 충돌 여부를 확인
- 다중 언어 SDK 제공: Rust, Java, Python, JavaScript/TypeScript, Go에서 Cedar WASM 패키지 또는 AWS CLI로 사용 가능
- Amazon Verified Permissions 호스팅 서비스: 월 100만 건의 인가 요청까지 12개월 무료 제공
Key Takeaway
인가 정책을 코드와 분리한 선언적 아티팩트로 관리하면, 보안팀의 형식적 검증, 규제 준수팀의 정책 가독성, 기능 개발팀의 감시 유지보수성을 동시에 확보할 수 있다.
실천 포인트
문서 공유, 시간 기반 접근 제어, 세밀한 권한 관리가 필요한 SaaS 플랫폼에서 Cedar를 도입하면 인가 규칙을 3~5개의 permit 정책으로 단순화할 수 있고, 정책 변경 시 애플리케이션 코드 배포 없이 정책만 업데이트해 배포 주기를 단축할 수 있다.