Podcast Episode 18

Episode 018 26 min

Anders Eknert, Developer Advocate at Styra, On Evolved Authorization

with Anders Eknert · Styra

0:00 / 26:00

Also on Spotify, Apple Podcasts, YouTube, Podbean, Player FM

Episode 18 of The Security Podcast of Silicon Valley, published July 3, 2022. Host Jon McLachlan talks with Anders Eknert, developer advocate at Styra, the company behind the Open Policy Agent. Anders explains OPA as an oracle for policy decisions, how six or seven hundred services at Bisnode each solved authorization their own way until his team found OPA at KubeCon, and his path from identity standards at Curity to authorization. They cover authentication as who are you and authorization as what can you do, why authorization had no standards, keeping policy in GitHub, how to pronounce Rego, keeping decisions apart from enforcement, giving policy its own lifecycle, Anders's best and worst days at Styra, interviews as conversations, and the app he wishes someone would build.

Episode notes

In this enlightening episode of a YSecurity.io production, we delve into the transformative world of authorization with Anders Eknert, whose journey to Styra is marked by deep insights and vast experience. Anders guides us through the evolution of authorization, addressing the pivotal question, "What are you allowed to do?" and illustrating how the landscape is shifting away from the chaotic "wild-wild-west" towards more structured, secure, and efficient frameworks.

Anders shares his journey, highlighting key experiences that have shaped his understanding and approach to authorization. With a focus on best practices, he explores the complexities of managing permissions and access in today's digital environments. Through his work at Styra, Anders is at the forefront of developing solutions that not only enhance security but also improve operational agility and compliance.

Listeners will gain a comprehensive understanding of the challenges and advancements in authorization technology. Anders' expertise illuminates the path toward more sophisticated and user-centric authorization models, emphasizing the importance of clear policies, automation, and the role of open-source projects like Open Policy Agent (OPA) in driving the industry forward.

This episode offers a unique opportunity to learn from one of the leading voices in the field of authorization. Whether you're a security professional, a developer navigating access control in your applications, or simply interested in the future of digital security and governance, Anders' insights provide valuable perspectives on the evolution of authorization practices.

Join us in this YSecurity.io production for a fascinating conversation with Anders Eknert. For those interested in reaching out or learning more about Styra's approach to authorization, Anders can be contacted at anders@styra.com. This episode is a must-listen for anyone looking to stay ahead in the rapidly evolving world of digital security and authorization.

Hosted by Jon McLachlan — co-founder of YSecurity.

The deep dive

Decide here, enforce there

Anders Eknert, developer advocate at Styra, with Jon on the Open Policy Agent as an oracle for policy, a company with six or seven hundred services and no single way to authorize, a trip to KubeCon that ended a search, the step from identity to authorization, why authorization had no standards, a language pronounced ray-go, decisions kept apart from enforcement, policy with its own release cycle, interviews as conversations, and one app to rate anything.

Episode 18 of The Security Podcast of Silicon Valley aired on July 3, 2022, with Jon McLachlan hosting. The guest was Anders Eknert, developer advocate at Styra, the company behind the Open Policy Agent (Podbean, Apple Podcasts, Spotify). The episode is called “Anders Eknert, Developer Advocate at Styra, On Evolved Authorization.” On the tape, Anders says KubeCon is in Spain again that year, and that Styra is hiring a developer advocate.

Anders described OPA in a few words. You give it a policy, and then:

“you ask it questions and it gives you back answers.”

Anders Eknert, at 0:39

That makes it an oracle, he said.

Listen · Anders Eknert on episode 18, from 0:24
About 30 seconds: Anders on what Styra and the Open Policy Agent are. The clip stops on its own. Read the full transcript.

This page follows the conversation in order: a section for each part of it, sixteen figures, thirteen clips from the tape, two LinkedIn posts, two talks on YouTube, the full transcript, and five tools: a quiz, a scorecard for whether your authorization decides in one place, a calculator for what scattered authorization costs, a timeline, and a to-do list. Where the decodes of the tape disagree on a word, the transcript puts its best guess in brackets, and the page doesn’t quote or retell those words.

An oracle for policy

Jon opened by asking what Styra is and what open source project stands behind it. Anders said Styra founded the Open Policy Agent, or OPA:

“an open source, general purpose policy engine.”

Anders Eknert, at 0:33

The answers are decisions, and the questions can come from users, services or other clients. Anders gave three kinds of question a policy commonly decides. Can this piece of infrastructure be deployed to this environment? Can this Kubernetes resource be deployed to this cluster? And:

“whether a user should be allowed to do action X or Y in some environment or in some system”

Anders Eknert, at 1:04

The decision rests on the data in the input, which is often the resource itself. It can be any data, Anders said, like the time of day or the weather outside.

The OPA docs describe the project the same way today. OPA is a general-purpose policy engine that “unifies policy enforcement across the stack.” It gives you a declarative language for policy as code, and APIs to “offload policy decision-making from your software” (OPA). Wikipedia files OPA under a term from the XACML standard. It calls OPA “an open-source Policy Decision Point (PDP) implementation” that can be used wherever a policy decision is required (Wikipedia).

Four boxes joined by arrows. A question: from a user or service. Policy and data: rules in Rego. OPA, filled: decides. An answer: allow or deny. Below, a list. Can this piece of infrastructure be deployed to this environment? Can this user do action X or Y in this system? Can this Kubernetes resource be deployed to this cluster? Filled: the input is often the resource itself, and it can be any data: the time of day, or the weather outside.
One question in, one decision out. Sources: the episode and the OPA docs.

OPA at Pure Storage

Jon added that OPA is entirely open source. You can deploy the whole stack yourself, and a developer community drives it forward. That gives you the advantage of a full-time developer team without the overhead, he said, and:

“everyone there is excited to do the right thing.”

Jon McLachlan, at 1:53

Then he told his own OPA story.

“I know that I’ve contributed just a little bit to OPA in a past life.”

Jon McLachlan, at 1:56

At Pure Storage, his team used OPA for access to production. The goal was:

“to help make our systems decide whether or not someone had the authentication and authorization to access specific production machines.”

Jon McLachlan, at 2:06

They wanted all of it driven by policy, and OPA fit that use case and the rest of their integration. Only after they had built it on the open source project did they notice there was a company behind it. Styra showed them a demo, a GUI, testing features and change lifecycle management. Jon left Pure Storage before that conversation ended. He remembers being impressed, and he had nothing but good things to say about the Styra engineers he worked with.

Listen · Jon McLachlan on episode 18, from 1:55
About 30 seconds: Jon on using OPA at Pure Storage. The clip stops on its own. Read the full transcript.

Pure Storage has a new name since the tape. Wikipedia lists the company as Everpure, after a rebrand in February 2026 (Wikipedia). OPA itself had reached a milestone before the tape. On February 4, 2021, the Cloud Native Computing Foundation announced that OPA had graduated. It had joined the CNCF sandbox in April 2018 and moved to incubation a year later. The announcement counted more than 90 contributors from about 30 organizations, and maintainers from Google, Microsoft, VMware and Styra (CNCF). The CNCF is a subsidiary of the Linux Foundation, founded in 2015 to support cloud-native computing (Wikipedia).

A different answer in every team

Anders was biased, he said, and Jon pointed out that he himself was a little less biased, with no stake in Styra. Anders’s own story started at a customer.

“my story is pretty similar.”

Anders Eknert, at 3:15

He worked at Bisnode, a big provider of data to governments, organizations and corporations. Wikipedia describes Bisnode as a company that offered decision support with business, marketing and credit information, and says Dun and Bradstreet acquired it (Wikipedia). Bisnode was looking for a way to solve authorization in a distributed environment.

“So we had about six or seven hundred services”

Anders Eknert, at 3:38

Before, each team had come up with its own way to solve authorization. Some ways were better than others, Anders said, but they were all different. That made it hard to work together across team boundaries. Worse, it made auditing all but impossible. Some teams logged their authorization decisions and some didn’t, and the ones that did logged them in their own formats, mixed in with their other logs.

“there wasn’t a way to audit”

Anders Eknert, at 4:28

For Bisnode, an audit trail was a hard requirement.

Listen · Anders Eknert on episode 18, from 3:38
About 25 seconds: Anders on six or seven hundred services and no single way to authorize. The clip stops on its own. Read the full transcript.
Two cards side by side. Before, dashed: six or seven hundred services. Each team solved authorization its own way, and logged its decisions, or didn't, in its own format. The goal, filled: one unified way to solve authorization, with decisions you can audit. Below, a list. Some ways were better than others, Anders said, but they were all different. That made it hard to work together across team boundaries. Filled: an audit trail was a hard requirement, and there was no way to produce one.
Every team its own answer, or one place to ask. Source: the episode.

