Troubleshooting GitHub OIDC Subject 불일치 - 100-hours-a-week/KTB4-2nd-Cloud GitHub Wiki

GitHub OIDC Role 획득 실패

2026-09-25

🐞 에러 내용

처음 Production 배포 워크플로를 실행했을 때, AWS 자격 증명을 받는 단계에서 약 2분 동안 재시도하다 실패했습니다.

Could not assume role with OIDC:
Not authorized to perform sts:AssumeRoleWithWebIdentity

저장소 변수에 넣은 Role ARN, OIDC Provider, Audience는 모두 맞았습니다.

🔍 원인 분석

배포 Role의 신뢰 조건은 GitHub 문서의 기본 Subject 형식으로 적어두었습니다.

repo:100-hours-a-week/KTB4-2nd-Cloud:environment:production

값이 맞는데 거절되는 이유를 찾으려고 CloudTrail에서 실패한 AssumeRoleWithWebIdentity 이벤트를 열어봤습니다. 실제로 전달된 Subject는 형식이 달랐습니다.

repo:100-hours-a-week@<owner-id>/KTB4-2nd-Cloud@<repository-id>:environment:production

조직에 OIDC Subject 템플릿이 설정되어 있어서, 조직과 저장소 이름 뒤에 변하지 않는 ID가 붙어 있었습니다. 신뢰 조건은 sub를 정확히 일치로 비교하고 있어서 거절됐습니다.

✅ 해결 방법

CloudTrail에서 확인한 실제 Subject로 Terraform의 신뢰 조건을 고쳤습니다. Plan에서 바뀌는 게 신뢰 조건 한 건뿐인지 확인한 뒤 적용했습니다.

다음 배포에서는 OIDC 자격 증명 단계가 1초 안에 통과했습니다.

회고

문서의 기본 형식이 우리 조직에도 그대로 적용될 거라고 생각했습니다.

OIDC 신뢰 조건을 처음 만들 때는 조직의 Subject 템플릿을 먼저 확인하거나, 한 번 실행해서 CloudTrail에 찍힌 실제 값을 보고 조건을 확정합니다.

⚠️ **GitHub.com Fallback** ⚠️