aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexey Efimov <xeno@prnwatch.com>2022-02-28 21:20:54 +0300
committerAlexey Efimov <xeno@prnwatch.com>2022-02-28 21:20:54 +0300
commite479ed951562bbc29537a54830768f0b0784c504 (patch)
treeea6c0c165ede8affd5a17d51e086c45cb07170b2
parent93f07d505bc32b305ac64f7248ec3fd24e4b849f (diff)
downloadydb-e479ed951562bbc29537a54830768f0b0784c504.tar.gz
filter out queries with user and password sequencies KIKIMR-14245
ref:b83ca954214890c778c2c7ef037c8f224238b4d5
-rw-r--r--ydb/core/kqp/kqp_worker_actor.cpp24
1 files changed, 21 insertions, 3 deletions
diff --git a/ydb/core/kqp/kqp_worker_actor.cpp b/ydb/core/kqp/kqp_worker_actor.cpp
index cccb8a51e8..1b27348e64 100644
--- a/ydb/core/kqp/kqp_worker_actor.cpp
+++ b/ydb/core/kqp/kqp_worker_actor.cpp
@@ -1807,9 +1807,12 @@ private:
case NKikimrKqp::QUERY_TYPE_SQL_SCAN:
case NKikimrKqp::QUERY_TYPE_SQL_SCRIPT:
case NKikimrKqp::QUERY_TYPE_SQL_SCRIPT_STREAMING: {
- auto userSID = NACLib::TUserToken(QueryState->UserToken).GetUserSID();
- NSysView::CollectQueryStats(ctx, stats, queryDuration, ExtractQueryText(),
- userSID, QueryState->ParametersSize, database, type, requestUnits);
+ TString text = ExtractQueryText();
+ if (IsQueryAllowedToLog(text)) {
+ auto userSID = NACLib::TUserToken(QueryState->UserToken).GetUserSID();
+ NSysView::CollectQueryStats(ctx, stats, queryDuration, text,
+ userSID, QueryState->ParametersSize, database, type, requestUnits);
+ }
break;
}
default:
@@ -1817,6 +1820,21 @@ private:
}
}
+ bool IsQueryAllowedToLog(const TString& text) {
+ static const TString user = "user";
+ static const TString password = "password";
+ auto itUser = std::search(text.begin(), text.end(), user.begin(), user.end(), [](const char a, const char b) -> bool {
+ return std::tolower(a) == b;
+ });
+ if (itUser == text.end()) {
+ return true;
+ }
+ auto itPassword = std::search(itUser, text.end(), password.begin(), password.end(), [](const char a, const char b) -> bool {
+ return std::tolower(a) == b;
+ });
+ return itPassword == text.end();
+ }
+
TString ExtractQueryText() const {
auto compileResult = QueryState->QueryCompileResult;
if (compileResult) {