]> git.apps.os.sepia.ceph.com Git - ceph.git/log
ceph.git
15 months agorgw: verify_permission logs acl grants
Casey Bodley [Sat, 27 Jan 2024 19:20:53 +0000 (14:20 -0500)]
rgw: verify_permission logs acl grants

Signed-off-by: Casey Bodley <cbodley@redhat.com>
15 months agorgw: adapt verify_user_permission() for account users
Casey Bodley [Sat, 27 Jan 2024 00:02:39 +0000 (19:02 -0500)]
rgw: adapt verify_user_permission() for account users

Signed-off-by: Casey Bodley <cbodley@redhat.com>
15 months agovstart/rgw: add default config for sts
Casey Bodley [Sat, 27 Jan 2024 00:01:24 +0000 (19:01 -0500)]
vstart/rgw: add default config for sts

Signed-off-by: Casey Bodley <cbodley@redhat.com>
15 months agorgw/role: support Description for Create/Get/UpdateRole
Casey Bodley [Fri, 26 Jan 2024 17:20:53 +0000 (12:20 -0500)]
rgw/role: support Description for Create/Get/UpdateRole

Signed-off-by: Casey Bodley <cbodley@redhat.com>
15 months agorgw/iam: add s3:Get/PutBucketOwnershipControls
Casey Bodley [Fri, 26 Jan 2024 03:04:32 +0000 (22:04 -0500)]
rgw/iam: add s3:Get/PutBucketOwnershipControls

Signed-off-by: Casey Bodley <cbodley@redhat.com>
15 months agorgw/sal: remove load_account_role_by_name()
Casey Bodley [Tue, 23 Jan 2024 14:47:58 +0000 (09:47 -0500)]
rgw/sal: remove load_account_role_by_name()

Signed-off-by: Casey Bodley <cbodley@redhat.com>
15 months agorgw/role: role APIs support account users
Casey Bodley [Tue, 23 Jan 2024 14:22:55 +0000 (09:22 -0500)]
rgw/role: role APIs support account users

Signed-off-by: Casey Bodley <cbodley@redhat.com>
15 months agorgw/role: separate dump_iam_role() for iam api
Casey Bodley [Sat, 20 Jan 2024 20:16:00 +0000 (15:16 -0500)]
rgw/role: separate dump_iam_role() for iam api

create a new dump_iam_role() for iam api responses that dumps the subset
of role information presented by the apis

RGWRoleInfo::dump() and decode_json() are used by metadata sync to
transfer role metadata between zones, so must contain all information
about the role

Signed-off-by: Casey Bodley <cbodley@redhat.com>
15 months agorgw/iam: add pagination to ListRoles
Casey Bodley [Mon, 15 Jan 2024 17:35:58 +0000 (12:35 -0500)]
rgw/iam: add pagination to ListRoles

rename sal::Driver::get_roles() to list_roles() and add pagination
support for the RGWListRoles op and 'radosgw-admin role list'

Signed-off-by: Casey Bodley <cbodley@redhat.com>
15 months agorgw/iam: enable Role apis against account users
Casey Bodley [Mon, 15 Jan 2024 16:11:35 +0000 (11:11 -0500)]
rgw/iam: enable Role apis against account users

Signed-off-by: Casey Bodley <cbodley@redhat.com>
15 months agorgw/iam: role apis override init_processing/verify_permission
Casey Bodley [Mon, 15 Jan 2024 01:36:28 +0000 (20:36 -0500)]
rgw/iam: role apis override init_processing/verify_permission

replace get_params() with init_processing() override which runs before
verify_permission(). use this to validate request parameters and load
the existing role if necessary. simplify verify_permission() by
forwarding to RGWRESTOp::verify_permission() which calls check_caps()

simplify inheritence hierarchy by taking cap perm and iam action as
constructor arguments

Signed-off-by: Casey Bodley <cbodley@redhat.com>
15 months agorgw/iam: split RGWRestRole member variables
Casey Bodley [Sun, 14 Jan 2024 21:32:19 +0000 (16:32 -0500)]
rgw/iam: split RGWRestRole member variables

move member variables into the subclasses they're needed for

Signed-off-by: Casey Bodley <cbodley@redhat.com>
15 months agorgw/iam: RGWUntagRole uses lower/upper bounds for iteration
Casey Bodley [Sun, 14 Jan 2024 21:16:50 +0000 (16:16 -0500)]
rgw/iam: RGWUntagRole uses lower/upper bounds for iteration

Signed-off-by: Casey Bodley <cbodley@redhat.com>
15 months agorgw/iam: RGWRestRole::parse_tags() as free function
Casey Bodley [Sun, 14 Jan 2024 21:00:20 +0000 (16:00 -0500)]
rgw/iam: RGWRestRole::parse_tags() as free function

