RGW Multitenancy » History » Version 1
Jessica Mack, 08/26/2015 02:19 AM
1 | 1 | Jessica Mack | h1. RGW Multitenancy |
---|---|---|---|
2 | |||
3 | h3. Summary |
||
4 | |||
5 | Currently RGW follows the S3 scheme, in which users and buckets all reside in a single global tenant. |
||
6 | Swift, on the other hand has a distinct tenant entity. Note that the swift tenant is closer to the rgw user in functionality, whereas the swift users are closer to the rgw subusers. |
||
7 | All swift users within the same tenant share the same data (as with subusers under rgw user). |
||
8 | Buckets names don’t need to be unique across different tenants (unlike rgw). |
||
9 | |||
10 | h3. Owners |
||
11 | |||
12 | * Yehuda (Red Hat) |
||
13 | |||
14 | h3. Interested Parties |
||
15 | |||
16 | * Name (affiliation) |
||
17 | |||
18 | h3. Current Status |
||
19 | |||
20 | h3. Detailed Description |
||
21 | |||
22 | The suggested solution: |
||
23 | Basic |
||
24 | add ‘tenant’ property to rgw users |
||
25 | add ‘tenant’ property to rgw buckets |
||
26 | any bucket that a user creates will reside under the user’s tenant |
||
27 | buckets will not need to be unique across tenants |
||
28 | user could be referred to as <tenant>:<user> |
||
29 | bucket could be referred to as <tenant>#<bucket> or <tenant>/<bucket> (can’t use <tenant>:<bucket>) |
||
30 | for backward compatibility, the global tenant also exists, in which the tenant name is empty. Accessing a bucket through the virtual dns bucket naming scheme (e.g., bucket.dreamhost.com), will got to the bucket in the global region. A configurable will make it possible to change this scheme to be able to specify a tenant, e.g. <bucket>.<tenant>.<domain>. |
||
31 | when a user refers to a user or a bucket, if the tenant is not specified its own tenant will be used; when a user specifies permissions on object / bucket, each acl that specifies another user will refer to its own tenant by default. E.g., |
||
32 | User sage under the redhat tenant (redhat:sage) gives greg permissions, sage could either specify redhat:greg <- READ_ONLY, or just greg <- READ_ONLY, as greg and sage are on the same tenant. |
||
33 | a tenant entity will also exist, and would have several optional configurables |
||
34 | default placement target (storage policy) |
||
35 | quota (per user in the tenant, for the entire tenant -- if implemented) |
||
36 | name[s] of dns entry point[s] for the tenant |
||
37 | Advanced functionality, not necessarily part of initial solution |
||
38 | ability to list users that belong to each tenant |
||
39 | tenant admin users that can administer their tenant |
||
40 | quota per tenant, statistics per tenant |
||
41 | |||
42 | h3. Work items |
||
43 | |||
44 | h4. Coding tasks |
||
45 | |||
46 | # Task 1 |
||
47 | # Task 2 |
||
48 | # Task 3 |
||
49 | |||
50 | h4. Build / release tasks |
||
51 | |||
52 | # Task 1 |
||
53 | # Task 2 |
||
54 | # Task 3 |
||
55 | |||
56 | h4. Documentation tasks |
||
57 | |||
58 | # Task 1 |
||
59 | # Task 2 |
||
60 | # Task 3 |
||
61 | |||
62 | h4. Deprecation tasks |
||
63 | |||
64 | # Task 1 |
||
65 | # Task 2 |
||
66 | # Task 3 |