ITKACL 2

Introduksjon

Etter fem år (2004-2009) med ITKACL hadde man høstet følgende grunnleggende erfaringer:

ITKACL2 er derfor en inkrementell oppgradering av modellen, i den hensikt å øke ytelsen.

Endringer

Den viktigste endringen er at Postgres-databasen ikke lenger er primært tilkoblingspunkt for ITKACL-klienter. I stedet, inspirert av Hesiod, legges det en cache av alle oppslag i DNS, under itkacl.as58302.net. (Autoritativ versjon av dataene er fortsatt Postgres-basen.) I den forbindelse fjernes også støtte for store bokstaver i brukernavn og ACL-stier, da DNS er case-insensitivt.

DNS har følgende gunstige punkter:

as58302.net er sikret med DNSSEC. Det er dog fortsatt et problem med at de fleste maskiner har andre maskiner (f.eks. cirkus) forwarder, hvilket betyr at veien mellom dem selv og cirkus fortsatt kan angripes.

For å gjøre et ITKACL-oppslag, slår man opp <bruker>.<acl-sti>.itkacl.as58302.net, der ACL-stien er uttrykt en reversert utgave av stien man ønsker å slå opp. Eksempelvis vil /web/amsit bli amsit.web (i DNS står elementer høyere opp i hierarkiet, til høyre), analogt med reversoppslag av IPer (127.0.0.1 -> 1.0.0.127.in-addr.arpa). Et oppslag for å sjekke om sesse har tilgang til /web/amsit/itk vil da med andre ord være mot sesse.itk.amsit.web.itkacl.as58302.net. (Det å slå opp rett i databasen er ikke lenger støttet.)

Dersom dette returnerer et A-record mot 127.0.0.1, er oppslaget i orden og brukeren har tilgang. Om oppslaget derimot ikke finnes, har brukeren ikke tilgang. Om oppslaget feiler, er det naturligvis en feilsituasjon som burde håndteres som sådan.

Vi kjører foreløpig med lav TTL; 10 sekunder. Sonefilen er ikke replikert.

Synking til sonen

Et perl-skript tar seg av jobben å flytte ACL-treet som representert i databasen inn til en DNS-sone. Det kjøres fra cron på cirkus hvert minutt, dersom det har skjedd oppdateringer siden sist.

Skriptet bor cassarossa:/usr/local/bin/sync-itkacl. Det kobler til databasen, henter ACL-treet og alle tilgangene og bygger en sonefil av alle permutasjoner av brukere og tilganger. Før den kjører, henter den ned sonen for itkacl.as58302.net og differ med inneværende tre i databasen. Så kaller den nsupdate og legger til eller fjerner tilgang.

Det viser seg at bind ikke liker mer enn ca tusen oppdateringer om gangen, så sync-itkacl kjører tusen og tusen oppdateringer i runder til den blir ferdig. Det skjer ikke veldig ofte, dog.

Om det er nye oppdateringer siden sist kjøring er gitt ved at cirkus:/etc/itkacl/updated har større mtime enn cirkus:/etc/itkacl/last-sync (pluss ti sekunder, slik at vi ikke risikerer å gjøre to kjøringer samtidig). Om noen gjør endringer i acl.samfundet.no, sørger koden der for å touch-e updated-filen. Mappen har nå eierskap slik at itkacl-web kan tvinge sync, dette må muligens endres dersom flere applikasjoner skal endre treet. OBS! Om du gjør endringer rett i databasen, må du selv touch-e updated-filen.

sync-itkacl kjører også hver natt med flagget –force, slik at den tvinger oppdateringer likevel, for alle tilfellers skyld.

Problemer post-AD

Etter overgangen til Active Directory, skjer ikke syncingen lenger like fort som den skal. Det er flere grunner til det:

Lenker: Start, itkacl, itkaclimplementasjon

Mail: itk@samfundet.no | Telefon: 992 15 925 | Sist endret: 2018-06-06 09:40 | Revisjon: 11 (historie, blame) | Totalt: 1420 kB | Rediger