Signed-off-by: Casey Bodley <cbodley@redhat.com>
15 months agorgw/iam: AccessKey apis call forward_iam_request_to_master()
Casey Bodley [Sun, 14 Jan 2024 19:06:26 +0000 (14:06 -0500)]
rgw/iam: AccessKey apis call forward_iam_request_to_master()

Signed-off-by: Casey Bodley <cbodley@redhat.com>
15 months agorgw/iam: User apis call forward_iam_request_to_master()
Casey Bodley [Sun, 14 Jan 2024 18:52:58 +0000 (13:52 -0500)]
rgw/iam: User apis call forward_iam_request_to_master()

Signed-off-by: Casey Bodley <cbodley@redhat.com>
15 months agorgw: move forward_iam_request_to_master() to rgw_rest_iam.*
Casey Bodley [Sun, 14 Jan 2024 18:03:49 +0000 (13:03 -0500)]
rgw: move forward_iam_request_to_master() to rgw_rest_iam.*

Signed-off-by: Casey Bodley <cbodley@redhat.com>
15 months agorgw/rest: enable iam UserPolicy apis against account users
Casey Bodley [Thu, 11 Jan 2024 23:45:55 +0000 (18:45 -0500)]
rgw/rest: enable iam UserPolicy apis against account users

when the authenticated user belongs to an account:
* operate only on that account's users
* match UserName to user's display_name instead of user_id

Signed-off-by: Casey Bodley <cbodley@redhat.com>
15 months agorgw/rest: simplify RGWRestUserPolicy hierarchy
Casey Bodley [Thu, 11 Jan 2024 23:41:03 +0000 (18:41 -0500)]
rgw/rest: simplify RGWRestUserPolicy hierarchy

base class constructor takes `uint64_t action` instead of overriding
the virtual `get_op()` on each subclass

constructor takes `uint32_t perm` instead of deriving separate base
classes RGWUserPolicyRead/Write for check_caps() permission

Signed-off-by: Casey Bodley <cbodley@redhat.com>
15 months agorgw/rest: iam user policy api cleanup
Casey Bodley [Thu, 11 Jan 2024 23:06:36 +0000 (18:06 -0500)]
rgw/rest: iam user policy api cleanup

make get_params() virtual and protected. base class always validates
UserName

add common init_processing() function that calls get_params() and loads
the user by UserName. this step happens before verify_permission()

set s->err.message in several error paths

add the xmlns="https://iam.amazonaws.com/doc/2010-05-08/" part to the
responses

return ERR_LIMIT_EXCEEDED instead of ERR_INVALID_REQUEST when
RGWPutUserPolicy exceeds the policy limit

where RGW_ATTR_USER_POLICY is missing, treat it the same way we treat an
empty map of policies. this avoids separate error paths

Signed-off-by: Casey Bodley <cbodley@redhat.com>
15 months agorgw/auth: Identity matches account user principals
Casey Bodley [Tue, 2 Jan 2024 23:28:12 +0000 (18:28 -0500)]
rgw/auth: Identity matches account user principals

when a user belongs to an account, they match Principal ARNs by account
id instead of tenant name, and by user name instead user id

Signed-off-by: Casey Bodley <cbodley@redhat.com>
15 months agorgw/auth: Identity matches paths in user principals
Casey Bodley [Tue, 2 Jan 2024 22:44:02 +0000 (17:44 -0500)]
rgw/auth: Identity matches paths in user principals

when RGWUserInfo::path is present, use it when matching user principals

Signed-off-by: Casey Bodley <cbodley@redhat.com>
15 months agorgw/auth: Identity::is_identity() takes one Principal
Casey Bodley [Tue, 2 Jan 2024 22:11:03 +0000 (17:11 -0500)]
rgw/auth: Identity::is_identity() takes one Principal

take a single Principal instead flat_set<Principal>, and iterate over
calls to is_identity() instead

why?
* it simplifies the logic of each is_identity() function because they
  can use early returns to avoid visiting all of the cases
* Statement::eval_principal() no longer has to allocate a flat_set
  with a single element when the Identity is a role
* rgw::auth::Identity no longer depends on rgw::iam's choice of
  container type

Signed-off-by: Casey Bodley <cbodley@redhat.com>
15 months agorgw/iam: rename rgw::auth::Principal::Tenant to Account
Casey Bodley [Tue, 2 Jan 2024 21:05:58 +0000 (16:05 -0500)]
rgw/iam: rename rgw::auth::Principal::Tenant to Account

just changes the name to match its use in AWS, without changing any
behavior in rgw policy parsing/evaluation

