Bug #17159
closedsystem user can't copy objects using put method and rgwx-source-zone parameter
0%
Description
we want to copy an object by sending an uri like /bucket/obj?rgwx-source-zone=xxx&rgwx-client-id=xxx&rgwx-op-id=xxx. but the radosgw log report an error as it can't get the values of parameter client-id an op-id. Because class RGWHTTPArgs puts the parameter starting with 'rgwx-' into a sys_val map, while class RGWCopyObj_ObjStore_S3 use RGWHTTPArgs::get() to get the values of parameter client-id an op-id. The values can only be get by RGWHTTPArgs::sys_get() function.
Updated by Nathan Cutler over 7 years ago
- Project changed from Ceph to rgw
- Category deleted (
22)
Updated by Yehuda Sadeh over 7 years ago
Not sure I see the issue. At RGWCopyObj_ObjStore_S3::get_params() we do the following:
client_id = s->info.args.get(RGW_SYS_PARAM_PREFIX "client-id"); op_id = s->info.args.get(RGW_SYS_PARAM_PREFIX "op-id");
also, this code has been used by the sync agent, so it should have been working somehow.
Updated by Matt Benjamin over 7 years ago
- Assignee set to Casey Bodley
Can you folks add logs and reproducing URL (optionally sanitized)?
Updated by Casey Bodley about 7 years ago
- Status changed from New to Can't reproduce
when we detect a system user during auth (either RGW_Auth_S3::authorize_v2() or RGW_Auth_S3::authorize_v4()), we call s->info.args.set_system(). this copies all of the entries from sys_val_map into val_map, making them available to RGWHTTPArgs::get()