SE Radio 664: Emre Baran and Alex Olivier on Stateless Decoupled Authorization Frameworks

SE Radio 664: Emre Baran and Alex Olivier on Stateless Decoupled Authorization Frameworks

Released Tuesday, 15th April 2025
Good episode? Give it some love!
SE Radio 664: Emre Baran and Alex Olivier on Stateless Decoupled Authorization Frameworks

SE Radio 664: Emre Baran and Alex Olivier on Stateless Decoupled Authorization Frameworks

SE Radio 664: Emre Baran and Alex Olivier on Stateless Decoupled Authorization Frameworks

SE Radio 664: Emre Baran and Alex Olivier on Stateless Decoupled Authorization Frameworks

Tuesday, 15th April 2025
Good episode? Give it some love!
Rate Episode

Episode Transcript

Transcripts are displayed as originally observed. Some content, including advertisements may have changed.

Use Ctrl + F to search

0:00

This is Software Engineering Radio,

0:02

the podcast for professional developers

0:05

on the web at S.E.

0:07

dash radio.net. S.E. Radio is

0:09

brought to you by the

0:11

I Tripoli Computer Society, by

0:13

I Tripoli software magazine, online

0:16

at computer.org slash software.

0:18

Hi everyone, this is

0:20

Prianka Raguen for Software

0:22

Engineering Radio. And today on

0:25

our show, we're going to be

0:27

discussing the topic, stateless, decoupled authorization

0:29

And for this we have two

0:32

guests Alex Olivier and Emma Rebarram.

0:34

Emma is an entrepreneur and a

0:36

software executive with more than 20

0:39

years of experience in B2B and

0:41

B2C product areas. He is currently

0:43

the co-founder and CEO of Serbos

0:46

and before that he co-founded

0:48

Turkey's largest social network in

0:50

the mid-2000s called yongea.com and

0:52

after that and been in a

0:54

variety of different organizations, one is

0:57

of course Google and Q-bit and

0:59

one of the podcasts he appeared

1:01

on, they called him a serial

1:03

entrepreneur. So I'm going to stick

1:05

with that. And Alex, he's the

1:07

CPO and co-founder at Serbos.

1:09

He has a wide variety

1:11

of roles and experiences, Peter,

1:13

engineer, consultant, tech lead, product

1:15

manager. And there's also this

1:17

one line which says always

1:19

an eye on developer experience.

1:21

So that's great for us

1:23

here at SC radio. He's

1:25

worked on different companies again

1:27

Microsoft Cupid and a myriad

1:29

of startups with focus on

1:31

areas such as authorization, data

1:33

management and security. So welcome

1:35

to the show Emma and Alex. Thank you

1:37

for having us. Yeah. Great. So in

1:39

SE Radio we have done a few

1:41

shows on authorization as well as

1:43

authentication. On episode 492 which I

1:46

just want to call out to

1:48

the listeners we had a show

1:50

on building consistent authorization authorization service.

1:53

mainly on the Google Sanzabar project

1:55

that we talked about and then episode

1:57

406 on the open policy agent. We've

1:59

done a few shows on oath to

2:01

an API authorization. However, since we are

2:03

exploring this topic, again, I think nearly

2:05

after a gap about four years, can

2:08

I pose this question to both of

2:10

you on what is authorization? So, Emma,

2:12

can I start with you? Sure. I

2:14

wouldn't start by saying what it is

2:16

not. Authorization usually comes with its twin

2:18

authentication. And authentication is a fact of

2:21

who you are. Are you who you

2:23

say you are and what roles and

2:25

what attributes you have? That's authentication and

2:27

your directory. And authorization is the fact

2:29

that now we know who you are,

2:31

are you allowed to do a certain

2:34

action or not? And you can think

2:36

about the application of this in many

2:38

things in life as well as in

2:40

software. No, but the fact that you

2:42

can log in doesn't really mean you

2:44

can do every action in any given

2:46

software. And the control mechanism of... What

2:49

are you allowed to do versus not

2:51

is authorization. Great. Yeah, I think there's

2:53

a great good analogy for anyone that's

2:55

taking a flight recently. You got your

2:57

passport, you fly to some exotic location

2:59

for your vacation, you get to their

3:02

passport, you get to their passport control,

3:04

they take your passport, they authenticate it

3:06

to you by comparing your photo and

3:08

your biometrics. It's like cool, Alex has

3:10

arrived, this is his document, but the

3:12

actual decision of whether you're allowed into

3:14

the country or not, is an authorization

3:17

decision, which is based upon. Have you

3:19

got the right visa? What's your immigration

3:21

status? Have you got the right funds?

3:23

Those sort of things. And that's a

3:25

check. Knows who you are, but should

3:27

you actually be allowed in, is the

3:30

difference between authentication and authorization. That's a

3:32

great example. And I think maybe Alex,

3:34

I'll ask you this question. Then a

3:36

lot of literature I see there's this

3:38

term called as an authorization model. Is

3:40

that something that you can describe for

3:43

us and maybe what are the key

3:45

components? Yeah. what decides access to a

3:47

particular system. And the term that I

3:49

imagine most of this audience would be

3:51

familiar with is our back or... role-based

3:53

access control, where your authorization, your access,

3:55

is controlled by whether you have a

3:58

particular role or not. So you must

4:00

be an admin to do certain actions,

4:02

you must be a user to do

4:04

other actions, you must be a subscriber

4:06

to do the download action, you must

4:08

be a subscriber to do the download

4:11

action, let's say. Outback is one that

4:13

probably most people are familiar with. Aback,

4:15

or attribute-based access control, is kind of

4:17

the either the evolution or the superses,

4:19

or the superset, depends on how you

4:21

look, based on attributes. And those could

4:23

be attributes about who you are. It

4:26

could be attributes based upon the resource

4:28

you're accessing. It could be attributes based

4:30

on the context. So where did this

4:32

request come from? Is it from a

4:34

known IP? Don't those kind of rules.

4:36

And there's lots of different components you

4:39

could bring in to decide your access.

4:41

There's other models, such as relationship-based access

4:43

control, where your access is based upon

4:45

what relations you have with a particular

4:47

entity or the resource you're trying to

4:49

access. So there's different ways for approaching

4:51

authorization. and there's use cases for all

4:54

of those and there's some cases where

4:56

doing an attribute base control check is

4:58

more sensible they're doing a relationship based

5:00

or vice versa and so it really

5:02

goes back to as always looking at

5:04

your requirements look at your use cases

5:07

and then picking the model that's best

5:09

for your system and best for your

5:11

requirements aside to your application. I think

5:13

I'm going to come back with a

5:15

question there on that but I think

5:17

it's a good point for me to

5:20

also... discuss a little bit on why

5:22

you think authorization is important for software

5:24

engineering teams. So am I just going

5:26

to give it to you because I

5:28

thought it would be good for you

5:30

to explain this and maybe is there

5:32

something that you can relate to an

5:35

example where things have gone bad because

5:37

authorization was implemented incorrectly. Yeah, you can

5:39

think of many different examples, but also

5:41

there are real life examples of when

5:43

authorization goes wrong or when authorization isn't

5:45

actually taken seriously. A simple one I

5:48

can give you an example of is