Found at KubeCon

That summer, the team traveled to KubeCon in Spain. Anders said KubeCon happened to be in Spain again that year. The trip wasn’t meant to find an authorization engine, but that’s how it turned out: they came across OPA there. Back home they built a small proof of concept and put authorization in front of a few microservices, and the rest followed.

“We can use this for infrastructure. We could use this for so much more.”

Anders Eknert, at 5:09

Kubernetes came next. Wikipedia describes Kubernetes as an open-source container orchestration system for deploying, scaling and managing software, and lists OPA among the CNCF projects that extend it (Wikipedia).

After a while, Bisnode had clusters of OPAs running across a large environment, and needed a way to manage them. Either they would build something, or they would find something better that already existed. That’s how Anders found Styra. Bisnode worked with Styra for a while and became a customer. Anders had so much fun that the grass looked greener on Styra’s side, he said, and he moved. His LinkedIn lists him as a developer advocate at Styra from December 2020, “Advocating Open Policy Agent (OPA) at Styra” (LinkedIn).

A numbered list. 1: at KubeCon in Spain, the team comes across OPA. They weren't looking for an authorization engine on that trip. 2: a small proof of concept puts authorization in front of a few microservices. 3: then Kubernetes, then infrastructure, then more. 4: clusters of OPAs grow across a large environment and need managing: build something, or find something better. 5: Bisnode becomes a Styra customer. In December 2020, Anders joins Styra as a developer advocate.
From a conference hallway to a job at the vendor. Sources: the episode and Anders's LinkedIn.

Jon summed it up: they had the same story, except Anders ended up working there. Anders joked that Jon didn’t, yet.

A security company?

Jon asked whether Styra is a security company or a business-to-business company for change lifecycle management, or whether those are the same thing.

Anders said he tends to think of Styra as a security company. Jon agreed. He saw it in his time with Styra’s developers in the open source project.

“It’s in your DNA.”

Jon McLachlan, at 6:41

Security had always been a passion for Jon, he said, and he asked how Anders got into it.

From identity to authorization

Anders worked at Bisnode twice. The first time, he was on a team whose main job was:

“to provide an identity solution for the company.”

Anders Eknert, at 7:09

That got him into the standards around identity: OAuth, OpenID Connect, and SCIM for user provisioning. Wikipedia describes OAuth as “an open standard for access delegation.” OpenID Connect, published by the OpenID Foundation in February 2014, lets clients receive information about authenticated sessions and end users. SCIM is a standard for exchanging user identity information between identity domains or IT systems.

Then he moved to a vendor in the identity space, Curity, a name with a joke in it. Curity is heavy on Java, Anders explained, and Java package names spell a domain backwards. Sweden’s country code is SE, so the package is se.curity. Jon spelled the name out for listeners. Anders’s LinkedIn lists him as a tech lead at Curity from October 2016 to August 2018, working with open standards “such as OAuth2, OpenID Connect and SCIM” (LinkedIn).

A timeline. September 2011: Solentro, full stack web developer. June 2014: Bisnode, developer, then tech lead, on a team building an identity solution. October 2016: Curity, tech lead on an identity product built on OAuth2, OpenID Connect and SCIM. August 2018: Bisnode again, developer advocate, in the years the company adopted OPA. December 2020: Styra, developer advocate for OPA, then manager of developer relations from December 2022. August 2025, filled: Apple, open source and developer relations, after OPA's creators joined Apple.
Anders's path from web developer to OPA maintainer. Sources: his LinkedIn and the episode.

He spent almost two years there learning the ropes of identity. And he noticed something about identity companies:

“they’re very strictly scoped to identity.”

Anders Eknert, at 8:32

Customers would come back with a token, a JSON web token or something else that proves identity, and ask what to do with it. That question, Anders said, is obviously authorization. The vendor’s answer was that it wasn’t their problem. In Anders’s words, everyone said:

“nah, that’s really not our concern.”

Anders Eknert, at 8:52

“Eventually I got curious, like, what if it was my concern?”

Anders Eknert, at 8:56

What do people do with these tokens? How do you solve the authorization problem? Those questions led him to Styra. A JSON Web Token is a proposed Internet standard for data whose JSON payload “asserts some number of claims” (Wikipedia). It says who you are. It doesn’t say what you may do.

Listen · Anders Eknert on episode 18, from 8:36
About 30 seconds: Anders on the question identity vendors left to someone else. The clip stops on its own. Read the full transcript.
Three boxes joined by arrows. Identity: proves who you are. A token, filled: a JSON web token. Authorization, dashed: what do you do with it? Below, a list. Identity vendors are strictly scoped to identity, Anders said. Customers came back with a token and asked what to do with it. Filled: that question is authorization, and it's where Anders went next.
Identity ends at the token, and authorization starts there. Source: the episode.

Two questions

Jon put the two problems side by side.

“The authentication problem, I always think of that as the answer to the question, who are you?”

Jon McLachlan, at 9:16

The answer usually goes back to a person, he said, but it can be a service, a device, an instance in the cloud or a node on Kubernetes. The other problem is authorization, authZ for short, and he asked Anders what that one is. Anders started with identity:

“identity, again, it’s pretty strictly scoped, but it’s also very well defined.”

Anders Eknert, at 9:59

Identity has standards at your disposal. Authorization, for a long time, had none, he said, and:

“none of these big vendors in the security space have really cared for that until a few years ago.”

Anders Eknert, at 10:18

“it’s been like the Wild West, pretty much”

Anders Eknert, at 10:26

In identity, everything is well defined and nobody deviates from the standards. That has a cost too, Anders said:

“it’s great to work with standards, but they’re also limiting in terms of creativity”

Anders Eknert, at 10:41

Listen · Anders Eknert on episode 18, from 10:10
About 35 seconds: Anders on why authorization was the Wild West. The clip stops on its own. Read the full transcript.

Wikipedia draws the same line. Authentication is “the act of proving an assertion, such as the identity of a computer system user.” Authorization is specifying rights to resources, usually through an access policy, and then deciding whether a subject may access a resource. Authorization did have a standard before OPA. OASIS ratified XACML 1.0, an XML-based language for access control policies, in 2003 (Wikipedia).

Two cards side by side. Authentication: who are you? A person, a service, a device, an instance in the cloud or a node on Kubernetes. Well defined, with standards around it: OAuth, OpenID Connect, SCIM. Authorization: what can you do? Filled: business-driven, and decided by each organization. For a long time, no standards the big vendors cared about. Below, a list. Standards make identity work, Anders said, and also limit creativity. XACML, an XML-based standard for access control policies, dates to 2003.
Who you are, and what you can do. Sources: the episode and Wikipedia.

Policy follows the business

Jon took the second question.

“because authZ is the answer to the question, what can you do?”

Jon McLachlan, at 10:47

“I often find that those are business-driven.”

Jon McLachlan, at 10:51

That’s why he thinks OPA is powerful. You keep your own internal definition of what a policy is, and you can:

“throw it into GitHub, and now you have your change management under control for your policies.”

Jon McLachlan, at 11:03

You can go back in time and see what decisions were made for which groups of people, or for one person if you need to. It’s all just a policy, and the policy says whether you’re allowed to do something, the oracle from the start of the episode.

Listen · Jon McLachlan on episode 18, from 10:47
About 40 seconds: Jon on authorization as a business question. The clip stops on its own. Read the full transcript.

Anders added a contrast. Your identity hardly changes when you move between organizations: who you are, maybe your position and some roles. Authorization has no such rules. Each organization decides, or whoever designs its authorization system, so it’s far more flexible. It’s also:

“way easier to do it wrong as well, because there aren’t really these guidelines for how to do it.”

Anders Eknert, at 12:03

OPA doesn’t try to stop that, he said. It lets your policies reflect the needs of your organization or your team, good or bad:

“there’s certainly room for mistakes compared to having a strict standard to follow.”

Anders Eknert, at 12:29

Two cards side by side. Identity: who you are, maybe your position and some roles. It changes little when you move to another organization. Authorization, filled: set by each organization, or whoever designs its system. More flexible, and easier to get wrong. Below, a list. Keep policy in GitHub, Jon said, and change management comes with it. Go back in time and see what was decided, for a group or for one person.
Identity travels with you, and authorization belongs to each organization. Source: the episode.

Ray-go, and a word for steering

