Thanks David.

Since we are discussing authorization and access control, I would like to gain 
little attention on the below bug which basically propose authorization check 
on  identity:check_token, identity:validate_token and identity:revoke_token APIs
 
https://bugs.launchpad.net/keystone/+bug/1186059

Due to absence of a target on such API calls Auth is  not possible, I would 
appreciate community's thoughts on the bug.  

Thanks,
Arvind




-----Original Message-----
From: David Chadwick [mailto:d.w.chadw...@kent.ac.uk] 
Sent: Thursday, July 25, 2013 4:10 AM
To: OpenStack Development Mailing List
Cc: Tiwari, Arvind
Subject: Re: [openstack-dev] [keystone] Extending policy checking to include 
target entities

I have responded to your post, as I dont think it solves the identified 
problem

regards

David

On 24/07/2013 23:26, Tiwari, Arvind wrote:
> I have added my proposal @ 
> https://etherpad.openstack.org/api_policy_on_target.
>
> Thanks,
> Arvind
>
> -----Original Message-----
> From: Henry Nash [mailto:hen...@linux.vnet.ibm.com]
> Sent: Wednesday, July 24, 2013 8:46 AM
> To: OpenStack Development Mailing List
> Subject: Re: [openstack-dev] [keystone] Extending policy checking to include 
> target entities
>
> I think we should transfer this discussion to the etherpad for this 
> blueprint: https://etherpad.openstack.org/api_policy_on_target
>
> I have summarised the views of this thread there already, so let's make any 
> further comments there, rather than here.
>
> Henry
> On 24 Jul 2013, at 00:29, Simo Sorce wrote:
>
>> On Tue, 2013-07-23 at 23:47 +0100, Henry Nash wrote:
>>> ...the problem is that if the object does not exists we might not be able 
>>> tell whether the use is authorized or not (since authorization might depend 
>>> on attributes of the object itself)....so how do we know wether to lie or 
>>> not?
>>
>> If the error you return is always 'Not Found', why do you care ?
>>
>> Simo.
>>
>>> Henry
>>> On 23 Jul 2013, at 21:23, David Chadwick wrote:
>>>
>>>>
>>>>
>>>> On 23/07/2013 19:02, Henry Nash wrote:
>>>>> One thing we could do is:
>>>>>
>>>>> - Return Forbidden or NotFound if we can determine the correct answer
>>>>> - When we can't (i.e. the object doesn't exist), then return NotFound
>>>>> unless a new config value 'policy_harden' (?) is set to true (default
>>>>> false) in which case we translate NotFound into Forbidden.
>>>>
>>>> I am not sure that this achieves your objective of no data leakage through 
>>>> error codes, does it?
>>>>
>>>> Its not a question of determining the correct answer or not, its a 
>>>> question of whether the user is authorised to see the correct answer or not
>>>>
>>>> regards
>>>>
>>>> David
>>>>>
>>>>> Henry
>>>>> On 23 Jul 2013, at 18:31, Adam Young wrote:
>>>>>
>>>>>> On 07/23/2013 12:54 PM, David Chadwick wrote:
>>>>>>> When writing a previous ISO standard the approach we took was as follows
>>>>>>>
>>>>>>> Lie to people who are not authorised.
>>>>>>
>>>>>> Is that your verbage?  I am going to reuse that quote, and I would
>>>>>> like to get the attribution correct.
>>>>>>
>>>>>>>
>>>>>>> So applying this approach to your situation, you could reply Not
>>>>>>> Found to people who are authorised to see the object if it had
>>>>>>> existed but does not, and Not Found to those not authorised to see
>>>>>>> it, regardless of whether it exists or not. In this case, only those
>>>>>>> who are authorised to see the object will get it if it exists. Those
>>>>>>> not authorised cannot tell the difference between objects that dont
>>>>>>> exist and those that do exist
>>>>>>
>>>>>> So, to try and apply this to a semi-real example:  There are two types
>>>>>> of URLs.  Ones that are like this:
>>>>>>
>>>>>> users/55FEEDBABECAFE
>>>>>>
>>>>>> and ones like this:
>>>>>>
>>>>>> domain/66DEADBEEF0000/users/55FEEDBABECAFE
>>>>>>
>>>>>>
>>>>>> In the first case, you are selecting against a global collection, and
>>>>>> in the second, against a scoped collection.
>>>>>>
>>>>>> For unscoped, you have to treat all users as equal, and thus a 404
>>>>>> probably makes sense.
>>>>>>
>>>>>> For a scoped collection we could return a 404 or a 403 Forbidden
>>>>>> <https://en.wikipedia.org/wiki/HTTP_403> based on the users
>>>>>> credentials:  all resources under domain/66DEADBEEF0000  would show up
>>>>>> as 403s regardless of existantce or not if the user had no roles in
>>>>>> the domain 66DEADBEEF0000.  A user that would be allowed access to
>>>>>> resources in 66DEADBEEF0000  would get a 403 only for an object that
>>>>>> existed but that they had no permission to read, and 404 for a
>>>>>> resource that doesn't exist.
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>>
>>>>>>> regards
>>>>>>>
>>>>>>> David
>>>>>>>
>>>>>>>
>>>>>>> On 23/07/2013 16:40, Henry Nash wrote:
>>>>>>>> Hi
>>>>>>>>
>>>>>>>> As part of bp
>>>>>>>> https://blueprints.launchpad.net/keystone/+spec/policy-on-api-target
>>>>>>>> I have uploaded some example WIP code showing a proposed approach
>>>>>>>> for just a few API calls (one easy, one more complex). I'd
>>>>>>>> appreciate early feedback on this before I take it any further.
>>>>>>>>
>>>>>>>> https://review.openstack.org/#/c/38308/
>>>>>>>>
>>>>>>>> A couple of points:
>>>>>>>>
>>>>>>>> - One question is on how to handle errors when you are going to get
>>>>>>>> a target object before doing you policy check.  What do you do if
>>>>>>>> the object does not exist?  If you return NotFound, then someone,
>>>>>>>> who was not authorized  could troll for the existence of entities by
>>>>>>>> seeing whether they got NotFound or Forbidden. If however, you
>>>>>>>> return Forbidden, then users who are authorized to, say, manage
>>>>>>>> users in a domain would aways get Forbidden for objects that didn't
>>>>>>>> exist (since we can know where the non-existant object was!).  So
>>>>>>>> this would modify the expected return codes.
>>>>>>>>
>>>>>>>> - I really think we need some good documentation on how to bud
>>>>>>>> keystone policy files.  I'm happy to take a first cut as such a
>>>>>>>> thing - what do you think the right place is for such documentation
>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>>> OpenStack-dev mailing list
>>>>>>>> OpenStack-dev@lists.openstack.org
>>>>>>>> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>>>>>>>>
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> OpenStack-dev mailing list
>>>>>>> OpenStack-dev@lists.openstack.org
>>>>>>> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>>>>>>
>>>>>> _______________________________________________
>>>>>> OpenStack-dev mailing list
>>>>>> OpenStack-dev@lists.openstack.org
>>>>>> <mailto:OpenStack-dev@lists.openstack.org>
>>>>>> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>>>>>
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> OpenStack-dev mailing list
>>>>> OpenStack-dev@lists.openstack.org
>>>>> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>>>>>
>>>>
>>>
>>>
>>> _______________________________________________
>>> OpenStack-dev mailing list
>>> OpenStack-dev@lists.openstack.org
>>> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>>
>>
>> --
>> Simo Sorce * Red Hat, Inc * New York
>>
>>
>> _______________________________________________
>> OpenStack-dev mailing list
>> OpenStack-dev@lists.openstack.org
>> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>>
>
>
> _______________________________________________
> OpenStack-dev mailing list
> OpenStack-dev@lists.openstack.org
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>
> _______________________________________________
> OpenStack-dev mailing list
> OpenStack-dev@lists.openstack.org
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>

_______________________________________________
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev

Reply via email to