[Pvfs2-developers] Batch create in sys-symlink.sm
Rob Ross
rross at mcs.anl.gov
Thu Jun 25 12:01:40 EDT 2009
Gotcha. Seems like we're all getting back on the same page. -- Rob
On Jun 25, 2009, at 10:55 AM, Walter Ligon wrote:
> Yes, that is basically what I was saying.
>
> And you got me there - I do. I just get nervous when they are 1000
> miles away and hacking indiscriminately. Those two are pretty
> creative so I like to make sure we're on track. I'm sure this
> lively discussion is just that - a sign of a good thing! :)
>
> Rob Ross wrote:
>> Hi Walt,
>> Thanks for the explanation. So to make sure I understand how one
>> would differentiate between servers and clients (if that is
>> importatn), basically servers would never hand out a capability
>> allowing someone to perform an operation we didn't want clients to
>> perform (e.g., a batch create, if that's the solution chosen). Then
>> only servers could perform the operation, because they can create a
>> capability for themselves that allows them to do the operation
>> (because they are trusted). Right?
>> I thought you liked it when the students ran off and started
>> hacking on their own :)? Or did you get tired of that after a
>> while :)?
>> Rob
>> On Jun 25, 2009, at 12:33 AM, Walter Ligon wrote:
>>> The short version goes like this - every request has a signed
>>> capability included with it that states the request is
>>> authorized. The capability is created by one of the servers,
>>> which we trust. We don't need to know the source of any given
>>> message because we can verify the source of the capability.
>>>
>>> Now, as Rob surmised, the server that creates the capability
>>> normally checks whatever permission is involved before creating
>>> it. In the case of creating an object, this is generally inherent
>>> in the permissions on the directory in which the final file (dir,
>>> symlink, etc.) is going to be placed.
>>>
>>> If the creation of files and such are moved to a server, then the
>>> create-file request would normally include the handle of the
>>> parent directory, on which permissions can be checked. The server-
>>> to-server request to to create datafile objects and so on can be
>>> authorized by the server doing the create. Normal users can be
>>> prevented from running such a request by simply never giving them
>>> a capability for that request.
>>>
>>> I think the problem comes that where we used to have a request
>>> that created one object, we now have a request that creates many
>>> objects, and the current capability can limit which request you
>>> run, but not the arguments to it, so a capability that allow you
>>> to create 1 allows you to create many. If this request is only
>>> used server-to-server, the we need not ever give a client a
>>> capability to use it, but if we want to let a client run this
>>> request, we either have to risk a malicious user chewing through
>>> handles, or we have to modify the capabilities to be more flexible.
>>>
>>> So one solution is to never allow clients to just create and
>>> object, moving all creation routines to the servers. Another
>>> solution is to have two requests a single create request and a
>>> bulk-create request and only every allow clients to run the
>>> single. Still another is to modify the create capability to
>>> specify how many objects can be created.
>>>
>>> Oddly enough, the last might be the best approach - especially if
>>> we find that this is the only case where we need to do that, and
>>> the only options we need are 1 and many. In this case it becomes
>>> pretty easy.
>>>
>>> Finally I might also point out that David and Nick did not consult
>>> with me before deciding how to deal with this. I guess they
>>> figure they don't need me any more.
>>>
>>> Walt
>>>
>>> Sam Lang wrote:
>>>> On Jun 24, 2009, at 3:55 PM, Sam Lang wrote:
>>>>>
>>>>> It sounds like your approach to eliminating security holes is
>>>>> with "security by obscurity". In other words, if the client (or
>>>>> some rogue process acting as a client) does not know that the
>>>>> interface is there, he can't abuse it. I don't think that's the
>>>>> right approach, especially since PVFS is completely open source,
>>>>> and anyone can just look at the code.
>>>> Rob points out that I don't really know about your security
>>>> approach, so my above comments may not be entirely appropriate.
>>>> I guess what I was trying to say is that it wasn't clear to me
>>>> from a security perspective that moving batch_create to the
>>>> server would be helpful for you. I'd be interested to hear about
>>>> your security approach though, and will refrain from making
>>>> comments about it until I have a better understanding of it. :-)
>>>> In a different context, Phil and I have discussed the issue of
>>>> the server knowing the source of a request. It turns out this
>>>> isn't an easy thing to do, at least for BMI tcp. Phil has added
>>>> some code to BMI tcp in a separate branch that provides the
>>>> functionality internally in BMI, and it shouldn't be hard to
>>>> export the info through a get_info call. Let us know if that's
>>>> something you're interested in!
>>>> -sam
>>>> _______________________________________________
>>>> Pvfs2-developers mailing list
>>>> Pvfs2-developers at beowulf-underground.org
>>>> http://www.beowulf-underground.org/mailman/listinfo/pvfs2-
>>>> developers
>>> _______________________________________________
>>> Pvfs2-developers mailing list
>>> Pvfs2-developers at beowulf-underground.org
>>> http://www.beowulf-underground.org/mailman/listinfo/pvfs2-developers
More information about the Pvfs2-developers
mailing list