]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
messages/MMonCommand, MMonCommandAck: don't log values for "config set" and "config...
authorNeha Ojha <nojha@redhat.com>
Thu, 3 Dec 2020 19:18:04 +0000 (19:18 +0000)
committerNeha Ojha <nojha@redhat.com>
Tue, 15 Dec 2020 16:02:06 +0000 (16:02 +0000)
This acts like a big hammer to avoid adding sensitive information, like passwords
into mon/mgr/cluster logs when using "config set" and "config-key set" to set keys
whose values should be secure.

Fixes: https://tracker.ceph.com/issues/37503
Signed-off-by: Neha Ojha <nojha@redhat.com>
src/messages/MMonCommand.h
src/messages/MMonCommandAck.h

index fbba9629fb62eb125f163bfa746403fbe02703c2..b2540ebffd0878f9a31c6bf4b2a8af892b0c7c34 100644 (file)
@@ -15,6 +15,7 @@
 #ifndef CEPH_MMONCOMMAND_H
 #define CEPH_MMONCOMMAND_H
 
+#include "common/cmdparse.h"
 #include "messages/PaxosServiceMessage.h"
 
 #include <vector>
@@ -41,10 +42,26 @@ private:
 public:
   std::string_view get_type_name() const override { return "mon_command"; }
   void print(std::ostream& o) const override {
+    cmdmap_t cmdmap;
+    std::ostringstream ss;
+    string prefix;
+    ceph::common::cmdmap_from_json(cmd, &cmdmap, ss);
+    ceph::common::cmd_getval(cmdmap, "prefix", prefix);
+    // Some config values contain sensitive data, so don't log them
     o << "mon_command(";
-    for (unsigned i=0; i<cmd.size(); i++) {
-      if (i) o << ' ';
-      o << cmd[i];
+    if (prefix == "config set") {
+      string name;
+      ceph::common::cmd_getval(cmdmap, "name", name);
+      o << "[{prefix=" << prefix << ", name=" << name << "}]";
+    } else if (prefix == "config-key set") {
+      string key;
+      ceph::common::cmd_getval(cmdmap, "key", key);
+      o << "[{prefix=" << prefix << ", key=" << key << "}]";
+    } else {
+      for (unsigned i=0; i<cmd.size(); i++) {
+        if (i) o << ' ';
+        o << cmd[i];
+      }
     }
     o << " v " << version << ")";
   }
index 96cf61fdaf8d8e52f4ce09e6513fa762e12da9e2..24117556a93592ea15b9a4d808e4935a0f88ad67 100644 (file)
@@ -15,6 +15,7 @@
 #ifndef CEPH_MMONCOMMANDACK_H
 #define CEPH_MMONCOMMANDACK_H
 
+#include "common/cmdparse.h"
 #include "messages/PaxosServiceMessage.h"
 
 class MMonCommandAck final : public PaxosServiceMessage {
@@ -33,7 +34,28 @@ private:
 public:
   std::string_view get_type_name() const override { return "mon_command"; }
   void print(std::ostream& o) const override {
-    o << "mon_command_ack(" << cmd << "=" << r << " " << rs << " v" << version << ")";
+    cmdmap_t cmdmap;
+    std::ostringstream ss;
+    string prefix;
+    ceph::common::cmdmap_from_json(cmd, &cmdmap, ss);
+    ceph::common::cmd_getval(cmdmap, "prefix", prefix);
+    // Some config values contain sensitive data, so don't log them
+    o << "mon_command_ack(";
+    if (prefix == "config set") {
+      string name;
+      ceph::common::cmd_getval(cmdmap, "name", name);
+      o << "[{prefix=" << prefix
+        << ", name=" << name << "}]"
+        << "=" << r << " " << rs << " v" << version << ")";
+    } else if (prefix == "config-key set") {
+      string key;
+      ceph::common::cmd_getval(cmdmap, "key", key);
+      o << "[{prefix=" << prefix << ", key=" << key << "}]"
+        << "=" << r << " " << rs << " v" << version << ")";
+    } else {
+      o << cmd;
+    }
+    o << "=" << r << " " << rs << " v" << version << ")";
   }
   
   void encode_payload(uint64_t features) override {