aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormolotkov-and <molotkov-and@ydb.tech>2022-12-01 13:48:44 +0300
committermolotkov-and <molotkov-and@ydb.tech>2022-12-01 13:48:44 +0300
commit396667015e8cef458140fd0f4916883892dd56de (patch)
treed334ac51e06ab8969be3da4569908e2736ab1974
parent760ddc6f72eee80407863ad3dd82fc4dd6c3d18b (diff)
downloadydb-396667015e8cef458140fd0f4916883892dd56de.tar.gz
Include the right CONNECT to USE and create right USE_LEGACY the same as old USE
-rw-r--r--ydb/core/viewer/browse.h3
-rw-r--r--ydb/core/viewer/json_acl.h2
-rw-r--r--ydb/core/ydb_convert/ydb_convert.cpp4
-rw-r--r--ydb/library/aclib/aclib.cpp24
-rw-r--r--ydb/library/aclib/aclib.h6
5 files changed, 33 insertions, 6 deletions
diff --git a/ydb/core/viewer/browse.h b/ydb/core/viewer/browse.h
index 88816955c3b..51a587b248b 100644
--- a/ydb/core/viewer/browse.h
+++ b/ydb/core/viewer/browse.h
@@ -580,6 +580,9 @@ public:
if (ar == NACLib::EAccessRights::GenericFull) {
pbAce.SetAccessRule("Full");
}
+ if (ar == NACLib::EAccessRights::GenericFullLegacy) {
+ pbAce.SetAccessRule("FullLegacy");
+ }
pbAce.SetSubject(ace.GetSID());
auto inht = ace.GetInheritanceType();
if ((inht & NACLib::EInheritanceType::InheritObject) != 0) {
diff --git a/ydb/core/viewer/json_acl.h b/ydb/core/viewer/json_acl.h
index 43034830fc4..c234b04df82 100644
--- a/ydb/core/viewer/json_acl.h
+++ b/ydb/core/viewer/json_acl.h
@@ -125,7 +125,7 @@ public:
{NACLib::EAccessRights::ReadStream, "ReadStream"},
{NACLib::EAccessRights::WriteStream, "WriteStream"},
{NACLib::EAccessRights::ReadTopic, "ReadTopic"},
- {NACLib::EAccessRights::WritTopic, "WriteTopic"}
+ {NACLib::EAccessRights::WriteTopic, "WriteTopic"}
};
auto ar = ace.GetAccessRight();
int shift = 0;
diff --git a/ydb/core/ydb_convert/ydb_convert.cpp b/ydb/core/ydb_convert/ydb_convert.cpp
index 5cea073e515..4676765f0e2 100644
--- a/ydb/core/ydb_convert/ydb_convert.cpp
+++ b/ydb/core/ydb_convert/ydb_convert.cpp
@@ -721,8 +721,10 @@ const THashMap<TString, TACLAttrs> AccessMap_ = {
{ "ydb.tables.read", TACLAttrs(EAccessRights::SelectRow | EAccessRights::ReadAttributes) },
{ "ydb.generic.read", EAccessRights::GenericRead },
{ "ydb.generic.write", EAccessRights::GenericWrite },
- { "ydb.generic.use", EAccessRights::GenericUse },
+ { "ydb.generic.use_legacy", EAccessRights::GenericUseLegacy },
+ { "ydb.generic.use", EAccessRights::GenericUse},
{ "ydb.generic.manage", EAccessRights::GenericManage },
+ { "ydb.generic.full_legacy", EAccessRights::GenericFullLegacy},
{ "ydb.generic.full", EAccessRights::GenericFull },
{ "ydb.database.create", EAccessRights::CreateDatabase },
{ "ydb.database.drop", EAccessRights::DropDatabase },
diff --git a/ydb/library/aclib/aclib.cpp b/ydb/library/aclib/aclib.cpp
index c7e95b42155..7340473880b 100644
--- a/ydb/library/aclib/aclib.cpp
+++ b/ydb/library/aclib/aclib.cpp
@@ -422,12 +422,18 @@ TString TACL::ToString(const NACLibProto::TACE& ace) {
case EAccessRights::GenericWrite:
str << 'W';
break;
+ case EAccessRights::GenericFullLegacy:
+ str << "FL";
+ break;
case EAccessRights::GenericFull:
str << 'F';
break;
case EAccessRights::GenericManage:
str << 'M';
break;
+ case EAccessRights::GenericUseLegacy:
+ str << "UL";
+ break;
case EAccessRights::GenericUse:
str << 'U';
break;
@@ -583,13 +589,25 @@ void TACL::FromString(NACLibProto::TACE& ace, const TString& string) {
ace.SetAccessRight(EAccessRights::GenericWrite);
break;
case 'F':
- ace.SetAccessRight(EAccessRights::GenericFull);
+ ++it;
+ if (it != string.end() && *it == 'L') {
+ ace.SetAccessRight(EAccessRights::GenericFullLegacy);
+ } else {
+ ace.SetAccessRight(EAccessRights::GenericFull);
+ --it;
+ }
break;
case 'M':
ace.SetAccessRight(EAccessRights::GenericManage);
break;
case 'U':
- ace.SetAccessRight(EAccessRights::GenericUse);
+ ++it;
+ if (it != string.end() && *it == 'L') {
+ ace.SetAccessRight(EAccessRights::GenericUseLegacy);
+ } else {
+ ace.SetAccessRight(EAccessRights::GenericUse);
+ --it;
+ }
break;
case '(': {
++it;
@@ -711,10 +729,12 @@ void TDiffACL::ClearAccessForSid(const NACLib::TSID& sid) {
TString AccessRightsToString(ui32 accessRights) {
switch (accessRights) {
+ case EAccessRights::GenericFullLegacy: return "FullLegacy";
case EAccessRights::GenericFull: return "Full";
case EAccessRights::GenericWrite: return "Write";
case EAccessRights::GenericRead: return "Read";
case EAccessRights::GenericManage: return "Manage";
+ case EAccessRights::GenericUseLegacy: return "UseLegacy";
case EAccessRights::GenericUse: return "Use";
}
TVector<TStringBuf> rights;
diff --git a/ydb/library/aclib/aclib.h b/ydb/library/aclib/aclib.h
index d82ebbb80b0..5fe9fce4e85 100644
--- a/ydb/library/aclib/aclib.h
+++ b/ydb/library/aclib/aclib.h
@@ -39,12 +39,14 @@ enum EAccessRights : ui32 { // bitmask
ReadStream = 0x00010000, // reading streams
WriteStream = 0x00020000, // writing streams
ReadTopic = 0x00040000, // reading topics
- WritTopic = 0x00080000, // writing topics
+ WriteTopic = 0x00080000, // writing topics
GenericRead = SelectRow | ReadAttributes | DescribeSchema,
GenericWrite = UpdateRow | EraseRow | WriteAttributes | CreateDirectory | CreateTable | CreateQueue | RemoveSchema | AlterSchema | WriteUserAttributes,
- GenericUse = GenericRead | GenericWrite | GrantAccessRights,
+ GenericUseLegacy = GenericRead | GenericWrite | GrantAccessRights,
+ GenericUse = GenericUseLegacy | ConnectDatabase,
GenericManage = CreateDatabase | DropDatabase,
+ GenericFullLegacy = GenericUseLegacy | GenericManage,
GenericFull = GenericUse | GenericManage,
};