From 7957c6a9ebe48a3909d66e58fd2e7166859a0718 Mon Sep 17 00:00:00 2001 From: wbsong111 Date: Wed, 19 Aug 2026 12:51:58 +0900 Subject: [PATCH] =?UTF-8?q?argo-cd:=20=EC=93=B0=EC=9D=B4=EC=A7=80=20?= =?UTF-8?q?=EC=95=8A=EB=8A=94=20dex=20=EB=A5=BC=20=EB=81=84=EA=B3=A0=20?= =?UTF-8?q?=EC=B0=A8=EB=8B=A8=20CVE=2057=20=EA=B1=B4=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit CVE 게이트 실측에서 ghcr.io/dexidp/dex:v2.45.1 이 혼자 차단 57 건을 만들고 있었다. argo-cd 10.4.0 전체 98 건의 58% 다. 그런데 이 dex 는 인증 경로에 전혀 관여하지 않는 상태였다. 차트 기본값 dex.enabled = true 운영 argocd-cm oidc.config 있음(Keycloak 직접) / dex.config 없음 dipup tpl 항상 configs.cm.oidc.config — dex 참조 0건 ArgoCD 는 oidc.config 가 있으면 dex 를 우회하고 dex.config 를 쓸 때만 dex 가 관여한다. 즉 쓰이지도 않는 파드가 떠서 차단 CVE 의 절반 이상을 만들고 있었다. 대응 레버를 순서대로 검토한 결과 이 방법이 먼저였다. 태그 교체 소진 — dex v2.45.1(2026-03-03) · argocd v3.5.1(2026-08-12) 모두 최신. 번들 도구도 git-lfs 3.7.1 · kustomize 5.8.1 로 이미 최신이고, 낡은 Go 는 각 업스트림 프로젝트의 선택이라 버전으로 해결되지 않는다. 베이스 OS 무의미 — 차단 98 건 중 9 건(9%)만 OS 패키지다. 89 건이 Go 모듈이라 바이너리에 컴파일돼 들어가 있어 베이스를 바꿔도 남는다. 미사용 제거 ← 이것. 한 줄로 57 건(58%). 자체 빌드 남은 41 건 대상. 별건으로 검토한다. 검증: 게이트 재실행 차단 337 → 280 건 (10.4.0 몫 98 → 41) 배포 테스트 PASS — 워크로드 7종 → 6종, dex-server 사라짐, /api/version v3.5.1 dex 기반 SSO 로 전환하려면 dex.enabled 를 true 로 되돌리고 configs.cm.dex.config 를 채운다. 그때 dex 이미지의 CVE 가 다시 잡히므로 대응 계획이 함께 필요하다 — CUSTOM-README 에 근거와 함께 적어뒀다. 7.8.11(구버전)의 dex 는 건드리지 않았다. released 된 버전이라 동결한다. Co-Authored-By: Claude Opus 5 (1M context) --- manifests/helm/argo-cd/10.4.0/CUSTOM-README.md | 9 +++++++++ manifests/helm/argo-cd/10.4.0/custom-values.yaml | 8 ++++++++ 2 files changed, 17 insertions(+) diff --git a/manifests/helm/argo-cd/10.4.0/CUSTOM-README.md b/manifests/helm/argo-cd/10.4.0/CUSTOM-README.md index 05d872d..7880133 100644 --- a/manifests/helm/argo-cd/10.4.0/CUSTOM-README.md +++ b/manifests/helm/argo-cd/10.4.0/CUSTOM-README.md @@ -61,6 +61,15 @@ Chart `argo-cd` 10.4.0 (ArgoCD v3.5.1) 기준이다. 값 이름·구조는 이 | Key | 값 | 이유 | |-----|-----|------| | configs.params.controller.resource.health.persist | `"true"` | ArgoCD v3.0 부터 리소스 health 를 Application CR 에 저장하지 않는 것이 기본값이다. dip-console-api 가 `.status.resources[].health` 를 읽어 카탈로그 오류 상세를 만들기 때문에, 끄면 해당 화면이 비어서 나온다. | +| dex.enabled | `false` | `configs.cm.oidc.config` 로 Keycloak 에 직접 연결하므로 dex 를 거치지 않는다. ArgoCD 는 `oidc.config` 가 있으면 dex 를 우회한다. 차트 기본값이 `true` 라 쓰이지도 않는 파드가 뜨고, CVE 게이트 차단을 크게 늘렸다(아래 참고). | + +> **dex 를 끈 근거** — 2026-08-19 게이트 실측에서 `ghcr.io/dexidp/dex:v2.45.1` 이 혼자 +> 차단 57 건을 만들었다. argo-cd 10.4.0 전체 98 건의 58% 다. 그런데 운영 `argocd-cm` 에는 +> `oidc.config` 만 있고 `dex.config` 는 없어 dex 가 인증 경로에 전혀 관여하지 않는 상태였다. +> 끄는 것만으로 차단이 98 → 41 건이 된다. +> +> **dex 기반 SSO 가 필요해지면** `dex.enabled: true` 로 되돌리고 `configs.cm.dex.config` 를 +> 채운다. 이때 dex 이미지의 CVE 가 게이트에 다시 잡히므로 대응 계획이 함께 필요하다. ### admin 계정 diff --git a/manifests/helm/argo-cd/10.4.0/custom-values.yaml b/manifests/helm/argo-cd/10.4.0/custom-values.yaml index caa0ee7..8872cc4 100644 --- a/manifests/helm/argo-cd/10.4.0/custom-values.yaml +++ b/manifests/helm/argo-cd/10.4.0/custom-values.yaml @@ -34,6 +34,14 @@ configs: policy.csv: | g, paasup, role:admin +dex: + # PaaSup 은 configs.cm.oidc.config 로 Keycloak 에 직접 연결하므로 dex 를 거치지 않는다. + # ArgoCD 는 oidc.config 가 있으면 dex 를 우회하고, dex.config 를 쓸 때만 dex 가 관여한다. + # 차트 기본값이 true 라 그동안 쓰이지도 않는 dex 파드가 떠 있었고, CVE 게이트에서 + # 차단 57 건(argo-cd 10.4.0 전체 98 건의 58%)을 혼자 만들고 있었다. + # dex 기반 SSO 로 전환하려면 이 값을 true 로 되돌리고 configs.cm.dex.config 를 채운다. + enabled: false + server: # apisix 가 TLS 를 종료하고 백엔드로 평문을 보내므로 서버는 평문으로 띄운다. # 지정하지 않으면 리다이렉트 루프가 발생한다.