introduction aux ROLES / RBAC
par
popularité : 3%
Auteur : Rigobert MISSINHOUN
CONFIGURATION
DU RBAC
I
– GENERALITES - DEFINITIONS
Le Rôle Based Access
Control (RBAC) est une alternative au modèle binaire du
superutilisateur (tout ou rien). Il utilise le principe de sécurité
du moindre privilège (aucun utilisateur ne devrait avoir plus
de privilèges que nécessaire pour l’exécution
d’un travail donné) et donne la possibilité de
séparer les capacités des superutilisateurs et de les
affecter à des utilisateurs spécifiques ou à des
comptes utilisateurs spéciaux appelés rôles.
I – 1) Les rôles
Exemples : administrateur
du système, administrateur du réseau, opérateur
Un rôle, c’est le
pouvoir d’exécuter des commandes et applications
spécifiques.
Les rôles sont associés
à un profil de droits. Le profil des droits donne la liste des
droits affectés aux rôles pour que ces mêmes rôles
puissent exécuter des commandes et applications spécifiques.
Les utilisateurs, rôles,
profils et commandes privilégiées sont définis
dans quatre bases de données.
Un rôle est une identité
spéciale pour l’exécution d’applications ou
de commandes privilégiées qui ne peut être
assumée que par des utilisateurs affectés.
Pas de rôles pré-définis
dans Solaris9 OE. Pour définir un rôle, on affecte le
profil des privilèges au rôle.
I – 2) Profils des droits
Un profil ou profil de
privilèges ou encore privilège est une collection de
privilèges qui peut être affectée à un
rôle ou à un utilisateur.
Un profil des droits peut
consister en autorisations, commandes avec des perissions setuid ou
setguid (appelés attributs de sécurité), et
d’autres profils de droits.
Solaris9 OE est équipé
de nombreux exemples de profils de droits, à utiliser comme
base pour créer ses propres profils.
Exemples
All : Fournit un accès
des rôles aux commandes sans attributs de sécurité ;
Primary Administrator :
conçu spécifiquement pour le rôle de 1er
administrateur (root) ;
Systeme Administrator :
conçu spécifiquement pour le rôle
d’administrateur système, il utilise des profils
supplémentaires discrets pour créer un rôle
puissant.
Operator : rôle de
l’opérateur, utilise quelques profils supplémentaires
discrets pour créer un rôle élémentaire ;
Basic Solaris User :
destiné aux tâches non relatives à la sécurité.
Printer management :
réservé au seul domaine de l’administration de
l’imprimante.
Les profils des droits
comprennent un pointeur vers des fichiers d’aide en HTML
présents dans le répertoire
/usr/lib/help/auths/locale/C.
I – 3) Autorisations
Une autorisation est une
permission que l’on peut affecter à un utilisateur ou à
un rôle. On peut imbriquer une autorisation dans un profil des
droits.
En général on ne
peut pas définir de nouvelles autorisations.
Exemples de rôles et d’autorisations et leurs relations
operator :
solaris.admin.usermgr.read
accès en lecture aux fichiers de configuration des
utilisateurs.
admin Sys :
solaris.admin.usermgr, solaris.admin.usermgr.write,
solaris.admin.usermgr.pswd
Une autorisation se terminant
avec le suffixe grant permet à un utilisateur ou rôle de
déléguer à d’autres utilisateurs toute
autorisation affectée commençant par le même
préfixe.
Exemples
solaris.admin.usermgr.grant et
solaris.admin.usermgr.read
solaris.admin.usermgr.grant et
solaris.admin.usermgr
I – 4) Administrator
Profile Shells
Lorsqu’un utilisateur
exécute la commande su pour assurer un rôle, des shells
des profils sont lancés depuis l’intérieur du
shell parent.
Les shells des profils sont
pfsh, pfcsh, pfksh pour respectivement le Bourne, le C, et le Korn
shells
Un shell de profil est un type
de shell spécial qui donne accès aux applications
privilégiées qui sont affectées au profil.
La commande ou application
privilégiée sont exécutées avec les
attributs spécifiés dans la base de données par
la commande pfexec.
Chaque shell de profil et son
shell normal correspondant sont enracinés/implémentés
dans la même commande.
Exemple
# ls –i
/usr/bin/sh /usr/bin/pfsh
247742 /usr/bin/pfsh 247742 /usr/bin/sh
II – LES BASES DE DONNEES RBAC
II – 1) La base de données attributs des utilisateurs /etc/user_attr
Elle associe les utilisateurs et
les rôles aux autorisations et aux profils de droits en plus
des fichiers /etc/passwd, /etc/group et /etc/shadow. Elle associe
aussi les utilisateurs à leurs rôles.
Chaque entrée de cette
base comporte cinq champs séparés par « : »,
dont trois sont réservés à un usage futur ;
et a le format suivant :
user :qualifier :res1 :res2 :attr
où user est le nom de
l’utilisateur comme spécifié dans /etc/passwd
attr est une liste facultative
de paires de valeur-clé décrivant les attributs et
séparées par un point virgule. Il y a quatre clé
valides : type, auths, roles et profiles.
type
– peut être normal ou role. Un rôle est assuré
par un utilisateur normal après que celui-ci s’est
connecté.auths – spécifie
une liste de noms d’autorisations présentes dans la
base auth_attr.Profiles – spécifie
une liste de noms de profils présents dans /etc/prof_attr.Roles – spécifie
une liste de noms de rôles. Les rôles sont définis
dans la même base de données /etc/user_attr.
Les rôles ne peuvent être
affectés à d’autres rôles.
Exemple d’extrait d’un fichier /etc/user_attr
root : : : :type=normal ;auths=solaris.*,solaris.grant
sysadmin : : : :type=role ;profiles=Device
management, Filsystem Management, printer management
johndoe : : : :type=normal ;auths=solaris.system.date ;roles=sysadmin
II – 2) La base des
attributs des profils de droits (/etc/security/prof_attr)
Cette base de données
contient les profils des droits. Les profils comportent un nom, une
description, les autorisations et l’emplacement du fichier d’aide.
Chaque entrée a le format
suivant :
Profname :res1 :res2 :desc :attr
Où attr est une liste
facultative de paires de valeur-clé séparées par
des points virgules et qui décrit les attributs de sécurité
à appliquer à l’objet lors de l’exécution.
Deux clé sont valides : help et auths.
Exemple d’extraits de /etc/security/prof_attr
…
Printer management : : :Manage
printers, daemons, spooling : help=RtPrntAdmin.html ;
auths=solaris.admin.printer.read,solaris.admin.printer.modify,solaris.admin.printer.delete
Operator : : :can
perform simple administrative tasks :profiles=Printer
management,MediaBackup, All ;help=RtOperator.html
II – 3) La base de données des attributs d’exécution /etc/security/exec_attr
Un attribut d’exécution
associé à un profil est une commande ou un script
(sedul moyen d’ajouter des options à une commande).
Seuls les utilisateurs et les
rôles affectés à ce profil peuvent exécuter
la commande avec des attributs de sécurité spéciaux
Les attributs de sécurité
spéciaux désignent des attributs tels que UID, EUID,
GID et EGID qui peuvent être rajoutés à un
processus lorsque la commande est exécutée. Les
définitions des attributs d’exécution sont
stockés dans la base /etc/security/exec_attr.
Le format de chaque entrée
est :
Name :policy :type :res1 :res2 :id :attr
Où . name : le nom
du profil
. policy : la politique de
sécurité associée à cette entrée.
Le suser (modèle de politique du superutilisateur) est
l’unique valeur valide.
. type : le type d’entrée
dont les attributs sont spécifiés. Seul type valide :
cmd (commande).
. id : chaîne
identifiant l’entité. * est valide. Les commandes
devraient avoir le chemin entier ou un chemin avec un méta-caractère.
Pour spécifier les arguments, il faut écrire un script
. attr : liste facultative
de paires de valeur-clé qui décrit les attributs de
sécurité. La liste des mots-clés dépend
de la politique en vigueur. Il y a quatre clés valides :
euid, uid, egid, gid.
euid
et uid – contiennent un seul nom d’utilisateur ou une ID
d’utilisateur numérique. Les commandes désignées
par euid s’exécutent avec l’UID effectif indiqué
(un peu comme si on positionnait le setuid sur un fichier
exécutable). Les commandes désignées par uid
s’exécutent avec à la fois les UID réels
et effectifs réglés sur l’UID de son choix.
- egid et gid : similaires.
Exemple d’extrait de /etc/security/exec_attr
…
Printer
management :suser :cmd : : :/usr/sbin/accept :euid=lp
Printer
management :suser :cmd : : :/usr/ucb/lpq :euid=0
Printer
management :suser :cmd : : :/etc/init.d/lp:euid=0
Printer
management :suser :cmd : : :/usr/lib/lp/lpsched :uid=0
…
II – 4) La base de données des attributs d’autorisations
Une autorisation est une
caractéristique RBAC qui donne accès à des
fonctions limitées.
On ne peut pas créer de
nouvelles autorisations. Mais les programmeurs système peuvent
créer et affecter des autorisations aux applications.
On peut affecter les
autorisations directement aux utilisateurs ou aux rôles dans la
base de données /etc/user_attr. On peut aussi affecter des
autorisations aux profils de droits qui à leur tour son
affectés aux rôles.
Chaque entrée de cette
base a le format suivant :
Autname :res1 :res2 :short_desc :long_desc :attr
Authname est une chaîne de
caractères unique identifiant l’autorisation dans le
format prefix.suffix[.].Las autorisations pour Solaris OE utilisent
solaris comme préfixe. Toutes les autres autorisations
utilisent un préfixe qui commence avce, dans l’odre
inverse, le nom du domaine internet de l’organisation qui crée
l’autorisation (par exemple com.oracle). Le suffixe indique ce
qui est autorisé, généralement la zone
fonctionnelle et l’opération.
Lorsqu’il n’y a pas
de suffixe (finit par un point), le authname sert d’intitulé
pour l’utilisation par les applications dans leur GUI plutôt
qu’une autorisation.
Attr : liste facultative de
paires de valeur-clé qui décrit les attributs d’une
autorisation. Par exemple le mot-clé help identifie un fichier
d’aide.
Exemple d’extrait
…
solaris.* : : :Primary
Administrator : :help=PriAdmin.html
…
solaris.system.date : : :set
date & Time : :help=sysdate.html
II – 5) Le fichier /etc/security/policy.conf
Ce fichier permet d’accorder
des profils de droits et des autorisations spécifiques à
tous les utilisateurs.
Les deux types d’entrées
dans ce fichier consistent en des paires de valeur-clé, comme
suit :
AUTHS_GRANTED=authorizations
Où authorizations désigne
un ou plusieurs autorisations
PROF_GRANTED=right_profiles
Où right_profiles désigne
un ou plusieurs profils de droits
Exemple d’extrait
# cat /etc/security/policy.conf
#
#
AUTHS_GRANTED=solaris.device.cdrw
PROFS_GRANTED=Basic Solaris User
Notes :
1) L’autorisation
solaris.device.cdrw fournit l’accès à la commande
cdrw (voir /etc/security/auth_attr)
2) Le profil Basic Solaris User
accorde aux utilisateurs un accès à toutes les
autorisations inscrites (voir /etc/security/prof_attr).
Le champ profiles=All accorde un
accès sans limite à toutes les commandes de Solaris OE
qui n’ont pas été limitées par une
définition dans une autorisation inscrite auparavant.
III – GESTION DE RBAC EN LIGNE DE COMMANDES
Lors de la configuration de
RBAC, les dépendances qui demandent une adhésion
stricte à une séquence de configuration définie
lorsqu’elles utilisent le GUI ne sont pas présentes.
Mais il faut maintenir et respecter les dépendances entre les
fichiers et les bases de données pour que RBAC puisse
fonctionner convenablement.
Trois principales commandes sont
utilisées :
roleadd – ajoute un
compte rôle sur le système ;rolemod – modifie
l’information de la connexion d’un rôle ;useradd – ajoute un
compte utilisateur sur le système
III – 1) Ajout d’un rôle
La commande roleadd ajoute une
entrée aux fichiers /etc/passwd, /etc/shadow et
/etc/user_attr. Elle utilise fréquemment les options
suivantes :
-c comment : brève
description du rôle
-d dir : répertoire
local du rôle
-m : créer le
répertoire local si c’est nécessaire
-A authorization : affecter
respectivement des autorisations et des profils au rôle.
-P profile
Exemple
# roleadd –m –d
/export/home/tarback –c « Privileged tar backup
role » -P « Media backup, Media restore »
tarback
Cet exemple suppose que Media
backup et Media restore existent dans /etc/security/prof_attr et
/etc/security/exec_attr sinon il faut les éditer pour les y
inclure.
III – 2) Modification d’un
rôle
Les options les plus fréquentes
sont :
-A authorization : une ou
plusieurs autorisations séparées par une virgule
-e expire : Date d’expiration
pour un rôle
-l new_logname : nouveau nom de
connexion
-P profile : un ou plusieurs
profiles séparés par une virgule
-s shell
Exemple :
# rolemod –A auth1,auth2
–P profile1,profile2
III – 3) Ajout d’un
utilisateur
La commande useradd ajoute un
nouvel utilisateur avec des autorisations et des profils aux fichiers
/etc/passwd, /etc/shadow et /etc/user_attr.
Voici quelques options
intéressantes :
-c comment
-d dir
-m
-s shel
-R role : spécifie un ou
plusieurs profils d’exécution séparés par
une virgule définis dans user_attr
-A authorization
-P profils
Exemple
# useradd –m –d
/export/home/usera –c « user account usera »
– s /usr/bin/ksh –R tarback usera
III – 4) Commandes supplémentaires pour effectuer des fonctions RBAC
Commande |
Description |
auths |
Affiche |
makedbm |
Fait |
nscd |
Identifie |
pam_roles |
Identifie |
pfexec |
Identifie |
Policy.conf |
|
profiles |
Affiche |
roles |
Affiche |
roleadd |
|
roledel |
|
rolemod |
|
useradd, |
|
Auteur : Rigobert MISSINHOUN