From adffcece53ff0ba5b683aaa62d52f93a5b16def4 Mon Sep 17 00:00:00 2001 From: Popov Aleksey Date: Sat, 16 Nov 2024 12:11:45 +0300 Subject: [PATCH] Add secdist parameters (user, password, secure_connection_cert) to ydb --- ydb/src/ydb/impl/config.cpp | 3 +++ ydb/src/ydb/impl/config.hpp | 3 +++ ydb/src/ydb/impl/driver.cpp | 9 +++++++++ ydb/src/ydb/impl/secdist.cpp | 3 +++ ydb/src/ydb/impl/secdist.hpp | 3 +++ 5 files changed, 21 insertions(+) diff --git a/ydb/src/ydb/impl/config.cpp b/ydb/src/ydb/impl/config.cpp index b10560075769..109bcbb62264 100644 --- a/ydb/src/ydb/impl/config.cpp +++ b/ydb/src/ydb/impl/config.cpp @@ -68,6 +68,9 @@ DriverSettings ParseDriverSettings( result.endpoint = MergeWithSecdist(dbsecdist.endpoint, std::move(config_endpoint), dbconfig, "endpoint"); result.database = MergeWithSecdist(dbsecdist.database, std::move(config_database), dbconfig, "database"); result.oauth_token = dbsecdist.oauth_token; + result.secure_connection_cert = dbsecdist.secure_connection_cert; + result.user = dbsecdist.user; + result.password = dbsecdist.password; if (dbsecdist.iam_jwt_params.has_value()) { result.iam_jwt_params = formats::json::ToString(dbsecdist.iam_jwt_params.value()); } diff --git a/ydb/src/ydb/impl/config.hpp b/ydb/src/ydb/impl/config.hpp index 6e62b66b4363..ff664d305550 100644 --- a/ydb/src/ydb/impl/config.hpp +++ b/ydb/src/ydb/impl/config.hpp @@ -46,6 +46,9 @@ struct DriverSettings { bool prefer_local_dc{false}; std::optional oauth_token; std::optional iam_jwt_params; + std::optional secure_connection_cert; + std::optional user; + std::optional password; std::shared_ptr credentials_provider_factory; }; diff --git a/ydb/src/ydb/impl/driver.cpp b/ydb/src/ydb/impl/driver.cpp index 6cac94bf0caf..4aadf9c32b4d 100644 --- a/ydb/src/ydb/impl/driver.cpp +++ b/ydb/src/ydb/impl/driver.cpp @@ -3,6 +3,7 @@ #include #include #include +#include #include #include @@ -27,6 +28,10 @@ Driver::Driver(std::string dbname, impl::DriverSettings settings) : NYdb::EBalancingPolicy::UseAllNodes ); + if (settings.secure_connection_cert.has_value()) { + driver_config.UseSecureConnection(settings.secure_connection_cert->data()); + } + if (settings.credentials_provider_factory) { driver_config.SetCredentialsProviderFactory(settings.credentials_provider_factory); } else if (settings.oauth_token.has_value()) { @@ -35,6 +40,10 @@ Driver::Driver(std::string dbname, impl::DriverSettings settings) driver_config.UseSecureConnection().SetCredentialsProviderFactory( NYdb::CreateIamJwtParamsCredentialsProviderFactory({.JwtContent = settings.iam_jwt_params->data()}) ); + } else if (settings.user.has_value() && settings.password.has_value()) { + driver_config.SetCredentialsProviderFactory(NYdb::CreateLoginCredentialsProviderFactory( + {.User = settings.user->data(), .Password = settings.password->data()} + )); } driver_ = std::make_unique(driver_config); diff --git a/ydb/src/ydb/impl/secdist.cpp b/ydb/src/ydb/impl/secdist.cpp index 465385bf4506..852c6bc2ca9a 100644 --- a/ydb/src/ydb/impl/secdist.cpp +++ b/ydb/src/ydb/impl/secdist.cpp @@ -16,6 +16,9 @@ DatabaseSettings GetDatabaseSettings(const formats::json::Value& doc) { settings.endpoint = doc["endpoint"].As>(); settings.database = doc["database"].As>(); settings.sync_start = doc["sync_start"].As>(); + settings.secure_connection_cert = doc["secure_connection_cert"].As>(); + settings.user = doc["user"].As>(); + settings.password = doc["password"].As>(); if (doc.HasMember("token")) { settings.oauth_token = doc["token"].As(); } else if (doc.HasMember("iam_jwt_params")) { diff --git a/ydb/src/ydb/impl/secdist.hpp b/ydb/src/ydb/impl/secdist.hpp index e6f2d46fd928..b6746e587dd4 100644 --- a/ydb/src/ydb/impl/secdist.hpp +++ b/ydb/src/ydb/impl/secdist.hpp @@ -13,6 +13,9 @@ struct DatabaseSettings final { std::optional endpoint; std::optional database; std::optional oauth_token; + std::optional secure_connection_cert; + std::optional user; + std::optional password; std::optional iam_jwt_params; std::optional sync_start; };