MCPcopy Create free account
hub / github.com/ClickHouse/ClickHouse / setupUsers

Method setupUsers

programs/local/LocalServer.cpp:988–1075  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

986
987
988void LocalServer::setupUsers()
989{
990 static const char * minimal_default_user_xml =
991 "<clickhouse>"
992 " <profiles>"
993 " <default></default>"
994 " </profiles>"
995 " <users>"
996 " <default>"
997 " <password></password>"
998 " <networks>"
999 " <ip>::/0</ip>"
1000 " </networks>"
1001 " <profile>default</profile>"
1002 " <quota>default</quota>"
1003 " <access_management>1</access_management>"
1004 " <named_collection_control>1</named_collection_control>"
1005 " </default>"
1006 " </users>"
1007 " <quotas>"
1008 " <default></default>"
1009 " </quotas>"
1010 "</clickhouse>";
1011
1012 ConfigurationPtr users_config;
1013 auto & access_control = global_context->getAccessControl();
1014 access_control.setNoPasswordAllowed(getClientConfiguration().getBool("allow_no_password", true));
1015 access_control.setPlaintextPasswordAllowed(getClientConfiguration().getBool("allow_plaintext_password", true));
1016
1017 /// Enable all access control improvements by default; can be overridden via config.
1018 auto & config = getClientConfiguration();
1019 access_control.setEnabledUsersWithoutRowPoliciesCanReadRows(config.getBool("access_control_improvements.users_without_row_policies_can_read_rows", true));
1020 access_control.setOnClusterQueriesRequireClusterGrant(config.getBool("access_control_improvements.on_cluster_queries_require_cluster_grant", true));
1021 access_control.setSelectFromSystemDatabaseRequiresGrant(config.getBool("access_control_improvements.select_from_system_db_requires_grant", true));
1022 access_control.setSelectFromInformationSchemaRequiresGrant(config.getBool("access_control_improvements.select_from_information_schema_requires_grant", true));
1023 access_control.setSettingsConstraintsReplacePrevious(config.getBool("access_control_improvements.settings_constraints_replace_previous", true));
1024 access_control.setTableEnginesRequireGrant(config.getBool("access_control_improvements.table_engines_require_grant", true));
1025 access_control.setEnableReadWriteGrants(config.getBool("access_control_improvements.enable_read_write_grants", true));
1026 access_control.setEnableUserNameAccessType(config.getBool("access_control_improvements.enable_user_name_access_type", true));
1027 access_control.setThrowOnInvalidReplicatedAccessEntities(config.getBool("access_control_improvements.throw_on_invalid_replicated_access_entities", true));
1028
1029 /// Apply user-level configuration from a loaded config file (including those
1030 /// auto-discovered via `getLocalConfigPath`, e.g. `~/.clickhouse-local/config.xml`).
1031 if (!loaded_config_path.empty())
1032 {
1033 const auto config_dir = fs::path{loaded_config_path}.remove_filename().string();
1034 bool has_user_directories = getClientConfiguration().has("user_directories");
1035 String users_config_path = getClientConfiguration().getString("users_config", "");
1036
1037 if (users_config_path.empty() && has_user_directories)
1038 users_config_path = getClientConfiguration().getString("user_directories.users_xml.path");
1039
1040 /// Anchor relative paths to the config's directory, not the cwd.
1041 /// Otherwise a missing `users.xml` silently falls back to `./users.xml`,
1042 /// which could grant `access_management` to the default user.
1043 if (!users_config_path.empty() && fs::path(users_config_path).is_relative())
1044 users_config_path = fs::path(config_dir) / users_config_path;
1045

Callers

nothing calls this directly

Tested by

no test coverage detected