5:50

imagine these neo-banks, right? These neo-banks giving

5:52

you a bank account that you can

5:54

actually log in and suddenly you start

5:56

using that bank account for your company.

5:58

and multiple people need access to it

6:00

to be able to do certain things,

6:03

but suddenly because there is no rolls

6:05

and permissions or limitations that have been

6:07

in these user accounts, everybody is capable

6:09

of making as large transfers as they

6:11

want or everybody is capable of seeing

6:13

everything. And certainly as a software builder,

6:16

you don't want that. You want to

6:18

make sure everybody is limited to their

6:20

roles and limitations of what they should

6:22

be able to do. If we want

6:24

to look at a disaster case scenario,

6:26

we can actually take a look at

6:29

news in the early days of a

6:31

very popular rightshare application where people from

6:33

the customer service theme or people from

6:35

inside the company who had untettered access

6:37

to everything within their thing, they were

6:39

able to take a look at some

6:41

celebrities account and the trips that they

6:44

have actually taken. In a normal world

6:46

scenario, you only want to be able

6:48

to enable the right person at the

6:50

right time to be able to look

6:52

into that trip, but now everybody has

6:54

access. In the correct world implementation, a

6:57

person should only be able to take

6:59

a look at that account if there's

7:01

a complaint, if there's an issue with

7:03

a payment, or if there's a complaint

7:05

from a driver or from the rider.

7:07

Other than that, nobody should be able

7:09

to go in and take a look

7:12

at that account. and that is a

7:14

lack of proper authorization and requirements and

7:16

limitations and not actually implementing them. I

7:18

think that's the case where there's a

7:20

term also the granular control in a

7:22

permission management system so they don't have

7:25

good granular controls is what I'm hearing.

7:27

Exactly. Probably in that scenario they had

7:29

customer success employees can take a look

7:31

at the right information. That's as coarse

7:33

as it gets, but what does that

7:35

mean? They can look at any way

7:38

easy information, they can look at any

7:40

time frame, any country, and anything. So

7:42

that's coarse-grained, but a fine-grained one would

7:44

be only you can take a look

7:46

at a specific customer that there is

7:48

a support case open for. or you

7:50

can take a look at only a,

7:53

you know, customers, again, trip, if you

7:55

have been specifically given permission to look

7:57

at because of an upstream event that

7:59

has happened. Okay. I think Alex, based

8:01

on what Embra said, you talked about

8:03

the domain model, and you explained to

8:06

us, like, you know, the A-back and

8:08

R-back and relationship base access control. So

8:10

I was wondering, when you have a,

8:12

like an authorization model, can you have

8:14

an R-back A-back and... Also like a

8:16

reback in the same model? Yeah, so

8:18

the way to kind of think about

8:21

it is less to do with whether

8:23

it's a back or a back or

8:25

reback etc. It's more about is this

8:27

more of a policy-based model or is

8:29

it more of a data-driven model or

8:31

is it more of a data-driven model?

8:34

And what I mean by that is

8:36

policy-based model and what I mean by

8:38

that is policy-based model, which is where

8:40

you have this user- got this role.

8:42

Or it could be a more fine-range

8:44

attribute-based check where you're looking for individual

8:47

attributes about the user and the resource

8:49

that you're trying to access. And that's

8:51

defined as a static versioned, tested, audited

8:53

policy. But the key thing of that

8:55

model is there's no actual user or

8:57

resource data stored in it. It's purely

8:59

the rule set. And then at evaluation

9:02

time, the system of the architecture would

9:04

bring the data to that rule set.

9:06

That rule set would be evaluated, would

9:08

be evaluated, primary use case case. the

9:10

model and the other approach is kind

9:12

of where the permissions is embedded in

9:15

the data itself. You mentioned Zanzibar at

9:17

the start, the Zanzibar White Paper outlines

9:19

the architecture behind and sort of Google

9:21

Drive and Google Docs, and in that

9:23

world you're basically storing the data, you're

9:25

storing the relationships between resources inside of

9:27

this sort of authorization layer itself. So

9:30

in that world, you don't just store

9:32

the policies, you're actually maintaining the relationships

9:34

or the permissions between individual resources. and

9:36

so that requires you to kind of

9:38

replicate and duplicate and synchronize data into

9:40

your permission store. So the policy-based approach

9:43

end, that is the requirement. You bring

9:45

the data to the authorization of the

9:47

system when you need to go check.

9:49

That way it ensures it's always up

9:51

to date, correct, and you're always going

9:53

to get the answer based on the

9:56

most relevant data. And so it's kind

9:58

of a two-way approach. And again, it

10:00

goes back to what your architecture makes

10:02

sense. But being that policy-driven approach, I

10:04

personally think is kind of the one

10:06

that gives you the most clarity of

10:08

exactly what your one that gives you

10:11

the most clarity of what your rules

10:13

are. When we did the show four

10:15

years back on building a consistent global

10:17

authorization service We talked about the Zanzibar

10:19

project and then there was a big

10:21

question there on they had specific goals

10:24

on correctness Flexibility low latency high availability

10:26

and large scale obviously it's Google But

10:28

then I wanted to ask you and

10:30

I guess this is a question I've

10:32

seen in a lot of other podcast

10:34

that people have asked the two of

10:36

you where does it make sense to

10:39

you know build your own? service like

10:41

Zanzibar and where do you use an

10:43

off-the-shelf authorization service? But I'm sorry I

10:45

have to ask you the question again.

10:47

Can you give us some advice? It's

10:49

a great question. We get asked this

10:52

all the time ourselves and the whole

10:54

reason we started service nearly four years

10:56

ago now is we've had to build

10:58

this ourselves in previous companies. Myself both

11:00

as a developer and later as a

11:02

product manager, I've been both the guy

11:05

that had to write the code that

11:07

had to write the specification for the

11:09

specification for the business we were building

11:11

this in. I've had to build this

11:13

for supply chain systems, I had to

11:15

build this from our tech systems, I

11:17

had to build this for analytic system,

11:20

I had to build this for finance

11:22

systems. And the common thing is those

11:24

businesses were not authorization systems. We should

11:26

have been spending our engineering time on

11:28

delivering the features and the capabilities that

11:30

our customers actually wanted. And much like

11:33

you would never build a database today,

11:35

you would never build file stories today,

11:37

you would never go and build an

11:39

image processing pipeline today. Those are things

11:41

that you could just pull off the

11:43

shelf. Apart from edge cases where you

11:45

do need a very specific system, we're

11:48

in a world now where there's amazing

11:50

open source projects out there, where you

11:52

can just go and grab it, bring

11:54

it in and be off. races and

11:56

not have to spend time working at

11:58

all the edge cases, working at all

12:01

the carveouts, debugging what's going on inside

12:03

of some custom code. You know, there's

12:05

an ecosystem, a rich ecosystem out there

12:07

for around a lot of these projects,

12:09

including Serbos, that is making this offering

12:11

better without you having to dedicate time

12:14

effort in an engineering resource inside of

12:16

your own business to go and build

12:18

things. Edge cases excluded, I would take

12:20

a serious look at like, do we

12:22

really need to be spending our time

12:24

on this and we're past the zero

12:26

