DNS-oppdatering 1.2.1

Beskrivelse av DNS-oppdatering versjon 1.2.1.

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à!

Av DNS og Cerebrum
Publisert 4. sep. 2014 16:36