Handbuch zur dynamischen Ablaufverfolgung in Solaris

Kapitel 35 Sicherheit

In diesem Kapitel werden die Zugriffsrechte beschrieben, die Systemadministratoren bestimmten Benutzern oder Prozessen für DTrace gewähren können. DTrace ermöglicht den Zugriff auf Funktionen auf Benutzerebene, Systemaufrufe, Kernelfunktionen und alle übrigen Aspekte des Systems. Die Aktionen, die mithilfe des Frameworks durchgeführt werden können, sind mitunter so wirksam, dass sie auch den Status eines Programms ändern. Ebenso wenig, wie einem Benutzer der Zugriff auf die privaten Dateien eines anderen Benutzers erlaubt werden sollte, ist es angebracht, jedem Benutzer uneingeschränkten Zugang zu sämtlichen Einrichtungen zu gewähren, die DTrace zu bieten hat. Standardmäßig kann DTrace nur vom Superuser verwendet werden. Über die Einrichtung Least Privilege ist es möglich, anderen Benutzern eine kontrollierte Verwendung von DTrace zu erlauben.

Zugriffsrechte

Solaris Least Privilege ist eine Einrichtung, über die Administratoren bestimmten Solaris-Benutzern spezifische Rechte einräumen können. Um einem Benutzer bei der Anmeldung Zugriffsrechte zuzuweisen, fügen Sie in die Datei /etc/user_attr eine Zeile in folgender Form ein:

Benutzername::::defaultpriv=basic,Zugriffsrecht

Um einem laufenden Prozess zusätzliche Zugriffsrechte zu gewähren, bedienen Sie sich des Befehls ppriv(1).


# ppriv -s A+Zugriffsrecht Prozess-ID

Den Zugriff eines Benutzers auf die DTrace-Leistungsmerkmale regeln die drei Zugriffsrechte dtrace_proc, dtrace_user und dtrace_kernel. Jedes Zugriffsrecht sieht die Verwendung einer bestimmten Gruppe von DTrace-Providern, -Aktionen und -Variablen vor und entspricht einer bestimmten Verwendungsart von DTrace. Die Zugriffsmodi sind in den folgenden Abschnitten ausführlich beschrieben. Systemadministratoren sollten die Bedürfnisse jedes Benutzers sorgfältig gegen die Auswirkungen der verschiedenen Zugriffsmodi auf Sichtbarkeit und Leistung abwägen. Ein Benutzer benötigt mindestens eines der drei DTrace-Zugriffsrechte, um DTrace nutzen zu können.

Privilegierte Verwendung von DTrace

Alle Benutzer mit einem der drei DTrace-Zugriffsrechte können Prüfpunkte des Providers dtrace (siehe Kapitel 17Der Provider dtrace) aktivieren und die folgenden Aktionen und Variablen verwenden:

Provider 

dtrace

   

Aktionen 

exit

printf

tracemem

discard

speculate

 

printa

trace

 

Variablen 

args

probemod

this

epid

probename

timestamp

id

probeprov

vtimestamp

probefunc

self

 

Adressräume 

Keinen 

 

 

Das Zugriffsrecht dtrace_proc

Das Zugriffsrecht dtrace_proc berechtigt zur Verwendung des·Providers fasttrap zur Ablaufverfolgung auf Prozessebene. Es erlaubt außerdem die Nutzung der folgenden Aktionen und Variablen:

Aktionen 

copyin

copyout

stop

copyinstr

raise

ustack

Variablen 

execname

pid

uregs

Adressräume 

Benutzer 

 

 

Dieses Zugriffsrecht gewährt keinerlei Sicht auf Solaris-Kerneldatenstrukturen oder Prozesse, für die der Benutzer keine Berechtigung besitzt.

Benutzer mit diesem Zugriffsrecht können Prüfpunkte in Prozessen erzeugen und aktivieren, die sie besitzen. Verfügt der Benutzer außerdem über das Zugriffsrecht proc_owner, können Prüfpunkte in allen Prozessen erzeugt und aktiviert werden. Das Zugriffsrecht dtrace_proc ist für Benutzer vorgesehen, die am Debuggen oder der Leistungsanalyse von Benutzerprozessen beteiligt sind. Es eignet sich ideal für Entwickler, die an einer neuen Anwendung arbeiten, oder Programmierer, die sich mit der Leistungssteigerung einer Anwendung in einer Produktionsumgebung beschäftigen.


Hinweis –

