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