Signed-off-by: Casey Bodley <cbodley@redhat.com>
15 months agorgw/sal: add interfaces for account roles
Casey Bodley [Sun, 31 Dec 2023 04:35:53 +0000 (23:35 -0500)]
rgw/sal: add interfaces for account roles

Signed-off-by: Casey Bodley <cbodley@redhat.com>
15 months agorgw/rados: add rgwrados::roles namespace abstraction for cls_user
Casey Bodley [Sun, 31 Dec 2023 04:32:06 +0000 (23:32 -0500)]
rgw/rados: add rgwrados::roles namespace abstraction for cls_user

Signed-off-by: Casey Bodley <cbodley@redhat.com>
15 months agorgw: init_quota() loads owner quota unconditionally
Casey Bodley [Wed, 20 Dec 2023 21:10:12 +0000 (16:10 -0500)]
rgw: init_quota() loads owner quota unconditionally

now that owners can be accounts, don't default to s->user when s->owner
matches s->bucket_owner

Signed-off-by: Casey Bodley <cbodley@redhat.com>
15 months agoradosgw-admin: quota commands can set account quota
Casey Bodley [Wed, 20 Dec 2023 21:09:09 +0000 (16:09 -0500)]
radosgw-admin: quota commands can set account quota

Signed-off-by: Casey Bodley <cbodley@redhat.com>
15 months agorgw/iam: add IAM AccessKey apis
Casey Bodley [Wed, 20 Dec 2023 20:01:00 +0000 (15:01 -0500)]
rgw/iam: add IAM AccessKey apis

Signed-off-by: Casey Bodley <cbodley@redhat.com>
15 months agorgw/user: add 'create_date' to RGWAccessKey
Casey Bodley [Wed, 20 Dec 2023 16:25:03 +0000 (11:25 -0500)]
rgw/user: add 'create_date' to RGWAccessKey

Signed-off-by: Casey Bodley <cbodley@redhat.com>
15 months agorgw/user: expose functions to generate access/secret keys
Casey Bodley [Wed, 20 Dec 2023 16:03:24 +0000 (11:03 -0500)]
rgw/user: expose functions to generate access/secret keys

Signed-off-by: Casey Bodley <cbodley@redhat.com>
15 months agorgw/iam: add initial IAM User apis
Casey Bodley [Mon, 18 Dec 2023 01:33:06 +0000 (20:33 -0500)]
rgw/iam: add initial IAM User apis

Signed-off-by: Casey Bodley <cbodley@redhat.com>
15 months agorgw/rest: wrap iam/sns/sts Error responses with ErrorResponse
Casey Bodley [Thu, 11 Jan 2024 22:10:06 +0000 (17:10 -0500)]
rgw/rest: wrap iam/sns/sts Error responses with ErrorResponse

all iam/sns/sts requests wrap the s3 <Error> xml response in another
<ErrorResponse xmlns="https://iam.amazonaws.com/doc/2010-05-08/">

without this, boto3 fails to fully parse error responses, leading to
generic Unknown ClientError exceptions of the form:
    botocore.exceptions.ClientError: An error occurred (Unknown) when calling the PutUserPolicy operation: Unknown

with the ErrorResponse part, boto3 throws more specific exceptions that
include the error Code and Message:
    botocore.errorfactory.NoSuchEntityException: An error occurred (NoSuchEntity) when calling the PutUserPolicy operation: No such UserName in the account

Signed-off-by: Casey Bodley <cbodley@redhat.com>
15 months agorgw/rados: user metadata links to account index
Casey Bodley [Mon, 18 Dec 2023 05:00:36 +0000 (00:00 -0500)]
rgw/rados: user metadata links to account index

Signed-off-by: Casey Bodley <cbodley@redhat.com>
15 months agorgw/sal: add interfaces for account users
Casey Bodley [Mon, 18 Dec 2023 02:20:02 +0000 (21:20 -0500)]
rgw/sal: add interfaces for account users

Signed-off-by: Casey Bodley <cbodley@redhat.com>
15 months agorgw/rados: add rgwrados::users namespace abstraction for cls_user
Casey Bodley [Mon, 18 Dec 2023 03:49:20 +0000 (22:49 -0500)]
rgw/rados: add rgwrados::users namespace abstraction for cls_user

Signed-off-by: Casey Bodley <cbodley@redhat.com>
15 months agorgw/auth: use switch for is_non_s3_op()
Casey Bodley [Mon, 18 Dec 2023 01:25:17 +0000 (20:25 -0500)]
rgw/auth: use switch for is_non_s3_op()

Signed-off-by: Casey Bodley <cbodley@redhat.com>
15 months agorgw/op: separate IAM ops in enum RGWOpType
Casey Bodley [Sun, 17 Dec 2023 22:47:43 +0000 (17:47 -0500)]
rgw/op: separate IAM ops in enum RGWOpType

