#pragma once #include "node.h" #include #include #include #include namespace NSQLTranslationV1 { struct TSecretSettingsNames { const TString Name; const TString Path; explicit TSecretSettingsNames(const TString& prefix) : Name(prefix + "_name") , Path(prefix + "_path") { } }; static const TVector EDS_SECRETS_SETTINGS = { TSecretSettingsNames("token_secret"), TSecretSettingsNames("password_secret"), TSecretSettingsNames("service_account_secret"), TSecretSettingsNames("aws_access_key_id_secret"), TSecretSettingsNames("aws_secret_access_key_secret"), TSecretSettingsNames("initial_token_secret"), }; static const TVector REPLICATION_AND_TRANSFER_SECRETS_SETTINGS = { TSecretSettingsNames("token_secret"), TSecretSettingsNames("password_secret"), TSecretSettingsNames("initial_token_secret"), }; /** * Verifies that paired secrets settings, passed in @nameAndPathSettingsNames param, are mutually exclusive * Adds @tablePathPrefix value to secret path if path is not absolute */ bool VerifyAndAdjustSecretSettings( std::map& out, TContext& ctx, const TVector& secretSettings, TStringBuf tablePathPrefix); /** * Adds @tablePathPrefix value to secret path if path is not absolute */ void AdjustSecretPaths( std::map& out, const TVector& secretSettings, TStringBuf tablePathPrefix); // TODO(YQL-20095): Explore real problem to fix this. // NOLINTNEXTLINE(bugprone-exception-escape) class TExternalDataSourceAuthFields final { public: TExternalDataSourceAuthFields() = default; TExternalDataSourceAuthFields(const THashSet& mandatoryFields, const TVector& secretsFields); [[nodiscard]] bool CheckMandatoryFields(TStringBuf authField, const std::map& result) const; /* * Checks that names and paths are not mixed */ bool CheckSecretsFields(const std::map& result, TString& errMessage) const; [[nodiscard]] bool CheckAllPossibleFields(TStringBuf authField, const std::map& result) const; private: const THashSet MandatoryFields_; const TVector SecretsFields_; THashSet AllPossibleFields_; }; bool ValidateExternalDataSourceAuthMethod(const std::map& result, TContext& ctx); } // namespace NSQLTranslationV1