interest rate phenomena. of the early 2020s

12:29

and we're now in a world where

12:31

we need to be really looking at

12:33

are we delivering the right value to

12:35

our customers and are we delivering what

12:37

our customers need and are we putting

12:39

all of our effort focusing on that

12:42

rather than these other external things that

12:44

we just pick up off the shelf

12:46

and use. I don't know you want

12:48

to add anything to it. I mean

12:50

the question is Alex touched upon a

12:52

important point like you wouldn't build your

12:54

own database you wouldn't build your own

12:57

software infrastructure unless it's going to make

12:59

your software differentiated differentiated. than any other

13:01

competitors of yours. It has a specific

13:03

need in there. One other state of

13:05

software building that doesn't need authorization but

13:07

for that same reason doesn't need also

13:10

authentication or many other things. Many other

13:12

security features is when you are actually

13:14

building your POC. Not even POC, let's

13:16

call it POC and POT. You want

13:18

to make sure your technology can solve

13:20

a... problem in the world, right? And

13:23

at that point you're just very much

13:25

so focusing on making the machine work

13:27

to solve the problem. At the moment

13:29

you need to take that solution and

13:31

actually now make it available to your

13:33

end user to your customers, that's the

13:35

moment where authentication and authorization and everything

13:38

else is the time you need to

13:40

start thinking about it and put those

13:42

restrictions in place. Great. So I think

13:44

the next logical question I have is,

13:46

what are the challenges that one would

13:48

face if you had an external or

13:51

decoupled authorization? Maybe can you state like

13:53

three hard challenges? So I guess firstly

13:55

is worth cutting. what decoupled or externalised

13:57

authorization is. If you think of authorization

13:59

logic, if you were to just do

14:01

something quick, you would probably end up

14:03

in a situation where in your code

14:06

base you would have like an if

14:08

statement somewhere or a case switch statement

14:10

that says if user role equals admin,

14:12

let this request go through, if user

14:14

role equals manager, only allow this request

14:16

under XYZ. And for those small applications,

14:19

you know that's perfectly fine, get you

14:21

where you need to get you where

14:23

you need to get to, prove the

14:25

value, cool, move on. But as your

14:27

application grows, particularly if your application is

14:29

start made of lots of services, and

14:31

those services might be in different languages,

14:34

any time you need to evolve or

14:36

change or update their authorization logic, which,

14:38

spoilers, will happen, you're going to have

14:40

to go touch that code. And that

14:42

code is going to get more and

14:44

more fragile as you add more complexity

14:47

to it. And there's going to be

14:49

more places you need to update logic.

14:51

And whenever the business requirement changes, you're

14:53

going to have to take that written.

14:55

Girotica or whatever, and convert that into

14:57

application code. And that application code might

15:00

actually need to be in Go, might

15:02

be in Java, might be in dot

15:04

net, depending on what your services are,

15:06

and then you're going to have to

15:08

go in touch and redeploy all your

15:10

applications, etc. The other side of it

15:12

is from a business awareness, from a

15:15

business awareness perspective, you know, we as

15:17

developers are happy to write code all

15:19

day, but those that actually define the

15:21

requirements for authorization, logic was implemented, they

15:23

probably can't because they don't know Java,

15:25

they don't know go, they don't know

15:28

XYZ language. So the advantages of externalization

15:30

is your externalizing, funny enough, all that

15:32

logic out into a standalone service or

15:34

a standalone component in your application stack

15:36

and that component has in it the

15:38

authorization logic. And now because it's just

15:40

another service inside of your setup, your

15:43

authorization logic. can be defined in something

15:45

that's maybe a bit more easier for

15:47

someone that isn't a developer to understand.

15:49

So it could be policy files, we're

15:51

talking about policy-based access control, it could

15:53

be look-up tables or data stores if

15:56

using one of the other models. And

15:58

that's a central source of truth, that's

16:00

a central one place. but all that

16:02

logic is defined, it can be version

16:04

control, it can be tested, it can

16:06

be fully audited, etc. And then in

16:09

each part of your application architecture where

16:11

you want to actually then check permissions,

16:13

rather than having all that logic hard

16:15

coded in there, you're essentially just calling

16:17

out to that authorization service and will

16:19

you simply say, okay, here's your request,

16:21

here's the user, here's the resource, and

16:24

here's the action they're trying to do,

16:26

and then that gets sent over to

16:28

that authorization service, which then evaluates to

16:30

that authorization service, which then evaluates his

16:32

policies, which then evaluates his policies, so

16:34

that you no longer need that if-all

16:37

case switch style logic littered across your

16:39

code base, it's a now a simple

16:41

if statement. If the authorization service says

16:43

allow, do the action, if not return.

16:45

It's a sort of error. And that

16:47

really gives you two big benefits. One

16:49

is whenever you want to change your

16:52

authorization logic, there's a one place you

16:54

could do it. You update it once,

16:56

you make sure tests all work, etc,

16:58

etc, etc. push out that policy change

17:00

and then all your different parts of

17:02

your application code. And secondly, and for

17:05

regulated businesses or high compliance environments, this

17:07

is a really key one, because there

17:09

is a single component in your stack

17:11

that is doing all the authorization checks,

17:13

there's a single point where you can

17:15

capture an audit block of every decision

17:18

and every action that was made inside

17:20

of your application. That comes from a

17:22

single point and that's going to be

17:24

consistent, it's going to be well structured,

17:26

you're not having to couple together logs

17:28

from different application services, etc. And that

17:30

gets you to a world where... This

17:33

externalised or decoupled authorisation model gives you

17:35

kind of the advantages around that audibility,

17:37

visibility, and scalability ultimately to get authorisation

17:39

logic across your application. And on the

17:41

back of that, if we want to

17:43

focus on the hard parts of migrating

17:46

onto this, would be one for existing

17:48

pieces of software, you need to now

17:50

figure out where you're doing all these

17:52

checks and actually replace them rather than

17:54

a business logic in there, replace them

17:56

with an API call or like, look,

17:58

library call to Serbos or to your

18:01

authorization check system. And the bigger, I

18:03

wouldn't call it a challenge. but it's

18:05

the effort that's required from this is

18:07

also looking at your software and trying

18:09

to centralize or trying to define the

18:11

authorization requirements of your system. How many

18:14

roles do you have? And what does

18:16

that mean? When you have that role,

18:18

which components can that role access? Which

18:20

actions can they do under what circumstances?

18:22

Coming up with that meta understanding of

18:24

your authorization and turning that. And then

18:27

once you understand it, writing that into

18:29

a policy. takes minutes to maybe a

18:31

couple of hours, but it's actually the

18:33

understanding your system and being able to

18:35

nail down your authorization requirements is the

18:37

harder part of the process. So what

18:39

about the challenges now that the authorization

18:42

is kind of moved out to another

18:44

place? Then almost feels like you're losing

18:46

a bit of control, right? If you're

18:48

used to having it in your code.

18:50

I mean of course it's great because

18:52

it's one less check to do but

18:55

the thing is what are the challenges

18:57

if you were outside would there be

18:59

like a latency challenge or other things

19:01

if you have to go to some

19:03

other place to pick up the decision

19:05

to allow something. As with kind of

19:07