Signed-off-by: Casey Bodley <cbodley@redhat.com>
15 months agorgw/iam: use enum for action values
Casey Bodley [Sun, 17 Dec 2023 20:17:15 +0000 (15:17 -0500)]
rgw/iam: use enum for action values

Signed-off-by: Casey Bodley <cbodley@redhat.com>
15 months agorgw/iam: add iam user metadata (path, create_date, tags)
Casey Bodley [Sun, 17 Dec 2023 20:03:53 +0000 (15:03 -0500)]
rgw/iam: add iam user metadata (path, create_date, tags)

Signed-off-by: Casey Bodley <cbodley@redhat.com>
15 months agotest/cls: add ceph_test_cls_user
Casey Bodley [Sun, 19 Nov 2023 16:32:37 +0000 (11:32 -0500)]
test/cls: add ceph_test_cls_user

Signed-off-by: Casey Bodley <cbodley@redhat.com>
15 months agocls/user: add interfaces to index user account resources
Casey Bodley [Sun, 19 Nov 2023 18:07:20 +0000 (13:07 -0500)]
cls/user: add interfaces to index user account resources

Signed-off-by: Casey Bodley <cbodley@redhat.com>
15 months agocmake: move WITH_RADOSGW checks up to test/CMakeLists.txt
Casey Bodley [Sun, 19 Nov 2023 16:18:53 +0000 (11:18 -0500)]
cmake: move WITH_RADOSGW checks up to test/CMakeLists.txt

Signed-off-by: Casey Bodley <cbodley@redhat.com>
15 months agorgw/multisite: RGWBucketMetadataHandler updates linkage on owner change
Casey Bodley [Sun, 17 Dec 2023 18:36:54 +0000 (13:36 -0500)]
rgw/multisite: RGWBucketMetadataHandler updates linkage on owner change

Signed-off-by: Casey Bodley <cbodley@redhat.com>
15 months agorgw: update bucket ownership when adding user to account
Casey Bodley [Sun, 17 Dec 2023 17:11:15 +0000 (12:11 -0500)]
rgw: update bucket ownership when adding user to account

Signed-off-by: Casey Bodley <cbodley@redhat.com>
15 months agorgw/rados: Bucket::chown() updates owner on bucket instance
Casey Bodley [Sun, 17 Dec 2023 17:11:06 +0000 (12:11 -0500)]
rgw/rados: Bucket::chown() updates owner on bucket instance

Signed-off-by: Casey Bodley <cbodley@redhat.com>
15 months agorgw: add RGWIdentityType::TYPE_ROOT for account root user
Casey Bodley [Sun, 17 Dec 2023 16:11:13 +0000 (11:11 -0500)]
rgw: add RGWIdentityType::TYPE_ROOT for account root user

Signed-off-by: Casey Bodley <cbodley@redhat.com>
15 months agoqa/rgw: create accounts for random s3test users
Casey Bodley [Sun, 17 Dec 2023 01:52:14 +0000 (20:52 -0500)]
qa/rgw: create accounts for random s3test users

Signed-off-by: Casey Bodley <cbodley@redhat.com>
15 months agorgw/acl: create_policy_from_headers() can yield
Casey Bodley [Sat, 16 Dec 2023 23:34:34 +0000 (18:34 -0500)]
rgw/acl: create_policy_from_headers() can yield

Signed-off-by: Casey Bodley <cbodley@redhat.com>
15 months agorgw/acl: s3 CanonicalUser grants support account ids
Casey Bodley [Sat, 16 Dec 2023 23:33:14 +0000 (18:33 -0500)]
rgw/acl: s3 CanonicalUser grants support account ids

Signed-off-by: Casey Bodley <cbodley@redhat.com>
15 months agorgw/sal: add load_aclowner_by_email()
Casey Bodley [Sat, 16 Dec 2023 17:57:01 +0000 (12:57 -0500)]
rgw/sal: add load_aclowner_by_email()

Signed-off-by: Casey Bodley <cbodley@redhat.com>
15 months agorgw/sal: move list_buckets() to Driver
Casey Bodley [Sat, 16 Dec 2023 15:47:44 +0000 (10:47 -0500)]
rgw/sal: move list_buckets() to Driver

move User::list_buckets() to Driver and take rgw_owner to serve bucket
listings for account owners

also unifies the user/account stats interfaces around rgw_owner in
Driver

Signed-off-by: Casey Bodley <cbodley@redhat.com>
15 months agorgw: use rgw_owner in RGWBucketInfo
Casey Bodley [Fri, 10 Nov 2023 17:31:11 +0000 (12:31 -0500)]
rgw: use rgw_owner in RGWBucketInfo

