Hi,

It’s sounds like we require a separate flag as to whether any given username or 
role may appear in such an informative 403 message. That is, wherever we sa 
that X is granted access, we have an optional flag on X to say if we can 
disclose its right of access to others, defaulting to false if not present.

B.

> On 3 Apr 2019, at 23:21, Adam Kocoloski <kocol...@apache.org> wrote:
> 
> Totally agree it’s information leakage - that’s why I found it surprising 
> that this was their desired mode of operation. It works when there’s a 
> relatively small set of labels that get applied to data, and the labels 
> themselves are not all that confidential.
> 
> Adam
> 
>> On Apr 3, 2019, at 5:53 PM, Joan Touzet <woh...@apache.org> wrote:
>> 
>> One parenthetical...
>> 
>>> From: "Adam Kocoloski" <kocol...@apache.org>
>>> 
>>> On a somewhat-related note, I have had conversations before with
>>> folks who are keen to adopt these sorts of fine-grained access
>>> control systems who said they actually prefer to have a 403
>>> Forbidden response list the set of privileges that would be
>>> sufficient to access the resource. I found this surprising, but I
>>> guess it comes down to a user needing to figure out what kind of
>>> security exception to apply for in order to make progress with some
>>> data analysis. I think this is a topic on which we could make a
>>> fairly late-binding decision — or even have it as a configurable
>>> option.
>> 
>> Anyone who's ever had to deal with Amazon's AWS IAM configuration
>> certainly can appreciate this need. I'm +1 on the idea, assuming it's
>> not hard to implement...but...
>> 
>> The problem is that it can be a data leak. In Jan's initial gist, he
>> shows the _access field being populated by usernames only (Scenario 1).
>> The only possible exception here is to get your username added to the
>> _access field on that document.
>> 
>> If we do this via roles, then you could be leaking role name
>> definitions via this response. Not sure we care, but having a full
>> list of roles that could possibly provide that permission is certainly
>> a hole.
>> 
>> If we do this via _capability_, then you're looking at a set of
>> permissions such as reader, writer, deleter, and that specific
>> permission could be returned:
>> 
>> {"needed":"writer", "obtained":"reader"}
>> 
>> That'd work, but it's different from what Jan has proposed to date, I
>> believe, especially in distinguishing between read, write, and delete.
>> 
>> -Joan
> 

Reply via email to