Spesifikasjon for passordvarslingtjenesten

Dette dokumentet beskriver hvordan tjenesten for varsling av nødvendig passordbytte samt håndtering av manglende passordbytte skal fungere.

Det er ønskelig at brukere bytter sine passord med ikke altfor sjeldne mellomrom, blant annet for å motvirke langvarig bruk av kompromitterte konti.

Funksjonalitetsbeskrivelse av tjenesten

Når et passord byttes, registreres [1] denne datoen i Cerebrum. Denne informasjonen brukes til å finne brukere som ikke har byttet passord innen en viss frist, som bestemmes av systemeier. Brukere som ikke har byttet passord etter innføring av denne registreringen, blir også hentet ut.

Jevnlig (f.eks. ukentlig) gjennomgås alle brukere i systemet. Utifra når passordet sist er byttet samt om de har blitt varslet allerede, behandles de som følger:

Hvor ofte tjenesten kjøres og hvor lange frister som gjelder, bestemmes av systemeier. Titlene under inneholder forslag.

Mindre enn fem uker til fristen går ut

Brukeren blir tilsendt e-post om at vedkommende må bytte passord innen fristen for å unngå en sperring av kontoen.

I tillegg lagres datoen for dette varslet i Cerebrum (som en «trait» knyttet til kontoen).

Mottatt første varsel for minst to uker siden

Dersom brukeren ikke har endret passord ennå, sendes en påminnelse i e-post. Dette lagres også i Cerebrum.

Mottatt første varsel for minst fem uker siden

Det settes karantene på kontoen, fortrinnsvis en karantene som er spesielt dedikert til denne bruken, f.eks. benevnt «autopassord» eller lignende, slik at det er tydelig hva som har forårsaket stenging av kontoen.

Passord byttet etter varsling

Hvis en bruker har byttet passord, slettes informasjonen [2] om tidligere varsler fra Cerebrum.

Merk at informasjonen ikke slettes innen brukeren faktisk skifter passord. Skulle brukeren bli sperret, vil likevel denne informasjonen ikke slettes. Dermed vil brukeren få ny karantene hvis karantenen blir fjernet uten at passordet byttes.

Unntatte brukere

Det kan settes et merke på brukere for å signalisere at de er unntatt fra håndhevelsen dette skriptet utfører. Dette lagres i Cerebrum med en «trait» (en annen enn den som brukes til å holde rede på varslinger) på disse brukerne. Dette fungerer slik at systemet først finner brukere med gamle passord før deretter brukere med dette merket siles ut.

På UiOs unntas gjestebrukere; disse er under et annet passordregime.

E-postutsendelser

Som nevnt ovenfor, sender varslingstjenesten ut varsler som e-post. Disse e-postene inneholder tekst som hentes fra filer (maler) og setter inn brukernavn, dato for når konto vil bli sperret, og dato for første varsel (dersom det er en påminnelse). Standardtekstene i disse malene utformes av systemeier. Det lages forskjellige tekster for første varsel og for påminnelse.

E-postadresser

Varslingstjenesten bruker e-postadressene som er registrert i Cerebrum. Den prøver å hente ut adresser i rekkefølgen:

  1. Dersom brukeren har en EmailTarget brukes primæradressen til e-postkontoen til brukeren.
  2. Dersom det finnes en e-postadresse som kontaktinformasjon på brukeren brukes denne.
  3. Dersom det finnes en e-postadresse som kontaktinformasjon på personen brukes denne.

Om ingen adresser ble funnet, vil ikke brukeren bli varslet, men sperringen vil likevel fortsette.

Teknisk beskrivelse av tjenesten

Passordvarslingsscriptet skal hete contrib/notify_change_password.py i kildekodetreet. Dette kjøres regelmessig, og hver kjøring ser etter brukere som matcher modellene.

Detaljer om programmets oppførsel konfigureres på kommandolinjen og i en egen konfigurasjonsfil innstallert som etc/cerebrum/changepassconf.py.

Kommandolinjeargumenter

Opsjoner parses av notify_change_password.py, og de overstyrer da variable i oppsettfilen eller i standardoppsettet.

--debug skrur på debug-modus, eller statusmodus. Ingen endringer eller sideeffekter vil utføres.
--to angir e-postadresser for status-e-post
--cc angir e-postadresser for status-e-post
--from angir e-postadresser for status-e-post
--change-log-program
  angir navnet på programmet som skrives i historikken når brukeren sperres.
--template angir mal-filer for masseutsendelse. Disse malfilene kan inneholde tags som byttes ut med frist for passordbytte. Argumentet kan angis flere ganger: første gang angir det mal for varsel, annen gang for påminnelse.
--max-password-age
  Angir hvor gammelt passordet kan være før første varsel sendes ut. Dette kan angis som f.eks. 350d eller 350 for 350 dager. Argumentet parses, slik at «1y 3m 4w 5d» betyr ett år (365 dager), tre måneder (30 dager), fire uker og fem dager.
--grace-period Angir hvor lenge det skal gå mellom første varsel og sperring. Tidsangivelsen er den samme som for max-password-age
--reminder-delay
  Angir hvor lenge det skal gå mellom varslingene. Tidsangivelsen er den samme som for max-password-age.
--password-trait
  Angir hvilken «trait» som skal brukes for å lagre passordvarselinformasjonen i Cerebrum.
--password-quarantine
  Angir hvilken karantene som brukes for å sperre brukerne.

Konfigurasjon

Konfigurasjon gjøres, som omtalt, i egen python-modul. Denne har en mengde variable. Alle unntatt template og mailadresser har nyttige default-verdier.

