Re: rgw: disallowing bucket creation for specific users?

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

 



If you want to do it using CLI in one command then try this “radosgw-admin user create --uid=test --display-name=“Test User" --max-buckets=-1”

Ondrej

> On 6. 10. 2023, at 9:07, Matthias Ferdinand <mf+ml.ceph@xxxxxxxxx> wrote:
> 
> On Fri, Oct 06, 2023 at 08:55:42AM +0200, Ondřej Kukla wrote:
>> Hello Matthias,
>> 
>> In our setup we have a set of users that are only use to read from certain buckets (they have s3:GetObject set in the bucket policy).
>> 
>> When we create those read users using the Admin Ops API we add the max-buckets=-1 parameter which disables bucket creation.
>> 
>> https://docs.ceph.com/en/quincy/radosgw/adminops/#create-user
>> 
>> Isn’t this what are you looking for?
> 
> yes, it is, thank you. Seems to be essentially the same as providing
> "--max-buckets=-1" on the CLI with "radosgw quota set". But interesting
> to see this done in a single step when creating the user.
> 
> Matthias
> 
>> 
>> Regards,
>> 
>> Ondrej
>> 
>>> On 6. 10. 2023, at 8:44, Matthias Ferdinand <mf+ml.ceph@xxxxxxxxx> wrote:
>>> 
>>> On Thu, Oct 05, 2023 at 09:22:29AM +0200, Robert Hish wrote:
>>>> Unless I'm misunderstanding your situation, you could also tag your
>>>> placement targets. You then tag users with the corresponding tag enabling
>>>> them to create new buckets at that placement target. If a user is not tagged
>>>> with the corresponding tag they cannot create new buckets at that placement
>>>> target. The tags do not prevent users from using buckets that are already
>>>> owned/created by them.
>>>> 
>>>> It adds a bit of management overhead, but should give you the control youre
>>>> looking for.
>>>> 
>>>> https://docs.ceph.com/en/latest/radosgw/placement/#user-placement
>>> 
>>> 
>>> thanks. Seems like a bit of work initially configuring placement
>>> targets, but perhaps easier to handle when only a few users get to
>>> create buckets vs. a large number of users without bucket creation
>>> rights.
>>> 
>>> Matthias
>>> 
>>> 
>>>> 
>>>> -Robert
>>>> 
>>>> On 10/4/23 19:32, Matthias Ferdinand wrote:
>>>>>> Tried a negative number ("--max-buckets=-1"), but that had no effect at
>>>>>> all (not even an error message).
>>>>> 
>>>>> must have mistyped the command; trying again with "-max-buckets=-1", it
>>>>> shows the wanted effect: user cannot create any bucket.
>>>>> 
>>>>> So, an effective and elegant method indeed :-)
>>>>> 
>>>>> Matthias
>>>>> 
>>>>> PS: answering my own question below "how can I keep users from deleting
>>>>> their own bucket?": bucket policy.
>>>>> 
>>>>> $ cat denypolicy.txt
>>>>> {
>>>>>  "Version": "2012-10-17",
>>>>>  "Statement": [{
>>>>>    "Effect": "Deny",
>>>>>    "Principal": {"AWS": ["*"]},
>>>>>    "Action": [ "s3:DeleteBucket", "s3:DeleteBucketPolicy", "s3:PutBucketPolicy" ],
>>>>>    "Resource": [
>>>>>      "arn:aws:s3:::*"
>>>>>    ]
>>>>>  }]
>>>>> }
>>>>> 
>>>>> Bucket cannot be deleted any more even by the bucket owner, and also the
>>>>> bucket policy can't be modified/deleted anymore.
>>>>> 
>>>>> This closes the loopholes I could come up with so far; there might still
>>>>> be some left I am currently not aware of :-)
>>>>> 
>>>>> 
>>>>> On Wed, Oct 04, 2023 at 06:20:09PM +0200, Matthias Ferdinand wrote:
>>>>>> On Tue, Oct 03, 2023 at 06:10:17PM +0200, Matthias Ferdinand wrote:
>>>>>>> On Sun, Oct 01, 2023 at 12:00:58PM +0200, Peter Goron wrote:
>>>>>>>> Hi Matthias,
>>>>>>>> 
>>>>>>>> One possible way to achieve your need is to set a quota on number of
>>>>>>>> buckets  at user level (see
>>>>>>>> https://docs.ceph.com/en/reef/radosgw/admin/#quota-management). Quotas are
>>>>>>>> under admin control.
>>>>>>> 
>>>>>>> thanks a lot, rather an elegant solution.
>>>>>> 
>>>>>> sadly, bucket quotas are not really as effective and elegant as I first
>>>>>> thought, since "--max-buckets=0" means "unlimited", not "no buckets".
>>>>>> 
>>>>>> Setting and enabling per-user bucket-scoped quota:
>>>>>> 
>>>>>>    # radosgw-admin quota set --uid=rgw_user_03 --quota-scope=bucket --max-objects=1 --max-size=1 --max-buckets=1
>>>>>> 
>>>>>>    # radosgw-admin quota enable --quota-scope=bucket --uid=rgw_user_03
>>>>>> 
>>>>>>    # radosgw-admin user info --uid=rgw_user_03 | jq '.max_buckets,.bucket_quota'
>>>>>>    1
>>>>>>    {
>>>>>>      "enabled": true,
>>>>>>      "check_on_raw": false,
>>>>>>      "max_size": 1024,
>>>>>>      "max_size_kb": 1,
>>>>>>      "max_objects": 1
>>>>>>    }
>>>>>> 
>>>>>> 
>>>>>> "--max-buckets=0": number of buckets seems to be effectively unlimited
>>>>>> 
>>>>>> "--max-buckets=1": the user can create exactly 1 bucket, further bucket
>>>>>> 		   creation attempts get a "TooManyBuckets" HTTP 400
>>>>>>                   response.
>>>>>> 
>>>>>> Tried a negative number ("--max-buckets=-1"), but that had no effect at
>>>>>> all (not even an error message).
>>>>>> 
>>>>>> I might pre-create a bucket for each user, e.g. a bucket named
>>>>>> "dead-end-bucket-for-rgw_user_03", so they are already at their maximum
>>>>>> bucket number when they first get their account credentials.
>>>>>> But can I also keep the user from simply deleting this pre-created
>>>>>> bucket and creating a new one with a name we intended for some other
>>>>>> use?
>>>>>> 
>>>>>> Buckets of reserved names can't be pre-created (and pre-owned by some
>>>>>> special users) here, as the list of reserved names is not fully known,
>>>>>> only a few name prefixes are known so far (i.e. something like
>>>>>> "<application>-.*"), but even with these prefixes we do not have an
>>>>>> exhaustive list.
>>>>>> 
>>>>>> 
>>>>>> Regards
>>>>>> Matthias
>>>>>> 
>>>>>>>> Rgds,
>>>>>>>> Peter
>>>>>>>> 
>>>>>>>> 
>>>>>>>> Le dim. 1 oct. 2023, 10:51, Matthias Ferdinand <mf+ml.ceph@xxxxxxxxx> a
>>>>>>>> écrit :
>>>>>>>> 
>>>>>>>>> Hi,
>>>>>>>>> 
>>>>>>>>> I am still evaluating ceph rgw for specific use cases.
>>>>>>>>> 
>>>>>>>>> My question is about keeping the realm of bucket names under control of
>>>>>>>>> rgw admins.
>>>>>>>>> 
>>>>>>>>> Normal S3 users have the ability to create new buckets as they see fit.
>>>>>>>>> This opens opportunities for creating excessive amounts of buckets, or
>>>>>>>>> for blocking nice bucket names for other uses, or even using
>>>>>>>>> bucketname-typosquatting as an attack vector.
>>>>>>>>> 
>>>>>>>>> In AWS, I can create some IAM users and provide per-bucket access to
>>>>>>>>> them via bucket or IAM user policies. These IAM users can't create new
>>>>>>>>> buckets on their own. Giving out only those IAM credentials to users and
>>>>>>>>> applications, I can ensure no bucket namespace pollution occurs.
>>>>>>>>> 
>>>>>>>>> Ceph rgw does not have IAM users (yet?). What could I use here to not
>>>>>>>>> allow certain S3 users to create buckets on their own?
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> Regards
>>>>>>>>> Matthias
>>>>>>>>> _______________________________________________
>>>>>>>>> ceph-users mailing list -- ceph-users@xxxxxxx
>>>>>>>>> To unsubscribe send an email to ceph-users-leave@xxxxxxx
>>>>>>>>> 
>>>>>>> _______________________________________________
>>>>>>> ceph-users mailing list -- ceph-users@xxxxxxx
>>>>>>> To unsubscribe send an email to ceph-users-leave@xxxxxxx
>>>>>> _______________________________________________
>>>>>> ceph-users mailing list -- ceph-users@xxxxxxx
>>>>>> To unsubscribe send an email to ceph-users-leave@xxxxxxx
>>>>> _______________________________________________
>>>>> ceph-users mailing list -- ceph-users@xxxxxxx
>>>>> To unsubscribe send an email to ceph-users-leave@xxxxxxx
>>>>> 
>>>> _______________________________________________
>>>> ceph-users mailing list -- ceph-users@xxxxxxx
>>>> To unsubscribe send an email to ceph-users-leave@xxxxxxx
>>> _______________________________________________
>>> ceph-users mailing list -- ceph-users@xxxxxxx <mailto:ceph-users@xxxxxxx> <mailto:ceph-users@xxxxxxx>
>>> To unsubscribe send an email to ceph-users-leave@xxxxxxx <mailto:ceph-users-leave@xxxxxxx> <mailto:ceph-users-leave@xxxxxxx>
> _______________________________________________
> ceph-users mailing list -- ceph-users@xxxxxxx <mailto:ceph-users@xxxxxxx>
> To unsubscribe send an email to ceph-users-leave@xxxxxxx <mailto:ceph-users-leave@xxxxxxx>
_______________________________________________
ceph-users mailing list -- ceph-users@xxxxxxx
To unsubscribe send an email to ceph-users-leave@xxxxxxx




[Index of Archives]     [Information on CEPH]     [Linux Filesystem Development]     [Ceph Development]     [Ceph Large]     [Ceph Dev]     [Linux USB Development]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [xfs]


  Powered by Linux