OPA’s policy language is called Rego, Anders said, and Jon realized he had been saying it wrong. Anders had made the same mistake until someone corrected him. The OPA docs give both pronunciations: OPA is “oh-pa,” and Rego is “ray-go” (OPA).

Jon asked whether Rego is a Swedish word. It isn’t, Anders said, but Styra is. In Swedish, the word means:

“pretty much steering, or to govern”

Anders Eknert, at 13:22

Jon called the name appropriate. Rego, he added, was the reason his team picked OPA at Pure Storage: the flexibility comes from the language. Wikipedia describes Rego as “a JSON-based, Turing-incomplete language based on Datalog” (Wikipedia). Datalog is a declarative logic programming language.

Three cards side by side. OPA: pronounced oh-pa, the OPA docs say. Rego: pronounced ray-go. Jon had been saying it wrong, and so had Anders, once. Styra, filled: Swedish for steering, to govern, to steer.
Three names from the episode. Sources: the episode and the OPA docs.

Rules, data and a decision

Rego is designed to model policy the way people talk about it in the real world, Anders said: as a set of rules. You write the rules, you add the data you have, like organizational rules, and:

“then you query OPA for decisions based on these rules.”

Anders Eknert, at 14:05

His example was a doctor who wants to read a patient’s medical records. Should that be allowed? OPA provides the decision, and stops there. It doesn’t enforce anything.

“It just tells you, this is my decision, and now you do what you want with that.”

Anders Eknert, at 14:28

How you enforce the decision depends on the context, he said, and that split of responsibilities is the point.

Listen · Anders Eknert on episode 18, from 14:05
About 35 seconds: Anders on what OPA decides, and what it leaves to you. The clip stops on its own. Read the full transcript.
Three boxes joined by arrows. Your system: asks. OPA, filled: decides. Your system: enforces. Below, a list of ways to enforce. Refuse to sign a token. Print an error message, or display something different. Filled: XACML calls the two halves the Policy Decision Point and the Policy Enforcement Point.
OPA decides, and your system enforces. Sources: the episode and Wikipedia.

Decide in one place

Jon liked that split for a reason he applies to all engineering.

“Any systems that can be separate should be separate.”

Jon McLachlan, at 14:51

Decide in one place, and what you do with the decision is your business: refuse to sign a token, print an error message, or display something different. The payoff of centralizing:

“you get consistent decisions across your entire ecosystem.”

Jon McLachlan, at 15:18

That’s hard to get with 50 or more engineers, Jon said, everyone heads down on deadlines and contributing to the same software.

“you don’t want 50 different types of decisions being made in 50 different types of ways”

Jon McLachlan, at 15:38

You want one tool that helps everyone make the decisions their business logic needs, and corrals everyone in.

Listen · Jon McLachlan on episode 18, from 14:46
About 35 seconds: Jon on keeping the decision apart from what you do with it. The clip stops on its own. Read the full transcript.

The XACML standard names the same split. Each environment has a Policy Enforcement Point, which demands authorization and grants or denies access, and a central Policy Decision Point makes the final access decision (Wikipedia). In software design, the general idea is separation of concerns: divide a complex problem into distinct concerns you can address on their own.

Two cards side by side. Fifty ways, dashed: 50 or more engineers, heads down on deadlines, each deciding in their own code. One way, filled: every service asks one place, and the decisions stay consistent across the ecosystem.
Fifty ways to decide, or one. Source: the episode.

Policy on its own release cycle

Anders added one more separation. OPA decouples the policies from the applications, so they get their own lifecycle. You break the policy out of your application and move it elsewhere, and then you can deploy changes to policy:

“without having to recompile or redeploy your applications.”

Anders Eknert, at 16:27

That matters when you have hundreds or thousands of services, he said. It had been a pain point for him back when he worked on integrating authorization. Jon had felt the same pain.

Listen · Anders Eknert on episode 18, from 16:09
About 35 seconds: Anders on giving policy its own lifecycle. The clip stops on its own. Read the full transcript.
Two cards side by side. Rules in the code, dashed: a rule change means a code change, a rebuild and a redeploy for every service that carries the rule. Policy on its own, filled: ship the policy update without recompiling or redeploying the applications. Below: it matters most at hundreds or thousands of services, Anders said.
Change the policy without touching the service. Source: the episode.

Meeting the team

Jon asked about the best day of Anders’s time at Styra. That was an easy one, Anders said: a recent kickoff event in California. More than the trip, it was the people.

“it was the first time meeting all colleagues.”

Anders Eknert, at 17:23

He had started around the time COVID broke out and spent two years working from home. The kickoff was his first time meeting the people he’d been working with all along, and the ones who had joined since.

Listen · Anders Eknert on episode 18, from 17:10
About 35 seconds: Anders on his best day at Styra. The clip stops on its own. Read the full transcript.

Bad weeks

There was no single worst day, Anders said. His job as a developer advocate is a creative process: blogging, documentation and talks. Like any creative effort, it has good days and bad days.

“And sometimes you have bad weeks”

Anders Eknert, at 18:20

In those weeks, you sit and stare at your docs and not much of value comes out, which is frustrating. Those stretches drain you, he said.

Two cards side by side. Best day, filled: a kickoff in California: the first time meeting his colleagues, after starting around the outbreak of COVID and two years at home. Worst stretch: no single worst day. Bad weeks in creative work, staring at docs while little of value comes out.
The best day and the worst stretch, in Anders's words. Source: the episode.

Interviews as conversations

Jon asked for a favorite interview question, and Anders said Styra was hiring a developer advocate at the time. Jon put the word out to listeners. Anders didn’t have one question. He talks with candidates about the same things Jon had asked him: a good day, a bad day, what tended to work in the past and what didn’t. Then he tries to work out whether the person would fit the team. He doesn’t believe in trying to:

“put anyone against the wall in an interview situation.”

Anders Eknert, at 19:52

He keeps the conversation as casual as he can. Hiring is hard, he said, and in the end it comes down to personality and whether the person would work in the group.

Listen · Anders Eknert on episode 18, from 19:23
About 35 seconds: Anders on how he interviews. The clip stops on its own. Read the full transcript.

Jon agreed. He tries to melt the tension, and he hopes candidates interview him as much as he interviews them.

“Much prefer a conversation over a monologue.”

Anders Eknert, at 20:41

A conversation gives both sides better signal, Jon said. The company learns whether the person fits, and:

“it’s also really important that it’s a fit on the individual side too.”

Jon McLachlan, at 20:58

The candidate gets to make the best decision for themselves too.

Three cards side by side. What he asks: a good day, a bad day, what worked before and what didn't. What he avoids, dashed: putting anyone against the wall. What both sides get, filled: better signal: a fit for the company, and a fit for the candidate.
What Anders asks, and what both sides get from it. Source: the episode.

Could OPA run the interview?

Helping the other side decide is what Styra does, Anders said, so they should do it in interviews too. Jon tied it back to the oracle: allowed, or not allowed.

“we’re not really at the point yet where we can have OPA doing the interviews, but who knows?”

Anders Eknert, at 21:19

Jon ran with it. Maybe someday Styra pivots into AI, and the software does the interviews and flies the airplanes. Life is a series of decisions, he said, and if you could punch in the policy you want to live by, that could be an interesting consumer product.

One app to rate everything

Then Jon asked for something forward-looking:

“what is one other tool that you see out there in the future that you wish someone would just sit down and build already?”

Jon McLachlan, at 22:05

Any space, Jon said, so Anders stepped out of security. He likes apps for rating things, but there are too many of them, each with its own problems. He has one app for restaurants, one for beers and one for wine. He wishes for one app where he could rate anything, and get his data back out to see his own history of ratings.

Listen · Anders Eknert on episode 18, from 22:36
About 35 seconds: Anders on the app he wishes someone would build. The clip stops on its own. Read the full transcript.

Jon reads reviews, because a reviewer’s comments get closer to the truth. Yelp only goes so far, he said. Anders added the grocery store: twenty of everything, and no good way to find out which one people like.

“this isn’t a hard problem. It’s just somebody just got to do it.”

Anders Eknert, at 24:23

Jon pointed out the time, energy and work it takes, and the tricky parts under the hood.

“It’s not a weekend project, that’s for sure.”

Anders Eknert, at 24:37

Maybe a few nights and weekends, Jon said, for a listener with the entrepreneurial spark.

Four compartments in a row. Restaurants, dashed: one app. Beers, dashed: another app. Wine, dashed: a third app. Anything, filled: one app, data out. Below, a list. At the grocery store there are twenty of everything, and no way to know which one people like. Not a hard problem, Anders said, and not a weekend project either.
Three apps today, and the one Anders wants. Source: the episode.

