Innhold
1 Innledning
Dette dokumentet beskriver hvordan Cerebrum skal utvides til å kunne støtte delegering av utvalgt bofh-funksjonalitet knyttet til DHCP.
2 Hvordan designeres delegering
Lita2-rettigheter tildeles per subnett via vanlig bruk av access grant, f.eks.:
access grant DNS-Lita cerebrum dns 129.240.6.242/
Det siste parameteret kan representere både subnett og enkelthost'er. Dersom parameteret inneholder '/', så regnes det som subnett, og alt foran '/' brukes for å bestemme hvilket subnett. Hvis det ikke er '/', så regnes det som IP'en til en enkelt-host.
3 Cerebrum-interne endringer
Ny konstant auth_dns_lita defineres og legges til et nytt opset DNS-Lita.
Ny metode i DnsBofhdAuth bofhd_dns_cmds.py som tar en IP eller et subnett (jamfør distinksjonen spesifisert overnfor) og sjekker om brukeren enten er dns_superuser eller om brukeren tilhører en gruppe som har rettigheter på subnettet/IP'en er på.
4 Hvilke kommandoer skal kunne kjøres delegert?
Følgende kommandoer kan kjøres av en bruker som har fått tildelt rettigheter på subnettet som IP'en/host'en er på:
- dhcp assoc
- dhcp disassoc
5 Ny bofh-kommando
5.1 access dns <SUBNET/IP>
Angir hvem som har rettigheter på det gitte subnettet eller IP'en.
Dersom man oppgir IP, så vil kommandoen også fortelle hvem som har rettigheter på subnettet som IP'en er på. Dersom man oppgir subnett, så vil ikke rettigheter på enkelt-IP'er på subnettet bli oppgitt.
Merk at kommandoen ikke tar hostnavn som parameter, siden en host og dens IP(er) er separate entiteter i Cerebrum.
6 Testing
Testinstans av bofhd går på port 8842 på cere-utv01, og kan nåes med bofh a la:
bofh --url https://cere-utv01.uio.no:8842
NB! For å gjøre testen enklere, så har ikke DNS-superbrukere adgang til å gjøre dhcp assoc/disassoc slik de vanligvis har; man må spesifikt få delegert rettigheter til subnett/host.
Sjekk at man får tildelt rettigheter på subnett:
access grant DNS-Lita cerebrum dns 129.240.6.242/
Sjekk at man får assosiert maskiner på subnettet med MAC-adresser, identifisert med både maskinnavn og IP:
dhcp assoc morpheus.uio.no 12:34:56:78:90:AB dhcp assoc annette.uio.no 12:34:56:78:90:AC dhcp assoc 129.240.6.232 12:34:56:78:90:BC dhcp assoc 129.240.6.233 12:34:56:78:90:BD
Sjekk at man får PermissionDenied utenfor dette subnettet:
dhcp assoc klodrik.uio.no 11:34:56:78:90:AB dhcp assoc 129.240.12.4 11:34:56:78:90:AC
Sjekk at man kan tildele rettigheter på en IP:
access grant DNS-Lita cerebrum dns 129.240.12.34
Sjekk at man nå kan assosiere maskinen med MAC-adresser:
dhcp assoc liseberg.uio.no 12:24:56:78:90:AB dhcp assoc 129.240.12.34 12:24:56:78:90:AC force
Sjekk at man ikke får satt MAC-adresser ellers i subnettet; skal gi PermissionDenied:
dhcp assoc login2.uio.no 12:24:46:78:90:AB dhcp assoc 129.240.12.4 12:24:46:78:90:AC
Sjekk at det går greit å fjerne rettigheter man har tildelt:
access revoke DNS-Lita cerebrum dns 129.240.6.242/ access revoke DNS-Lita cerebrum dns 129.240.12.9
og at rettighetene faktisk er borte (skal gi PermissionDenied):
dhcp assoc morpheus.uio.no 12:34:55:78:90:AB force dhcp assoc login1.uio.no 12:24:56:77:90:AB force
7 Produksjonssetting
Oppdatering av "cerebrum"-treet og installering av kode derfra:
cd ~/src/cerebrum svn up Cerebrum/modules/dns/ svn up Cerebrum/modules/no/uio/bofhd_uio_cmds.py python setup.py install --prefix=/cerebrum/uio |egrep -v "skipping|not"'
Sett inn ny AuthRoleOpCode-konstant, auth_dns_lita:
python makedb.py --only-insert-codes
Oppdatering av "permission"-skript:
cd ~/src/cerebrum_sites cvs up hacks/uio/perm_oppdatering.py
Kjør skriptet for å se om endringene ser kurrante ut:
python ~/src/cerebrum_sites/hacks/uio/perm_oppdatering.py --import
Ideelt sett, så skal følgende være det eneste som oppdateres:
INFO 2010-10-26 13:28:52 OpSet DNS-Lita unknown, created it INFO 2010-10-26 13:28:52 OpSet DNS-Lita got new operation dns_lita
Hvis det er tilfellete, kjør sciptet med --commit:
python ~/src/cerebrum_sites/hacks/uio/perm_oppdatering.py --commit --import
Voilà!