Manuel de suivi dynamique Solaris

Chapitre 35 Sécurité

Ce chapitre décrit les privilèges dont peuvent user les administrateurs système pour permettre à des utilisateurs ou des processus particuliers d'accéder à DTrace. DTrace assure la visibilité de tous les aspects du système, y compris les fonctions de niveau utilisateur, les appels système, les fonctions du noyau, etc. et repose sur de puissantes actions dont certaines peuvent modifier l'état d'un programme. Comme il ne serait pas approprié d'accorder un accès utilisateur aux fichiers privés d'un autre utilisateur, un administrateur système ne doit pas autoriser chaque utilisateur à accéder à toutes les fonctionnalités de DTrace. Par défaut, seul un superutilisateur peut utiliser DTrace. Vous pouvez utiliser la fonction Privilège minimum pour permettre à d'autres utilisateurs d'utiliser DTrace de manière contrôlée.

Privilèges

La fonction Privilège minimum de Solaris permet aux administrateurs d'accorder des privilèges spécifiques à des utilisateurs particuliers de Solaris. Pour accorder à un utilisateur un privilège à la connexion, insérez dans le fichier /etc/user_attr une ligne similaire à l'exemple suivant :

user-name::::defaultpriv=basic,privilege

Pour accorder à un processus en cours d'exécution un privilège supplémentaire, utilisez la commande ppriv(1) :


# ppriv -s A+privilege process-ID

Les trois privilèges qui contrôlent un accès utilisateur aux fonctionnalités de DTrace sont dtrace_proc, dtrace_user et dtrace_kernel. Chaque privilège permet d'utiliser un certain ensemble de fournisseurs, actions et variables de DTrace qui correspondent tous à un type particulier d'utilisation de DTrace. Les modes de privilèges sont décrits en détails dans les sections suivantes. Les administrateurs système doivent évaluer soigneusement les besoins de chaque utilisateur par rapport à la visibilité et à l'incidence sur les performances des différents modes de privilèges. Les utilisateurs doivent disposer d'au moins l'un des trois privilèges de DTrace pour pouvoir en utiliser les fonctionnalités.

Utilisation privilégiée de DTrace

Les utilisateurs dotés de l'un des trois privilèges de DTrace peuvent activer les sondes fournies par le fournisseur dtrace (voir le Chapitre17Fournisseur dtrace) et peuvent utiliser les actions et les variables suivantes :

Fournisseurs 

dtrace

   

Actions 

exit

printf

tracemem

discard

speculate

 

printa

trace

 

Variables 

args

probemod

this

epid

probename

timestamp

id

probeprov

vtimestamp

probefunc

self

 

Espaces d'adressage 

Aucune 

 

 

Privilège dtrace_proc

Le privilège dtrace_proc permet d'utiliser le fournisseur fasttrap pour assurer le suivi au niveau des processus. Il permet également d'utiliser les actions et variables suivantes :

Actions 

copyin

copyout

stop

copyinstr

raise

ustack

Variables 

execname

pid

uregs

Espaces d'adressage 

Utilisateur 

 

 

Ce privilège n'accorde aucune visibilité aux structures de données du noyau de Solaris ou aux processus pour lesquels l'utilisateur ne possède aucun droit.

Les utilisateurs possédant ce privilège peuvent créer et activer des sondes dans les processus qu'ils détiennent. Si l'utilisateur dispose également du privilège proc_owner, il est possible de créer et d'activer des sondes dans n'importe quel processus. Le privilège dtrace_proc est dédié aux utilisateurs intéressés par le débogage ou l'analyse des performances des processus utilisateur. Ce privilège convient parfaitement à un développeur qui travaille sur une nouvelle application ou à un ingénieur qui essaie d'améliorer les performances d'une application dans un environnement de production.


Remarque –

