Skip to content

Commit 0d6b25d

Browse files
authored
Make working builtin security params and move them into security config (#13987)
1 parent 65b41d0 commit 0d6b25d

File tree

6 files changed

+111
-13
lines changed

6 files changed

+111
-13
lines changed

ydb/core/protos/config.proto

+3
Original file line numberDiff line numberDiff line change
@@ -259,6 +259,9 @@ message TDomainsConfig {
259259
repeated TGroup DefaultGroups = 16;
260260
repeated string DefaultAccess = 17;
261261
optional string AllUsersGroup = 18;
262+
optional bool DisableBuiltinSecurity = 19;
263+
optional bool DisableBuiltinGroups = 20;
264+
optional bool DisableBuiltinAccess = 21;
262265
}
263266

264267
repeated TDomain Domain = 1;

ydb/library/yaml_config/protos/config.proto

-1
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,6 @@ message TEphemeralInputFields {
157157
optional TTls Tls = 8;
158158
optional FailDomainKind FailDomainType = 9 [default = Rack];
159159
optional TDomainsConfig.TSecurityConfig SecurityConfig = 10;
160-
optional bool DisableBuiltinSecurity = 11;
161160

162161
enum FailDomainKind {
163162
Rack = 0;

ydb/library/yaml_config/ut_transform/canondata/test_transform.TestYamlConfigTransformations.test_simplified_dump_/nvme.yaml.result.json

+82-1
Original file line numberDiff line numberDiff line change
@@ -254,7 +254,88 @@
254254
{
255255
"Hive":72057594037968897
256256
}
257-
]
257+
],
258+
"SecurityConfig":
259+
{
260+
"DefaultUsers":
261+
[
262+
{
263+
"Name":"root",
264+
"Password":""
265+
}
266+
],
267+
"DefaultGroups":
268+
[
269+
{
270+
"Name":"ADMINS",
271+
"Members":
272+
[
273+
"root"
274+
]
275+
},
276+
{
277+
"Name":"DATABASE-ADMINS",
278+
"Members":
279+
[
280+
"ADMINS"
281+
]
282+
},
283+
{
284+
"Name":"ACCESS-ADMINS",
285+
"Members":
286+
[
287+
"DATABASE-ADMINS"
288+
]
289+
},
290+
{
291+
"Name":"DDL-ADMINS",
292+
"Members":
293+
[
294+
"DATABASE-ADMINS"
295+
]
296+
},
297+
{
298+
"Name":"DATA-WRITERS",
299+
"Members":
300+
[
301+
"ADMINS"
302+
]
303+
},
304+
{
305+
"Name":"DATA-READERS",
306+
"Members":
307+
[
308+
"DATA-WRITERS"
309+
]
310+
},
311+
{
312+
"Name":"METADATA-READERS",
313+
"Members":
314+
[
315+
"DATA-READERS",
316+
"DDL-ADMINS"
317+
]
318+
},
319+
{
320+
"Name":"USERS",
321+
"Members":
322+
[
323+
"METADATA-READERS",
324+
"DATA-READERS",
325+
"DATA-WRITERS",
326+
"DDL-ADMINS",
327+
"ACCESS-ADMINS",
328+
"DATABASE-ADMINS",
329+
"ADMINS",
330+
"root"
331+
]
332+
}
333+
],
334+
"AllUsersGroup":"USERS",
335+
"DisableBuiltinSecurity":false,
336+
"DisableBuiltinGroups":false,
337+
"DisableBuiltinAccess":true
338+
}
258339
},
259340
"BlobStorageConfig":
260341
{

ydb/library/yaml_config/ut_transform/simplified_configs/nvme.yaml

+4-1
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,10 @@ channel_profile_config:
5454
- {erasure_species: block-4-2, pdisk_category: '2', vdisk_category: Default}
5555
- {erasure_species: block-4-2, pdisk_category: '2', vdisk_category: Default}
5656
profile_id: 0
57-
disable_builtin_security: true
57+
security_config:
58+
disable_builtin_security: false
59+
disable_builtin_groups: false
60+
disable_builtin_access: true
5861
domains_config:
5962
domain:
6063
- domain_id: 1

ydb/library/yaml_config/yaml_config_parser.cpp

+20-8
Original file line numberDiff line numberDiff line change
@@ -210,8 +210,12 @@ namespace NKikimr::NYaml {
210210
ctx.DisableBuiltinSecurity = GetBoolByPathOrNone(json, DISABLE_BUILTIN_SECURITY_PATH).value_or(false);
211211
}
212212
EraseByPath(json, DISABLE_BUILTIN_SECURITY_PATH);
213-
ctx.ExplicitEmptyDefaultGroups = CheckExplicitEmptyArrayByPathOrNone(json, DEFAULT_GROUPS_PATH).value_or(false);
214-
ctx.ExplicitEmptyDefaultAccess = CheckExplicitEmptyArrayByPathOrNone(json, DEFAULT_ACCESS_PATH).value_or(false);
213+
if (!ctx.DisableBuiltinGroups) {
214+
ctx.DisableBuiltinGroups = CheckExplicitEmptyArrayByPathOrNone(json, DEFAULT_GROUPS_PATH).value_or(false);
215+
}
216+
if (!ctx.DisableBuiltinAccess) {
217+
ctx.DisableBuiltinAccess = CheckExplicitEmptyArrayByPathOrNone(json, DEFAULT_ACCESS_PATH).value_or(false);
218+
}
215219
}
216220

