opa README

The project's README from github.com/open-policy-agent/opa. As one markdown file: README.md.

logo Open Policy Agent

Build Status CII Best Practices Netlify Status

Open Policy Agent (OPA) is an open source, general-purpose policy engine that enables unified, context-aware policy enforcement across the entire stack.

OPA is proud to be a graduated project in the Cloud Native Computing Foundation (CNCF) landscape. For details read the CNCF announcement.

Get started with OPA

Want to talk about OPA or get support?

Interested to learn what others are doing with OPA?

Want to integrate OPA?

Want to contribute to OPA?

How does OPA work?

OPA gives you a high-level declarative language to author and enforce policies across your stack.

With OPA, you define rules that govern how your system should behave. These rules exist to answer questions like:

You integrate services with OPA so that these kinds of policy decisions do not have to be hardcoded in your service. Services integrate with OPA by executing queries when policy decisions are needed.

When you query OPA for a policy decision, OPA evaluates the rules and data (which you give it) to produce an answer. The policy decision is sent back as the result of the query.

For example, in a simple API authorization use case:

For concrete examples of how to integrate OPA with systems like Kubernetes, Terraform, Docker, SSH, and more, see openpolicyagent.org.

Presentations

Security

A third party security audit was performed by Cure53, you can see the full report here.

Please report vulnerabilities by email to open-policy-agent-security. We will send a confirmation message to acknowledge that we have received the report and then we will send additional messages to follow up once the issue has been investigated.

opa (open-policy-agent/opa)

Searching Database…

12.4K ·GitHub
What is this?OPA (Open Policy Agent) is an open source, general-purpose policy engine that lets you enforce policies — like 'can user X do Y on resource Z?' — consistently across your whole stack via a declarative policy language called Rego.
Is it a library I embed, or a standalone server I query?Both: you can run OPA as a standalone CLI/server that your services query over a REST API, or embed it directly via the Go SDK/API if your service is written in Go.
How do I get started with OPA?Try Rego in the browser via the Rego Playground, install the VS Code extension for local editing, or follow the 'Running OPA' docs to get the CLI running; container images are on Docker Hub and binaries are on GitHub releases.
Do I need to write my own rules, or does it come with built-in policies?You write the rules yourself in Rego and supply the data; OPA has no built-in policy logic out of the box.
What integration pitfall should I expect?OPA doesn't auto-enforce anything — your service must be modified to query OPA and then act on the allow/deny decision it returns, which means integration work on your side for each system (Kubernetes, Terraform, Docker, SSH, etc.).
Who typically uses this?Platform and security engineers building authorization/compliance controls into cloud-native systems; it's a CNCF graduated project used in production by many organizations.
Is OPA tied to Kubernetes, or can I use it anywhere?OPA is general-purpose and integrates with many systems beyond Kubernetes, including Terraform, Docker, and SSH.
What is Rego?Rego is OPA's high-level declarative policy language used to author the rules that OPA evaluates to make allow/deny decisions.
Has OPA's security been audited?Yes, a third-party security audit was performed by Cure53, and the full report is published; vulnerabilities can be reported by email to the OPA security team.
What kind of questions does OPA help answer?Policy questions like whether a user can call a given operation on a resource, which clusters a workload should deploy to, or what tags a resource must have before creation.
Size
3.5 GB
Stars
12.4K
Age
10y
Commits · 90 Days