피드로 돌아가기
Dev.toDevOps
원문 읽기
CodeBuild OAuthProviderException 해결을 위한 IAM Policy 정밀 설계 전략
The Misleading "User is not authorized to access connection" Error in AWS CodeBuild — and Why Your IAM Policy Looks Fine
AI 요약
Context
AWS CodeBuild가 CodeConnections를 통해 GitHub 소스를 가져올 때 발생하는 권한 오류의 원인 분석. 에러 메시지의 'User'가 호출자가 아닌 CodeBuild Service Role을 지칭하여 디버깅 혼선을 초래하는 구조적 한계 존재.
Technical Solution
- Service Role 중심의 권한 검토를 통한 주체 식별 오류 해결
- 문서화되지 않은 GetConnectionToken 권한 추가로 API 호출 요구사항 충족
- ListConnections 등 Resource-level scoping 미지원 액션을 위한 resources: ["*"] 분리 설계
- 서비스 명칭 변경에 따른 codestar-connections와 codeconnections 접두사 동시 적용으로 SDK 호환성 확보
- IAM Eventual Consistency로 인한 Race Condition 방지를 위해 IAM 정책과 프로젝트 리소스를 별도 스택으로 분리 배포
실천 포인트
- OAuthProviderException 발생 시 호출자가 아닌 CodeBuild Service Role 권한 우선 확인 - UseConnection과 GetConnectionToken 권한이 쌍으로 구성되었는지 검토 - List 계열 액션에 특정 ARN을 지정하여 Silent Deny가 발생하는지 확인 - 서비스 리네임 이력이 있는 경우 구/신 접두사 권한을 모두 포함하여 설정 - IaC 배포 시 권한 전파 지연을 고려하여 IAM 스택을 리소스 스택보다 선행 배치