Start with OPA

For parting words, Anders said that if you haven’t tried OPA, you should.

“There’s a pretty good resource from Styra. It’s called the Styra Academy, where you can learn the ropes and how to get started.”

Anders Eknert, at 25:15

He offered to help with any questions, since that’s his job. Today, the OPA community page links the docs, a Slack workspace, GitHub discussions and the Rego Playground (OPA). The OPA blog says the Rego Playground continues to run (OPA).

Listen · Anders Eknert on episode 18, from 25:11
About 20 seconds: Anders's parting advice. The clip stops on its own. Read the full transcript.

What happened after the tape

A year in review. On January 26, 2023, Anders wrote OPA’s review of 2022, its first full year as a CNCF graduated project. People met in person again, KubeCon drew thousands of attendees in Europe and North America, and the Open Policy Day with OPA ran alongside KubeCon North America. OPA and Rego added a record number of new features that year (OPA). His LinkedIn lists him as Styra’s manager of developer relations from December 2022 (LinkedIn).

OPA turns 1.0. On March 15, 2024, Anders wrote that OPA 1.0 was coming. The project’s first commit had turned eight on December 28, with more than 5,000 commits from over 400 contributors since. Great care had gone into never breaking existing policy, he wrote (OPA). OPA 1.0 shipped on December 20, 2024, “after nearly 10 years” and contributions from more than 450 developers (OPA).

On the CNCF channel. On April 15, 2025, the CNCF posted “Open Policy Agent (OPA) Intro & Deep Dive,” a session where Charlie Egan and Anders introduce the project. The OPA homepage links it as its maintainer track session (YouTube, OPA).

Charlie Egan and Anders on the OPA project, 29 minutes, posted on April 15, 2025. Watch on YouTube.

OPA comes to Swift. On May 14, 2025, the OPA blog introduced Swift OPA, native policy evaluation for Swift (OPA).

OPA’s creators join Apple. On August 20, 2025, the creators of OPA, along with many of Styra’s team, announced that they had joined Apple. Their note calls Apple “an enthusiastic OPA user” that runs it as part of its authorization infrastructure. Styra’s commercial distribution of OPA, called EOPA, the OPA Control Plane, Styra’s SDKs, and Regal, a linter for Rego partly written in Rego, were to move into the OPA GitHub organization. The OPA website stays with the CNCF and the community (OPA). Anders’s LinkedIn lists him at Apple from August 2025, in open source and developer relations (LinkedIn).

A decade of OPA. On October 15, 2025, Nordic APIs closed its 2025 Platform Summit with Anders’s keynote, “A Decade of Open Policy Agent” (LinkedIn). The video went up on December 1, 2025. Its notes say OPA started the movement now known as policy as code (YouTube).

Anders's Nordic APIs keynote, 25 minutes, posted on December 1, 2025. Watch on YouTube.

Three days later, Anders shared the video. He wrote that the AI hype had him rewrite parts of the talk mid-conference, to tell a more human story: his own.

Anders on his Nordic APIs keynote going up on YouTube.

Anders Eknert · December 4, 2025
Anders's post on the talk. View on LinkedIn.

A standard for authorization. On the tape, Anders said authorization had no standards. On January 12, 2026, the OpenID Foundation approved Authorization API 1.0, from its AuthZEN Working Group, as a Final Specification (OpenID Foundation). On episode 81, Eric Olden of Strata Identity described AuthZEN as a way for enforcement points from different vendors to run the same policy, and Jon called OPA the best-kept secret in authorization.

A full house. On March 26, 2026, Anders posted about a full house at the OPA maintainer track session, with people from the OPA community and his colleagues from Apple.

Anders on a full house at the OPA maintainer track.

Anders Eknert · March 26, 2026
Anders's post the day after the session. View on LinkedIn.

Policy for agent tool calls. The OPA docs now cover agent tool calling. A model doesn’t run a tool itself. It returns a structured request that names the tool and its parameters, and the harness around the model runs it. Tool calls are structured data, the docs say, which makes them “a good fit for policy based approval with OPA and Rego.” The harness is the Policy Enforcement Point, and before it runs a tool call, it asks OPA, the Policy Decision Point, for a decision. The example policy denies a list of tools, a shell among them, and denies web fetches that don’t start with https (OPA). It’s the split Jon and Anders described in 2022, with an AI agent as the system that asks.

Four boxes joined by arrows. The model: returns a tool call. The harness: asks first. OPA, filled: decides. The harness: runs it, or refuses. Below, a list. A tool call is structured data: the tool's name and its parameters. In the docs' example, the decision is a set of reasons to deny. An empty set means the harness runs the tools. Filled: the harness is the Policy Enforcement Point, and OPA is the Policy Decision Point.
The same split, with an agent asking. Source: the OPA docs.

OPA in the JVM. On November 5, 2026, the OPA blog announced that opa-java-wasm, the Java SDK for running policies compiled to Wasm, now lives in the OPA GitHub organization, with version 2.1.0 on Maven Central (OPA).

More on this site. On episode 89, Graham Neray of Oso explained why checking permissions at every level of the stack starts from fragmentation. On episode 3, Jon and Daniel Feldman took the who-are-you question to services. On episode 68, Travis McPeak of Resourcely bet on security tools that look like engineering tools. And authorization is the last layer makes the case that most companies still build authorization from scratch.

A timeline. January 2023: 2022 in review, Anders on OPA's first full year as a graduated CNCF project. December 2024: OPA 1.0, after nearly 10 years and more than 450 developers. August 2025: Apple, OPA's creators and many of Styra's team join Apple, and so does Anders. October 2025: a decade of OPA, Anders's keynote at the Nordic APIs Platform Summit. January 2026: Authorization API 1.0, a Final Specification from the OpenID AuthZEN Working Group. November 2026, filled: OPA in the JVM, opa-java-wasm moves into the OPA GitHub organization.
After the tape, from a review of 2022 to OPA in the JVM. Sources: the OPA blog, YouTube, LinkedIn, the OpenID Foundation and the OPA docs.

Did you catch it? A seven-question quiz

Seven questions from the episode. Each answer links the moment in the transcript or its section.

Quiz · seven questions

Did you catch it?

Pick an answer to see whether you caught it.

  1. What did Anders compare OPA to?

    a. "you ask it questions and it gives you back answers." He called it an oracle. Transcript, 0:39.

  2. How many services did Bisnode have when it looked for one way to do authorization?

    b. "So we had about six or seven hundred services" Transcript, 3:38.

  3. Where did Anders's team come across OPA?

    c. They weren't looking for an authorization engine on the trip, and found one. See Found at KubeCon.

  4. Which question did Jon say authorization answers?

    a. "because authZ is the answer to the question, what can you do?" Transcript, 10:47.

  5. What does OPA do with a decision?

    b. "It just tells you, this is my decision, and now you do what you want with that." Transcript, 14:28.

  6. What does Styra mean in Swedish?

    c. Steering, to govern, to steer. See Ray-go, and a word for steering.

  7. What did Anders wish someone would build?

    a. One app for restaurants, beers, wine and everything else, with his data out. See One app to rate everything.

Does your authorization decide in one place?

Eight questions on whether your authorization works like Bisnode’s six or seven hundred services before OPA, or like one place to ask. Each tip links the section behind it.

Scorecard · eight questions

Does your authorization decide in one place?

Answer for your company as it runs today. If two answers fit, pick the lower one.

  1. Do your services ask one place for authorization decisions?

    • Each team writes its own checks
    • Some services share a library or an engine
    • Every service asks one policy decision point

    Bisnode's teams each had their own way. See A different answer in every team.

  2. Can you audit every authorization decision?

    • Decisions aren't logged
    • Some services log them, each in its own format
    • Every decision is logged in one format, with its input and result

    "there wasn't a way to audit" See A different answer in every team.

  3. Are your policies in version control, with review and history?

    • The rules live in application code
    • In a repository, without review
    • In a repository, reviewed, with history you can go back through

    Jon's case for policy in GitHub. See Policy follows the business.

  4. Can you change a policy without redeploying the applications?

    • No, the rules are compiled in
    • For some services
    • Yes, policy ships on its own lifecycle

    "without having to recompile or redeploy your applications." See Policy on its own release cycle.

  5. Do your policies have tests that run before they ship?

    • No tests
    • A few
    • Every policy, in the pipeline

    There's room for mistakes without a strict standard. See Policy follows the business.

  6. Does one approach to policy cover your apps, infrastructure and Kubernetes?

    • Each has its own
    • Two of the three
    • All three

    Bisnode went from microservices to Kubernetes and infrastructure. See Found at KubeCon.

  7. Do your AI agents' tool calls get a policy decision before they run?

    • Agents call tools with no check
    • An allowlist in the agent's code
    • The harness asks a policy decision point before each call, and logs the answer

    The OPA docs now cover agent tool calls. See What happened after the tape.

  8. Do decisions use more than who the user is?

    • Identity only
    • Identity and roles
    • Roles, attributes of the resource, and context such as time

    A decision can rest on any data, even the time of day. See An oracle for policy.

