Ce chapitre donne un aperçu du produit SEAM.
SEAM (Sun Enterprise Authentication Mechanism ou mécanisme d'authentification pour l'entreprise de Sun) est une architecture client/serveur assurant l'authentification efficace des utilisateurs, en plus de garantir l'intégrité et la confidentialité des données, préservant ainsi la sécurité des transactions effectuées par l'intermédiaire de réseaux. L'authentification permet de vérifier l'identité de l'expéditeur et du destinataire entre lesquels s'effectue une transaction par réseau ; SEAM peut également vérifier la validité des données acheminées dans les deux sens (l'intégrité) et les chiffrer pendant leur transmission (la confidentialité). Grâce à SEAM, vous pouvez vous connecter à d'autres systèmes, exécuter des commandes, échanger des données et transférer des données en toute sécurité. De plus, SEAM assure les services d'autorisation, permettant ainsi aux administrateurs de limiter l'accès aux services et aux ordinateurs ; qui plus est, les utilisateurs de SEAM peuvent eux aussi réglementer l'accès d'autrui à leur compte.
SEAM est un système de type session à connexion unique, ce qui veut dire que vous ne vous identifiez auprès de SEAM qu'une seule fois par session, après quoi toute autre transaction que vous effectuez pendant la session est automatiquement sécurisée. Dès que SEAM vous a authentifié, vous n'avez plus à vous authentifier lorsque vous exécutez une commande comme ftp ou rsh ou que vous accédez aux données d'un système de fichiers NFS. Cela signifie que vous n'avez pas à transmettre votre mot de passe sur le réseau et risquer qu'il soit intercepté chaque fois que vous utilisez de tels services.
SEAM est basé sur le protocole d'authentification réseau Kerberos V5 développé par le Massachusetts Institute of Technology (MIT). Les habitués de Kerberos V5 ne devraient éprouver aucune difficulté avec SEAM. Étant donné que Kerberos V5 constitue une norme de facto de l'industrie en ce qui concerne la sécurité de réseau, SEAM met en valeur l'interopérabilité avec d'autres systèmes. Autrement dit, puisque SEAM fonctionne avec tout système utilisant Kerberos V5, il assure la sécurité des transactions entre réseaux hétérogènes. Qui plus est, SEAM assure l'authentification et la sécurité entre des domaines et à l'intérieur d'un même domaine.
SEAM étant basé sur Kerberos V5 et conçu pour fonctionner avec ce dernier, le présent manuel utilise presque indifféremment les termes "Kerberos" et "SEAM" -- par exemple, "secteur Kerberos" ou "utilitaire SEAM." (En outre, "Kerberos" et "Kerberos V5" sont également des synonymes.) Ce manuel établit au besoin la distinction entre ces termes.
SEAM assure la souplesse d'exécution des applications Solaris. Vous pouvez configurer SEAM pour qu'il autorise les requêtes SEAM et non SEAM au niveau des services de réseau tels que NFS, telnet et ftp. Le bon fonctionnement des applications Solaris actuelles est ainsi assuré, même lorsqu'elles sont exécutées sur des systèmes où SEAM n'a pas été installé. Bien entendu, vous pouvez également configurer SEAM de façon à ce qu'il ne permette que les requêtes basées sur SEAM.
De surcroît, il n'est pas nécessaire que les applications soient liées exclusivement à SEAM, si d'autres mécanismes de sécurité sont mis au point. SEAM étant conçu pour une intégration modulaire à l'interface GSS-API, les applications se servant de cette interface peuvent opter pour le mécanisme de sécurité répondant le mieux à leurs besoins.
Voici un aperçu du système d'authentification SEAM. Pour une description plus détaillée, voir "Comment fonctionne le système d'authentification".
Une fois la session SEAM démarrée, SEAM est la plupart du temps invisible aux yeux de l'utilisateur. Quant au fonctionnement des commandes comme rsh ou ftp, il demeure à toute fin pratique inchangé. L'initialisation d'une session SEAM ne consiste guère plus qu'à se connecter et à fournir un mot de passe Kerberos.
Le système SEAM s'articule autour du concept de ticket. Un ticket est un ensemble de renseignements électroniques servant à identifier un utilisateur ou un service, par exemple le service NFS. À l'instar du permis de conduire qui comporte des renseignements sur le détenteur et les classes de véhicule permises, le ticket identifie l'utilisateur et ses privilèges d'accès au réseau. Quand vous effectuez une transaction SEAM -- par exemple lorsque vous vous connectez à un autre ordinateur par l'intermédiaire de rlogin -- vous envoyez de façon transparente une demande de ticket à un centre de distribution de clés, ou KDC, qui accède à une base de données afin d'authentifier votre identité. Le KDC retourne un ticket vous permettant d'accéder à l'autre ordinateur. Le terme "transparence" signifie que vous n'avez pas à formuler explicitement une demande de ticket ; cette demande fait partie de la commande rlogin. Étant donné que seul le client authentifié peut obtenir un ticket pour utiliser un service précis, aucun autre client ne peut se servir de rlogin en se présentant sous une fausse identité.
Certains attributs sont associés au ticket. Par exemple, il peut s'agir d'un transférable (pouvant être utilisé sur un autre ordinateur sans se soumettre à nouveau au processus d'authentification), ou d'un postdaté (non valide avant l'heure et la date indiquée). Les politiques définies au moment de l'installation ou de l'administration de SEAM régissent l'utilisation des tickets, par exemple, les utilisateurs pouvant obtenir certains types de tickets.
Les termes justificatif d'identité et ticket sont repris fréquemment dans le présent manuel. La grande communauté Kerberos emploie ces termes indifféremment. En principe, un justificatif d'identité est composé d'un ticket et d'une clé de session. "Accès à un service avec SEAM" établit clairement la différence entre ces deux termes.
Les sections ci-après décrivent brièvement le processus d'authentification SEAM.
L'authentification Kerberos s'effectue en deux étapes : l'authentification initiale permettant toutes les authentifications subséquentes, et les authentifications subséquentes elles-mêmes.
Figure 1-1 montre comment se produit l'authentification initiale :

Le client (un utilisateur ou un service comme NFS) ouvre une session SEAM en demandant un ticket d'octroi de tickets (TGT) au centre de distribution de clés. Cela se produit la plupart du temps de façon automatique au moment de la connexion.
Il est nécessaire de détenir un ticket d'octroi de tickets pour obtenir d'autres tickets donnant droit à d'autres services particuliers. On peut établir une analogie entre le ticket d'octroi de tickets et un passeport. Tout comme un passeport, le ticket d'octroi de tickets vous identifie et vous permet d'obtenir de nombreux "visas" -- ces "visas" (ou tickets) ne sont pas destinés à des pays étrangers, mais plutôt à des ordinateurs distants ou à des services de réseau. À l'instar des passeports et des visas, le ticket d'octroi de tickets et les divers autres tickets ont une durée de vie limitée. La différence réside dans le fait que les commandes "compatibles Kerberos" savent que vous détenez un passeport et qu'elles peuvent obtenir les visas nécessaires à votre place -- c'est-à-dire que vous n'avez pas à effectuer les transactions vous-même.
Le KDC crée un ticket d'octroi de tickets et le retourne sous forme chiffrée au client. Le client le déchiffre alors à l'aide de son mot de passe.
Maintenant qu'il détient un ticket d'octroi de tickets valide, le client peut demander des tickets pour des opérations de réseau de toutes sortes, comme rlogin ou telnet, tant et aussi longtemps que dure le ticket d'octroi de tickets. En règle générale, ce dernier a une durée de vie de quelques heures. Chaque fois que le client effectue une opération de réseau unique, il demande un ticket pour cette opération au KDC.
Une fois que le client a reçu l'authentification initiale, chaque authentification individuelle respecte le modèle illustré à la Figure 1-2 :

Le client demande un ticket pour un service particulier (par exemple, pour se connecter avec rlogin à un autre ordinateur) au KDC, auquel il envoie son ticket d'octroi de tickets à titre de preuve de son identité.
Le KDC envoie le ticket pour le service particulier au client.
Supposons par exemple que l'utilisateur jean utilise le service rlogin du serveur montreal. Étant donné qu'il est déjà authentifié (c'est-à-dire qu'il détient déjà un ticket d'octroi de tickets), l'utilisateur obtient automatiquement et de façon transparente un ticket faisant partie de la commande rlogin. Ce ticket lui permet de se connecter à montreal avec rlogin autant de fois qu'il lui plaît jusqu'à ce que le ticket expire. Si jean désire se connecter à l'ordinateur denver à l'aide de rlogin, il obtient un autre ticket, comme à l'étape 1.
Le client envoie le ticket au serveur.
Le serveur autorise l'accès au client.
En examinant de près ces étapes, vous avez peut-être remarqué que le serveur semble ne jamais communiquer avec le KDC. Ce n'est pas le cas : il s'enregistre auprès du KDC, tout comme le premier client. Pour simplifier les choses, nous avons omis cette partie.
Quelles sont les commandes SEAM (ou "compatibles Kerberos") qu'un utilisateur tel que jean peut utiliser ? Ce sont :
ftp
rcp
rlogin
rsh
telnet
Ces applications sont semblables aux applications Solaris portant le même nom, sauf qu'elles utilisent des principaux Kerberos pour authentifier les transactions, assurant ainsi une sécurité de niveau Kerberos. (Voir "Principaux" au sujet des principaux.)
Ces commandes sont examinées plus en détail dans "Commandes de SEAM".
Un client de SEAM est identifié par son principal. Un principal a une identité unique à laquelle le KDC peut attribuer des tickets. Un principal peut être un utilisateur, jean par exemple, ou un service, comme nfs ou telnet.
Par convention, un nom de principal se compose de trois parties : le primaire, l'instance et le secteur. Un exemple typique de principal SEAM serait jean/admin@FRA.ACME.COM, où
jean constitue le primaire. Ce nom peut être un nom d'utilisateur, comme dans le présent exemple, ou encore un service comme nfs. Le primaire peut également être le mot host (hôte), signifiant ainsi qu'il s'agit d'un principal de service défini dans le but de fournir divers services de réseau ( ftp, rcp, rlogin, etc.).
admin représente l'instance. Facultative dans le cas des principaux d'utilisateurs, l'instance est obligatoire pour les principaux de service. Par exemple : si l'utilisateur jean agit parfois à titre d'administrateur de système, il peut utiliser jean/admin afin de se différencier de son identité d'utilisateur ordinaire. De la même façon, si jean possède un compte auprès de deux hôtes différents, il peut utiliser deux noms de principal dont l'instance diffère (par exemple, jean/denver.acme.com et jean/montreal.acme.com). Remarquez que SEAM traite jean et jean/admin comme deux principaux entièrement distincts.
Dans le cas d'un principal de service, l'instance est le nom complet de l'hôte. superordinateur.fra.acme.com constitue un exemple d'une telle instance, et primaire/instance pourrait être ftp/superordinateur.fra.acme.com ou host/superordinateur.fra.acme.com.
FRA.ACME.COM représente le secteur SEAM. La notion de secteur est abordée dans "Secteurs".
Voici des exemples de noms de principaux valides :
jean
jean/admin
jean/admin@FRA.ACME.COM
ftp/host.fra.acme.com@FRA.ACME.COM
host/fra.acme.com@FRA.ACME.COM
Un secteur consiste en un réseau logique, comme un domaine, définissant un groupe de systèmes régis par le même KDC maître (voir ci-dessous). Figure 1-3 montre la relation existant entre les différents secteurs. Certains secteurs sont de type hiérarchique (l'un constituant un surensemble comprenant l'autre). Autrement, les secteurs sont de type non hiérarchique, et le mappage entre deux secteurs doit être défini. SEAM possède la caractéristique de pouvoir assurer l'authentification entre les secteurs ; chaque secteur n'a besoin que d'une seule entrée de principal correspondant à l'autre secteur dans son KDC.

Chaque secteur doit inclure un serveur dans lequel est conservée une copie maîtresse de la base de données des principaux. Ce serveur porte le nom de serveur KDC maître. De plus, chaque secteur doit contenir au moins un serveur KDC esclave, contenant des copies de la base de données des principaux. Les serveurs KDC maître et esclaves créent des tickets servant à établir l'authentification.
Le secteur peut également contenir deux autres types de serveurs SEAM. Il peut s'agir d'un serveur d'applications de réseau SEAM fournissant l'accès aux applications compatibles Kerberos (comme ftp, telnet et rsh). Ce peut être également un serveur NFS assurant les services NFS à l'aide de l'authentification Kerberos.
Figure 1-4 montre le contenu d'un secteur hypothétique.

En plus d'assurer l'authentification sécurisée des utilisateurs, SEAM fournit deux services de sécurité :
Intégrité. Tout comme l'authentification permet de confirmer la véritable identité des clients dans un réseau, l'intégrité assure la validité des données qu'ils envoient et qu'elles n'ont pas été manipulées pendant leur transit. L'application de sommes de contrôle chiffrées aux données permet d'obtenir de tels résultats. L'intégrité porte également sur l'authentification de l'utilisateur.
Confidentialité. Le concept de confidentialité repousse un peu plus les limites de la sécurité. La confidentialité ne comprend pas seulement la vérification de l'intégrité des données transmises, mais également le chiffrement des données avant leur transmission, ce qui empêche les interceptions non autorisées. La confidentialité permet aussi d'authentifier les utilisateurs.
À cause des restrictions à l'exportation des É.-U., certains utilisateurs de SEAM peuvent ne pas pouvoir profiter du service de confidentialité.
À l'heure actuelle, parmi les différentes applications compatibles Kerberos intégrées à SEAM, seule la commande ftp permet aux utilisateurs de changer de service de sécurité pendant l'exécution ("en temps réel"). Les développeurs peuvent concevoir des applications RPC avec une interface de programmation RPCSEC-GSS permettant de sélectionner un service de sécurité.
Tout comme la version 5 de Kerberos du MIT, SEAM comprend les composantes suivantes :
Centre de distribution de clés (KDC) (maître) :
Démon d'administration de base de données Kerberos -- kadmind
Démon de traitement des tickets Kerberos -- krb5kdc
KDC esclaves
Programmes d'administration de base de données -- kadmin et kadmin.local
Logiciel de propagation de base de données -- kprop
Programmes destinés aux utilisateurs leur permettant d'obtenir, d'afficher et de détruire des tickets -- kinit, klist, kdestroy -- et de modifier leurs mots de passe SEAM -- kpasswd
Applications -- ftp, rcp, rlogin, rsh et telnet -- ainsi que les démons de ces applications -- ftpd, rlogind, rshd et telnetd
Utilitaires d'administration -- ktutil, kdb5_util
Plusieurs bibliothèques
SEAM inclut également les composantes suivantes :
L'Outil d'administration de SEAM (gkadmin) -- permet l'administration du KDC. Cet IUG Java(TM) permet à l'administrateur d'effectuer les tâches habituellement exécutées au moyen de la commande kadmin.
Le module d'authentification enfichable (PAM) -- Permet aux applications d'utiliser divers mécanismes d'authentification et rend transparentes les ouvertures et les fermetures de session à l'utilisateur.
L'utilitaire (gsscred) et le démon (gssd) -- Ces programmes permettent de mapper des UID UNIXTM à des noms de principal. Ces composantes sont nécessaires, car les serveurs NFS SEAM utilisent des ID UNIX pour identifier les utilisateurs et non les noms de principaux, qui sont stockés ensemble dans un format différent.
La structure GSS-API -- Cette interface de programmation d'application de sécurité générique (GSS-API) permet aux applications d'utiliser de multiples mécanismes de sécurité sans être recompilées lorsqu'un nouveau mécanisme est ajouté. Elle s'utilise avec n'importe quel ordinateur et est donc idéale pour les applications sur Internet. GSS-API confère aux applications la capacité d'inclure des services de sécurité tels que l'intégrité, la confidentialité et l'authentification.
L'interface de programmation d'application (API) RPCSEC_GSS -- Permet aux service NFS de recourir à l'authentification Kerberos. RPCSEC_GSS est un nouveau type de sécurité assurant des services de sécurité indépendants des mécanismes utilisés ; RPCSEC_GSS est situé "au-dessus" de la couche GSS-API. Les applications utilisant PRCSEC-GSS peuvent se servir de n'importe quel mécanisme de sécurité GSS-API enfichable.
Une procédure de préconfiguration -- Vous permet de définir les paramètres d'installation et de configuration de SEAM et d'automatiser son installation. Cette procédure s'avère particulièrement utile dans le cas d'installations multiples.
Modifications du noyau -- Augmente les performances.