sas-logon-app 파드는 정상적으로 떠 있는데 로그에 다음 메시지가 반복된다.
Exception, Invalid scope: sas-localization.app_impersonation
logger: org.cloudfoundry.identity.uaa.oauth.token
source: sas-logon-app
파드가 죽지는 않는다. 애플리케이션 초기화 로그는 정상이고 WAR 도 제대로 올라와 있다. 다만 토큰 발급 요청을 거부하고 있는 상태다.
Viya 4 의 내부 서비스는 서로 호출할 때 sas-logon-app 이 품고 있는 UAA(OAuth 서버)에서 토큰을 받는다. 어떤 서비스가 요청한 스코프가 UAA 의 클라이언트 정의에 없으면 토큰 발급이 거부되고 Invalid scope 가 찍힌다.
sas-localization
-> (client_credentials + app_impersonation)
sas-logon-app (UAA)
-> 스코프 미등록 -> 토큰 발급 거부
결과적으로 사용자 로그인 화면이 느려지거나 다국어 메시지가 나오지 않고, UI 에서 산발적인 오류가 나면서 로그에는 경고만 계속 쌓인다.
| 원인 | 설명 |
|---|---|
| 부분 적용 | security · oauth 관련 오버레이가 빠진 채 일부만 apply 됐다 |
| 업그레이드 잔재 | LTS 간 업그레이드에서 UAA 의 기존 클라이언트 정의가 남아 새 서비스의 스코프가 반영되지 않았다 |
| 이미지 버전 불일치 | 미러 레지스트리에 일부만 최신 이미지가 들어와 logon 과 해당 서비스의 릴리스가 다르다 |
| 다른 배포 자산 혼용 | 다른 주문 번호의 sas-bases/examples/security 를 가져다 썼다 |
| 외부 IdP 연계 | OIDC·SAML 연동 후 서비스 계정용 스코프 설정이 어긋났다 |
사용자 인증은 되는데 내부 서비스 호출만 실패한다면 마지막 두 가지를 먼저 본다.
배포 릴리스를 먼저 확인한다.
kubectl -n <namespace> get cm sas-deployment-metadata -o yaml | grep -i version
문제의 스코프가 실제로 정의돼 있는지 본다.
kubectl -n <namespace> exec -it <logon-pod> -- \
grep -R "sas-localization.app_impersonation" /opt/sas/viya/config
아무것도 나오지 않으면 스코프가 등록되지 않은 상태다.
이미지 태그와 빌드 타임스탬프를 비교한다. 다르면 재배포 대상이다.
kubectl -n <namespace> get pod <logon-pod> -o jsonpath='{.spec.containers[0].image}{"\n"}'
kubectl -n <namespace> get pod <localization-pod> -o jsonpath='{.spec.containers[0].image}{"\n"}'
kustomize build 결과에 스코프 관련 내용이 들어 있는지 확인한다.
kustomize build -o site.yaml
grep -n "app_impersonation" site.yaml
재기동은 응급 조치일 뿐이다. 스코프 정의가 없으면 다시 재발한다.
kubectl -n <namespace> rollout restart deploy sas-logon-app
kubectl -n <namespace> rollout restart deploy sas-localization
근본 조치는 배포 자산을 정합하게 맞춰 전체를 다시 적용하는 것이다.
site-config 의 security · oauth 오버레이가 빠지지 않았는지 확인한다.kustomize build 결과 전체를 적용한다.sas-bases 는 주문 번호와 릴리스에 묶인다. 같은 연·월 표기라도 패치 레벨과 클라이언트·스코프 정의가 다를 수 있다. 특히 examples/security 는 UAA 클라이언트, 스코프, 인그레스·인증서 처리를 건드리므로, 다른 자산에서 가져다 쓰면 지금 같은 스코프 불일치가 생길 수 있다. 무조건 원인이라고 단정할 것은 아니지만 이 증상에서는 용의선상에 둔다.