Every team its own answer

Authorization lives in each service, and an audit has little to read. Start by listing where decisions get made, then log every decision in one format.

Partly in one place

Some decisions come from one place, and some don't. Next, move policy into version control with tests, and give it its own release cycle.

One place to ask

Your services ask one decision point, and you can show what it decided. Keep the tests current, and put agent tool calls behind the same check.

What does scattered authorization cost?

When every service carries its own authorization rules, every rule change means changing, testing and redeploying each service it touches. This calculator counts that engineering time.

Calculator

What does scattered authorization cost?

Four numbers: the services a typical rule change touches, the rule changes in a year, the hours to change, test and redeploy one service, and what an engineering hour costs you.

$144,000a year in engineering time
1,440 hengineering time a year
36.0engineer-weeks, at 40 hours a week

Rolling out rule changes one service at a time takes 1,440 h of engineering a year, or 36.0 engineer-weeks, at a cost of $144,000.

The calculator counts engineering time only. It leaves out audit work, outages from inconsistent rules, and the cost of running a policy engine. The defaults are placeholders: put in your own numbers.

From XACML to Apple

Anders’s roles, OPA’s milestones, the standards around them, and this show. Filter by topic.

Timeline

From XACML to Apple

  1. XACML 1.0

    OASIS ratifies an XML-based standard for access control policies (Wikipedia, on this page).

  2. Solentro

    Anders starts as a full stack web developer, to June 2014 (LinkedIn).

  3. OpenID Connect

    Published by the OpenID Foundation (Wikipedia, on this page).

  4. Bisnode

    Developer, then tech lead from August 2015 to October 2016 (LinkedIn, on this page).

  5. The CNCF

    Founded alongside Kubernetes 1.0 (Wikipedia).

  6. The first commit

    Tim Hinrichs's first commit in OPA, eight years old on December 28, 2023 (OPA, YouTube).

  7. Curity

    Tech lead on an identity product, to August 2018 (LinkedIn, on this page).

  8. CNCF sandbox

    OPA joins the CNCF sandbox (CNCF).

  9. Back at Bisnode

    Developer advocate, to December 2020 (LinkedIn, on this page).

  10. Incubation

    OPA moves to CNCF incubation, a year after the sandbox (CNCF).

  11. Styra

    Developer advocate for OPA (LinkedIn, on this page).

  12. OPA graduates

    At the CNCF, with maintainers from Google, Microsoft, VMware and Styra (CNCF, on this page).

  13. Episode 18

    Anders on the show (Podbean, transcript).

  14. Developer relations manager

    At Styra, to August 2025 (LinkedIn).

  15. 2022 in review

    Anders on OPA's first full year as a graduated project (OPA, on this page).

  16. 2023 in review

    Anders's review of OPA's year (OPA).

  17. OPA 1.0 is coming

    Anders on what changes, and what won't break (OPA).

  18. OPA 1.0

    After nearly 10 years and more than 450 developers (OPA).

  19. A maintainer session

    Charlie Egan and Anders introduce OPA on the CNCF channel (YouTube, on this page).

  20. Swift OPA

    Native policy evaluation for Swift (OPA).

  21. Apple

    Open source and developer relations (LinkedIn).

  22. OPA's creators join Apple

    With many of Styra's team, and Styra's tools move into the OPA project (OPA).

  23. A decade of OPA

    Anders's keynote at the Nordic APIs Platform Summit (LinkedIn, YouTube).

  24. Episode 81

    Eric Olden of Strata Identity on AuthZEN (episode page).

  25. Authorization API 1.0

    A Final Specification from the OpenID AuthZEN Working Group (OpenID Foundation).

  26. Everpure

    Pure Storage, where Jon used OPA, rebrands (Wikipedia, on this page).

  27. Episode 89

    Graham Neray of Oso on checks at every level of the stack (episode page).

  28. A full house

    Anders on the OPA maintainer track session (LinkedIn).

  29. opa-java-wasm

    The Java SDK for Wasm-compiled policies moves into the OPA GitHub organization (OPA).

What to do this week

Five things, in the order of the episode.

  1. Find where decisions get made. List the services that make their own authorization decisions, as in A different answer in every team.
  2. Log every decision the same way. Record each decision with its input and its result in one format, so an audit has something to read, as in A different answer in every team.
  3. Move policy into version control. Give every policy review, tests and history, and a release cycle of its own, as in Policy on its own release cycle.
  4. Put a decision point in front of agent tools. Have the harness ask for a decision before each tool call, as in What happened after the tape.
  5. Get help with it. Our AI Access Control Audits check who and what can reach your systems, the Secure MCP Program reviews the tools your agents connect to, and vCISO Services help you decide where authorization decisions should live. If you want to talk it through, book 15 minutes with us.

Key takeaways

  1. Ask one oracle

    OPA is a general-purpose policy engine: you give it a policy and data, ask it a question, and it returns a decision. Users, services and other clients can all ask.

  2. Scattered authorization can't be audited

    At Bisnode, six or seven hundred services each solved authorization their own way, and their decisions were logged in different formats or not at all. An audit trail was a hard requirement.

  3. Identity stops at the token

    Identity vendors stay strictly scoped to identity, Anders said. What to do with the token is authorization, the question that led him to Styra.

  4. Authorization is business-driven

    Authentication asks who you are and has standards. Authorization asks what you can do, and each organization decides, so it's flexible and easier to get wrong.

  5. Keep policy in version control

    Put policy in GitHub, Jon said, and you get change management and a history of what was decided, for a group or for one person.

  6. Separate deciding from enforcing

    OPA returns a decision and doesn't enforce it. Your system decides what to do with it, such as refusing to sign a token or printing an error, and decisions from one place stay consistent.

  7. Give policy its own release cycle

    Policy that lives apart from the application can change without recompiling or redeploying it, which matters at hundreds or thousands of services.

  8. Interview with a conversation

    Anders asks about good days, bad days and what worked, and keeps the conversation casual. Both sides get better signal about fit.

Chapters

Tap a chapter to play from there.

Pull quotes

“you ask it questions and it gives you back answers.”

Anders Eknert ·

“I know that I've contributed just a little bit to OPA in a past life.”

Jon McLachlan ·

“So we had about six or seven hundred services”

Anders Eknert ·

“they're very strictly scoped to identity.”

Anders Eknert ·

“Eventually I got curious, like, what if it was my concern?”

Anders Eknert ·

“The authentication problem, I always think of that as the answer to the question, who are you?”

Jon McLachlan ·

“it's been like the Wild West, pretty much”

Anders Eknert ·

“I often find that those are business-driven.”

Jon McLachlan ·

“way easier to do it wrong as well, because there aren't really these guidelines for how to do it.”

Anders Eknert ·

“It just tells you, this is my decision, and now you do what you want with that.”

Anders Eknert ·

“Any systems that can be separate should be separate.”

Jon McLachlan ·

“you get consistent decisions across your entire ecosystem.”

Jon McLachlan ·

“So the policy lifecycle is kept separate”

Anders Eknert ·

“Much prefer a conversation over a monologue.”

Anders Eknert ·

“It's not a weekend project, that's for sure.”

Anders Eknert ·

About the guest

Anders Eknert, Developer Advocate, Styra

Anders Eknert was a developer advocate at Styra, the company behind the Open Policy Agent, when this episode aired, and later its manager of developer relations. His LinkedIn lists him at Apple from August 2025, in open source and developer relations, after OPA's creators joined Apple. Before Styra he worked at Bisnode, where his team adopted OPA, and as a tech lead at Curity on an identity product built on OAuth2, OpenID Connect and SCIM. He wrote OPA's reviews of 2022 and 2023, and gave a Nordic APIs keynote on a decade of the project.

About the host

Jon McLachlan is co-founder of YSecurity, the on-demand cybersecurity team for startups, and of Cyberbase.ai. The Security Podcast of Silicon Valley is hosted by Jon McLachlan and Sasha Sinkevich. Jon McLachlan on LinkedIn ↗

