[Pvfs2-developers] Batch create in sys-symlink.sm
Walter Ligon
walt at clemson.edu
Thu Jun 25 11:55:21 EDT 2009
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