217221
ui32 GetDefaultTabletCount(TString& type) {
@@ -427,6 +431,8 @@ namespace NKikimr::NYaml {
427431
auto* domainsConfig = config.MutableDomainsConfig();
428432

429433
bool disabledDefaultSecurity = ctx.DisableBuiltinSecurity ? *ctx.DisableBuiltinSecurity : false;
434+
bool disableBuiltinGroups = ctx.DisableBuiltinGroups ? *ctx.DisableBuiltinGroups : false;
435+
bool disableBuiltinAccess = ctx.DisableBuiltinAccess ? *ctx.DisableBuiltinAccess : false;
430436

431437
NKikimrConfig::TDomainsConfig::TSecurityConfig* securityConfig = nullptr;
432438
if (domainsConfig->HasSecurityConfig()) {
@@ -445,7 +451,7 @@ namespace NKikimr::NYaml {
445451
user->SetPassword("");
446452
}
447453

448-
if (!ctx.ExplicitEmptyDefaultGroups && !(securityConfig && securityConfig->DefaultGroupsSize()) && !disabledDefaultSecurity) {
454+
if (!disableBuiltinGroups && !(securityConfig && securityConfig->DefaultGroupsSize()) && !disabledDefaultSecurity) {
449455
securityConfig = domainsConfig->MutableSecurityConfig();
450456
{
451457
auto* defaultGroupAdmins = securityConfig->AddDefaultGroups();
@@ -509,7 +515,7 @@ namespace NKikimr::NYaml {
509515
securityConfig->SetAllUsersGroup("USERS");
510516
}
511517

512-
if (!ctx.ExplicitEmptyDefaultAccess && !(securityConfig && securityConfig->DefaultAccessSize()) && !disabledDefaultSecurity) {
518+
if (!disableBuiltinAccess && !(securityConfig && securityConfig->DefaultAccessSize()) && !disabledDefaultSecurity) {
513519
securityConfig = domainsConfig->MutableSecurityConfig();
514520
securityConfig->AddDefaultAccess("+(ConnDB):USERS"); // ConnectDatabase
515521
securityConfig->AddDefaultAccess("+(DS|RA):METADATA-READERS"); // DescribeSchema | ReadAttributes
@@ -1395,10 +1401,16 @@ namespace NKikimr::NYaml {
13951401
void MoveFields(TTransformContext& ctx, NKikimrConfig::TAppConfig& config, NKikimrConfig::TEphemeralInputFields& ephemeralConfig) {
13961402
if (ephemeralConfig.HasSecurityConfig()) {
13971403
config.MutableDomainsConfig()->MutableSecurityConfig()->CopyFrom(ephemeralConfig.GetSecurityConfig());
1398-
}
1399-
1400-
if (ephemeralConfig.HasDisableBuiltinSecurity()) {
1401-
ctx.DisableBuiltinSecurity = ephemeralConfig.GetDisableBuiltinSecurity();
1404+
auto securityConfig = ephemeralConfig.GetSecurityConfig();
1405+
if (securityConfig.HasDisableBuiltinSecurity()) {
1406+
ctx.DisableBuiltinSecurity = securityConfig.GetDisableBuiltinSecurity();
1407+
}
1408+
if (securityConfig.HasDisableBuiltinGroups()) {
1409+
ctx.DisableBuiltinGroups = securityConfig.GetDisableBuiltinGroups();
1410+
}
1411+
if (securityConfig.HasDisableBuiltinAccess()) {
1412+
ctx.DisableBuiltinAccess = securityConfig.GetDisableBuiltinAccess();
1413+
}
14021414
}
14031415
}
14041416

ydb/library/yaml_config/yaml_config_parser.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,8 @@ namespace NKikimr::NYaml {
4444

4545
struct TTransformContext {
4646
std::optional<bool> DisableBuiltinSecurity;
47-
bool ExplicitEmptyDefaultGroups;
48-
bool ExplicitEmptyDefaultAccess;
47+
std::optional<bool> DisableBuiltinGroups;
48+
std::optional<bool> DisableBuiltinAccess;
4949
std::map<TCombinedDiskInfoKey, NKikimrConfig::TCombinedDiskInfo> CombinedDiskInfo;
5050
std::map<TPoolConfigKey, TPoolConfigInfo> PoolConfigInfo;
5151
std::map<ui32, TString> GroupErasureSpecies;

0 commit comments

Comments
 (0)