Re: [rgw] Multi-tenancy support in radosgw

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, Sep 11, 2015 at 3:24 PM, Radoslaw Zarzynski
<rzarzynski@xxxxxxxxxxxx> wrote:
> Hello,
>
> It's a well-known trait of radosgw that an user cannot create new
> bucket with a given name if the name is already occupied by other
> user's bucket (request to do that will be rejected with 409 Conflict).
> This behaviour is entirely expected in S3. However, when it comes
> to Swift API, it turns into huge limitation.
>
> In my opinion the root cause lies in how radosgw actually handles
> bucket entry points. They might be seen as symlinks which must
> be resolved in order to map bucket names exposed to users into
> concrete bucket instances:
>
>   bucket name -> unique bucket instance ID
>
> It's completely clear we need to preserve backward compatibility.
> Thus we cannot simply append ID of user who owns a given
> bucket to argument list of mapping function. We would have to
> introduce an indirection layer - bucket namespaces:
>
>   bucket namespace, bucket name -> unique bucket instance ID
>
> Each already existing user would obtain empty bucket namespace
> by default. It will be possible to create user  with his own, unique
> namespace.
>
> Generally this looks to me as stupidly simple solution. Of course,
> it has limitations. At the moment I see following things:
>
> 1. We may need to develop a new mechanism for moving buckets
>     between namespaces in radosgw-admin. The already existing
>     one for linking/unlinking might be not enough.


This is a nice to have, not sure we actually need that.

>
> 2. We will always need ID of namespace in order to access proper
>     bucket entry points. This is not a problem for requests authorized
>     through Keystone/TempAuth because user ID is known and thus
>     BNS may be easily calculated.
>     Anonymous access/TempURL for bucket with non-empty namespace
>     is a different story. In this case BNS must be provided explicitly.
>     Swift resolves the problem by having account name as a part of URL.
>     We could go the same way. This would be extended by decoupling
>     rgw_user used for storage access purposes from the one for
>     authorizing a given operation (RGWOp::verify_permission() method).
>
>
> I would like to ask for reviews of the idea and feedback.
>

I think that it's orthogonal to the whole multi-tenancy issue. It
might solve a specific requirement, but doesn't address the entire
scope of multitenancy. But it's probably a good idea to have it
anyway, as it adds a needed layer of abstraction.
I also think that we shouldn't treat this as a swift specific issue.
We should make it configurable and work for both S3 and swift.

Yehuda
--
To unsubscribe from this list: send the line "unsubscribe ceph-devel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [CEPH Users]     [Ceph Large]     [Information on CEPH]     [Linux BTRFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]
  Powered by Linux