everything with do software architecture there's a

19:10

compromise you need to make and one

19:12

of the things that you do run

19:14

into once you start externalizing authorization is

19:16

you are going to put another blocking

19:18

call essentially into a request pipeline. Now,

19:20

depending on what authorization solutions you are

19:23

using, and whether it's a stateful or

19:25

a stateless system, will very much depend

19:27

on what that deployment looks like. What

19:29

we always say to service users is,

19:31

make sure you run serveros as close

19:33

to your application as possible. So I'm

19:36

sure many are familiar with like communities,

19:38

the way we recommend deploying service in

19:40

that environment, is you run a server-side

19:42

car. in everyone of your application pods

19:44

that needs to do authorization checks. So

19:46

you basically bypassing as much as the

19:48

network as possible. It's just a local

19:51

core at that point. And then your

19:53

authorization layer itself should be smart enough

19:55

to figure out how to distribute policies

19:57

in a sensible, scalable, consistent way across

19:59

your architecture. And so actual, the runtime

20:01

checks, the lookups and the. motion checks

20:04

I mean done are literally just talking

20:06

locally inside of its own pod to

20:08

get a decision. And there's lots of

20:10

things you could do around like choice

20:12

of APIs, whether you use GRPC or

20:14

ACCP or these sort of decisions you

20:16

can make and options that you should

20:19

be considering when you're doing a deployment

20:21

of something like this. But the biggest

20:23

one that does need some thought is

20:25

your deployment to reduce. things like latency

20:27

and number of hops involved, you know,

20:29

do you start doing things at the

20:32

gateway level? Do you start doing down

20:34

at the service level? Do you use

20:36

authorization just to populate your claims in

20:38

your token? There's other approaches you could

20:40

do still using an authorization service that

20:42

is managed centrally to get to where

20:45

you need from a security faster point

20:47

of view, but also a performance in

20:49

an SLO perspective as side of your

20:51

system. Okay, so brings us then to

20:53

like Serbos, which is a... policy-based access

20:55

control. So what inspired the creation of

20:57

Serbos and what's the gap in the

21:00

market that you were trying to fill?

21:02

What inspired the creation was the fact

21:04

that earlier Alex was talking about this.

21:06

Our previous lives we had to I

21:08

think collectively within our funding team we

21:10

had to build this authorization and build

21:13

or rebuild or improve 10 times and

21:15

every single time we've done it we've

21:17

been always complaining about why are we

21:19

still building this this contributes zero differentiating

21:21

features to our product yet it was

21:23

something that we had to actually go

21:25

and build and at the time looking

21:28

at the solutions in the market none

21:30

of those things actually really addressed the

21:32

challenges that we had. So the gap

21:34

in the market that we've seen was

21:36

there wasn't a good decoupled or let's

21:38

say I call it decoupled necessarily so

21:41

authorization solution that we could have easily

21:43

implemented and moved on with our lives

21:45

and funny enough as we were starting

21:47

service that was a pretty much the

21:49

same time where many other authorization decoupled

21:51

authorization or externalized authorization providers also started

21:54

the same thing which kind of told

21:56

us okay the market is now ready

21:58

for this is the right time to

22:00

do it and our goal was always

22:02

making life easier for software developers so

22:04

they can actually just purely focus on

22:06

what they want to build what they

22:09

need to build rather than having to

22:11

reinvent the wheel when it comes to

22:13

security and as we all know nobody

22:15

really likes to remit the security wheel

22:17

because it's hard it has a lot

22:19

of loopholes it has a lot of

22:22

gotchas and we wanted to provide developers

22:24

something robust and safe secure and fast

22:26

enough so that they could have one

22:28

less worry as they were building the

22:30

product they were building. You talked

22:33

about Serboss, the primary users being

22:35

developers, but are you focused on

22:37

startups or enterprises or what are

22:40

the primary users of Serboss? So

22:42

the users we see kind of

22:44

will vary based upon this type

22:46

of organization. Serboceta's core is an

22:48

open source policy decision point, as

22:50

an open source project, really go

22:52

grab of get help, go enjoy

22:55

it, patchity license, but... the

22:57

requirements for authorization will very much

22:59

depend on what your business is doing. What

23:01

we see is startups earlier on, as I

23:03

said earlier, you kind of get going in

23:05

pretty the value with something quite simple,

23:07

and then you might mature in

23:09

terms of using something that's like

23:12

externalised authorization later on. But if

23:14

you're working in a regulated industry,

23:16

finance, medical technology, insurance, those kind

23:18

of industries, even as a startup,

23:20

you're going to have those much

23:22

stricter requirements around authorization earlier on.

23:25

and in those type of businesses

23:27

the requirement isn't coming from a

23:29

developer who's just trying to get something

23:31

implemented quickly in May 5th, Serbos, the

23:33

requirements are now actually literally coming from

23:35

the whole value of the business being say

23:37

a FinTech you have strict access control

23:40

requirements you have to implement if you're

23:42

going to be a regulated business. So you're

23:44

now getting those requirements from the scruity team,

23:46

the product team, the compliance team side

23:48

of the company, and you'll end up.

23:50

implementing a standardized externalized state this hopefully

23:53

authorization system much earlier on in the

23:55

life cycle of your business. In terms

23:57

of who's actually involved authorization, you know,

23:59

would be talking about developers a lot and

24:01

Osme, they're the ones that are going to have

24:03

to write the code. But there are the stakeholders

24:05

here. You have a Devops or a platform team

24:07

who will actually go and deploy the authorization

24:09

system inside of your environments and some

24:12

of your clusters. You'll have maybe a

24:14

security compliance team that are doing the regular order

24:16

reviews of your policies and running audit checks, etc.

24:18

If you're as a business, you're getting subject data

24:20

access requests from users. I mean, you need to

24:22

be able to pull out what they did inside

24:24

of the system that be coming from a different

24:26

part of the team. But there's also teams you

24:28

may not necessarily think of. You know, your customer

24:31

support team who might be handling support tickets about

24:33

why can't access the system might need some insight

24:35

into the authorization logic behind it. Even on like

24:37

the sales team, if you're trying to sell software

24:39

to the world. and they'll come to you saying,

24:41

like, we've got this customer, they really want to

24:43

use our system, but they have very fine-grained

24:45

authorization requirements or permission requirements just due to

24:47

the nature of their business or their organizational

24:50

structure. So there's actually a lot of different

24:52

parts of a company and roles of a

24:54

company that will have some input on authorization,

24:56

and as Emory said earlier, the hardest part

24:58

is actually getting on to agree on what

25:01

the requirements are, and then going off doing

25:03

the implementation. Now one more thing to add

25:05

into there is, you know, you might

25:07

have your standard software, you might have

25:10

just four rolls and that might actually

25:12

work, but then you might go sign

25:14

up a very large customer where they

25:16

have 5,000 internal users and those four

25:19

rolls aren't enough, right? For that customer,

25:21

you need 10 different rolls with regions,

25:23

etc. and various other things are 2050.

25:26

Now you might go sign up another

25:28

enterprise customer, which has a... different internal

25:30

structure than the previous one so they

25:32

want their roles to be structured differently

25:35

so service actually in the internet world

25:37