class_notifier
Her angis liste av klassenavn, hvis class_notifier ikke angis, er ['Cerebrum.modules.PasswordNotifier/PasswordNotifier'] standard. Klassene som oppgis her, overskriver hele eller deler av funksjonaliteten i PasswordNotifier. Typisk kan man inkludere en ekstra klasse, som erstatter E-brev-utsending med sneglepost.
change_log_program
Dette er en tekststreng. Strengen vil dukke opp som navngitt endrer i endringsloggen (ChangeLog).
template
Liste over filnavn med e-postmaler. Første element i liste angir mal brukt til første varsling, andre element angir mal til andre varsling, og så bortover.
max_password_age
mx.DateTime.TimeDelta: Maksimal passordalder. Er passordet eldre, sendes et varsel om fremtidig karantenesetting.
max_password_age_aff
Maksimal passordalder kan detaljstyres per tilknytning. Hvis denne konfigurasjonsvarianelen eksempelvis settes til {'ANSATT': DateTime.DateTimeDelta(5), 'STUDENT/aktiv'; DateTime.DateTimeDelta(10)}, vil personer som har en ANSATT-tilknytning ha en maksimal passordalder på fem dager, mens personer med STUDENT/aktiv vil ha en maksimal passordalder på 10 dager. max_password_age er dog den absolutte grensen for hvor lenge et passord kan brukes, så eventuelle spesialtilpasninger per tilknytning vil bli overstyrt av denne.
max_new_notifications
Maksimalt antall førstegangspåminnelser som sendes i løpet av en kjøring. Purringer vil ikke telles med i denne begrensningen. Hvis antallet førstegangspåmindelser over skrider dette antallet, vil de resterende førstegangspåmindelsene sendes ved neste kjøring (disse vil også bli omfattet av begrensningen). Denne opsjonen er fin å bruke, hvis man tar i bruk passordvarslingstjenesten, og har mange kontoer med gamle passord, og vil begrense antallet utsendte epost per kjøring (typisk for å unngå at førstelinje blir overbelastet med forespørsler).
grace_period
mx.DateTime.TimeDelta: Hvor lang tid brukeren har mellom sendt varsel og karantenesetting.
reminder_delays
list(mx.DateTime.TimeDelta): Hvor lang tid det skal gå mellom sendt varsel og påminnelse.
trait
cerebrum-constant (eller tekststreng): Passordtrait som brukes
except_trait
Brukere med denne trait er unntatt regimet.
password_quarantine
cerebrum-constant (eller streng): Karantene som settes
summary_to, summary_from, summary_cc, summary_bcc
Mailadresser for oppsummerings-e-post

Ekstravarsel på SMS

Kom i det siste en ny funksjonalitet for ekstravarsel på SMS, denne funksjonaliteten benytter på en måte egen modul og litt av eget konsept men må allikevel henge på e-postvarselet som en klegg for å fungere riktig! Kort oppsummert, det må lages en parallell konfigurasjon som det som er laget for e-postvarselet og egen jobb i schedulded_jobs.py i tillegg til eget template.

Konfigurasjon

Følgende parametre skal settes opp annerledes enn e-postvarsel parametre:

change_log_program
Strengverdi som må gjerne være annerledes enn det som er satt opp for e-postvarselet.
class_notifier_values
Må settes til ["Cerebrum.modules.password_notifier.notifier/SMSPasswordNotifier"]
reminder_delay_values
Obs! Dette har en annen tolkning enn det som er for e-postvarselet og betyr hvor mange dager i forveien skal SMS sendes før sperringen inntreffer.
trait
Strengverdi som må gjerne være annerledes enn det som er satt opp for e-postvarselet som er stort sett og per default (se neste punkt)  'pw_notifications' så bruk helst noe annet enn det!
follow_trait
Spesiell til SMS varselet (kan ikke konfigureres for e-postvarselet) og må settes til en strengverdi som er den samme som 'trait' strengverdien som er satt til e-postvarselet.  E-postvarselet har uannsett en default verdi som er satt til 'pw_notifications' av password_notifier modulen, så det må settes i SMS konfigurasjonen til denne verdien med mindre noe annet er spesifisert i konfig'en til e-postvarselet og da blir denne verdien brukt der.
 

scheduled_jobs.py

Konfigfilen til SMSutsendelsen må nevnes eksplisitt for jobben i scheduled_jobs med '-f' argumentet, f.eks. :

sms_notify_change_password = Action(
        call=System(pj(contrib, "notify_change_password.py"),
                    params = ["-f", pj(crb_config, "config",
                              "sms_password_notifier.json")]),
        when=When(time=[Time(hour=[10], min=[0])]))

 

templatefil

Templatefilnavnet er hardkodet (warn_before_splat_sms.template) og bruker felles sti til alle templatene: cereconf.TEMPLATE_DIR , kan inneholde en melding slik denne f.eks. :

Du må endre passord i løpet av dagen for å unngå at din NMH-konto {account_name} blir deaktivert. Gå til https://passord.nmh.no
Your NMH account {account_name} will be deactivated if you don’t change the password today.

Dokumentasjonsoversikt

Dette er en oversikt over dokumentasjon systemeier bør ha tilgjengelig.

  • Generell info om tjenesten, f.eks. på IT-sidene til institusjonen og eventuelt i tillegg på e-post i forbindelse med igangkjøring av tjenesten.
  • Hvordan man kan se om en gitt bruker har fått sperret kontoen sin pga manglende passordbytte.
  • Hvor brukere henvender seg for å så satt nytt passord og dermed få kontoen gjenåpnet dersom den har blitt sperret på grunn av manglende passordbytte.
[1] Dette krever at PasswordHistory-modulen er i bruk.
[2] Informasjonen vil likevel bli logget i brukerens historikk, så helt borte er den ikke.

 

Av roberth
Publisert 13. okt. 2008 11:11 - Sist endret 2. nov. 2018 10:53