--- name: ductus-identity-isolation description: Trace Ductus actor × resource × action isolation, caller-supplied identity, revoked grants, anonymous protected actions and pooled transaction identity. Use for authorization/RLS/pgTAP reviews at an exact revision; require real Postgres for RLS claims and separate local fake OIDC from AAI integration. --- # Provjeri izolaciju identiteta 1. Primijeniti [zajedničke operacije](../../references/project-operations.md). Iz ciljnog repoa pročitati prihvaćene `docs/BACKEND.md` §3/4.3/4.4/§6, `docs/PRODUCT.md` §3/§5 i relevantne odluke. Izvesti matricu **akter × resurs × radnja** iz tih pravila; unresolved policy/D-34/PRIJEDLOG ostaviti otvorenim, bez uvoza R2/OpenFGA pravila kao Ductus pravila. 2. Pratiti principal iz provjerene sesije → `current_actor()` → `can()`/RLS/RPC → podatke i odgovor. `AuthorizationCheck.principalId` je aplikacijski port, ne ovlast klijenta da bira SQL identitet. Prihvaćeni SQL smjer izvodi actor iz sesije, ne p_principal_id/app.user_id. `CommitRequest` nema actor parametar. Provjeriti `SECURITY DEFINER`, prazan search_path, grants, ENABLE/FORCE RLS i `SET LOCAL`/`set_config(..., true)` gdje su stvarno implementirani. 3. Primijeniti [sirove scenarije](assets/raw-scenarios.json): dopušten vlastiti pristup, A/private B, caller-supplied actor, opozvana ovlast/stari claim, anonimna protected radnja i pooled veza nakon transakcije. Razlikovati static pregled, in-memory AuthorizationPort, SQL/RLS/pgTAP i OIDC/HTTP/browser. Negativan mock odgovor ne dokazuje SQL izolaciju. 4. Koristiti [mapu izvora](../../references/source-map.md) za kandidat #39 harness i #46 role/identity migrations i pgTAP. Na svježem punom headu potvrditi status i sadržaj; njihove candidate putanje nisu main. #46 identity/session testovi nisu potpuna matrica privatnih dokumenata, can() ni pooled withActor dokaz. Ako tablica/RPC/sloj još ne postoji, označiti pending, ne izmišljati univerzalnu SQL naredbu. 5. RLS tvrdnju potkrijepiti stvarnim autoriziranim izoliranim Postgresom: zabilježiti reviziju migracija, ulogu, synthetic fixture, transakciju, upit, originalni rezultat i pgTAP scope. Novim tablicama zahtijevati odgovarajuću RLS i pgTAP matricu prema prihvaćenim pravilima. Provjeriti commit i rollback izlaze pool transakcije; GUC nakon SET LOCAL može biti `''`, pa nullif mora spriječiti naslijeđeni identitet. Opoziv provjeriti bez predmemorije odluka; sam stari claim ne daje grant. 6. Isporučiti matricu s očekivanjem iz kanonskog izvora, stvarnim entrypointom/testom, opaženim allow/deny/error, full headom i granicom zaključka. Bez stvarnog Postgresa SQL sloj ostaje NOT_TESTED; fake lokalni OIDC nije AAI@EduHr integracija. RLS je obrana u dubinu, ne granica protiv kompromitirane aplikacije. Ne dodavati provider, grant, produkcijsku migraciju ili testne stvarne osobe radi provjere.