Signed-off-by: Casey Bodley <cbodley@redhat.com>
15 months agorgw/acl: use rgw_owner for ACLOwner
Casey Bodley [Thu, 7 Dec 2023 19:22:01 +0000 (14:22 -0500)]
rgw/acl: use rgw_owner for ACLOwner

Signed-off-by: Casey Bodley <cbodley@redhat.com>
15 months agorgw/pubsub: use rgw_owner for topic ownership
Casey Bodley [Tue, 12 Dec 2023 21:36:04 +0000 (16:36 -0500)]
rgw/pubsub: use rgw_owner for topic ownership

allow topics to be owned by accounts instead of users. radosgw-admin
topic list can now filter by --account-id

Signed-off-by: Casey Bodley <cbodley@redhat.com>
15 months agorgw: use rgw_owner in RGWBucketEntryPoint
Casey Bodley [Fri, 1 Dec 2023 21:13:02 +0000 (16:13 -0500)]
rgw: use rgw_owner in RGWBucketEntryPoint

Signed-off-by: Casey Bodley <cbodley@redhat.com>
15 months agorgw/rados: add rgwrados::buckets namespace abstraction for cls_user
Casey Bodley [Fri, 1 Dec 2023 03:06:27 +0000 (22:06 -0500)]
rgw/rados: add rgwrados::buckets namespace abstraction for cls_user

move cls_user stuff out of RGWSI_User_RADOS into namespace
rgwrados::buckets that doesn't depend on rgw_user, so it can also be
used for account bucket owners

Signed-off-by: Casey Bodley <cbodley@redhat.com>
15 months agorgw/rados: add account metadata handler
Casey Bodley [Fri, 1 Dec 2023 04:44:06 +0000 (23:44 -0500)]
rgw/rados: add account metadata handler

Signed-off-by: Casey Bodley <cbodley@redhat.com>
15 months agorgw/rados: implement account metadata operations
Casey Bodley [Mon, 27 Nov 2023 23:12:22 +0000 (18:12 -0500)]
rgw/rados: implement account metadata operations

Signed-off-by: Casey Bodley <cbodley@redhat.com>
15 months agorgw/rados: generalize RGWUID for accounts
Casey Bodley [Thu, 30 Nov 2023 21:55:11 +0000 (16:55 -0500)]
rgw/rados: generalize RGWUID for accounts

Signed-off-by: Casey Bodley <cbodley@redhat.com>
15 months agorgw/rados: add .rgw.meta:accounts pool
Casey Bodley [Mon, 27 Nov 2023 18:42:36 +0000 (13:42 -0500)]
rgw/rados: add .rgw.meta:accounts pool

Signed-off-by: Casey Bodley <cbodley@redhat.com>
15 months agorgw/quota: generalize quota to rgw_owners
Casey Bodley [Sun, 26 Nov 2023 19:47:50 +0000 (14:47 -0500)]
rgw/quota: generalize quota to rgw_owners

use rgw_owner instead of rgw_user as a key in the quota cache stats.
only fetch_stats_from_storage() and init_refresh() need to differentiate
between user and account ids

Signed-off-by: Casey Bodley <cbodley@redhat.com>
15 months agorgw/auth: Identity::is_owner/admin_of(rgw_owner)
Casey Bodley [Fri, 3 Nov 2023 19:56:58 +0000 (15:56 -0400)]
rgw/auth: Identity::is_owner/admin_of(rgw_owner)

is_owner_of() and is_admin_of() take rgw_owner instead of rgw_user so
that identities associated with an account share ownership of that
account's resources

LocalApplier is the only Identity type that supports accounts, based on
comparison with RGWUserInfo::account_id

Signed-off-by: Casey Bodley <cbodley@redhat.com>
15 months agorgw/auth: account users also match ACL grants to their account id
Casey Bodley [Sat, 4 Nov 2023 19:09:46 +0000 (15:09 -0400)]
rgw/auth: account users also match ACL grants to their account id

ACL grants can now specify an account id for the CanonicalUser to
grant access to the entire account. this is implemented only for
LocalApplier

Signed-off-by: Casey Bodley <cbodley@redhat.com>
15 months agorgw: add rgw_owner variant with json encoding
Casey Bodley [Fri, 3 Nov 2023 00:28:03 +0000 (20:28 -0400)]
rgw: add rgw_owner variant with json encoding

existing buckets and objects use `struct rgw_user` for the owner. with
the addition of accounts, we need to be able to represent ownership by
the account rather than its users

add a `rgw_owner` variant that preserves the existing json encoding of
`rgw_user` while adding a new representation for account ids

Signed-off-by: Casey Bodley <cbodley@redhat.com>
15 months agorgw: enable 'user modify --account-id'
Casey Bodley [Wed, 1 Nov 2023 22:28:34 +0000 (18:28 -0400)]
rgw: enable 'user modify --account-id'