allows you to be able to customize

25:39

your roles and permissions on a pertinent

25:42

basis so suddenly we go away from

25:44

one size fits all model where you

25:46

know the Product manager of the original

25:49

product has to think very hard, how

25:51

to get common roles working for all

25:53

their customers, suddenly we give them a

25:56

world where every customer can have their

25:58

own structure within their software. Whether

26:02

your building software, leading teams, or shaping

26:04

product strategy, legal elements matter. Penn Kerry

26:06

Law's Software Design, Risk Regulation and Innovation

26:09

Institute is a four-day in-person program for

26:11

tech professionals. Learn to spot issues like

26:13

privacy, AI liability, and compliance early, so

26:15

you can build smarter and reduce risk.

26:17

No law degree required. Just practical insight.

26:19

Visit law. That's law.upen.adieu slash software. Use

26:21

promo code software for $50 off. So

26:24

one of the things when I looked

26:26

at the open source gate report, and

26:28

I was also looking at the open

26:30

policy agent because we had a show

26:32

on that as well, how does Sir

26:34

Boss differ from OPA? is a great

26:36

CNCF project, is heavily adopted on infrastructure

26:39

components, so Kuberneti for example, uses Oprah

26:41

inside of it as well. And when

26:43

we started burning it out Serbos, we

26:45

looked at kind of what Oprah was

26:47

doing, we looked at Rigo, its language

26:49

as well, and we kind of saw

26:51

like, this is the right idea in

26:54

terms of externalizing and taking a policy-based

26:56

approach of things. But where we saw

26:58

there was a bit of a gap

27:00

is really focusing. on this application layer

27:02

permissions. So there's a whole set of

27:04

things you kind of disregard at that

27:07

level. There's a whole set of capabilities

27:09

you need on top. And so when

27:11

we kind of looked at it, we

27:13

sort of went, okay, policy-based, having a

27:15

way of declaring your logic in a

27:17

version control tested way of doing things

27:19

is the right idea. But we really

27:22

wanted to simplify things down for that

27:24

application. permission use case, that kind of

27:26

multi-tenancy application use case, and making sure

27:28

in that level you do have much

27:30

more involvement from security, from product, from

27:32

customer support. So how can we bring

27:34

that kind of safe experience but in

27:37

a way that those team and those

27:39

different parts of organization can actually... be

27:41

a lot more involved with authorization and

27:43

the key thing we did there was

27:45

the actual policy language itself. The service

27:47

uses Yabble. There's no extra language to

27:49

learn. It's very passable and guacable. You

27:52

can kind of scan through it, understand

27:54

exactly what's going on. The way we

27:56

can kind of scan through it, really

27:58

understand exactly what's going on. The way

28:00

we structure things around here are your

28:02

resource policies, type in your application, and

28:04

the way you can say, okay, here's

28:07

a variant for a particular customer. Looked

28:09

at Oprah as a great project. We

28:11

kind of took our interpretation of that

28:13

and applied our application level permission lens

28:15

on top and that's kind of got

28:17

to where we are today four years

28:19

later, nearly. Services being used by the

28:22

GitHub stats, tens of thousands of deployments

28:24

and GitHub stars and such of our

28:26

solution out there in the world and

28:28

it's meeting this requirement of this application

28:30

level permissions. One thing to add on

28:32

top of it is, you know, OPA

28:34

is great, OPA is built for everything.

28:37

or via a very general purpose one.

28:39

When we built service for just the

28:41

application layer, we were able to reduce

28:43

the footprint a lot and we were

28:45

also able to reduce the response time

28:47

a lot because, you know, we don't

28:50

have to handle a lot of those

28:52

things. So as a result, service is

28:54

a very minimal deployment when you look

28:56

at the CPU requirements and memory. of

28:58

the application that it needs from an

29:00

application which makes it a great companion

29:02

because it almost exerts zero extra load

29:05

on your systems and it gives you

29:07

this super flexibility in a much faster

29:09

response time. That's a very good distinction

29:11

that you made of infrastructure, OPA and

29:13

then also maybe general pubs for a

29:15

lot of things that OPA uses and

29:17

this is more for the application level

29:20

authorization that we have. Can you give

29:22

us a little bit of how it

29:24

works under the hood? So I've got

29:26

a yamel file and I can fill

29:28

that in with all my permissions for

29:30

a particular project. Then what happens? Yeah,

29:32

so you go through that policy definition

29:35

process, so working with the different stakeholders

29:37

inside of your business and on your

29:39

application, define... your different resources, the different

29:41

actions, the conditions under which they should

29:43

be allowed or not. We always recommend

29:45

users then go through the additional step

29:47

of writing tests against those. So as

29:50

well as writing your policies with Serbos

29:52

you can give example fixtures, here's some

29:54

example users, here's some example resources, here's

29:56

some example resources, and then define you

29:58

under which condition or which actually should

30:00

be allowed or denied for each of

30:02

those. And so you have a test

30:05

suite. And then we take a very

30:07

Gitops style approach style approach to actually

30:09

deployment. So we recommend you go and

30:11

check those into a GitHub repo and

30:13

you go and wire up CI, be

30:15

it something you run yourself, or you

30:18

use Serbos Hub, which is one of

30:20

our offerings, and now you have policies

30:22

that you know are good and valid

30:24

and ready to go. For the deployment

30:26

side of things, you then need to

30:28

go and run Serbos, the policy decision

30:30

point that the container inside of your

30:33

infrastructure somewhere. And like I was saying

30:35

earlier, our recommended approach is... Serbos itself

30:37

doesn't require a database or a data

30:39

store or anything like that to hold

30:41

users or resources etc. Serbos is purely

30:43

evaluating requests based upon the context of

30:45

pasts of it from the application layer

30:48

and that status architecture means you can

30:50

put Serbos everywhere, you can put it

30:52

inside of every part on every cluster

30:54

in every deployment and you can have

30:56

Serbos spread out and running everywhere to

30:58

ensure that every service has a local

31:00

version of the policies to evaluating it.

31:03

So you go and deploy your server

31:05

sentences, it's now running inside of your

31:07

environment. And then the final step is

31:09

updating your application code to actually cool

31:11

that service instance. So we have SDK

31:13

and APIs available, pretty much every language

31:15

and framework now. And you do that

31:18

one type process to update the application

31:20

code and call that service instance. So

31:22

that's that service instance when you deploy

31:24

you, you tell it where to get

31:26

its policy files from. And we support

31:28

a get repo, we support a cloud

31:30

storage bracket. We support just files on

31:33

disk, and we also support servers hub,

31:35

which is our managed control plane, so

31:37

that is a synchronization layer in CI

31:39

pipeline that pulls their policies down as

31:41

well. But ultimately, those Yammer files end

31:43

up compiled, tested, and distributed out to

31:45

your environments, and that local policy decision

31:48

point running alongside your application. simply say,

31:50

here's a user trying to do this

31:52

action on this resource, it evaluates the

31:54

current policies, comes up with the decision,

31:56

creates an audit log of that decision,

31:58

and then returns it back to your

32:01

application. So it's actually a very, very

32:03

simple interface by design. There's essentially one

32:05

API one API and service with a

32:07

secondary one for a data filtering use

