Premení principal/resource atribúty na Protobuf, odošle jednu action cez gRPC, vyžiada metadata a prenesie deadline/cancellation. Klient/channel sa používa počas života aplikácie; pri ukončení sa uvoľní.
CerbosQueryPlanMapper.Map(response, request)
Overí validation errors a zhodu request/resource/action. Vytvorí AuthorizationQueryPlan so zachovaním DecisionId.
Mapper podporuje and, or, eq, in, konštantné zoznamy a jednopremenný exists/lambda nad resource kolekciou. Je to zámerne obmedzený preklad, nie celé CEL. Nepodporovaná forma vyvolá chybu; autorizácia sa potichu nepreskočí.
AuthorizationSqlMapping spája resource/action, skalárne atribúty a vzťahy. AuthorizationSqlAttribute dodá dôveryhodný stĺpec a typ hodnoty; AuthorizationSqlRelationship dodá element column a novú korelovanú query cez CreateQuery.
Plan kind
SqlKataAuthorizationQueryAdapter.Apply()
AlwaysAllowed
Ponechá business query.
AlwaysDenied
Pridá 1 = 0. Intaker ho odmietne už skôr.
Conditional
Zostaví samostatný predikát a pridá ho cez AND.
Adapter kontroluje zhodu resource/action, typy konštánt a mapované identifikátory. Aktuálne limity zahŕňajú hĺbku 32 a najviac 1 800 autorizačných parametrov. Odmietnutý plán musí operáciu ukončiť.
-- Synthetic Person/Company demonstration; equivalent SQL, not a captured query.
-- Read-only example. No policy or ACL assignments are changed.
DECLARE @companyId uniqueidentifier = '11111111-1111-1111-1111-111111111111';
SELECT [Person].*
FROM dbo.Person AS [Person]
WHERE [Person].[Deleted] = 0
AND EXISTS (
SELECT 1
FROM dbo.PersonInCompany AS acl_relation_0_0
INNER JOIN dbo.Company AS acl_relation_0_1
ON acl_relation_0_1.Id = acl_relation_0_0.CompanyId
AND acl_relation_0_1.Deleted = 0
WHERE acl_relation_0_0.PersonId = [Person].Id
AND acl_relation_0_0.Deleted = 0
AND acl_relation_0_1.Id = @companyId
);
-- Production code binds @companyId as a GUID through SqlKata.
-- Its actual parameter names may differ. Keep template/instance filters.
-- Authorization is applied before paging/counts and before returning data.
-- Proposed InterestedParty/export Project-scope example; equivalent SQL, not captured runtime output.
-- Illustration, not captured runtime output. Bind @ProjectId from the approved plan.
-- Every schema/table/column mapping comes from trusted application metadata.
DECLARE @ProjectId uniqueidentifier = 'b48e464a-88cf-4743-bbce-98d6ba89e399';
SELECT ip.Id
FROM dbo.InterestedParty AS ip
WHERE ip.Deleted = 0
AND EXISTS (
SELECT 1
FROM dbo.Project AS acl_project
WHERE acl_project.Id = ip.ProjectId
AND acl_project.Deleted = 0
AND acl_project.Id = @ProjectId
);
-- Ordinary business filters are ANDed with this predicate.
-- Apply authorization before COUNT, ORDER BY/OFFSET and export materialization.
-- No user-supplied ProjectId filter is required to activate this authorization.
Oba dokumentačné requests používajú presentation-demo/export a ponechajú relationship atribúty záznamov neznáme. Oba očakávané JSON príklady ukazujú celý EXISTS/lambda predikát pre jedno vyhovujúce ID; sú ilustračné, nepochádzajú zo živého volania. Aj SQL je ekvivalentný tvar, nie zachytený výstup vykonania.
Korelované EXISTS nenásobí root riadky. Deleted=0 platí pre každý relationship krok aj root business query. Autorizačný predikát sa aplikuje pred count/paging/načítaním výsledkov.
Zdroj: MicroApps + NuGet repozitáre. Runtime policies: non-prod DEV, kontrola 2026-10-27. Pri tejto úprave neprebehol C# build ani aplikačný deployment. Navigácia ← / → mimo ovládacích prvkov. Všetky assets a downloady fungujú offline.