<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Tue, Feb 10, 2015 at 2:49 PM, Jerry Leichter <span dir="ltr"><<a href="mailto:leichter@lrw.com" target="_blank" onclick="window.open('https://mail.google.com/mail/?view=cm&tf=1&to=leichter@lrw.com&cc=&bcc=&su=&body=','_blank');return false;">leichter@lrw.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Yes, we need more powerful ways to describe policies (and, more generally, business practices).  Yes, even more, we need ways to make the policies and practices we formalize comprehensible to and manipulable by human beings in a useful way.  (I can guarantee you that any organization that uses more than a couple of trivial ACL's cannot answer pretty simple questions about who has access to what resources.  In some ways, capabilities are *worse* - without significant help from the system, the kinds of questions we regularly ask - who could have read the file? - cannot be answered.  We as human beings are really bad at following chains of relationships.  This shows up for ACL's when you start nesting them - or worrying about what someone with Control access might be able to do.  For capabilities, "portability" is exactly the point, so you hit this much sooner and much more pervasively.)</blockquote><div><br></div><div>As someone who reasons about ambient authority systems all day, they're terrible. Exactly as you describe, you end up following chains of nested relationships, and they come at you from two directions:</div><div><br></div><div>- The person: what groups do they belong to?</div><div>- The resource: what groups are allowed to do what?</div><div><br></div><div>From this we end up with many-to-many relationships between people and resources with nested ACLs as the indirection mechanism, and if there is any path through this graph we can follow which connects the two, the action is authorized. This makes reasoning about authority in complex systems extremely complicated, to the point that people start building logic languages to describe constraints around what sort of connections in these sorts of access control graphs are allowable by policy.</div><div><br></div><div>In a properly designed capability system, you should simply be able to ask what authority a given user has over a given resource. If they have the capability they have it. If they don't they don't. The entire messy indirection of ambient authority systems is eliminated.</div></div><div><br></div>-- <br><div class="gmail_signature">Tony Arcieri<br></div>
</div></div>