32:09

case, where you say user action resource,

32:11

it goes yes or no. That's all

32:13

you have to kind of worry about

32:16

implementation. You also have like an audit

32:18

log, is that what you say, for

32:20

every option. So it'll be running sort

32:22

of locally and then it gets sink

32:24

to some master. Yeah, so every instance

32:26

of your policy decision points of your

32:28

service container generates this order log and

32:31

then you have a configurable option way

32:33

you want to send it. If you

32:35

just want to use the episodes project,

32:37

you can have it just log to

32:39

standard out once and then have your

32:41

existing logging infrastructure pick it up and

32:43

you can tell it to go right

32:46

off to a Kafka topic either if

32:48

you want to. we have very common

32:50

setup we see is users are running

32:52

you know the typical low-key graffiti type

32:54

setup so that will go pick up

32:56

the logs and send them off. We

32:58

use some like fluent D and those

33:01

kind of tools. We also have a

33:03

managed log collection system part of Service

33:05

Hub which gives you a nice UI

33:07

for delving into your authorization logs and

33:09

the one thing I will say is

33:11

Audit logs are kind of one of

33:13

the superpowers and almost like a bit

33:16

of a side benefit of externalizing authorization,

33:18

not just with servers, but generally. Your

33:20

application logs are going to be spitting

33:22

out all sorts. You'll have, you know,

33:24

stack traces and memory dumps and all

33:26

sorts going on there and you're going

33:28

to have a very large volume of

33:31

data, but authorization logs, these audit decision

33:33

logs, are a kind of a different

33:35

type of log that you do need

33:37

to keep and you want to have

33:39

more data through one for attention on,

33:41

you might want to have a... three-year

33:44

retention on because of compliance reasons. So

33:46

being able to send those specifically to

33:48

a destination that is a goes to

33:50

an environment that gives tools to your

33:52

security team, to your compliance team, to

33:54

your application developers to debug or access

33:56

control logic is a real advantage. And

33:59

one of the things you just kind

34:01

of get for. free for using externalised

34:03

authorization approach. And that order log will

34:05

tell you at this time, this user

34:07

tried to do this action and this

34:09

resource, and it was allowed or denied

34:11

by this particular version of this particular

34:14

policy. And so you get that very

34:16

granular insight, what's going on side of

34:18

your system, without having to this three,

34:20

dig through your actual application level logs.

34:22

Absolutely, I can see a use case

34:24

for that. Yeah, that's a lot of

34:26

digging that you need to do. Oh

34:29

yeah. How so thinking about like where

34:31

I work at sometimes we also have

34:33

this case where like if you were

34:35

auditing a database there's always you know

34:37

you have to decide on what to

34:39

audit right every action what should you

34:41

order because again the logs can be

34:44

huge do you have to have a

34:46

similar consideration with your authorization logs or

34:48

is that a bit more leaner? Yeah

34:50

so the logs themselves are a bit

34:52

leaner because you're purely just capturing the

34:54

decision and actually For authorization logs, particularly

34:56

for regulated industries, where you must maintain

34:59

a log of X number of years,

35:01

you do need every single decision captured

35:03

because now you're dealing with the actual

35:05

actions of individual customers or users or

35:07

subscribers inside of your system and you

35:09

need to be able to pull that

35:11

out and essentially replay. exactly what that

35:14

person did, particularly if you go to

35:16

a kind of a subject access request

35:18

type environment or you got a suspected

35:20

breach identity, you need to be able

35:22

to go and fetch that. So your

35:24

security logs are a different type of

35:27

log concern than kind of the application

35:29

side of things. In the regulated industries,

35:31

it's not only enough to know who

35:33

did what and whether they were allowed

35:35

to do or so, but why were

35:37

they allowed to do that and why

35:39

they weren't. So ultimately, there's that custody

35:42

chain of not only what they did.

35:44

But what that had in the policies

35:46

are who changed the policy that allowed

35:48

that person to be able to do

35:50

something. So they need to be able

35:52

to also trace it all the way

35:54

to the policy and who updated that

35:57

policy at the end of the day.

35:59

Let's not call it finger pointing, but

36:01

they want to understand if there's an...

36:03

incident, you want to understand the full

36:05

reason behind it and service allows you

36:07

to do that as well because it's

36:09

not only all the decisions are logged,

36:12

all the policies and all the different

36:14

versions of the policies are logged and

36:16

with their entire commit logs so you

36:18

can actually figure out, you know, what

36:20

in your organization actually caused this incident

36:22

to happen so that you can actually

36:24

prevent it next time properly. Thanks for

36:27

that. I think that was a very

36:29

good discussion we had and I had

36:31

a question on the stateless authorization. How

36:33

does that work like, so do you

36:35

work with standards like say JWT tokens

36:37

or or open ID? How does it

36:39

get the context? Yeah, so again, stateless

36:42

authorization versus stateful authorization in the stateless

36:44

model, the authorization layer doesn't retain any

36:46

data store of users or resources versus

36:48

the state full model which would have

36:50

like a rapt care for your data.

36:52

So. The onus is on the, I

36:55

was referred to as the policy enforcement

36:57

point, the component which is going to

36:59

do the check to see whether an

37:01

authorization should be, an action should be

37:03

allowed or not, the onus is on

37:05

that component to send the state, so

37:07

who the user is, what the resource

37:10

is, not a context in the request

37:12

as it happens in order for the

37:14

policy engine to evaluate and come back

37:16

with a decision. So how you transfer

37:18

that data, typically it's just a big

37:20

Jason object of his details you need,

37:22

but using standards like DWT's or two

37:25

tokens, those sort of things, kind of

37:27

smooth that journey out. So in the

37:29

case of Serbos you can, you know,

37:31

fill in the data yourself or your

37:33

application can or you can just go

37:35

and full or pass on the GWT

37:37

directly to Serbos and the Serbos itself

37:40

can actually go and verify that token

37:42

if you can provide the key set

37:44

and then the contents that token is

37:46

made available inside of the policy and

37:48

for the What we refer to is

37:50

the principle of the user components of

37:52

that, there are defined standards for it.

37:55

The oath to work and JBT tokens

37:57

being the obvious one there. For the

37:59

actual resources it is a bit more

38:01

free form because it's down to what

38:03

your application model is. So there isn't

38:05

a standard to point to for that.

38:07

But where there is a relevant standard,

38:10

those are adopted and can they be

38:12

used inside of Serbos as well. And

38:14

just on the topic of standards, and

38:16

more generally, there is an ongoing effort

38:18

of which Serbos is part of under

38:20

the OpenID Foundation, called the OrthZEN Working

38:22

Group, which we're active contributors of, around

38:25

standardizing the API interface between applications and

38:27

policy decision points or authorization services like

38:29

Serbos. The first specification has been now

38:31

adopted and we're. I'm particularly interested in

38:33

more application implementers to kind of come

38:35

on board and work through getting the

38:38

all-thin standard implemented inside of their application

38:40

layers of which then you can then

38:42

go and plug in any policy decision

38:44

point like surplus interchangeably into your different

38:46

systems in your applications. Just to kind

38:48

of build up on that, for the

38:50

decisions to happen where you rely on

38:53

