From 3863eb89512f1698b8e56f1f1ffc78a6ca8d5826 Mon Sep 17 00:00:00 2001 From: Matt Benjamin Date: Mon, 8 Mar 2021 21:57:57 -0500 Subject: [PATCH] rgw: permit logging of list-bucket (and any other no-bucket op) This limitation is from inception (2011), but just recently reported by a site using ops-log for system audit. Fixes: https://tracker.ceph.com/issues/49313 Signed-off-by: Matt Benjamin --- src/rgw/rgw_log.cc | 45 +++++++++++++++++++++++---------------------- 1 file changed, 23 insertions(+), 22 deletions(-) diff --git a/src/rgw/rgw_log.cc b/src/rgw/rgw_log.cc index 9c9e70b1cf626..6226f27940308 100644 --- a/src/rgw/rgw_log.cc +++ b/src/rgw/rgw_log.cc @@ -367,32 +367,33 @@ int rgw_log_op(rgw::sal::Store* store, RGWREST* const rest, struct req_state *s, return 0; if (s->bucket_name.empty()) { - ldpp_dout(s, 5) << "nothing to log for operation" << dendl; - return -EINVAL; - } - if (s->err.ret == -ERR_NO_SUCH_BUCKET || rgw::sal::Bucket::empty(s->bucket.get())) { - if (!s->cct->_conf->rgw_log_nonexistent_bucket) { - ldpp_dout(s, 5) << "bucket " << s->bucket_name << " doesn't exist, not logging" << dendl; - return 0; - } - bucket_id = ""; + /* this case is needed for, e.g., list_buckets */ } else { - bucket_id = s->bucket->get_bucket_id(); - } - entry.bucket = rgw_make_bucket_entry_name(s->bucket_tenant, s->bucket_name); + if (s->err.ret == -ERR_NO_SUCH_BUCKET || + rgw::sal::Bucket::empty(s->bucket.get())) { + if (!s->cct->_conf->rgw_log_nonexistent_bucket) { + ldout(s->cct, 5) << "bucket " << s->bucket_name << " doesn't exist, not logging" << dendl; + return 0; + } + bucket_id = ""; + } else { + bucket_id = s->bucket->get_bucket_id(); + } + entry.bucket = rgw_make_bucket_entry_name(s->bucket_tenant, s->bucket_name); - if (check_utf8(entry.bucket.c_str(), entry.bucket.size()) != 0) { - ldpp_dout(s, 5) << "not logging op on bucket with non-utf8 name" << dendl; - return 0; - } + if (check_utf8(entry.bucket.c_str(), entry.bucket.size()) != 0) { + ldpp_dout(s, 5) << "not logging op on bucket with non-utf8 name" << dendl; + return 0; + } - if (!rgw::sal::Object::empty(s->object.get())) { - entry.obj = s->object->get_key(); - } else { - entry.obj = rgw_obj_key("-"); - } + if (!rgw::sal::Object::empty(s->object.get())) { + entry.obj = s->object->get_key(); + } else { + entry.obj = rgw_obj_key("-"); + } - entry.obj_size = s->obj_size; + entry.obj_size = s->obj_size; + } /* !bucket empty */ if (s->cct->_conf->rgw_remote_addr_param.length()) set_param_str(s, s->cct->_conf->rgw_remote_addr_param.c_str(), -- 2.39.5