% LaTeX2e
% `OpenAFS an der HSZ-T, Modul Betriebssysteme 2008'
% 29. Oktober 2008, Peter Schmid
% RCS-Id: $Id: ldap.tex,v 1.1 2008/10/31 08:22:35 pschmid Exp $

\documentclass{beamer}
%\documentclass[handout]{beamer}

\mode<presentation>
{
  \usetheme{Warsaw}

  \setbeamercovered{transparent}
}

\usepackage[german]{babel}
\usepackage[latin1]{inputenc}
\usepackage{times}
\usepackage[T1]{fontenc}
\usepackage{alltt}

%\setbeameroption{show notes}

%---------------------------------------------------------------------

\title{OpenAFS an der HSZ-T}

\author{Peter Schmid}

\institute[HSZ-T] 
{
  Hochschule f\"u{}r Technik Z\"u{}rich\\
  Studiengang Informatik
}

\date[modbs08]{2.11.2008}

\pgfdeclareimage[height=0.5cm]{university-logo}{fig/hsz-logo}
\logo{\pgfuseimage{university-logo}}

%---------------------------------------------------------------------

\begin{document}

\begin{frame}

  \titlepage

\end{frame}

% ---------------------------------------------------------------------

\begin{frame}{Outline}

  \tableofcontents
  % You might wish to add the option [pausesections]
\end{frame}

% ---------------------------------------------------------------------

\section{Einf"uhrung}

\subsection{Wieso OpenAFS an der HSZ-T?}

\begin{frame}
  \frametitle{Wieso OpenAFS an der HSZ-T?}

  \begin{itemize}
  \item<1-> Echtes Distributed Networked File System (DFS).
  \item<2-> Uniform (Global) Namespace, \texttt{/afs/hsz-t.ch/} ist
    weltweit g"ultig.
  \item<3-> Sichere Authentifizierug "uber Kerberos.
  \item<4-> Snapshots (Readonly Copies).
  \item<5-> Clients f"ur UNIX/Linux, Windows und OSX. Server f"ur Linux,
    Solaris und AIX.
  \item<6-> Open Source. Aktive Weiterentwicklung.
  \item<7-> AFS skaliert gut. Zehntausende Workstations, zehntausende
    Benutzer und hunderte Dateiserver sind keine Seltenheit
  \item<8-> Hohe Zuverl"assigkeit dank redundanten Database Server.
  \end{itemize}
  
\end{frame}



% ---------------------------------------------------------------------

\subsection{Geschichtlicher R"uckblick}

\begin{frame}
  \frametitle{Geschichtlicher R"uckblick}

  \begin{itemize}
  \item<1-> Urspr"unglich universit"ares Projekt an der Carnegie Mellon
    Universit"at. Teil des Andrew Projects (1983).
  \item<2-> Sp"ater von Firma Transarc unter Transarc AFS
    kommerzialisiert (1989).
  \item<3-> Transarc wird von IBM "ubernommen und Produkt als IBM-AFS
    vermarktet (1999).
  \item<4-> Ab 2000 unter Open Source Lizenz (IBM Public License).
  \end{itemize}
\end{frame}
  

\begin{frame}
  \frametitle{HSZ-T}

  \begin{itemize}
  \item<1-> DEC Athena mit kerberisiertem NFS war von 1993 bis 2002 im
    Einsatz. Basierte auf Kerberos IV.
  \item<2-> DEC Athena war nicht f"ur Linux verf"ugbar $\rightarrow$
    Wunsch nach Ersatz, musste sicheres DFS sein, Clients f"ur UNIX,
    Linux und Windows.
  \item<3-> Im 2002 neuer Fileserver mit OpenAFS, NIS f"ur
    Verzeichnisdienst und kaserver f"ur Authetifizierung.
  \item<4-> LDAP als Verzeichnisdienst (2004), MIT Kerberos V (2006).
  \end{itemize}

\end{frame}


% ---------------------------------------------------------------------

\section{Architektur}


\subsection{Allgemeines}


\begin{frame}
  
  \frametitle{Bestandteile eines AFS Systems}

  \begin{itemize}
  \item<1-> AFS Server, Clients.
  \item<2-> Administratoren, Benutzer (z.B.\texttt{fruppen} und
    Gruppen (z.B. \texttt{system:anyuser})
  \item<3-> Cells z.B. \texttt{hsz-t.ch}
  \item<4-> Volumes z.B. \texttt{user.pschmid}
  \end{itemize}
\end{frame}

% ---------------------------------------------------------------------

\begin{frame}
  
  \frametitle{Cells}

  \begin{itemize}
  \item<1-> Unabh"angige Verwaltungseinheiten
  \item<2-> Verbund von Database Servers und File Servers bilden
    Datenraum.
  \item<3-> Zugriff auf Daten anderer Zellen.
  \item<4-> Clients haben Standard Zelle.
  \item<5-> Name leitet sich aus Domain ab, z.B. \texttt{hsz-t.ch}.
  \item<6-> Admin gibt Struktur der Zelle vor.
  \end{itemize}
\end{frame}

% ---------------------------------------------------------------------

\begin{frame}
  
  \frametitle{Volumes}
  
  \begin{itemize}
  \item<1-> Enthalten Verzeichnisse und Dateien des Dateiservers.
  \item<2-> Volumenname z.B. \texttt{public.share}
  \item<3-> Ver"anderbare max. Gr"o"se (Quota).
  \item<4-> Zugriff "uber MountPoint im AFS Dateibaum
    \texttt{/afs/hsz-t.ch/public/share}.
  \item<5-> Jeder Benutzer erh"alt ein eigenes Volume.
  \item<6-> Volumeinstanzen
    \begin{itemize}
    \item<6-> Read Write (RW)
    \item<6-> Read Only (RO)
    \item<6-> Backup
    \item<6-> Tempor"are Clones
    \end{itemize}
  \end{itemize}
\end{frame}

% ---------------------------------------------------------------------

\subsection{Sicherheit}

\begin{frame}
  
  \frametitle{ ACLs}

  AFS Zugriffsrechte:

  \begin{itemize}
  \item<1-> Werden in ACLs (Access Control Lists) verwaltet.
  \item<2-> Gelten nur f"ur Verzeichnisse.
  \item<3-> K"onnen f"ur einzelne Benutzer oder Gruppen festgelegt
    werden.
  \item<4-> Rechte werden auch in Unterverzeichnisse "ubernommen.
  \item<5-> ACL Rechte: Read (\texttt{r}), Write (\texttt{w}), Lookup
    (\texttt{l}), Insert (\texttt{i}), Delete (\texttt{d)}, Lock
    (\texttt{k}), Administer (\texttt{a}).
  \item<6-> Vereinfachung der Rechte: \texttt{read} f"ur \texttt{rl},
    \texttt{write} f"ur \texttt{rlidwk}, \texttt{all} f"ur
    \texttt{rlidwka},  \texttt{none} entfernt alle Rechte.
  \end{itemize}
\end{frame}

% ---------------------------------------------------------------------

\begin{frame}
  
  \frametitle{Tokens}
  
  \begin{itemize}
  \item<1-> Zeitlich begrenzte Authentifizierung, z.B. 25 h.
  \item<2-> Client erh"alt Token von AFS Server.
  \item<3-> Token enth"alt verschl"usselte Benutzeridentifikation.
  \item<4-> Kann nur von AFS-Server entschl"usselt werden.
  \item<5-> Zellenweiter einheitlicher Schl"ussel.
  \end{itemize}
\end{frame}

% ---------------------------------------------------------------------

\begin{frame}
  
  \frametitle{Benutzergruppen}

  Gruppen sind Benutzern gleichgestellt.

  Von AFS vorgegeben Gruppen:

  \begin{itemize}
  \item<1-> \texttt{system:anyuser}\\
    Jeder Benutzer, auch ohne g"ultige AFS-Berechtigung.
  \item<2-> \texttt{system:authuser} \\
    Jeder Benuter mit g"ultiger AFS-Berechtigung (Token).
  \item<3-> \texttt{system:administrators}\\
    Administratoren Gruppe.
  \item<4-> Jeder Benutzer kann auch eigene Gruppen definieren.
  \end{itemize}
\end{frame}

% ---------------------------------------------------------------------

\subsection{Client}

\begin{frame}
  
  \frametitle{Client-Caching}
  
  \begin{itemize}
  \item<1-> Entlastet Dateiserver $\rightarrow$ bessere Performance bei WANs.
  \item<2-> Aufteilen in Chunks.
  \item<3-> Cache ist persistent.
  \item<4-> Unter Windows Memory Mapping m"oglich, einzige Datei.
  \item<5-> Unter Unix viele Dateien in einem Verzeichnis.
  \end{itemize}
\end{frame}

% ---------------------------------------------------------------------

\begin{frame}
  
  \frametitle{Client Software}

  \begin{itemize}
  \item<1-> "Ublicherweise ist jeder Client einer Heimatzelle zugeordnet.
  \item<2-> Stellt Anfrage an AFS Server.
  \item<3-> H"alt lokalen Cache.
  \item<4-> Synthetisiert AFS Dateibaum.
  \item<5-> Verwaltet Tokens der Benutzer.
  \item<6-> Speichert Liste mit AFS Servern.
  \end{itemize}
\end{frame}

% ---------------------------------------------------------------------

\subsection{Server}

\begin{frame}
  
  \frametitle{Servertypen}
  
  Servertypen in einer AFS Zelle:
  \begin{itemize}
  \item<1-> File Server
    \begin{itemize}
    \item<1-> Volume Server
    \item<1-> File Server
    \end{itemize}
  \item<2-> Database Server:
    \begin{itemize}
    \item<2-> Kerberos Authentifizierungs Server
    \item<2-> Protection Server
    \item<2-> Volume Location Server
    \item<2-> Backup Server
    \end{itemize}
  \end{itemize}
\end{frame}

% ---------------------------------------------------------------------

\begin{frame}
  
  \frametitle{File Server}
  
  \begin{itemize}
  \item<1-> Enth"alt alle Dateien einer AFS Zelle.
  \item<2-> Aufteilung der Plattenkapazit"at.
  \item<3-> H"alt Dateipartitionen mit Instanzen von Volumes
    z.B. \texttt{/vicea},\texttt{ /viceb} usw.
  \item<4-> Files und Directories sind in Volumes organisiert.
  \item<5-> K"onnen mehrere IP Adressen haben.
  \end{itemize}
\end{frame}

% ---------------------------------------------------------------------

\begin{frame}
  
  \frametitle{File Server, cont.}

  Prozesse des OpenAFS Fileservers:

  \begin{itemize}
  \item<1-> Fileserver: Bedient Anfragen von AFS Clients.
  \item<2-> Volserver: Stellt Funktionen f"ur Admins bereit. (Volume
    clonen, Volume an- und abschalten ...)
  \item<3-> Salvager: Testet und repariert Verwaltungsstrukturen
    ("ahnlich \texttt{fsck}).
  \end{itemize}
\end{frame}

% ---------------------------------------------------------------------

\begin{frame}
  
  \frametitle{Database Server}

  \begin{itemize}
  \item<1-> DB Server sind untereinander vernetzt.
  \item<2-> Einstiegspunkt f"ur Clients.
  \item<3-> Verwaltung der DB Server in \texttt{CellServDB} oder per
    DNS beim Client.
  \item<4-> Tauschen Infos "uber UBIK Protokoll aus.
  \item<5-> Absoluter Gleichlauf der internen Server Uhren
    erforderlich.
  \end{itemize}
\end{frame}

% ---------------------------------------------------------------------

\begin{frame}
  
  \frametitle{Database Server, cont.}

  Database Server verwalten folgende Datenbanken:

  \begin{itemize}
  \item<1-> Protection Database
    \begin{itemize}
    \item<1-> Verwaltet Benutzer der Zelle und Gruppen.
    \end{itemize}
  \item<2-> Volume Database
    \begin{itemize}
    \item<2-> F"uhrt Buch "uber Volumes auf Dateiservern.
    \item<2-> Speichert Liste mit IPs des Dateiservers.
    \end{itemize}
  \item<3-> Backup Database
    \begin{itemize}
    \item<3-> verwaltet das AFS Backup System (Tapes).
    \end{itemize}
  \item<4-> Kerberos Database (veraltet)
    \begin{itemize}
    \item<4-> Arbeitet mit KerberosIV DB.
    \item<4-> Verwaltet Namen und Passw"orter der Benutzer einer AFS
      Zelle.
    \end{itemize}
  \end{itemize}
\end{frame}

% ---------------------------------------------------------------------

\section{Installation, Wartung}

\begin{frame}
  
  \frametitle{Setup}

  \begin{itemize}
  \item<1-> Das Aufsetzen einer AFS Zelle ist deutlich schwerer, als
    z.B. das Anlegen einer SMB-Share oder NFS Exports.
  \item<2-> Kryptografische Absicherung mittels Kerberos erfordert
    hohen Aufwand.
  \item<3-> Nach Installation ist Admin Aufwand verh"altnism"a"sig
    gering.
  \end{itemize}
\end{frame}

% ---------------------------------------------------------------------


\begin{frame}
  
  \frametitle{Ben"otigte Dienste}

  \begin{itemize}
  \item<1-> Network Time Protocol (xntp)
  \item<2-> Domain Name System DNS.
  \item<3-> Kerberos V z.B. von MIT (eigener Kerberos IV Server
    \texttt{kaserver} ist eingebaut, sollte aber nicht mehr benutzt
    werden).
  \item<4-> Directory Service z.B. LDAP, NIS usw.
  \end{itemize}
  
\end{frame}

% ---------------------------------------------------------------------

\section{OpenAFS Implementation an der HSZ-T}
\begin{frame}
  
  \frametitle{AFS Zelle hsz-t.ch}
  
  \begin{itemize}
  \item<1-> Etwa 1500 Benutzer-Accounts.
  \item<2-> Jeder Account hat ein eigenes Volume, Quota 1 GB.
  \item<3-> 2 File Server mit insgesamt 1 TB Diskkapazit"at.
    \begin{itemize}
    \item<3-> Sun Solaris, Volumes unter ZFS, Sun V880.
    \item<3-> Linux OpenSUSE auf IBM Server.
    \end{itemize}
  \item<4-> 300 Clients: Solaris (Sun Ray Thinclients), Linux und Windows
    Clients.
  \item<5-> LDAP (Sun Java System Directory server), MIT Kerberos 
  \item<6-> TCL-Scripts f"ur Benutzerverwaltung (AFS, LDAP, Kerberos, Samba)
  \item<7-> Passwordsynchronisation "uber Webapplikation (Samba NT Domain
    und Kerberos Passw"orter).
  \end{itemize}
\end{frame}

% ---------------------------------------------------------------------

\begin{frame}
  
  \frametitle{Dunkle Ecken}
  
  \begin{itemize}
  \item<1-> ACLs nur f"ur Verzeichnisse. Auch sonst ist das Konzept
    veraltet.
  \item<2-> Neuere SSH Server erhalten keinen g"ultigen Token (Linux).
  \item<3-> RW Volumes k"onnen nicht repliziert werden.
  \item<4-> Gruppen k"onnen keine Gruppen beinhalten.
  \item<5-> Samba und Apache k"onnen nur bedingt mit AFS umgehen
    (Tokens).
  \end{itemize}
\end{frame}

% ---------------------------------------------------------------------


\end{document}
