summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPierlauro Sciarelli <pierlauro.sciarelli@mongodb.com>2020-10-15 08:41:33 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2020-10-15 14:53:22 +0000
commit9e8d7e4367e2228c8b56e6050d07c5964913ebc9 (patch)
tree88324106b2e30d3ed26becde451aa220d5a8f05a
parent74bcbc442aa3aa6bb188a8c7aa2d12f272a0b8ce (diff)
downloadmongo-9e8d7e4367e2228c8b56e6050d07c5964913ebc9.tar.gz
SERVER-51328 with auth
-rw-r--r--src/mongo/db/s/vector_clock_persist_command.cpp14
-rw-r--r--src/mongo/db/vector_clock_mongod.cpp2
2 files changed, 15 insertions, 1 deletions
diff --git a/src/mongo/db/s/vector_clock_persist_command.cpp b/src/mongo/db/s/vector_clock_persist_command.cpp
index 9e491b367fc..9df463430c4 100644
--- a/src/mongo/db/s/vector_clock_persist_command.cpp
+++ b/src/mongo/db/s/vector_clock_persist_command.cpp
@@ -31,6 +31,8 @@
#include "mongo/platform/basic.h"
+#include "mongo/db/auth/action_type.h"
+#include "mongo/db/auth/authorization_session.h"
#include "mongo/db/commands.h"
#include "mongo/db/s/sharding_state.h"
#include "mongo/db/vector_clock_mutable.h"
@@ -45,6 +47,18 @@ class VectorClockPersistCommand : public BasicCommand {
public:
VectorClockPersistCommand() : BasicCommand("_vectorClockPersist") {}
+ Status checkAuthForCommand(Client* client,
+ const std::string& dbname,
+ const BSONObj& cmdObj) const override {
+ uassert(ErrorCodes::Unauthorized,
+ "Unauthorized",
+ AuthorizationSession::get(client)->isAuthorizedForActionsOnResource(
+ ResourcePattern::forDatabaseName(
+ NamespaceString::kVectorClockNamespace.db().toString()),
+ ActionType::internal));
+ return Status::OK();
+ }
+
AllowedOnSecondary secondaryAllowed(ServiceContext*) const override {
return AllowedOnSecondary::kNever;
}
diff --git a/src/mongo/db/vector_clock_mongod.cpp b/src/mongo/db/vector_clock_mongod.cpp
index 7d66266aa42..90c7261bbb7 100644
--- a/src/mongo/db/vector_clock_mongod.cpp
+++ b/src/mongo/db/vector_clock_mongod.cpp
@@ -367,7 +367,7 @@ Future<void> VectorClockMongoD::_doWhileQueueNotEmptyOrError(ServiceContext* ser
auto cmdResponse = uassertStatusOK(selfShard->runCommandWithFixedRetryAttempts(
opCtx,
ReadPreferenceSetting{ReadPreference::PrimaryOnly},
- NamespaceString::kVectorClockNamespace.toString(),
+ NamespaceString::kVectorClockNamespace.db().toString(),
BSON("_vectorClockPersist" << 1),
Seconds{30},
Shard::RetryPolicy::kIdempotent));