Signed-off-by: Casey Bodley <cbodley@redhat.com>
15 months agorgw: add /admin/account rest apis
Casey Bodley [Wed, 1 Nov 2023 22:27:42 +0000 (18:27 -0400)]
rgw: add /admin/account rest apis

Signed-off-by: Casey Bodley <cbodley@redhat.com>
15 months agoradosgw-admin: add account admin commands
Casey Bodley [Wed, 1 Nov 2023 22:26:53 +0000 (18:26 -0400)]
radosgw-admin: add account admin commands

Signed-off-by: Casey Bodley <cbodley@redhat.com>
15 months agorgw: add account admin ops
Casey Bodley [Wed, 1 Nov 2023 22:16:45 +0000 (18:16 -0400)]
rgw: add account admin ops

Signed-off-by: Casey Bodley <cbodley@redhat.com>
15 months agorgw/sal: add account interfaces to Driver
Casey Bodley [Wed, 1 Nov 2023 22:15:06 +0000 (18:15 -0400)]
rgw/sal: add account interfaces to Driver

Signed-off-by: Casey Bodley <cbodley@redhat.com>
15 months agorgw: add account_id to RGWUserInfo
Casey Bodley [Wed, 1 Nov 2023 19:48:33 +0000 (15:48 -0400)]
rgw: add account_id to RGWUserInfo

Signed-off-by: Casey Bodley <cbodley@redhat.com>
15 months agorgw: add struct RGWAccountInfo
Casey Bodley [Wed, 1 Nov 2023 19:47:59 +0000 (15:47 -0400)]
rgw: add struct RGWAccountInfo

initial design and prototype by Abhishek

Signed-off-by: Abhishek Lekshmanan <abhishek@suse.com>
Signed-off-by: Casey Bodley <cbodley@redhat.com>
15 months agorgw: define account ids and names
Casey Bodley [Wed, 1 Nov 2023 22:11:58 +0000 (18:11 -0400)]
rgw: define account ids and names

Signed-off-by: Casey Bodley <cbodley@redhat.com>
15 months agocommon: add gen_rand_numeric()
Casey Bodley [Mon, 27 Jun 2022 20:49:11 +0000 (16:49 -0400)]
common: add gen_rand_numeric()

Signed-off-by: Casey Bodley <cbodley@redhat.com>
15 months agorgw/sal: pass in ACLOwner for object writes
Casey Bodley [Thu, 7 Dec 2023 03:38:27 +0000 (22:38 -0500)]
rgw/sal: pass in ACLOwner for object writes

`ACLOwner` contains both the user id and display name. the bucket index
needs both values for:
```
struct rgw_bucket_dir_entry_meta {
  ...
  std::string owner;
  std::string owner_display_name;
```
`RGWRados::Bucket::UpdateIndex::complete()` relied on the parsing of
`RGW_ATTR_ACL` to get those values. but object write operations already
had that information earlier in the call stack, so we might as well pass
them in directly

for other operations like the copy/rewrite/transition of existing objects,
we decode the owner from the source object's `RGW_ATTR_ACL`

the existing `owner` param was confusing, as it represented the bucket
owner for quota stats updates. this get renamed to `bucket_owner` inside
of `RGWRados`, and hidden from the outside. bucket stats are attributed to
`RGWBucketInfo::owner`, not the `ACLOwner`, so we use that instead of
`s->bucket_owner`

Signed-off-by: Casey Bodley <cbodley@redhat.com>
15 months agorgw/acl: use ACLOwners for create_default()
Casey Bodley [Thu, 7 Dec 2023 23:00:37 +0000 (18:00 -0500)]
rgw/acl: use ACLOwners for create_default()

initialize RGWAccessControlPolicy with ACLOwners from the auth identity

Signed-off-by: Casey Bodley <cbodley@redhat.com>
15 months agorgw/auth: initialize s->owner in Strategy::apply()
Casey Bodley [Thu, 7 Dec 2023 21:56:27 +0000 (16:56 -0500)]
rgw/auth: initialize s->owner in Strategy::apply()

for a common location that applies to all rest handlers that implement
authorize()

Signed-off-by: Casey Bodley <cbodley@redhat.com>
15 months agorgw/auth: Identity::get_aclowner() for resources it creates
Casey Bodley [Thu, 7 Dec 2023 21:16:16 +0000 (16:16 -0500)]
rgw/auth: Identity::get_aclowner() for resources it creates

Signed-off-by: Casey Bodley <cbodley@redhat.com>
15 months agorgw/auth: generalize Identity::get_role_tenant() as get_tenant()
Casey Bodley [Thu, 7 Dec 2023 20:21:52 +0000 (15:21 -0500)]
rgw/auth: generalize Identity::get_role_tenant() as get_tenant()