an external source, what are they like

38:55

for like when you're doing a enforcement

38:57

of a policy, then you would you

38:59

go to a database or API? Is

39:01

that what you're saying is configurable? So

39:03

we have a pretty strict line on

39:05

what Serbos itself or policy decision points

39:08

should do inside of the system. And

39:10

one of the things we really design

39:12

for is predictability inside of how your

39:14

policy decision point will behave. So Serbos

39:16

is fully stateless in the sense that

39:18

it doesn't store state, but it also

39:20

won't call out and go and fetch

39:23

state from other parts of your systems.

39:25

Yeah, my background as well as MRA

39:27

is from building very high throughput low-latercy

39:29

data processing systems. billions of billions of

39:31

requests a day is the kind of

39:33

typical day for us in previous lives.

39:35

And so we've made kind of every

39:38

mistake possible when it comes to eventual

39:40

consistency and scalability and thundering herd problems

39:42

and all that sort of stuff. And

39:44

one of the things we decided very

39:46

early on when defining servos and specifying

39:48

servos is servos when it's running. Once

39:50

it's got policies in there, it would

39:53

not do anything else on your system.

39:55

It is down to the calling application

39:57

to parcel and stay through that. And

39:59

the primary driver to that is... many

40:01

orders of layers of management and process.

40:03

this involved, etc. behind, someone may make

40:05

a very small change to a policy

40:08

and if that policy decision point had

40:10

the ability to go and fetch state

40:12

from across your architecture, one small change

40:14

in a policy somewhere upstream, once it

40:16

hits your production environment, that small change

40:18

could actually result in some massively unexpected

40:21

load to some other parts of your

40:23

architecture. Because if that policy now is

40:25

to go and fetch some new data

40:27

point about you from some... other system

40:29

which doesn't normally get any traffic, you're

40:31

now going to push this change out

40:33

and now suddenly that system is not

40:36

scaled, it's not ready, you're now going

40:38

to add this massive latency or even

40:40

just request failures because they can't handle

40:42

the load to your system. So we

40:44

made that cool early on from, like,

40:46

being burnt in previous lives because they

40:48

can't handle the load to your system.

40:51

So we made that cool early on,

40:53

performance characteristics that will have across your

40:55

architecture. So where do you store policies

40:57

in a stateless decoupled framework? And if

40:59

something changes, how do you do this

41:01

policy reloading without disrupting a service in

41:03

a distributed environment? Yeah, hot reloading and

41:06

such. Yeah, absolutely. So in the distributed

41:08

environments, there's obviously a challenge of how

41:10

do you get those policy files down

41:12

to those different instances that deployed potentially

41:14

hundreds, if not thousands, thousands in some

41:16

cases across your architecture. The way this

41:18

works is you store your policy centrally,

41:21

as I mentioned earlier, it could be

41:23

a get-out repo, it could be in

41:25

a storage bucket, it could be an

41:27

asset stored, someone inside it over the

41:29

stack. And then each of those server

41:31

instances in the other source project, you

41:33

configure it, you configure it, you configure

41:36

it, you configure it, it, you configure

41:38

it, it, you configure it, it, you

41:40

configure it, to say, go, you can

41:42

figure it, or it, you can source

41:44

project, you can, you can figure it,

41:46

you, you, you, you, you, you, you,

41:49

you can figure it, you, you, you,

41:51

you, you, you, you, you, you, you,

41:53

you can, you, you, you, you, you,

41:55

you, you, you, you, you, you, you,

41:57

you, you, you, you, you, you, you,

41:59

you, you, you, you, you, you, you,

42:01

you, you, you, you, you, evaluated based

42:04

on it. Now, for those of you

42:06

that have dealt with these kind of

42:08

problems before, you kind of immediately run

42:10

into the problem of, well, if I've

42:12

got 100 services running and each of

42:14

them is taking 10 seconds. to check

42:16

for updates is going to take up

42:19

to 10 seconds, let's say, for a

42:21

policy change to apply. You know, that

42:23

may be okay for your scenario or

42:25

it may actually be a problem, depending

42:27

on how fast moving your policies are.

42:29

So it's part of surplus hub, which

42:31

is our management control plan that sits

42:34

on top of the open source project.

42:36

We flip that model around and it

42:38

becomes much of a push model. And

42:40

so we can actually coordinate and synchronize

42:42

the rollout of policy updates across the

42:44

entire fleet. and without you having to

42:46

kind of worry about anything like that.

42:49

So the policies are still stored in

42:51

a central location, you get repo, a

42:53

storage bucket, etc. But the compilation and

42:55

distribution on those policy updates is now

42:57

coordinated via the control plane, and that

42:59

is Certus Hub. I guess the next

43:01

question I have is, are you talking

43:04

a little bit about testing that's offered

43:06

as a part of the worst? Like,

43:08

so how do you test and validate

43:10

policies? Do you have like some examples

43:12

that you can talk about, like, like

43:14

a new policy? There's a validation step

43:16

and there's a testing step. So first

43:19

off, because Serbos we used, you know,

43:21

mentioned in the previous earlier, YAMEL as

43:23

our format for our surrounding policies, there's

43:25

a strict schema for that. We published

43:27

those schemes publicly. So your, you know,

43:29

your VS code, your editor of choice,

43:32

and whatever you may be using these

43:34

days, will light up and give you

43:36

validation of the actual structure of the

43:38

policies themselves, or to complete all that

43:40

sort of fun stuff, as the kind

43:42

of the kind of fun stuff. Your

43:44

policy file structure may be valid, but

43:47

then you want to make sure it's

43:49

logically valid as well. So you define

43:51

those test cases. Example users, example resources,

43:53

expected actions. And then as part of

43:55

the open source CLI tool, it goes

43:57

through that, firstly validate the structure, and

43:59

then also run all the tests, make

44:02

sure that the expected outcomes are as

44:04

they should be similar with any sort

44:06

of test driven type development. And those

44:08

same tests can then be running in

44:10

your CI pipeline. be it when you

44:12

set up yourself, say get hub actions,

44:14

we publish a get hub action for

44:17

that, or as part as a more

44:19

of a managed control plane offering like

44:21

Service Hub. I also wanted to ask

44:23

you one more question. Everybody is now

44:25

at the time where they're trying to

44:27

build their own. chatpots or LLLMs and

44:29

you know those models. So when you

44:32

do this authorization I feel like a

44:34

lot of the good practices that we

44:36

got on say these you know web

44:38

application based projects for us and all

44:40

of that we had a lot of

44:42

checks that were there and it's important

44:44

to do but with the AI and

44:47

ML chat ports some of them are

44:49

lost but do you think is it

44:51

a different type of framework that has

44:53

to be applied to those kind of

44:55

applications or do we use the same

44:57

principles? Yes and no is the answer

44:59

when it comes to software engineering. It's

45:02

never a pure yes or a pure

45:04

no. So if you look back at

45:06

software development, we've spent the last 40

45:08

years in trying to secure the back

45:10

end on the front end and the

45:12

communication in between them. And now with

45:15

the AI being so advanced and chat

45:17

board technology has been around and when

45:19

those two merits, suddenly we have now

45:21

a third interface. where the AI can

45:23

actually have access to your data and

