@@ -38,11 +38,12 @@ bool TGRpcRequestProxyHandleMethods::ValidateAndReplyOnError(TCtx* ctx) {
38
38
}
39
39
}
40
40
41
- inline TVector<TEvTicketParser::TEvAuthorizeTicket::TEntry> GetEntriesForAuthAndCheckRequest (TEvRequestAuthAndCheck::TPtr& ev, const TVector<std::pair<TString, TString>>& rootAttributes ) {
41
+ inline TVector<TEvTicketParser::TEvAuthorizeTicket::TEntry> GetEntriesForAuthAndCheckRequest (TEvRequestAuthAndCheck::TPtr& ev) {
42
42
const bool isBearerToken = ev->Get ()->YdbToken && ev->Get ()->YdbToken ->StartsWith (" Bearer" );
43
43
const bool useAccessService = AppData ()->AuthConfig .GetUseAccessService ();
44
44
const bool needClusterAccessResourceCheck = AppData ()->DomainsConfig .GetSecurityConfig ().ViewerAllowedSIDsSize () > 0 ||
45
- AppData ()->DomainsConfig .GetSecurityConfig ().MonitoringAllowedSIDsSize () > 0 ;
45
+ AppData ()->DomainsConfig .GetSecurityConfig ().MonitoringAllowedSIDsSize () > 0 ||
46
+ AppData ()->DomainsConfig .GetSecurityConfig ().AdministrationAllowedSIDsSize () > 0 ;
46
47
47
48
if (!isBearerToken || !useAccessService || !needClusterAccessResourceCheck) {
48
49
return {};
@@ -55,7 +56,23 @@ inline TVector<TEvTicketParser::TEvAuthorizeTicket::TEntry> GetEntriesForAuthAnd
55
56
{NKikimr::TEvTicketParser::TEvAuthorizeTicket::ToPermissions ({" ydb.developerApi.get" , " ydb.developerApi.update" }), {{" gizmo_id" , " gizmo" }}}
56
57
};
57
58
return entries;
58
- } else if (accessServiceType == " Nebius_v1" ) {
59
+ } else {
60
+ return {};
61
+ }
62
+ }
63
+
64
+ inline TVector<TEvTicketParser::TEvAuthorizeTicket::TEntry> GetEntriesForClusterAccessCheck (const TVector<std::pair<TString, TString>>& rootAttributes) {
65
+ const bool useAccessService = AppData ()->AuthConfig .GetUseAccessService ();
66
+ const bool needClusterAccessResourceCheck = AppData ()->DomainsConfig .GetSecurityConfig ().ViewerAllowedSIDsSize () > 0 ||
67
+ AppData ()->DomainsConfig .GetSecurityConfig ().MonitoringAllowedSIDsSize () > 0 ||
68
+ AppData ()->DomainsConfig .GetSecurityConfig ().AdministrationAllowedSIDsSize () > 0 ;
69
+
70
+ if (!useAccessService || !needClusterAccessResourceCheck) {
71
+ return {};
72
+ }
73
+
74
+ const TString& accessServiceType = AppData ()->AuthConfig .GetAccessServiceType ();
75
+ if (accessServiceType == " Nebius_v1" ) {
59
76
static const auto permissions = NKikimr::TEvTicketParser::TEvAuthorizeTicket::ToPermissions ({
60
77
" ydb.clusters.get" , " ydb.clusters.monitor" , " ydb.clusters.manage"
61
78
});
@@ -123,10 +140,13 @@ class TGrpcRequestCheckActor
123
140
}
124
141
125
142
if constexpr (std::is_same_v<TEvent, TEvRequestAuthAndCheck>) {
126
- const auto & e = GetEntriesForAuthAndCheckRequest (Request_, rootAttributes );
127
- entries.insert (entries.end (), e .begin (), e .end ());
143
+ TVector<TEvTicketParser::TEvAuthorizeTicket::TEntry> authCheckRequestEntries = GetEntriesForAuthAndCheckRequest (Request_);
144
+ entries.insert (entries.end (), authCheckRequestEntries .begin (), authCheckRequestEntries .end ());
128
145
}
129
146
147
+ TVector<TEvTicketParser::TEvAuthorizeTicket::TEntry> clusterAccessCheckEntries = GetEntriesForClusterAccessCheck (rootAttributes);
148
+ entries.insert (entries.end (), clusterAccessCheckEntries.begin (), clusterAccessCheckEntries.end ());
149
+
130
150
if (!entries.empty ()) {
131
151
SetEntries (entries);
132
152
}
0 commit comments