all identities can return a tenant. rgw ops should consult the auth
identity for this instead of a rgw_user or rgw::sal::User

Signed-off-by: Casey Bodley <cbodley@redhat.com>
15 months agorgw/iam: zero-pad milliseconds for role and oidc-provider CreateDate
Casey Bodley [Sun, 11 Feb 2024 17:24:54 +0000 (12:24 -0500)]
rgw/iam: zero-pad milliseconds for role and oidc-provider CreateDate

make sure that tv_usec=41000 gets rendered as '.041Z' instead of '.41Z'

Fixes: https://tracker.ceph.com/issues/64381
Signed-off-by: Casey Bodley <cbodley@redhat.com>
15 months agorgw/cmake: rgw_common links openssl unconditionally
Casey Bodley [Wed, 10 Apr 2024 15:34:21 +0000 (11:34 -0400)]
rgw/cmake: rgw_common links openssl unconditionally

we had been relying on WITH_RADOSGW_AMQP_ENDPOINT for this dependency

Signed-off-by: Casey Bodley <cbodley@redhat.com>
15 months agorgw/d4n: object attrs shouldn't store/update user metadata
Casey Bodley [Wed, 10 Apr 2024 14:46:58 +0000 (10:46 -0400)]
rgw/d4n: object attrs shouldn't store/update user metadata

Signed-off-by: Casey Bodley <cbodley@redhat.com>
15 months agoMerge pull request #56765 from cbodley/wip-65373
Casey Bodley [Wed, 10 Apr 2024 16:35:03 +0000 (17:35 +0100)]
Merge pull request #56765 from cbodley/wip-65373

rgw/multisite: x-rgw-replicated-at uses dump_time_header()

Reviewed-by: Shilpa Jagannath <smanjara@redhat.com>
15 months agoMerge pull request #55661 from shreyanshjain7174/tracker_63791
Casey Bodley [Wed, 10 Apr 2024 14:25:43 +0000 (15:25 +0100)]
Merge pull request #55661 from shreyanshjain7174/tracker_63791

RGW: a subuser with no permission can still list buckets and create buckets

Reviewed-by: Jiffin Tony Thottan <jthottan@redhat.com>
15 months agoMerge pull request #56789 from cbodley/wip-65334
Ali Maredia [Wed, 10 Apr 2024 13:31:19 +0000 (09:31 -0400)]
Merge pull request #56789 from cbodley/wip-65334

qa/rgw: barbican uses branch stable/2023.1

Reviewed-by: Ali Maredia <amaredia@redhat.com>
15 months agoMerge pull request #56728 from pritha-srivastava/wip-rgw-d4n-compilation-errors
J. Eric Ivancich [Wed, 10 Apr 2024 12:52:53 +0000 (08:52 -0400)]
Merge pull request #56728 from pritha-srivastava/wip-rgw-d4n-compilation-errors

rgw/d4n: fix compilation issue when WITH_RADOSGW_D4N=OFF.

Reviewed-by: Daniel Gryniewicz <dang@redhat.com>
Reviewed-by: J. Eric Ivancich <ivancich@redhat.com>
15 months agoMerge pull request #56704 from cbodley/wip-rgw-default-http-error
Casey Bodley [Wed, 10 Apr 2024 12:52:12 +0000 (13:52 +0100)]
Merge pull request #56704 from cbodley/wip-rgw-default-http-error

rgw: don't map to EIO in rgw_http_error_to_errno()

Reviewed-by: Shilpa Jagannath <smanjara@redhat.com>
15 months agoMerge PR #56629 into main
Venky Shankar [Wed, 10 Apr 2024 11:56:16 +0000 (17:26 +0530)]
Merge PR #56629 into main

* refs/pull/56629/head:
mds: log at a lower level when stopping

Reviewed-by: Venky Shankar <vshankar@redhat.com>
Reviewed-by: Leonid Usov <leonid.usov@ibm.com>
Reviewed-by: Rishabh Dave <ridave@redhat.com>
15 months agoMerge pull request #55663 from yuvalif/wip-yuval-63909
Yuval Lifshitz [Wed, 10 Apr 2024 10:29:19 +0000 (13:29 +0300)]
Merge pull request #55663 from yuvalif/wip-yuval-63909

test/rgw/notifications: do not delay http responses to notifications

Reviewed-by: Casey Bodley <cbodley@redhat.com>, Ali Marsawa <ali.masarwa@ibm.com>, Krunal Chheda <kchheda3@bloomberg.net>
15 months agoMerge pull request #56774 from idryomov/wip-doc-releases-reef-latest
Anthony D'Atri [Tue, 9 Apr 2024 21:28:26 +0000 (17:28 -0400)]
Merge pull request #56774 from idryomov/wip-doc-releases-reef-latest