Benutzer mit den Zugriffsrechten dtrace_proc und proc_owner können jeden pid-Prüfpunkt aus jedem Prozess aktivieren, aber Prüfpunkte nur in Prozessen erzeugen, deren Zugriffsrechte eine Untergruppe der eigenen Zugriffsrechte darstellen. Ausführliche Informationen finden Sie in der Dokumentation zu Least Privilege.


Das Zugriffsrecht dtrace_proc ermöglicht eine Art des Zugriffs auf DTrace, die ausschließlich bei den Prozessen Leistungseinbußen bewirken kann, für die der Benutzer eine Berechtigung besitzt. Die instrumentierten Prozesse bedeuten eine zusätzliche Belastung der Systemressourcen und bringen insofern möglicherweise eine geringfügige Beeinträchtigung der Gesamtsystemleistung mit sich. Abgesehen von dieser Erhöhung der Gesamtlast lässt dieses Zugriffsrecht keine Instrumentation zu, die sich auf die Leistung anderer als der überwachten Prozesse auswirken würde. Da es die Benutzer zu keinen weiteren Zugriffen auf andere Prozesse oder den Kernel selbst berechtigt, empfiehlt es sich, dieses Zugriffsrecht allen Benutzern einzuräumen, die einen besseren Einblick in die inneren Abläufe ihrer eigenen Prozesse benötigen.

Das Zugriffsrecht dtrace_user

Das Zugriffsrecht dtrace_user erlaubt die leicht eingeschränkte Verwendung der Provider profile und syscall sowie die Nutzung der folgenden Aktionen und Variablen:

Provider 

Profil

syscall

fasttrap

Aktionen 

copyin

copyout

stop

copyinstr

raise

ustack

Variablen 

execname

pid

uregs

Adressräume 

Benutzer 

 

 

Das Zugriffsrecht dtrace_user gewährt lediglich die Sicht auf Prozesse, für die der Benutzer bereits eine Berechtigung besitzt; es gewährt keinen Zugriff auf den Kernelstatus oder die Kernelaktivität. Benutzer mit diesem Zugriffsrecht haben die Möglichkeit, den Provider syscall zu aktivieren, aber die aktivierten Prüfpunkte treten nur in Prozessen in Kraft, für die der Benutzer eine Berechtigung besitzt. Ebenso kann der Provider profile zwar aktiviert werden, aber die aktivierten Prüfpunkte treten nur in den Prozessen in Kraft, für die der Benutzer berechtigt ist, keinesfalls jedoch im Solaris-Kernel.

Die durch dieses Zugriffsrecht mögliche Instrumentation ist zwar auf bestimmte Prozesse beschränkt, kann jedoch die Gesamtsystemleistung beeinflussen. Der Provider syscall bewirkt eine geringfügige Leistungsbeeinträchtigung eines jeden Systemaufrufs für jeden Prozess. Indem er, ähnlich wie ein Echtzeit-Timer, in bestimmten Intervallen ausgeführt wird, lastet der Provider profile auf der Gesamtsystemleistung. Keine dieser Leistungseinbußen ist jedoch groß genug, als dass sie die Arbeit des Systems ernsthaft beeinträchtigen könnte. Trotzdem sollten Systemadministratoren genau abwägen, was es bedeuten kann, einem Benutzer dieses Zugriffsrecht zu erteilen. Eine Diskussion der Leistungseinbußen für die Provider syscall und profile finden Sie in Kapitel 21Der Provider syscall und Kapitel 19Der Provider profile .

Das Zugriffsrecht dtrace_kernel

Das Zugriffsrecht dtrace_kernel berechtigt zur Anwendung aller Provider außer pid und fasttrap auf Prozesse, die nicht dem Benutzer gehören. Es ermöglicht außerdem den Einsatz aller Aktionen und Variablen außer kerneldestruktiven Aktionen (breakpoint(), panic(), chill ()). Dieses Zugriffsrecht bietet die vollständige Sicht auf den Status in Kernel und Benutzerebene. Die mit dtrace_user aktivierten Einrichtungen sind eine strikte Untergruppe der mit dtrace_kernel aktivierten.

Provider 

Alle außer den oben genannten 

 

Aktionen 

Alle außer destruktiven Aktionen 

 

Variablen 

Alle 

 

Adressräume 

Benutzer 

Kernel 

Superuser-Zugriffsrechte

Benutzer mit sämtlichen Zugriffsrechten können alle Provider und alle Aktionen einschließlich der keiner anderen Benutzerklasse erlaubten kerneldestruktiven Aktionen verwenden.

Provider 

Alle 

 

Aktionen 

Alle einschließlich destruktiver Aktionen 

 

Variablen 

Alle 

 

Adressräume 

Benutzer 

Kernel