Context and sources

  • Episode 18 on Podbean: Anders Eknert, Developer Advocate at Styra, On Evolved Authorization. Source ↗
  • Anders Eknert's LinkedIn experience: Apple from August 2025, Styra from December 2020 to August 2025, Bisnode, Curity and Solentro. Source ↗
  • The OPA docs: an open source, general-purpose policy engine that decouples policy decision-making from enforcement, and how to pronounce OPA and Rego. Source ↗
  • CNCF, February 4, 2021: OPA graduates, after joining the sandbox in April 2018 and incubation a year later. Source ↗
  • OPA blog, January 26, 2023: Open Policy Agent 2022, Year in Review, by Anders Eknert. Source ↗
  • OPA blog, December 20, 2023: Open Policy Agent 2023, Year in Review, by Anders Eknert. Source ↗
  • OPA blog, March 15, 2024: OPA 1.0 is coming, by Anders Eknert. Source ↗
  • OPA blog, December 20, 2024: Announcing OPA 1.0. Source ↗
  • CNCF on YouTube, April 15, 2025: Open Policy Agent (OPA) Intro & Deep Dive, Charlie Egan and Anders Eknert. Source ↗
  • OPA blog, May 14, 2025: Introducing Swift OPA. Source ↗
  • OPA blog, August 20, 2025: the creators of OPA and many of Styra's team join Apple, and Styra's tools move into the OPA GitHub organization. Source ↗
  • Nordic APIs on LinkedIn, October 15, 2025: Anders Eknert's keynote, A Decade of Open Policy Agent. Source ↗
  • Nordic APIs on YouTube, December 1, 2025: A Decade of Open Policy Agent, Anders Eknert. Source ↗
  • Anders Eknert on LinkedIn, December 4, 2025: on his Nordic APIs talk going up on YouTube. Source ↗
  • OpenID Foundation, January 12, 2026: Authorization API 1.0, from the AuthZEN Working Group, approved as a Final Specification. Source ↗
  • Anders Eknert on LinkedIn, March 26, 2026: a full house at the OPA maintainer track session. Source ↗
  • The OPA docs: agent tool calling, with the harness as the Policy Enforcement Point and OPA as the Policy Decision Point. Source ↗
  • OPA blog, November 5, 2026: opa-java-wasm moves into the OPA GitHub organization. Source ↗
  • The OPA community page: Slack, GitHub discussions and the Rego Playground. Source ↗
  • Wikipedia, XACML: an XML-based standard for access control policies, the Policy Decision Point and Policy Enforcement Point, and OPA as an open-source PDP. Source ↗
  • Wikipedia, Authorization: specifying access rights to resources, and deciding whether a subject may access them. Source ↗
  • Wikipedia, Authentication: the act of proving an assertion, such as the identity of a computer system user. Source ↗
  • Wikipedia, OAuth: an open standard for access delegation. Source ↗
  • Wikipedia, OpenID: OpenID Connect, published by the OpenID Foundation in February 2014. Source ↗
  • Wikipedia, System for Cross-domain Identity Management: a standard for exchanging user identity information between identity domains. Source ↗
  • Wikipedia, JSON Web Token: a proposed Internet standard for signed or encrypted JSON claims. Source ↗
  • Wikipedia, Kubernetes: an open-source container orchestration system, extended by CNCF projects including OPA. Source ↗
  • Wikipedia, Cloud Native Computing Foundation: a Linux Foundation subsidiary founded in 2015. Source ↗
  • Wikipedia, Bisnode: a provider of business, marketing and credit information, acquired by Dun and Bradstreet. Source ↗
  • Wikipedia, Everpure: formerly Pure Storage, rebranded in February 2026. Source ↗
  • Wikipedia, Datalog: a declarative logic programming language. Source ↗
  • Wikipedia, Separation of concerns: a design principle for dividing a problem into distinct concerns. Source ↗

Transcript

Automatic transcription. Jon McLachlan hosts this episode with Anders Eknert, developer advocate at Styra. There is no diarization on the tape, so speaker labels were assigned from the content and checked against reference recordings of each voice from this episode, and a few short lines may sit with the wrong speaker. Names and terms were normalized where the recognizer misheard them (Jon McLachlan, Anders Eknert, Styra, Open Policy Agent, OPA, Rego, Bisnode, Curity, SCIM, OAuth, OpenID Connect, KubeCon, Pure Storage). Words in [brackets] are best guesses where the audio is unclear. Answers are transcribed as spoken, with most repeated words and false starts kept. Short backchannels such as "yeah" and "right" are left out where they overlap the other speaker.

Read the full transcript 4,077 words

Jon McLachlan

Welcome, everyone, to another episode of the Security Podcast in Silicon Valley. Today I'm joined by Anders Eknert from Styra.

Anders Eknert

Thanks, Jon. It's great to be here.

Jon McLachlan

Anders brings to the table a lot of great experience. I always love non-traditional backgrounds. And so to help our listeners out a little bit, do you want to explain what Styra is as a company and that open source project that's behind it?

Anders Eknert

Yeah, sure. So Styra is the founders of the open source project, the Open Policy Agent, or OPA, which is, which is an open source, general purpose policy engine. So basically [it] works, based on policy you provide it, you ask it questions and it gives you back answers. So it's an oracle in that way. An oracle, a policy-based oracle, providing decisions and answers to whatever questions users or services or other types of clients might have. So policy commonly determines whether, like, a piece of infrastructure can be deployed to an environment, whether a user should be allowed to do action X or Y in some environment or in some system, or whether a Kubernetes resource could be deployed to a cluster, based on any data provided as part of the input, which is often the resource itself. But it could be basically any kind of data, like the time of the day or the weather outside or whatever you can imagine. That's pretty much what OPA does.

Jon McLachlan

Thank you so much for that. And OPA, just so our listeners know, is entirely open source. You can deploy the entire stack yourself. It has a great developer community behind it that helps drive it forward. So you get the advantage of a full-time developer team with none of the overhead, just for that one component, and everyone there is excited to do the right thing. I know that I've contributed just a little bit to OPA in a past life. When I was at Pure Storage, we actually used OPA to help us, to help make our systems decide whether or not someone had the authentication and authorization to access specific production machines. And we wanted to drive all of that with a policy. And so the [Open Policy], yeah, and so the Open Policy Agent lended itself really nicely to that use case. And we ended up building it, and it fit really nicely with our rest of our integration. And then after we had done all of that with just that open source project, we noticed that there was a company behind it, Styra. And at which point we saw the demo, we saw the GUI, we saw all the testing features and the change lifecycle management that gets stuffed into Styra. And I ended up leaving Pure Storage before that discussion ended. But I remember being really impressed. I wasn't expecting it, and had nothing but great things to say about the engineers that I did have a chance to work with over in Styra.

Anders Eknert

Nice. Yeah, I can, I'm obviously biased, but...

Jon McLachlan

You're biased, but I'm a little bit less biased because I have no stake in Styra. So I just wanted to share with you.

Anders Eknert

Yeah, what I can say is my story is pretty similar. I used to work for a company, Bisnode, which is a big provider of data to various governments, governments, organizations and corporations. And we were kind of out there looking for some way to solve authorization. We had a distributed environment, like pretty much all environments [these] days. So we had about six or seven hundred services, and we wanted to solve authorization in a unified manner. We didn't want, like, the way we did it before was pretty much each team came up with their own way of kind of solving authorization. Some ways were better than others, of course, but eventually they were all different, which made it really hard to work together across team boundaries and so on. And more importantly, it made it pretty much impossible to audit what was going on, because these authorization decisions, they tended to get logged. Sometimes they got logged, sometimes not. And when they got logged, yeah, whatever other logs were published or sent, which differed between all the teams and all the components, there wasn't a way to audit that, which was like a hard requirement for us. Then we traveled down to Spain that summer. I think that was KubeCon [EU], which is incidentally in Spain this year as well. So we got down there. It wasn't for the purpose of finding an authorization engine, but that was really what we did. That's where we kind of opened up our eyes to OPA. So we got back, did a little proof of concept, [we] implemented authorization for a few microservices, and then we just rolled from there. And then once we had that in place, we saw, okay, we can use this for Kubernetes as well. We can use this for infrastructure. We could use this for so much more. So we could just [go] from there. And eventually I too found out about Styra, because after a while, like, our OPA cluster, or clusters of OPAs running in our environment just grew and grew. So eventually we found that, like, we are going to need some way of managing this across, like, this large environment. So we either build something, or we'll see if there's something better out there. And that's pretty much how I found out about Styra. And yeah, worked with them for a while. We eventually got on board as a customer. And I guess I had too much fun, so eventually it was like, the grass was greener on this side of that. So here I am.