doc: reorder "releases" entries for reef to fix the diagram

15 months agoMerge pull request #56796 from zdover23/wip-doc-2024-04-10-mgr-zabbix
Zac Dover [Tue, 9 Apr 2024 20:18:56 +0000 (06:18 +1000)]
Merge pull request #56796 from zdover23/wip-doc-2024-04-10-mgr-zabbix

doc/mgr: remove Zabbix 1 information

Reviewed-by: Anthony D'Atri <anthony.datri@gmail.com>
15 months agodoc/mgr: remove Zabbix 1 information 56796/head
Zac Dover [Tue, 9 Apr 2024 20:04:28 +0000 (06:04 +1000)]
doc/mgr: remove Zabbix 1 information

Remove information about the installation of the Zabbix module and link
to a discussion of the reasoning behind Ceph's refusal to support
Zabbix.

John Jasen developed a procedure explaining how to install "Zabbix 2".
This commit removes outdated procedures and explains why those
procedures were removed. Immediately following this explanation, the
text includes an explanation of how to install "Zabbix 2".

Signed-off-by: Zac Dover <zac.dover@proton.me>
15 months agotest/rgw/notification: fix threading issue in test 55663/head
Yuval Lifshitz [Tue, 9 Apr 2024 10:00:08 +0000 (10:00 +0000)]
test/rgw/notification: fix threading issue in test

test_ps_s3_persistent_topic_stats may delete boto client threads
before they are done.
also, no need to run the http server twice

Fixes: https://tracker.ceph.com/issues/63909
Signed-off-by: Yuval Lifshitz <ylifshit@ibm.com>
15 months agoqa/rgw: barbican uses branch stable/2023.1 56789/head
Casey Bodley [Tue, 9 Apr 2024 15:14:51 +0000 (11:14 -0400)]
qa/rgw: barbican uses branch stable/2023.1

the stable/xena branch no longer exists. it was moved to
unmaintained/xena. use the same stable/2023.1 branch as keystone

Fixes: https://tracker.ceph.com/issues/65334
Signed-off-by: Casey Bodley <cbodley@redhat.com>
15 months agoMerge pull request #56577 from nbalacha/wip-nbalacha-code-cleanup
Ilya Dryomov [Tue, 9 Apr 2024 14:05:35 +0000 (16:05 +0200)]
Merge pull request #56577 from nbalacha/wip-nbalacha-code-cleanup

rbd-mirror: rename on_stop_journal_replay() and some operator<< arguments

Reviewed-by: Ilya Dryomov <idryomov@gmail.com>
15 months agoMerge pull request #56754 from zdover23/wip-doc-2024-04-08-cephfs-client-auth-1-of-3
Zac Dover [Tue, 9 Apr 2024 11:30:49 +0000 (21:30 +1000)]
Merge pull request #56754 from zdover23/wip-doc-2024-04-08-cephfs-client-auth-1-of-3

doc/cephfs: refine client-auth (1 of 3)

Reviewed-by: Anthony D'Atri <anthony.datri@gmail.com>
15 months agoMerge pull request #56459 from ronen-fr/wip-rf-nohist3
Ronen Friedman [Tue, 9 Apr 2024 09:55:05 +0000 (12:55 +0300)]
Merge pull request #56459 from ronen-fr/wip-rf-nohist3

osd/scrub: implement reservation state as a ReplicaActive flag

Reviewed-by: Samuel Just <sjust@redhat.com>
15 months agoMerge pull request #56641 from rhcs-dashboard/wip-65268-main
Ernesto Puerta [Tue, 9 Apr 2024 09:29:18 +0000 (11:29 +0200)]
Merge pull request #56641 from rhcs-dashboard/wip-65268-main

mgr/dashboard: update NVMeoF gRPC: "listener add" changes

Reviewed-by: gbregman <NOT@FOUND>
15 months agotest/rgw/notification: use polling instead of sleep
Yuval Lifshitz [Thu, 4 Apr 2024 17:14:31 +0000 (17:14 +0000)]
test/rgw/notification: use polling instead of sleep

when checking persistent stats queue length

Signed-off-by: Yuval Lifshitz <ylifshit@ibm.com>
15 months agotest/rgw/notification: cleanup leftover topics
Yuval Lifshitz [Thu, 4 Apr 2024 16:25:33 +0000 (16:25 +0000)]
test/rgw/notification: cleanup leftover topics

this may happen when a test fails, and does not cleanup topics
it created. other tests that verify the number of topics may fail
because of that.
all tests that verify number of topics, should delete all topics at the
start of the test.

Signed-off-by: Yuval Lifshitz <ylifshit@ibm.com>