릴리즈
CNCF graduated·incubating 프로젝트 릴리즈 노트의 AI 분석.
v1.18.0은 버그픽스 중심 릴리스로, 운영자가 반드시 확인해야 할 변경 사항은 RFC 9110 준수를 위한 User-Agent 헤더 하이픈 추가 하나입니다. 나머지는 런타임 개선, 포매터 및 커버리지 도구 수정, Go 툴체인 버전 갱신입니다.
breakingUser-Agent 헤더 형식 변경 (RFC 9110 준수)
OPA가 HTTP 요청 시 전송하는 User-Agent 헤더가 'Open Policy Agent/<version> (<os>, <arch>)'에서 'Open-Policy-Agent/<version> (<os>, <arch>)'로 바뀌었습니다('Open'과 'Policy' 사이에 하이픈 추가). 이전 문자열을 정확히 일치시키는 서버 측 로그 필터, WAF 규칙, 접근 정책이 있다면 v1.18.0 업그레이드 후 반드시 수정해야 합니다.
주요 변경 (7)
- User-Agent 헤더가 'Open Policy Agent'에서 'Open-Policy-Agent'(하이픈 추가)로 변경됨 — 이전 문자열 정확 일치 필터나 WAF 규칙은 업그레이드 전 점검 필요
- 컨테이너 환경 리소스 제한 복원 및 확장: GOMAXPROCS 자동 설정 복구, GOMEMLIMIT 자동 설정 신규 지원
- opa fmt 교정 버그 다수 수정: 단일 항목 이터러블의 멀티라인 형식 유지, 주석 뒤 with 절 유실 문제 해결
- opa test --coverage 개선: 리포트에 범위 정보 추가, 인라인 규칙 헤드 추적, 논리곱(conjunction) 표현식 커버리지 지원
- future.keywords.not을 every 블록 내부에서 사용할 때 발생하던 부분 평가 회귀 버그 수정, every 내부 컴프리헨션의 변수 네임스페이싱 문제도 함께 수정
- 성능 개선: object.get 메모리 할당 감소, topdown dst.Compare(src) 숏컷 제거, format_int 10진수 경로에서 strconv.ParseInt 호출 생략
- Go 1.26.3 → 1.26.4 업데이트, 웹사이트 및 노드 의존성 일괄 갱신
OPA HTTP 핸들러와 암호화 내장 함수에 영향을 주는 Go stdlib 취약점 2건을 수정한 보안 패치입니다. v1.17.0 대비 코드 변경은 없습니다.
securityOPA 서버 또는 crypto 내장 함수 사용 시 즉시 v1.17.1로 업그레이드
Go stdlib 취약점 두 건(GO-2026-5039, GO-2026-5037)이 OPA의 HTTP 핸들러와 암호화 내장 함수에 직접 영향을 줍니다. OPA를 서버 모드로 운영하거나 Rego에서 crypto 관련 내장 함수를 사용 중이라면 v1.17.0 이하에서 노출된 상태입니다. v1.17.1은 코드 변경이 없으므로 설정이나 정책 수정 없이 바이너리만 교체하면 됩니다. OPA 바이너리를 직접 빌드하는 경우엔 Go 툴체인을 1.26.4로 직접 올려야 합니다.
주요 변경 (4)
- Go 런타임 1.26.3 → 1.26.4 업그레이드
- GO-2026-5039: HTTP 핸들러 관련 stdlib 취약점 수정
- GO-2026-5037: 암호화 내장 함수 관련 stdlib 취약점 수정
- v1.17.0 대비 기능 변경 없음 — 순수 보안 패치
OPA v1.17.0은 부정 처리의 의미론적 버그를 수정하고 결정 로그 레이블 보고를 개선합니다. 대부분 향상 사항이지만 하나의 의존성 제거는 특정 환경에서 수동 GOMAXPROCS 구성이 필요할 수 있습니다.
breakingautomaxprocs 및 x/net 의존성 제거됨; 필요시 GOMAXPROCS 수동 구성
OPA v1.17.0은 automaxprocs와 x/net 의존성을 제거하여 런타임 크기를 줄이고 이 라이브러리를 관리하는 애플리케이션과의 충돌을 제거합니다. automaxprocs 동작(CPU 자동 감지 및 GOMAXPROCS 튜닝)을 명시적으로 의존하지 않으면 조치가 필요 없습니다. 그 동작에 의존한다면 환경이나 배포에서 GOMAXPROCS를 수동으로 구성해야 할 수 있습니다. 대부분의 사용자는 영향을 받지 않습니다.
enhancement복합식 부정 의미론 수정을 위해 future.keywords.not 임포트하기
OPA v1.17.0은 복합식 부정(`not f(g(input.x))`)에서 중간값이 정의되지 않으면 규칙이 조용히 실패하던 오래된 버그를 고칩니다. `future.keywords.not` 임포트를 추가하면 정의되지 않은 중간값이 더 이상 규칙 실패를 일으키지 않고 부정이 올바르게 성공합니다. 입력이나 함수 결과가 정의되지 않을 수 있는 복잡한 식의 부정에 의존하는 정책이 있다면 `future.keywords.not`을 임포트하세요. 정책 평가 동작이 바뀌지만 올바른 방향입니다.
enhancement결정 로그 파싱을 새로운 rule_labels 배열 형식에 맞게 업데이트하기
결정 로그에 새로운 최상위 `rule_labels` 배열이 추가되어 성공적으로 평가된 모든 규칙의 레이블을 하나의 항목에 모읍니다(규칙 > 문서 > 패키지 > 서브패키지 순서로 우선순위 결정). 이전에는 레이블을 기여한 각 범위마다 로그 항목이 하나씩 있었습니다. 결정 로그를 규칙 레이블로 파싱하거나 쿼리한다면 개별 범위 레벨 항목 대신 `rule_labels`를 통합된 레이블 맵의 배열로 읽도록 로그 파싱 로직을 업데이트하세요. 이 변경으로 레이블 집계가 단순해지며 런타임과 Go SDK에서 기본으로 처리됩니다.
주요 변경 (5)
- 정의되지 않은 중간값을 포함한 복합식 부정 시 직관적이지 않은 실패를 수정하는 `future.keywords.not` 임포트 추가.
- 결정 로그에 성공적으로 평가된 모든 규칙의 통합된 레이블을 담은 `rule_labels` 배열 추가.
- 번들 매니페스트 및 IR 계획 JSON 스키마가 검증과 도구 통합을 위해 공개됨.
- 런타임 크기 감소를 위해 automaxprocs와 x/net 의존성 제거.
- `json.verify_schema` 및 `json.match_schema` 내장 함수에서 패턴 검증 활성화.
v1.16.0은 URI 빌트인 함수 추가, Data API 메타데이터 지원, OTLP 메트릭 내보내기와 함께, v1.15.x에서 발생한 로그 유실 버그를 수정한 릴리스입니다.
securityunits.parse_bytes 지수 상한 적용 — 타임아웃 우회 차단
units.parse_bytes에 비정상적으로 큰 지수 값을 넣으면 평가 타임아웃을 유발해 정책 집행을 우회할 수 있었습니다. v1.16.0에서 지수 크기에 상한을 두어 수정됐습니다. 사용자 입력이 units.parse_bytes로 전달되는 정책이 있다면 이번 수정이 직접 해당됩니다. 신뢰할 수 없는 소스에서 바이트 문자열을 파싱하는 정책을 우선 검토하세요.
breakingv1.15.x 사용 중이라면 즉시 업그레이드 — 로그가 소리 없이 사라집니다
v1.15.x의 BufferedLogger 버그로 인해 첫 번째 flush 이후 번들 다운로드 로그, print() 출력, 플러그인 로그가 전부 유실됩니다. 옵저버빌리티 스택에서 조용히 데이터가 손실되는 상황입니다. v1.15.x를 프로덕션에서 운영 중이라면 즉시 v1.16.0으로 업그레이드하고, 그 기간 동안의 로그 파이프라인에 공백이 없는지 확인하세요.
enhancementuri.parse / uri.is_valid로 기존 정규식 기반 URL 검증 로직 교체하세요
지금까지 많은 OPA 정책이 URL 파싱이나 검증에 정규식이나 문자열 조작을 써왔는데, 유지보수가 어렵고 엣지 케이스에 취약합니다. uri.parse는 RFC 3986 기반의 구조화된 컴포넌트(scheme, host, path, query 등)를 반환하고, uri.is_valid는 간결한 boolean 검사를 제공합니다. 리다이렉트 URI, 웹훅 URL, 혹은 URL을 포함하는 입력을 다루는 정책이 있다면 커스텀 파싱 로직을 이 빌트인으로 교체하는 게 낫습니다.
주요 변경 (5)
- RFC 3986 기반 URI 처리를 위한 uri.parse, uri.is_valid 빌트인 함수 신규 추가
- Data API에 요청/응답 메타데이터 지원 추가 — 커스텀 필드가 결정 로그의 Custom['request_metadata']에 기록됨
- Prometheus 메트릭을 OTLP로 내보내기 가능 — 옵저버빌리티 파이프라인 통합에 활용 가능
- v1.15.x에서 번들 다운로드, print() 호출, 플러그인 로그가 무음으로 유실되던 버그 수정
- units.parse_bytes의 지수 크기 상한 적용으로 타임아웃 우회 가능성 차단
OPA v1.15.0은 파일 로테이션을 지원하는 플러그인 로깅 시스템을 추가하고, 커스텀 HTTPAuthPlugin 동작 방식을 변경하며, AWS Web Identity 자격 증명 지원을 확장했습니다.
breaking업그레이드 전 커스텀 HTTPAuthPlugin 구현 코드 반드시 점검
커스텀 HTTPAuthPlugin을 구현한 경우, NewClient()는 이제 Client 인스턴스당 한 번만 호출됩니다. 요청 카운터, 트랜스포트 래핑, 로깅 등 요청별 로직이 NewClient()에 있다면 조용히 오동작하게 됩니다. 업그레이드 전에 플러그인 코드를 검토하고 모든 요청별 로직을 Prepare()로 옮겨야 합니다. OPA 내장 플러그인은 이미 수정되었으므로 커스텀 플러그인을 운영하는 팀만 영향을 받습니다.
enhancementfile_logger 플러그인으로 OPA 로그 관리 통합
새로운 file_logger 플러그인은 구조화된 JSON 로그를 자동 로테이션과 함께 기록하며, server.logger_plugin 하나의 설정 블록으로 런타임 로그와 결정 로그를 모두 처리합니다. 현재 OPA stdout을 tailing하거나 외부 로그 shipper로 파이핑하고 있다면, 파일 로거로 전환해 운영 복잡도를 낮출 수 있습니다. HTTP 번들 엔드포인트 없이도 결정 로그를 안정적으로 수집할 수 있어 저지연 환경에 적합합니다.
enhancementEKS 환경에서 IRSA 기반 AWS 자격 증명 네이티브 설정 가능
EKS에서 IRSA(IAM Roles for Service Accounts)를 사용하는 경우, Web Identity 토큰을 Assume Role 자격 증명 플로우에 직접 쓸 수 있게 됐습니다. 기존에 인스턴스 프로파일 자격 증명이나 수동 토큰 주입으로 우회하던 방식을 정리하고, REST 플러그인 AWS 서명 설정에서 web identity 프로바이더를 사용하도록 업데이트하면 됩니다.
주요 변경 (5)
- Go의 slog.Handler 기반 로거 플러그인 인터페이스 추가 — 런타임 로그와 결정 로그를 커스텀 목적지로 라우팅 가능하며, lumberjack 기반 파일 로테이션 내장
- 파괴적 변경: HTTPAuthPlugin.NewClient()가 이제 요청마다 호출되지 않고 한 번만 호출됨 — 요청별 로직은 반드시 Prepare()로 이전 필요
- AWS Signing에서 Assume Role 플로우에 Web Identity(서비스 어카운트) 자격 증명 지원 추가
- TLS 클라이언트 인증서 재읽기 주기를 cert_reread_interval_seconds로 설정 가능해졌으며, 콘텐츠 해싱으로 불필요한 파싱 방지
- 모든 TLS 설정이 서버 수준의 최소 버전 및 암호화 스위트 설정을 상속 — 이전에는 클라이언트별 TLS 설정이 서버 설정과 달라질 수 있었음
OPA v1.14.1은 정책 검색 실패를 유발하던 규칙 인덱서 변경사항을 되돌리고 플러그인 매니저 교착상태를 수정한 패치 릴리스입니다.
security의존성 보안 업데이트 적용
Go 1.26.1과 알려진 취약점을 패치한 업데이트된 의존성이 포함되어 있습니다. 특히 운영 환경에서 OPA를 사용한다면 정기 보안 유지보수 일정에 맞춰 이 업그레이드를 진행하세요.
breakingv1.14.0 사용 중이면 즉시 업그레이드
v1.14.0의 규칙 인덱서 변경사항이 일부 설정에서 정책 검색 실패를 야기합니다. 안정적인 정책 평가를 위해 v1.14.1로 배포하세요. 최적화 기능은 v1.15.0에서 적절한 수정과 함께 다시 제공될 예정입니다.
enhancement플러그인 매니저 안정성 개선
교착상태 수정으로 설정 작업 중 발생하던 간헐적 정지 현상이 해결됩니다. 플러그인 설정 과정에서 원인 불명의 OPA 정지를 경험했다면 이 릴리스로 문제가 해결될 것입니다.
주요 변경 (4)
- v1.14.0에서 정책 검색 실패를 유발했던 규칙 인덱서 최적화 되돌림
- opa.configure 작업 시 발생하던 플러그인 매니저 간헐적 교착상태 수정
- Go 1.26.1 업데이트 및 의존성 버전 갱신
- Golang 표준 라이브러리 및 패키지 취약점 해결
OPA v1.14.0은 변수 할당과 'x in {...}' 표현식에 대한 규칙 인덱싱 개선과 H2C Unix 도메인 소켓 지원, 향상된 테스트 출력, 다양한 성능 최적화를 제공합니다.
enhancement향상된 규칙 인덱싱으로 정책 성능 최적화
변수 할당과 멤버십 표현식에 대한 향상된 규칙 인덱싱은 'x := input.role; x in {"admin", "user"}' 같은 패턴을 사용하는 정책의 성능을 자동으로 개선합니다. 기존 정책을 검토하여 코드 변경 없이도 이 최적화의 혜택을 받을 수 있는 유사한 패턴을 식별하세요.
enhancement안전한 로컬 통신을 위해 Unix 도메인 소켓과 H2C 활성화
컨테이너화된 환경에서 OPA를 실행하거나 안전한 로컬 IPC가 필요한 경우, Unix 도메인 소켓과 함께 새로운 '--h2c' 플래그를 사용하세요. 이는 네트워크 오버헤드를 줄이고 로컬 서비스 간 통신 패턴의 보안을 향상시킵니다.
enhancement특수 용도를 위한 커스텀 스토리지 백엔드 API 활용
새로운 커스텀 스토리지 백엔드 등록 API는 특수 스토리지 시스템과의 통합을 가능하게 합니다. 특히 고성능이나 컴플라이언스 특화 스토리지 요구사항에 대해 현재 스토리지 요구사항이 커스텀 백엔드의 혜택을 받을 수 있는지 평가하세요.
주요 변경 (6)
- 변수 할당 및 'x in {...}' 표현식에 대한 규칙 인덱싱 강화로 쿼리 성능 향상
- 'opa run' 명령어에서 Unix 도메인 소켓과 함께 H2C 프로토콜 지원 추가
- 더 나은 디버깅 경험을 위한 테스트 출력에 줄 번호 표시 기능
- 확장성을 위한 커스텀 스토리지 백엔드 등록 API
- 플러그인 트리거 관리에서 경쟁 상태 수정
- 배열 통합 및 JSON 패치 작업의 성능 개선