45:25

it's actually even potentially bypassing your backend

45:27

and it's having, you know, unrestricted access

45:30

to your data to be able to

45:32

train the models and then it can

45:34

actually get also the same models, LLM

45:36

models and same, you know, rag architecture

45:38

and AI can give you the answer

45:40

straight out, right? And it does bypassing

45:42

your entire backend and front-end security that

45:45

you've actually... built in there. A classic

45:47

example of this is that you can

45:49

think about any analytic system or like

45:51

any HR system where there's an AI

45:53

chatbot on top, right? It's leaking data

45:55

because, you know, if a CEO asks

45:57

for, you know, what's the current payroll,

46:00

he should get an answer off inclusive

46:02

of the entire company's information. But if

46:04

a regional VP asks, hey, what's the

46:06

payroll, it shouldn't actually give the same

46:08

answer for that given region, etc. So

46:10

we need to now start securing these

46:12

AI chatboards, AI agents with the limitations

46:15

of the user. And in order to

46:17

be able to do that, we need

46:19

to be able to actually filter the

46:21

data that comes into these AI models.

46:23

and filter the data that actually comes

46:25

out of it. And Serbo's, you know,

46:27

data filtering, authorization aware, data filtering capability,

46:30

something that Alex talked about earlier, which

46:32

is the query planning and being able

46:34

to actually filter the data based on

46:36

what you should have access on, gives

46:38

possibility to the AI agents to be

46:40

able to only return a subset of

46:42

data rather than entirety of it. So

46:45

there is a use case for the

46:47

AI agents to be able to... use

46:49

this authorization logic as the data is

46:51

passing through it. Great, because I was

46:53

just thinking when you're talking that even

46:55

about this that Chevy chat pot, right?

46:58

I think they had this case where

47:00

it was just opened without any controls.

47:02

And I think finally, I think the

47:04

chat pot, they could, they had to

47:06

like give them a Chevy for a

47:08

$1 or something like that because the

47:10

person had like a policy decision. There

47:13

are lots of examples of this right

47:15

in terms of there are you know

47:17

some in airlines there are some cheap

47:19

tickets and refunds being given at the

47:21

end of the day we need to

47:23

actually inspect each one of these things

47:25

that the LLM models as a returning

47:28

as a response and turning them into

47:30

potential API calls and be able to

47:32

check if the user is actually allowed

47:34

to do certain things. So then in

47:36

that case also like a policy decision.

47:38

point should be built on top of

47:40

those chatpots is what I'm saying. So

47:43

that's lots of things. Absolutely. So service

47:45

policy decision point has actually two major

47:47

API. One API is very specific question.

47:49

Can this user do this action to

47:51

this or can this subject or principle

47:53

or user, whatever we want to call

47:55

it, do this action to this resource?

47:58

It's a very deterministic question. Yes or

48:00

no. And then the second question is

48:02

what resources can this user do this

48:04

action on? and being able to actually

48:06

filter that being able to give that

48:08

gives you the end's ability to be

48:10

able to filter your data as it's

48:13

coming out of a database to those

48:15

only those records. that the user has

48:17

access to. Great, so the last question

48:19

I want to ask you both is,

48:21

do you see opportunities for say AI

48:23

or ML to complement stateless frameworks? I

48:26

was reading this paper a few days

48:28

back on adaptive authorization and anomaly detection.

48:30

Is that something that you think will

48:32

be the future or is it already

48:34

being done at Serbia or other places?

48:36

Yeah, so there's lots of places that

48:38

I think makes sense to use this

48:41

kind of a new world. There's also

48:43

a couple places where I think you

48:45

definitely do not want some AI model

48:47

meddling it. And the places where I

48:49

think it makes sense is at the

48:51

start of the process when you try

48:53

to take those business requirements and convert

48:56

them to policy. I think that's a

48:58

really interesting area for innovation and you

49:00

can ask Chad's EBT or Claude at

49:02

the moment, here are my requirements, give

49:04

you a service policy and they actually

49:06

mostly will and they'll come up with

49:08

a pretty. good policy these days, which

49:11

is kind of nice, so it's clearly

49:13

made all our documentation etc. And at

49:15

the other end of it, which is

49:17

once you've got that audit log of

49:19

all the decisions being made, you've got

49:21

that log stream, that's another area where

49:23

you can start doing things like anomaly

49:26

detection and understanding what's going on and

49:28

use these new tools to help you

49:30

find the signal from the noise. So

49:32

I think those are two ripe areas

49:34

for opportunity where I have I'm strongly

49:36

think today today at least, is rules,

49:38

it is business requirements, it is compliance

49:41

needs, it is regulatory hurdles that must

49:43

be met, and that needs to be

49:45

certain to behave in a certain way.

49:47

You don't worry about what the temperature

49:49

of the model that deciding your authorization

49:51

logic should be. You need to make

49:53

sure that that middle point, the actual

49:56

component, the rules engine, the evaluation engine,

49:58

is always going to give you the

50:00

right answer every single time, and that

50:02

is where good code, efficient code, you

50:04

know, call it. Handwritten artisanal code if

50:06

you want in the middle should be

50:09

the one driving the system, but certainly

50:11

this new world of tools can really

50:13

help us with both the authoring and

50:15

the understanding side of things. enforcement needs

50:17

to be deterministic and you cannot afford

50:19

to hallucinate even once because that one

50:21

instance may cause a disaster. That's a

50:24

nice way to end the show. It

50:26

has to be deterministic, the policy enforcement.

50:28

Great. So what's a good place to

50:30

reach you if somebody wanted to in

50:32

cyberspace like our listeners? Alex and Emma

50:34

would it be LinkedIn, Twitter or X

50:36

or anywhere else? Absolutely, so our website

50:39

is service. Dev, all of our resources,

50:41

all of our product and all of

50:43

our documentation can be found there. If

50:45

you want to reach us or our

50:47

teams, we have a slack community that

50:49

we are pretty responsive on and you

50:51

know we want to help our developers

50:54

adopt externalised authorization as much as they

50:56

can. And then if you want to

50:58

reach out to me individually and Rebaran

51:00

on LinkedIn and at Mray on Twitter

51:02

X. Yeah, and I'm Alex Livie on

51:04

LinkedIn and Alex Livie on Twitter. Great,

51:06

I'll make sure to add that to

51:09

the show notes. This has been a

51:11

great show. Thanks for coming. This is

51:13

Prianka Raguen for Software Engineering Radio. Thanks

51:15

for listening. Thanks for listening to S.E.

51:17

Radio, an educational program brought to you

51:19

by I tripply software magazine. For more

51:21

about the podcast including other episodes, visit

51:24

our website at S.E.com. To provide feedback

51:26

you can comment on each episode on

51:28

the website or reach us on LinkedIn,

51:30

Facebook, Twitter or through our slack channel

51:32

at s.c.com. You can also email us

51:34

at team at s. radio.net. This and

51:36

all other episodes of s.c. radio is

51:39

licensed under Creative Commons License 2.5. Thanks

51:41

for listening.

Unlock more with Podchaser Pro

  • Audience Insights
  • Contact Information
  • Demographics
  • Charts
  • Sponsor History
  • and More!
Pro Features