Guía de seguimiento dinámico de Solaris

Capítulo 35 Seguridad

Este capítulo describe los privilegios que pueden utilizar los administradores de sistemas para otorgar acceso a DTrace a usuarios o procesos determinados. DTrace habilita la visibilidad en todos los aspectos del sistema, incluyendo funciones a nivel de usuario, llamadas del sistema, funciones del núcleo, etc. Permite realizar potentes acciones, algunas de las cuales podrían modificar el estado de un programa. De la misma forma que no será adecuado permitir a un usuario que acceda a los archivos privados de otro, un administrador de sistemas no debe otorgar acceso total a todas las capacidades que incluye DTrace. De forma predeterminada, sólo el superusuario puede acceder a DTrace. La capacidad Privilegio menor puede utilizarse para permitir al resto de usuarios un uso controlado de DTrace.

Privilegios

La capacidad Privilegio menor de Solaris permite al administrador otorgar privilegios específicos a determinados usuarios de Solaris. Para otorgar a un usuario privilegios al iniciar sesión, inserte una línea en el archivo /etc/user_attr con el formato:

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

Para otorgar a un proceso en ejecución un privilegio adicional, utilice el comando ppriv(1):


# ppriv -s A+privilege process-ID

Los tres privilegios que controlan el acceso de un usuario a las características de DTrace son dtrace_proc, dtrace_user y dtrace_kernel. Cada privilegio permite el uso de un conjunto determinado de proveedores, acciones y variables de DTrace, y cada uno de ellos corresponde a un tipo de uso determinado de DTrace. En las siguientes secciones se describen de forma detallada los modos de privilegio. El administrador del sistema debe sopesar con cautela la necesidad de cada usuario frente a la visibilidad y el impacto en el rendimiento de los distintos modos de privilegio. Los usuarios necesitan al menos uno de los tres privilegios de DTrace a fin de utilizar alguna de las funciones de DTrace.

Uso con privilegios de DTrace

Los usuarios que cuenten con cualquiera de los tres privilegios de DTrace podrían habilitar los sondeos proporcionados por el proveedor dtrace (consulte el Capítulo 17Proveedor dtrace), y podrían utilizar las siguientes acciones y variables:

Proveedores 

dtrace

   

Acciones 

exit

printf

tracemem

discard

speculate

 

printa

trace

 

Variables 

args

probemod

this

epid

probename

timestamp

id

probeprov

vtimestamp

probefunc

self

 

Espacios de direcciones 

Ninguna 

 

 

Privilegio dtrace_proc

El privilegio dtrace_proc permite el uso de los proveedores fasttrap para realizar seguimientos en los procesos. Permite también el uso de las siguientes acciones y variables:

Acciones 

copyin

copyout

stop

copyinstr

raise

ustack

Variables 

execname

pid

uregs

Espacios de direcciones 

Usuario 

 

 

Este privilegio no otorga ningún tipo de posibilidad de ver las estructuras de datos del núcleo de Solaris ni los procesos sobre los que el usuario no tenga permisos.

Los usuarios que cuenten con este privilegio podrán crear y habilitar sondeos en los procesos que sean de su propiedad. Si el usuario cuenta también con el privilegio proc_owner, podrían crearse y habilitarse sondeos en cualquier proceso. El privilegio dtrace_proc está diseñado para aquellos usuarios que estén interesados en la depuración o el análisis de rendimiento de los procesos de usuario. Este privilegio es ideal para desarrolladores que estén trabajando en una nueva aplicación o para un ingeniero que esté intentando mejorar el rendimiento de una aplicación en el entorno de producción.


Nota –

Los usuarios que tengan los privilegios dtrace_proc y proc_owner podrán habilitar todos los sondeos pid desde cualquier proceso, pero sólo podrán crear sondeos en los procesos cuyo conjunto de privilegios sea un subconjunto de su propio conjunto de privilegios. Para obtener todos los detalles, consulte la documentación de Privilegio menor.


El privilegio dtrace_proc permite un acceso a DTrace que puede imponer una penalización de rendimiento sólo en aquellos procesos sobre los que el usuario tenga permisos. Los procesos instrumentados impondrán más carga en los recursos del sistema, y por lo tanto, podría tener un cierto impacto en el rendimiento global del sistema. Aparte de este aumento en la carga general, este privilegio no permite ningún tipo de instrumentación que afecte al rendimiento en ningún proceso que no sea aquél del que se está realizando el seguimiento. Ya que este privilegio no otorga a los usuarios visibilidad adicional sobre otros procesos ni sobre el núcleo, se recomienda que este privilegio se otorgue a todos los usuarios que pudieran necesitar una mejor comprensión de los entresijos de sus propios procesos.

Privilegio dtrace_user

El privilegio dtrace_user permite el uso de los proveedores profile y syscall, con algunas salvedades, y el uso de las siguientes acciones y variables:

Proveedores 

perfil

syscall

fasttrap

Acciones 

copyin

copyout

stop

copyinstr

raise

ustack

Variables 

execname

pid

uregs

Espacios de direcciones 

Usuario 

 

 

El privilegio dtrace_user proporciona visibilidad sólo a los procesos sobre los que el usuario ya cuenta con permisos; no permite ningún tipo de visibilidad del estado ni la actividad del núcleo. Con este privilegio, el usuario podrá habilitar al proveedor syscall, pero los sondeos habilitados sólo se activarán en los procesos sobre los que tenga permisos. Asimismo, el proveedor profile podría habilitarse, pero los sondeos habilitados sólo se activarán en los procesos sobre los que el usuario tenga permisos, nunca en el núcleo de Solaris.

Este privilegio permite el uso de instrumentación que, aunque sólo permite la visualización en determinados procesos, puede afectar al rendimiento global del sistema. El proveedor syscall tiene cierto impacto en el rendimiento de cada una de las llamadas de sistema para cada proceso. El proveedor profile afecta al rendimiento global del sistema realizando la ejecución en intervalos de tiempo, de forma parecida a un temporizador en tiempo real. Ninguna de estas reducciones de rendimiento es tan importante como para limitar gravemente el progreso del sistema pero el administrador del sistema debería considerar las implicaciones que conlleva otorgar este privilegio a un usuario. Consulte el Capítulo 21Proveedor syscall, y el Capítulo 19Proveedorprofile, para poder tener una opinión sobre las repercusiones en el rendimiento de los proveedores syscall y profile.

Privilegio dtrace_kernel

El privilegio dtrace_kernel permite el uso de todos los proveedores, a excepción del uso de los proveedores pid y fasttrap en procesos que no sean propiedad del usuario. Este privilegio permite también el uso de todas las acciones y variables, a excepción de acciones destructivas del núcleo (breakpoint(), panic(), chill ()). Este privilegio permite la total visibilidad del estado tanto del núcleo como del usuario. Las funciones que proporciona el privilegio dtrace_user son un estricto subconjunto de las que proporciona dtrace_kernel.

Proveedores 

Todos exceptuando las restricciones anteriores 

 

Acciones 

Todas menos acciones destructivas 

 

Variables 

Todas 

 

Espacios de direcciones 

Usuario 

Núcleo 

Privilegios del superusuario

Un usuario con todos los privilegios podría utilizar todos los proveedores y todas las acciones, incluyendo las acciones destructivas del núcleo, no disponibles para el resto de clases de usuario.

Proveedores 

Todas 

 

Acciones 

Todas, incluyendo acciones destructivas 

 

Variables 

Todas 

 

Espacios de direcciones 

Usuario 

Núcleo