Skip to content

Commit 796d958

Browse files
pass folder_id parameter to ticket parser (#18663)
1 parent 25a43bc commit 796d958

File tree

3 files changed

+31
-19
lines changed

3 files changed

+31
-19
lines changed

ydb/core/grpc_services/grpc_request_check_actor.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ inline TVector<TEvTicketParser::TEvAuthorizeTicket::TEntry> GetEntriesForAuthAnd
6868
return {};
6969
}
7070
return {
71-
{permissions, {{"gizmo_id", it->second}}}
71+
{permissions, {{"folder_id", it->second}}}
7272
};
7373
} else {
7474
return {};

ydb/core/security/ticket_parser_impl.h

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -474,13 +474,6 @@ class TTicketParserImpl : public TActorBootstrapped<TDerived> {
474474
AddNebiusResourcePath(pathsContainer, databaseId);
475475
}
476476

477-
// Use attribute "gizmo_id" as container id that contains cluster access resource
478-
// IAM can link roles for cluster access resource
479-
// Note: "gizmo_id" and "folder_id" are always sent in separate TEvAuthorizeTicket requests
480-
if (const auto gizmoId = record.GetAttributeValue(permission, "gizmo_id"); gizmoId) {
481-
SetNebiusContainerId(pathsContainer, gizmoId);
482-
}
483-
484477
// Use attribute "folder_id" as container id that contains our database
485478
// IAM can link roles for containers hierarchy
486479
if (const auto folderId = record.GetAttributeValue(permission, "folder_id"); folderId) {

ydb/core/security/ticket_parser_ut.cpp

Lines changed: 30 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1661,17 +1661,36 @@ Y_UNIT_TEST_SUITE(TTicketParserTest) {
16611661
UNIT_ASSERT_C(result->Error.empty(), result->Error);
16621662
UNIT_ASSERT_C(result->Token->IsExist("something.read-bbbb4554@as"), result->Token->ShortDebugString());
16631663

1664-
// Authorization successful for gizmo resource
1665-
accessServiceMock.AllowedResourceIds.clear();
1666-
accessServiceMock.AllowedResourceIds.emplace("gizmo");
1667-
runtime->Send(new IEventHandle(MakeTicketParserID(), sender, new TEvTicketParser::TEvAuthorizeTicket(
1668-
userToken,
1669-
{{"gizmo_id", "gizmo"}, },
1670-
{"monitoring.view"})), 0);
1671-
result = runtime->GrabEdgeEvent<TEvTicketParser::TEvAuthorizeTicketResult>(handle);
1672-
UNIT_ASSERT_C(result->Error.empty(), result->Error);
1673-
UNIT_ASSERT_C(result->Token->IsExist("monitoring.view@as"), result->Token->ShortDebugString());
1674-
UNIT_ASSERT_C(result->Token->IsExist("monitoring.view-gizmo@as"), result->Token->ShortDebugString());
1664+
if constexpr (!IsNebiusAccessService<TAccessServiceMock>()) {
1665+
// Authorization successful for gizmo resource
1666+
accessServiceMock.AllowedResourceIds.clear();
1667+
accessServiceMock.AllowedResourceIds.emplace("gizmo");
1668+
runtime->Send(new IEventHandle(MakeTicketParserID(), sender, new TEvTicketParser::TEvAuthorizeTicket(
1669+
userToken,
1670+
{{"gizmo_id", "gizmo"}, },
1671+
{"monitoring.view"})), 0);
1672+
result = runtime->GrabEdgeEvent<TEvTicketParser::TEvAuthorizeTicketResult>(handle);
1673+
UNIT_ASSERT_C(result->Error.empty(), result->Error);
1674+
UNIT_ASSERT_VALUES_EQUAL_C(result->Token->GetGroupSIDs().size(), 4, result->Token->ShortDebugString());
1675+
UNIT_ASSERT_C(result->Token->IsExist("all-users@well-known"), result->Token->ShortDebugString());
1676+
UNIT_ASSERT_C(result->Token->IsExist("monitoring.view@as"), result->Token->ShortDebugString());
1677+
UNIT_ASSERT_C(result->Token->IsExist("monitoring.view-gizmo@as"), result->Token->ShortDebugString());
1678+
UNIT_ASSERT_C(result->Token->IsExist("user1@as"), result->Token->ShortDebugString());
1679+
} else {
1680+
// Authorization successful for cluster resource
1681+
accessServiceMock.AllowedResourceIds.clear();
1682+
accessServiceMock.AllowedResourceIds.emplace("folder");
1683+
runtime->Send(new IEventHandle(MakeTicketParserID(), sender, new TEvTicketParser::TEvAuthorizeTicket(
1684+
userToken,
1685+
{{"folder_id", "folder"}, },
1686+
{"monitoring.view"})), 0);
1687+
result = runtime->GrabEdgeEvent<TEvTicketParser::TEvAuthorizeTicketResult>(handle);
1688+
UNIT_ASSERT_C(result->Error.empty(), result->Error);
1689+
UNIT_ASSERT_VALUES_EQUAL_C(result->Token->GetGroupSIDs().size(), 3, result->Token->ShortDebugString());
1690+
UNIT_ASSERT_C(result->Token->IsExist("all-users@well-known"), result->Token->ShortDebugString());
1691+
UNIT_ASSERT_C(result->Token->IsExist("monitoring.view@as"), result->Token->ShortDebugString());
1692+
UNIT_ASSERT_C(result->Token->IsExist("user1@as"), result->Token->ShortDebugString());
1693+
}
16751694
}
16761695

16771696
Y_UNIT_TEST(Authorization) {

0 commit comments

Comments
 (0)