Les utilisateurs possédant les privilèges dtrace_proc et proc_owner peuvent activer n'importe quelle sonde pid depuis n'importe quel processus. Par contre, ils ne peuvent créer de sondes que dans les processus dont l'ensemble de privilèges est un sous-ensemble de leur propre ensemble de privilèges. Reportez-vous à la documentation sur le Privilège minimum pour plus d'informations.


Le privilège dtrace_proc permet un accès à DTrace tout en imposant une pénalité de performances sur les processus pour lesquels l'utilisateur possède des droits uniquement. Les processus instrumentés imposent une charge supplémentaire sur les ressources système et, de ce fait, il peut en résulter une légère incidence sur les performances globales du système. Hormis cette augmentation de la charge globale, ce privilège n'offre aucune instrumentation se répercutant sur les performances des processus autres que les processus suivis. Comme ce privilège n'accorde aux utilisateurs aucune visibilité supplémentaire sur les autres processus ou le noyau lui-même, il est recommandé d'octroyer ce privilège à tous les utilisateurs qui pourraient nécessiter une meilleure compréhension des tâches internes de leurs propres processus.

Privilège dtrace_user

Le privilège dtrace_user permet l'utilisation des fournisseurs profile et syscall avec certaines remarques, ainsi que des actions et variables suivantes :

Fournisseurs 

profil

syscall

fasttrap

Actions 

copyin

copyout

stop

copyinstr

raise

ustack

Variables 

execname

pid

uregs

Espaces d'adressage 

Utilisateur 

 

 

Le privilège dtrace_user n'offre une visibilité que sur les processus pour lesquels l'utilisateur possède déjà des droits et n'offre aucune visibilité sur l'activité ou l'état du noyau. Avec ce privilège, les utilisateurs peuvent activer le fournisseur syscall mais les sondes activées ne s'activeront que dans les processus pour lesquels l'utilisateur possède des droits. Il est possible, de la même manière, d'activer le fournisseur profile mais les sondes activées ne s'activeront que dans les processus pour lesquels l'utilisateur possède des droits et jamais dans le noyau de Solaris.

Ce privilège permet l'utilisation d'une instrumentation qui, tout en offrant uniquement une visibilité dans des processus particuliers, peut affecter les performances globales du système. Le fournisseur syscall a une faible incidence sur les performances de chaque appel système de chaque processus. Le fournisseur profile affecte les performances globales du système en s'exécutant à intervalle régulier comme une horloge en temps réel. Aucune de ces baisses de performances n'est suffisamment importante pour limiter sérieusement la progression du système mais les administrateurs système doivent prendre en compte les implications de l'octroi de ce privilège à un utilisateur. Pour plus d'informations relatives à l'incidence sur les performances des fournisseurs syscall et profile, reportez-vous au Chapitre21Fournisseur syscall et au Chapitre19Fournisseur profile.

Privilège dtrace_kernel

Le privilège dtrace_kernel permet l'utilisation de tous les fournisseurs à l'exception de pid et fasttrap sur les processus que l'utilisateur ne détient pas. Ce privilège permet également d'utiliser toutes les actions et variables à l'exception des actions détruisant le noyau (breakpoint(), panic(), chill ()). Ce privilège offre une visibilité complète du noyau et de l'état des utilisateurs. Les fonctions qu'active le privilège dtrace_user constituent un sous-ensemble strict des fonctions activées par dtrace_kernel.

Fournisseurs 

Tous avec les restrictions ci-dessus 

 

Actions 

Toutes sauf les actions destructrices 

 

Variables 

Tous 

 

Espaces d'adressage 

Utilisateur 

Noyau 

Privilèges de superutilisateur

Un utilisateur possédant tous les privilèges peut utiliser tous les fournisseurs et toutes les actions, y compris celles qui détruisent le noyau et sont indisponibles à toutes les autres classes d'utilisateur.

Fournisseurs 

Tous 

 

Actions 

Toutes y compris les actions destructrices 

 

Variables 

Tous 

 

Espaces d'adressage 

Utilisateur 

Noyau