From: Matt Benjamin Date: Tue, 9 Mar 2021 02:57:57 +0000 (-0500) Subject: rgw: permit logging of list-bucket (and any other no-bucket op) X-Git-Tag: v17.1.0~1001^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F39933%2Fhead;p=ceph.git 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 --- 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(),