github open-policy-agent/opa v0.67.0

latest releases: v0.70.0, v0.69.0, v0.68.0...
3 months ago

This release contains a mix of features, a new builtin function (strings.count), performance improvements, and bugfixes.

Breaking Change

Request Body Size Limits

OPA now automatically rejects very large requests (#6868) authored by @philipaconrad.
Requests with a Content-Length larger than 128 MB uncompressed, and gzipped requests with payloads that decompress to
larger than 256 MB will be rejected, as part of hardening OPA against denial-of-service attacks. Previously, a large
enough request could cause an OPA instance to run out of memory in low-memory sidecar deployment scenarios, just from
attempting to read the request body into memory.

These changes allow improvements in memory usage for the OPA HTTP server, and help OPA deployments avoid some accidental out-of-memory situations.

For most users, no changes will be needed to continue using OPA. However, to control this behavior, two new configuration
keys are available: server.decoding.max_length and server.decoding.gzip.max_length. These control the max size in
bytes to allow for an incoming request payload, and the maximum size in bytes to allow for a decompressed gzip request payload, respectively.

Here's an example OPA configuration using the new keys:

# Set max request size to 64 MB and max gzip size (decompressed) to be 128 MB.
server:
  decoding:
    max_length: 67108864
    gzip:
      max_length: 134217728

Topdown and Rego

  • topdown: New strings.count builtin which returns the number of non-overlapping instances of a substring in a string (#6827) authored by @Manish-Giri
  • format: Produce error when --rego-v1 formatted module has rule name conflicting with keyword (#6833) authored by @johanfylling
  • topdown: Add cap to caches for regex and glob built-in functions (#6828) authored by @johanfylling. This fixes possible memory leaks where caches grow uncontrollably when large amounts of regexes or globs are generated or originate from the input document.

Runtime, Tooling, SDK

  • repl: Add support for correctly loading bundle modules (#6872) authored by @ashutosh-narkar
  • plugins/discovery: Allow un-registration of discovery listener (#6851) authored by @mjungsbluth. The discovery plugin allows OPA to register a bundle download status listener but previously did not offer a method to unregister that listener
  • plugins/logs: Reduce amount of work performed inside global lock in decision log plugin (#6859) authored by @johanfylling
  • plugins/rest: Add a new client credential attribute to support Azure Workload Identity. This would allow workloads deployed on an Azure Kubernetes Services (AKS) cluster to authenticate and access Azure cloud resources (#6802) authored by @ledbutter
  • cmd/inspect: Add ability for opa inspect to inspect a single file outside of any bundle (#6873) authored by @tjons
  • cmd+bundle: Add --follow-symlinks flag to the opa build command to allow users to build directories with symlinked files, and have the contents of those symlinked files included in the built bundle (#6800) authored by @tjons
  • server: Add missing handling in the server for the explain=fails query value (#6886) authored by @acamatcisco

Docs, Website, Ecosystem

  • docs: Update bundle section with an example of a manifest with rego_version and file_rego_versions attributes (#6885) authored by @ashutosh-narkar
  • docs: Better link language SDKs to make them more discoverable (#6866) authored by @charlieegan3

Miscellaneous

  • ci: Add the OpenSSF Scorecard Github Action to help evaluate the OPA project's security posture (#6848) authored by @harshitasao
  • Dependency updates; notably:
    • build(go): bump golang from 1.22.4 to 1.22.5
    • build(deps): bump github.com/containerd/containerd from 1.7.18 to 1.7.20
    • build(deps): bump golang.org/x/net from 0.26.0 to 0.27.0
    • build(deps): bump google.golang.org/grpc from 1.64.0 to 1.65.0
    • build(deps): bump go.opentelemetry.io modules (#6847)

Don't miss a new opa release

NewReleases is sending notifications on new releases.