introduction aux ROLES / RBAC

mercredi 17 septembre 2008
par  Jerome ROBERT
popularité : 6%


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
les autorisations pour un utilisateur

makedbm

Fait
un fichier dbm

nscd

Identifie
le démon du cache du service de noms. Utile pour « cacher »
les bd user_attr, prof_attr et exec_attr

pam_roles

Identifie
le module de gestion du compte role pour PAM (Pluggable
Auhtentication Module).Elle vérifie s’il y a
autorisation pour assumer un rôle.

pfexec

Identifie
les shells de profils utilisés pour exécuter des
commandes avec les attributs spécifiés dans la bd
exec_attr

Policy.conf

profiles

Affiche
les profiles pour un utilisateur spécifié

roles

Affiche
les rôles accordés à un utilisateur spécifié

roleadd


roledel


rolemod


useradd,
usermod et userdel








Auteur :  Rigobert MISSINHOUN



Navigation

Articles de la rubrique

Statistiques

Dernière mise à jour

mercredi 4 octobre 2023

Publication

273 Articles
Aucun album photo
Aucune brève
6 Sites Web
2 Auteurs

Visites

19 aujourd’hui
133 hier
827404 depuis le début
3 visiteurs actuellement connectés