Jon McLachlan

Amazing. So we basically have the same story, except you ended up working for them.

Anders Eknert

Yeah, and you're not, yet.

Jon McLachlan

Yes, okay. I like the enthusiasm. I appreciate that. And that's awesome. Do we think of Styra as a security company, or is it more of B2B change lifecycle management company? Maybe those are the same sorts of things. A security company is a lifecycle...

Anders Eknert

Yeah, I guess there's no, like, [clear-cut definition]. At least I tend to think of us as a security company.

Jon McLachlan

I do too. Yeah, I do too. I really see that. It's in your DNA. It's in the experiences that I had with your developers in the open source project. And I know for myself, security has always been a great passion, but maybe you'd be willing to share your story of how you got into security.

Anders Eknert

Yeah, for sure. So the first, it was actually, I've been to this company, Bisnode, twice. The first time I was there, I was in a team where our task, our main objective, was to provide an identity solution for the company. And so, yeah, we kind of got involved in all these standards around identity, like OAuth and OpenID Connect, and the SCIM standard for user provisioning and so on. And eventually I got involved, and I started working for a vendor in the identity space, and that's Curity, which is kind of a little witty name. They have, like, [Curity], and it's, they're very heavy on the Java, or on Java. So they have, and in Java, when you provide, like, a package name, you have this kind of reverse way of specifying a URL. And since it's a Swedish company, it's SE, it's the country code, so it's se.curity.

Jon McLachlan

Oh, that's cute. Okay.

Anders Eknert

Yeah.

Jon McLachlan

Someone gave that a lot of thought. So for our listeners, this is spelled C-U-R-I-T-Y, Curity.

Anders Eknert

Yeah, that's right, that's right. So it's [se.curity]. So I spent almost two years there, working with all these standards, learning the ropes around identity and so on. But an interesting aspect of identity, and I think, like, for most of these identity companies, is that they're very, like, they're very strictly scoped to identity. And whenever we'd have customers who were asking, like, okay, so now we have this token, we got, like, a JSON web token or something to prove identity, what do we do with that? That's obviously authorization. And we were all like, nah, that's really not our concern. That's not our business. Eventually I got curious, like, what if it was my concern? Or what are people doing with these tokens, or how do you solve the authorization problem? So it kind of planted something that eventually led me here.

Jon McLachlan

So let's talk about, like, the problems that these two companies are solving just a little bit. The authentication problem, I always think of that as the answer to the question, who are you?

Anders Eknert

Yeah, that's right.

Jon McLachlan

[I should] just, like, one answer to that question. And if you're [authenticating] a user, it usually goes back to a person, but you can also do that for a service or even a particular device, or an instance in the cloud, or a node on Kubernetes or whatever. It's like the answer to the question, who are you? And then the other question, the other problem is the authorization, or sometimes called authZ for short. And what's that one?

Anders Eknert

Yeah, that's a good question. Like, I've been here now for a while, but it's part of, it's part of the fun. Like, identity, again, it's pretty strictly scoped, but it's also very well defined. You have all these standards to your disposal. While authorization, for so long it's been like, there's been really no standards. There's been no, like, none of these big vendors in the security space have really cared for that until a few years ago. So it's been like the wild, it's been like the Wild West, pretty much, where, like, as compared to identity, where everything is, like, super well defined, there are standards everywhere, and you don't really deviate from those standards. So in that sense, like, it's great to work with standards, but they're also limiting in terms of creativity, and yeah.

Jon McLachlan

Yeah, because authZ is the answer to the question, what can you do? I often find that those are business-driven. And so that's why I think OPA is pretty powerful, because you have your own internal definition of what a policy is, and you can just throw it into GitHub, and now you have your change management under control for your policies. You can go back in time and see, like, what decisions were made for what groups of folks, not just individual folks. If you want to make decisions based on individual folks, you can do that. But it's all just a policy at that point. And the policy says whether or not you're allowed to do something or not, like you mentioned in the beginning, [an] oracle.

Anders Eknert

Yeah, for sure. But I think while your identity, that's pretty much, it doesn't really change if you move across organizations. Like, your identity is pretty much, like you said, who you are, maybe what position you're in the company, maybe some roles and so on. But on the authorization side, or the policy side, that's all, there's really no rules there. It's all determined by that organization, or whoever designs that authorization system. So it's often way more flexible. It's way easier to do it wrong as well, because there aren't really these guidelines for how to do it. I think OPA tries to be, or tries to provide, or doesn't try to hinder this really, but allows you to have your policies reflect on the needs of your organization or the needs of your team. So whether it's good or bad, there's certainly room for mistakes compared to having a strict standard to follow. So, OPA is that you have this policy language. It's called Rego. So you define your policies...

Jon McLachlan

Oh, it's called Rego. Oh, I've been saying it wrong all of these, I've been calling it Rego.

Anders Eknert

Yeah.

Jon McLachlan

I'm so happy that you've corrected me.

Anders Eknert

I actually did that too. So someone corrected me. But yeah, it's apparently pronounced Rego.

Jon McLachlan

Is it a Swedish word?

Anders Eknert

It's not. Oh, Styra is, though.

Jon McLachlan

Styra doesn't, Styra is a Swedish word?

Anders Eknert

Yeah, it definitely is. It's, one of the founders of Styra, it's, like, Finnish origins, and he took that word with him when he founded a company. So it's pronounced [Styra] in Swedish, which means pretty much steering, or to govern, or to steer.

Jon McLachlan

That's really appropriate. It's really appropriate. I love that too. And Rego is actually the reason, it's the reason that we jumped on OPA back in Pure Storage. That's where all that flexibility comes from.

Anders Eknert

Yeah, it's really flexible, and it's designed to model the way you talk about a real world policy, or a policy is basically a set of rules, which is obviously, that's what a policy is in the real world too. So you define these rules, and based on data that you have available, or, like, organizational rules or so on, and then you query OPA for decisions based on these rules. So you might say something like, I'm, this user is a doctor trying to access, like, the medical journals of this patient. Should this be allowed? And OPA will provide that decision. So OPA itself doesn't do enforcement. So it doesn't really do anything with that later. It just tells you, this is my decision, and now you do what you want with that. So the way you choose to enforce, that's obviously going to be highly context-specific. So, but it's a nice separation of responsibilities.

Jon McLachlan

I have this philosophy in engineering, just in general, for systems. Any systems that can be separate should be separate. And so I really always appreciated the separation of here's where the decision is made, and then what you do with it is your higher-level business, whether you want to [block] an incoming API request, or not sign a token, or print an error message, or even display different things. Like, it doesn't really matter. And the nice thing about centralizing where all of those decisions are made is that you get consistent decisions across your entire ecosystem.

Anders Eknert

Yeah.

Jon McLachlan

And let me tell you, that is a difficult thing to do when you have an org of 50 or more engineers, and everyone is heads down trying to meet their deadlines and making great contributions to your ecosystem of software. If you're writing software, you don't want 50 different types of decisions being made in 50 different types of ways, all trying to get the same sort of behavior. You want one thing that's going to help everyone make the decisions that they need to make in their business logic. An awesome tool to help sort of corral everyone in, or the paved road.

Anders Eknert

Yeah, definitely. On that same topic of separating concerns and separating responsibilities, like, another core [tenet] of OPA is, of course, the decoupling of the policies themselves, and the kind of life cycle of the policies, that you kind of break out of your applications and move elsewhere, so that you, yeah, for example, you can deploy updates to policy without having to recompile or redeploy your applications. So the policy lifecycle is kept separate from that of your application code, which is another great benefit when you start to see, like, hundreds of services or thousands of services. And that was always a pain point for us before, when I used to work in integrating authorization.

Jon McLachlan

Yeah, I could imagine. I've had very similar pain points myself too. So maybe you would be kind enough to share with us and all of our listeners, what was the best day that you've had so far on your entire journey at Styra?

Anders Eknert

Oh yeah, that's, that was, that's probably an easy one. We just had a kickoff kind of event in California, which was, well, it's supposed to be first time in California, but I think more than that, it was the first time meeting all colleagues. I kind of started, yeah, pretty much when COVID outbreaks, so I spent two years at home. So that was a great, that was a great thing, like, kind of meeting all the good people I've been working with for all this time, but also all the people who joined since I did. Yeah, that definitely tops it.

Jon McLachlan

Very nice. That sounds like an awesome day to celebrate. And so what about, what has been your worst day at Styra so far?

