<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>AutZ on Robin&#39;s notebook</title>
    <link>https://notes.robinvanhove.me/tags/autz/</link>
    <description>Recent content in AutZ on Robin&#39;s notebook</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en</language><atom:link href="https://notes.robinvanhove.me/tags/autz/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Policy-Based Access control with data filters</title>
      <link>https://notes.robinvanhove.me/notes/pbac_data_filter/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://notes.robinvanhove.me/notes/pbac_data_filter/</guid>
      <description>&lt;p&gt;In the classic XCAML based fine grained authorization ([[fga]]) architecture,
the &lt;em&gt;Policy Decision Point&lt;/em&gt; or PDP is responsible for deciding weather a subject
such as a user is allowed to do an action on a specific resource.&lt;/p&gt;
&lt;p&gt;But in many real world architecture this pattern is difficult to apply. Let&amp;rsquo;s
look the following simple example. We want to built an application that shows a
simple list of all documents a user has access to.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>In the classic XCAML based fine grained authorization ([[fga]]) architecture,
the <em>Policy Decision Point</em> or PDP is responsible for deciding weather a subject
such as a user is allowed to do an action on a specific resource.</p>
<p>But in many real world architecture this pattern is difficult to apply. Let&rsquo;s
look the following simple example. We want to built an application that shows a
simple list of all documents a user has access to.</p>
<p>We could retrieve all documents from the datastore and ask the PDP whether our
user has access and only return those. But that has an obvious disadvantage.</p>
<p>The people over at OpenID AuthZen have proposed to a search API. Where instead
of searching in our datastore, we search in the PDP directly. Unfortunately
this approach makes it difficult or at least impractical to implement filters
by the applications such as search by document name.</p>
<p>In this case the PDP would also be responsible for pagination which may not be
preferred. Additionally the PDP would have to know about each resource and
their relevant attributes. In reality this is something stored in the datastore.</p>
<p>What we really need in practice are policy-based data filters. Where we ask the
PDP for a filter under which condition the user is allowed to access a
resource. We can then combine this authorization filter with any filer need by
the application logic to query the datastore.</p>
<h2 id="example-worked-out-in">Example worked out in</h2>
<p>[[opa_data_filter]]</p>
<h2 id="authzen-data-filter-api-draft">AuthZen Data Filter API draft</h2>
<p><a href="https://hackmd.io/@oidf-wg-authzen/HkLiZVdb1l">https://hackmd.io/@oidf-wg-authzen/HkLiZVdb1l</a></p>
]]></content:encoded>
    </item>
    
  </channel>
</rss>
