Another thing worth discussion is the relation between bucket
namespaces and multi-tenancy. I understand MT as a mean to
provide grouping and separation between user IDs while BNS
does the same but in the domain of bucket names. In that sense
both things are perfectly orthogonal.

PR #5872 contains more than plain BNS. It also splits account
owner from identity used to authorize a given operation. Since
now an authentication subsystem (eg. Keystone or the internal,
RADOS-based one) need to set three basic things in req_state:
account owner (req_state::user), authentication identify used by
the verify_permission() methods (req_state::auth_user) and level
of permission (req_state::perm_mask). It also may create new
account (RGWUserInfo) if necessary.

Choice of identifiers in req_state::user and rgw_user::auth_user
is delegated to specific authentication subsystem. One could set
both to the same value while other might decide to differentiate
them and reflect state of some external source-of-truth (Keystone).
However, core of rgw doesn't need to care nor even be aware about
multi-tenancy.

>From my understanding wip-5073 implements the tenant concept
at the core layer.

Best regards,
Radoslaw Zarzynski


On Thu, Oct 15, 2015 at 7:25 AM, Pete Zaitcev <zait...@redhat.com> wrote:
> I took a decent look at the pull request 5872
>   https://github.com/ceph/ceph/pull/5872
> It implements something called "bucket namespaces": a way to make
> buckets qualified with a prefix that permits different users use
> buckets with the same name.
>
> I think I like the idea overall, but the implementation raises
> some questions. The most important in my mind is: why use rgw_user?
>
> In the wip-5073, rgw_user is needed because tenant there adds
> a namespace both to users and buckets. But here, users are not
> in a namespace, only buckets are. Or at least that's what I see
> in the code, please set me straight if I'm wrong.
>
> Conceptually, the user name is just a label, and this patch keeps
> those labels compatible. I think, the information about a user
> should contain the user's bucket namespace, but the user's label
> does not need to have it. So, RGWUserInfo should have the bucket
> namespace name (and possibly has_own_bns), and rgw_user is superfluous.
>
> If we could get rid of rgw_user, I would be onboard with this.
>
> Less importantly, I do not like the generosity with knobs.
> The rgw_swift_create_account_with_bns shold go away with rgw_user.
> The rgw_swift_account_in_url should be possible to incorporate
> in a compatible fashion (it does not add an extra next_tok()).
> The rgw_keystone_accepted_admin_roles... okay, that one might
> be needed. Swift has an equivalent of it.
>
> Finally, there are some miniscule technical issues.
>  - Is it just me, or do encoding and decoding of RGWUserInfo do
>    not match?  Decoding appears to make provision for wip-5073,
>    which we may not even need.
>  - The --own-bucket-namespace should not be a boolean, but the
>    namespace's name.
>  - There's some junk imported from wip-5073; I'll work on cleaning
>    that up.
>
> -- Pete
--
To unsubscribe from this list: send the line "unsubscribe ceph-devel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to