dadrus / heimdall

A cloud native Identity Aware Proxy and Access Control Decision service
https://dadrus.github.io/heimdall/
Apache License 2.0
133 stars 15 forks source link
access-control access-management api-gateway auth-api auth-proxy authentication authorization decision-api golang identity-aware-proxy oauth2 openid-connect policy-enforcement

Heimdall

CI Security-Scan OpenSSF Best Practices OpenSSF Scorecard Go Report Card codecov Docker Helm Chart

Background

Heimdall is inspired by the Zero Trust idea and also by Pomerium and Ory's OAthkeeper. Some experience with both and my inability to update the latter one to include the desired functionality and behavior was Heimdall's born hour.

What is heimdall

Heimdall authenticates and authorizes incoming HTTP (HTTP 1.x and HTTP 2.0) requests as well as enriches these with further contextual information and finally transforms resulting subject information into a format, required by the upstream services.

It can do so

In both cases is acts as a Policy Enforcement and to some degree a Policy Decision Point according to NIST Zero Trust Architecture (SP 800-207)

How does authentication, authorization and transformation happen

The above said decision and transformation process happens via rules, respectively rule sets, which can be controlled by each and every upstream service individually and loaded by heimdall from different sources, like

That way, these rule sets can not only be managed centrally, but be deployed together with each particular upstream service as well without the need to restart or redeploy heimdall. Indeed, these rule sets are optional first class citizens of the upstream service and allow:

Beyond the functionality

Heimdall's main focus points beyond its functionality are:

Where can I find more details

Head over to the documentation for details or if you would like to give it a try.

Current state

The project is considered production-ready and is already in use by multiple organizations worldwide. The code base is stable and well-tested. However, some features are still missing, and the development of these features might lead to breaking changes in future updates. For information on the currently supported functionality, please refer to the Release descriptions. Planned features can be found in the defined Milestones.

If you ...