Guia de rastreamento dinâmico Solaris

Capítulo 35 Segurança

Este capítulo descreve os privilégios que os administradores de sistema podem usar para conceder acesso ao DTrace a usuários ou processos específicos. O DTrace permite a visibilidade em todos os aspectos do sistema incluindo funções no nível do usuário, chamadas do sistema, funções do kernel, etc. Ele permite ações poderosas, algumas das quais podem modificar o estado do programa. Assim como seria inapropriado permitir que um usuário tivesse acesso aos arquivos privados de outro usuário, um administrador de sistema não deve conceder acesso completo a cada usuário para todos os recursos que o DTrace oferece. Por padrão, somente o super-usuário pode usar o DTrace. O recurso Least Privilege pode ser usado para permitir a outros usuários o uso controlado do DTrace.

Privilégios

O recurso Least Privilege do Solaris permite aos administradores concederem privilégios específicos a usuários específicos do Solaris. Para dar a um usuário um privilégio durante o logon, insira uma linha no arquivo /etc/user_attr no formato:

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

Para dar a um processo em execução um privilégio adicional, use o comando ppriv(1).


# ppriv -s A+privilege process-ID

Os três privilégios que controlam o acesso de um usuário aos recursos do DTrace são dtrace_proc, dtrace_user e dtrace_kernel. Cada privilégio permite o uso de um certo conjunto de provedores, ações e variáveis do DTrace, e cada um corresponde a um tipo específico de uso do DTrace. Os modos de privilégio são descritos em detalhes nas seções seguintes. Os administradores de sistema devem pesar cuidadosamente as necessidades de cada usuário em relação à visibilidade e o impacto no desempenho dos diferentes modos de privilégio. Os usuários precisam de pelo menos um dos três privilégios do DTrace para usar qualquer funcionalidade do DTrace.

Uso privilegiado do DTrace

Os usuários com qualquer um dos três privilégios do DTrace podem ativar os testes fornecidos pelo provedor dtrace (consulte o Capítulo 17Provedor do dtrace) e podem usar as seguintes ações e variáveis:

Provedores 

dtrace

   

Ações 

exit

printf

tracemem

discard

speculate

 

printa

trace

 

Variáveis 

args

probemod

this

epid

probename

timestamp

id

probeprov

vtimestamp

probefunc

self

 

Espaços de endereço 

Nenhum 

 

 

Privilégio dtrace_proc

O privilégio dtrace_proc permite usar o provedor fasttrap em rastreios no nível do processo. Ele também permite o uso das seguintes ações e variáveis:

Ações 

copyin

copyout

stop

copyinstr

raise

ustack

Variáveis 

execname

pid

uregs

Espaços de endereço 

Usuário 

 

 

Este privilégio não concede qualquer visibilidade às estruturadas de dados do kernel do Solaris ou aos processos para os quais o usuário não tem permissão.

Os usuários com esse privilégio podem criar e ativar testes nos processos que possuem. Se o usuário também possuir o privilégio proc_owner, os testes poderão ser criados e ativados em qualquer processo. O privilégio dtrace_proc destina-se a usuários interessados nas análises de depuração ou de desempenho dos processos do usuário. Esse privilégio é ideal para um desenvolvedor que está trabalhando em um novo aplicativo ou um engenheiro que está tentando aprimorar o desempenho de um aplicativo em um ambiente de produção.


Observação –

Os usuários com os privilégios dtrace_proc e proc_owner podem ativar qualquer teste pid a partir de quaisquer processos, mas podem somente criar testes em processos cujo privilégio definido é um subconjunto do seu próprio conjunto de privilégios. Consulte a documentação do Least Privilege para obter detalhes completos.


O privilégio dtrace_proc permite o acesso ao DTrace que pode impor uma penalidade de desempenho somente naqueles processos para os quais o usuário tem permissão. Os processos instrumentados irão impor mais carga nos recursos do sistema, sendo assim, pode haver um pequeno impacto no desempenho geral do sistema. Além desse aumento na sobrecarga geral, esse privilégio não permite qualquer instrumentação que impacte no desempenho de quaisquer processos que não estejam sendo rastreados. Como esse privilégio não concede aos usuários qualquer visibilidade adicional de outros processos ou do próprio kernel, recomenda-se que esse privilégio seja concedido a todos os usuários que possam precisar entender melhor o funcionamento interno dos seus próprios processos.

Privilégio dtrace_user

O privilégio dtrace_user permite o uso dos provedores profile e syscall com algumas precauções, e o uso das seguintes ações e variáveis:

Provedores 

profile

syscall

fasttrap

Ações 

copyin

copyout

stop

copyinstr

raise

ustack

Variáveis 

execname

pid

uregs

Espaços de endereço 

Usuário 

 

 

O privilégio dtrace_user fornece visibilidade apenas dos processos para os quais o usuário já tem permissão; ele não permite qualquer visibilidade do estado ou da atividade do kernel. Com esse privilégio, os usuários podem ativar o provedor syscall, mas os testes somente serão ativados nos processos para os quais o usuário tem permissão. Similarmente, o provedor profile pode ser ativado, mas os testes só serão ativados nos processos para os quais o usuário tem permissão, nunca no kernel do Solaris.

Esse privilégio permite o uso da instrumentação que, embora permita a visibilidade somente de processos específicos, pode afetar o desempenho geral do sistema. O provedor syscall possui um pequeno impacto no desempenho em cada chamada do sistema em cada processo. O provedor profile afeta o desempenho geral do sistema, executando cada intervalo de tempo, semelhante a um temporizador em tempo real. Nenhuma dessas degradações de desempenho é tão grande que limite gravemente o progresso do sistema, mas os administradores do sistema devem considerar as implicações de conceder esse privilégio a um usuário. Consulte o Capítulo 21Provedor syscall e o Capítulo 19Provedor profile para ver uma discussão do impacto no desempenho dos provedores syscall e profile.

Privilégio dtrace_kernel

O privilégio dtrace_kernel permite o uso de todos os provedores, exceto os provedores pid e fasttrap, em processos que não pertencem ao usuário. Esse privilégio também permite o uso de todas as ações e variáveis, exceto de ações destrutivas do kernel (breakpoint(), panic (), chill ()). Esse privilégio permite a visibilidade completa do kernel e do estado do usuário. Os recursos ativados pelo privilégio dtrace_user são um subconjunto restrito daqueles ativados por dtrace_kernel.

Provedores 

Todos com as restrições acima 

 

Ações 

Todas menos as ações destrutivas 

 

Variáveis 

Todas 

 

Espaços de endereço 

Usuário 

Kernel 

Privilégios de superusuário

Um usuário com todos os privilégios pode usar cada provedor e cada ação, incluindo as ações destrutivas do kernel indisponíveis para todas as outras classes de usuário.

Provedores 

Todas 

 

Ações 

Todas, incluindo as ações destrutivas 

 

Variáveis 

Todas 

 

Espaços de endereço 

Usuário 

Kernel