Anders Eknert

Yeah, I wouldn't say there's been, like, one worst day, but I think, like, in my role as a developer advocate, it's a kind of creative process, blogging or doing, like, documentation, talks, so on. I think as in any creative process or any kind of creative effort, you can, you have bad days or you have good days. And sometimes you have bad weeks, where you can just sit and stare at your, like, your docs or whatever it is you're working on, and there's really not much of value coming out, which is frustrating. And I wouldn't say there's been, like, one worst day, but when you're into that kind of period, like, that's [draining]. Those are definitely draining.

Jon McLachlan

Yeah, for sure. Okay, so how about, what's your favorite interview question, if you interview folks? Do you do interviews?

Anders Eknert

Yeah, I do interviews. We're hiring a developer advocate, even. So...

Jon McLachlan

Oh, you're hiring a developer advocate. All right.

Anders Eknert

We are. So if you know anyone, just send it my way.

Jon McLachlan

We got the word out now on the podcast. So if any of the listeners are interested.

Anders Eknert

That's great. Yeah, I don't, I can't say I have one specific question, but I think, like, talking about pretty much the things you did now, like, what's a good day, or what's a bad day, or, like, good experiences working with, what kind of tended to work in the past and what did not work, and then try and determine whether that would be a good fit for the team and so on. I don't really believe in trying to put anyone against the wall in an interview situation.

Jon McLachlan

Yeah, exactly. I think, I think that's, like, it's important to try...

Anders Eknert

[And kind of] tend to try and keep the conversation as casual as I can. But yeah, it's obviously, hiring is hard. It's so hard. But I think at the end of the day, it's, like, it's just personality, and would this person, like, work in this group dynamic and so on.

Jon McLachlan

Nice. No, I love that. It's important, I think, to sort of melt the tension, like, in an interview especially. And my hope always is that candidates, when I'm doing the interview, that candidates are interviewing me as much as they're...

Anders Eknert

Yeah, definitely. Much prefer a conversation over a monologue.

Jon McLachlan

Yeah, exactly. It's just, it's more enjoyable, I think, on both sides. And it actually helps both sides significantly, because then you can pick up, like, better signal of whether or not it's going to be a fit on the company side, but it's also really important that it's a fit on the individual side too.

Anders Eknert

Yeah, of course.

Jon McLachlan

So empowering that person to be able to make the best decision for themselves too.

Anders Eknert

And I guess that's what, that's what we do. That's what OPA does. So we should too.

Jon McLachlan

Yes, exactly. It's an oracle that says whether or not something is good. Yes, allowed, or no, not allowed.

Anders Eknert

Yeah, we're not really at the point yet where we can have OPA doing the interviews, but who knows? At some point...

Jon McLachlan

No, maybe at some point in the future, you'll pivot into the AI space and they'll be doing the interviews and all sorts of flying airplanes and all sorts of other things. At the end of the day, what is life except for a series of decisions that we make? And if you just want to punch in the policy that you want to live your life by, it could be a very interesting B2C product too, right?

Anders Eknert

Yeah.

Jon McLachlan

Okay, we're in the deep end. We're way out [to the deep]. Okay, so maybe actually, speaking of, like, forward-looking ideas, a serious question for you. Like, when you look into the future, and you see Styra out there, and you, OPA, there's definitely a future for these projects. But what is one other tool that you see out there in the future that you wish someone would just sit down and build already? A problem that you faced that needs, needs love, and it's time to solve it.

Anders Eknert

Oh, it's in the security space, or in any space?

Jon McLachlan

Oh, any space. This is very open-ended here.

Anders Eknert

All right. Yeah, I'm going to, I'm going to drop out of the security space for a bit then. Like, for, it's a very personal need or want, really. But I think, like, I kind of tend to like these apps where you rate things, but there are just so many of them, and they're all, like, they all have their own problems, and some of them are better than others. But there's one, I have one app for rating, like, restaurants, there's one for beers, one for wine. There's, and there's, I just wish there was one app where I could rate, like, anything, and I could get that data out of there to see, like, my history of what I rate. I know it's a bit of an unusual request here, but yeah, that's the, I guess that's the thing, like, I miss the most on my phone.

Jon McLachlan

Yeah. Yeah, I hear you. I'm constantly, I live in San Francisco, and so I'm constantly, I'm also plant-based, and so it's a little bit tricky to, you want to make sure that the place that you go is going to have at least, like, a couple of options for you. So I'm constantly, like, looking at reviews and searching people's reviews. Like, because when a reviewer leaves comments, like, you have a much better shot of getting, like, in the [broad] truth. But then Yelp only can go so far, and there's other things out there. So I totally resonate with it.

Anders Eknert

[It] has better, better ratings, you know. Yeah, and even, like, the simple things, like if you go grocery shopping, there's always 20 of anything you can imagine. There's, like, 20 things to choose from, and you have no idea which one do people like, and there's really no good way of finding out. I think that there's a lot of potential there.

Jon McLachlan

Or even, hey, I really like this place. What other places do people that [rate this place also like]?

Anders Eknert

Yeah, exactly. Exactly. [There's, right.] Yeah. And it doesn't appear to me to be, like, this isn't a hard problem. It's just somebody just got to do it.

Jon McLachlan

It's, it's time and it's energy and it's work. And I'm, I'm sure there's a lot of tricky things underneath the hood, [as soon] as you open up.

Anders Eknert

Oh, for sure. It's not a weekend project, that's for sure.

Jon McLachlan

No, maybe not a weekend project, but if anyone has that entrepreneurial spark, it could be a couple of nights and a couple of weekends, perhaps.

Anders Eknert

Yeah, yeah, let's hope. Let's hope someone hears this.

Jon McLachlan

And oh, there'll be, there's definitely people that will be hearing this. Anders, would you like to leave our guests with any parting pearls of wisdom?

Anders Eknert

Oh yeah, that was probably the hard question here for this interview. Yeah, of course, if you haven't tried OPA, I definitely recommend doing so. There's a pretty good resource from Styra. It's called the Styra Academy, where you can learn the ropes and how to get started. And of course, if there's any questions, concerns or whatever, I'd be happy to help with that. This is what I do, pretty much.

Jon McLachlan

We'll put your email in the podcast notes.

Anders Eknert

That sounds great.

Jon McLachlan

No, thank you so much, Anders. It's been an absolute pleasure to have you on the show.

Anders Eknert

Thanks, Jon. I really enjoyed being here.

Jon McLachlan

And thank you to all of our listeners for tuning in to another episode of the Security Podcast in Silicon Valley. Thanks, everyone.

FAQ

Questions this episode answers

Who is Anders Eknert?
Anders Eknert was a developer advocate at Styra, the company behind the Open Policy Agent, when this episode aired, and later its manager of developer relations. Before Styra he worked at Bisnode, where his team adopted OPA, and as a tech lead at Curity on an identity product. His LinkedIn lists him at Apple from August 2025, in open source and developer relations.
What is the Open Policy Agent?
OPA is an open source, general-purpose policy engine. You give it policies written in Rego and the data it needs, ask it a question, and it returns a decision. It keeps decision-making apart from enforcement, and it graduated at the Cloud Native Computing Foundation in February 2021.
What is the difference between authentication and authorization?
Authentication answers who are you, for a person, a service, a device or a node. Authorization answers what can you do. On the episode, Anders said identity is well defined with standards, while each organization decides its own authorization.
How do you pronounce Rego?
Ray-go, according to the OPA docs, and OPA is oh-pa. On the episode, Jon realized he had been saying Rego wrong, and Anders said he once had too.
Does OPA enforce its own decisions?
No. OPA returns its decision, and your system enforces it, for example by refusing to sign a token or printing an error message. In XACML terms, OPA is the Policy Decision Point and your system is the Policy Enforcement Point.
Why decouple policy from applications?
So policy can change without recompiling or redeploying the applications that use it. Anders said that matters once you have hundreds or thousands of services.
What happened to Styra?
On August 20, 2025, the creators of OPA and many of Styra's team announced that they had joined Apple. Styra's commercial distribution EOPA, the OPA Control Plane, its SDKs and the Regal linter were to move into the OPA GitHub organization, and the OPA website stays with the CNCF and the community.
Is there a standard for authorization now?
On January 12, 2026, the OpenID Foundation approved Authorization API 1.0, from its AuthZEN Working Group, as a Final Specification. On the tape in 2022, Anders said authorization had no standards.
Keep reading on the YSecurity blog
New episodes every other Tuesday

Got a story like this one?

We're always looking for practitioners who've been in the room when it mattered.