Benötigt mein Oracle-DBA Root-Zugriff?


14

Mein Oracle DBA-Kollege fordert Root-Zugriff auf unseren Produktionsservern an .
Er argumentiert, dass er es für einige Vorgänge wie den Neustart des Servers und einige andere Aufgaben benötigt.

Ich bin nicht mit ihm einverstanden, da ich ihm einen Oracle-Benutzer / eine Oracle-Gruppe und eine DBA-Gruppe zugewiesen habe, zu denen der Oracle-Benutzer gehört. Alles läuft reibungslos und ohne dass der DBA derzeit Root-Zugriff hat.
Ich denke auch, dass alle administrativen Aufgaben wie der geplante Neustart des Servers vom richtigen Administrator ausgeführt werden müssen (der Systemadministrator in unserem Fall), um Probleme im Zusammenhang mit einem Missverständnis der Infrastrukturinteraktionen zu vermeiden.

Ich hätte gerne Eingaben sowohl von Sysadmins als auch von Oracle-DBAs. Gibt es einen guten Grund für einen Oracle-DBA, in einer Produktionsumgebung Root-Zugriff zu haben ?

Wenn mein Kollege diese Zugriffsebene wirklich benötigt, werde ich sie bereitstellen, aber ich habe aus Sicherheits- und Systemintegritätsgründen große Angst davor.

Ich suche nicht nach Vor- oder Nachteilen, sondern nach Ratschlägen, wie ich mit dieser Situation umgehen soll.


12
Fordern Sie eine Liste der Befehle an, die er benötigt, und passen Sie dann Ihre sudoers-Datei so an, dass nur diese Befehle zulässig sind.
Dmourati

Ich würde sagen, dass der Sudoer-Weg, wie oben vorgeschlagen, eindeutig der richtige ist.
Sami Laine

Ich werde nicht sudo verwenden, dies ist ein Server mit eingeschränktem Zugriff und kontrollierter Vertraulichkeit. Ich werde es auf die harte Weise tun, indem ich POSIX-Rechte und eine Chrooted / Limited-Prompt-Shell verwende.
Dr. I.,

Meiner Meinung nach gehe ich als Systemadministrator immer den Sudoer-Weg und schränke den Zugang so weit wie möglich ein. Beginnen Sie lieber mit dem absoluten Minimum und fügen Sie den Zugriff auf Befehle nach Bedarf schrittweise hinzu. +1 @dmourati
sgtbeano

7
Ihr DBA benötigt das Root-Passwort so oft, wie Sie SYSDBAZugriff benötigen .
Michael Hampton

Antworten:


14
  • Wer installiert Oracle auf den Servern?
    Wenn es der DBA ist, benötigen sie Root-Zugriff. Wenn es sich um Sysadmin handelt, ist dies beim DBA nicht der Fall.

  • Wer wird spät nachts angerufen, wenn der Datenbankserver ausfällt?
    Wenn Sie nicht sicherstellen können, dass Sysadmins rund um die Uhr verfügbar sind, möchten Sie möglicherweise Root-Zugriff auf den DBA gewähren.

Denken Sie daran, dass, wenn Ihr DBA bereits als regulärer Benutzer über Shell-Zugriff verfügt (mit oder ohne Befehle, die er über sudo ausführen kann; mit oder ohne Chroot), dies ausreicht, um sich mit dem Server herumzuschlagen (ein böser Kerl, der sein Konto stiehlt, kann Bomben abwerfen) , überschreiten Sie die Grenze für das Senden von Spam, löschen Sie die Datenbank, ...).

Aus all diesen Gründen denke ich, dass DBAs in einer idealen Welt keinen Root-Zugriff haben sollten . aber in der realen Welt sollten sie zumindest im Notfall immer in der Lage sein, es zu erhalten.


3
Sie können sudogültige sudo-Regeln verwenden, anstatt root-Zugriff zu gewähren.
Jirib

3
@ Jiri: Etwas wie% dba ALL = (ALL) ALL in / etc / sudoers zu haben, gibt Root-Zugriff. Das Auflisten einer eingeschränkten Befehlsgruppe für dba ist das, was ich als "regulären Shell-Zugriff" bezeichne.

2
Oracle + Docker klingt wie ein Rezept für eine Katastrophe. Sudo ist nicht erlaubt? Klingt so, als hätte jeder, der die Umgebung einschränkt, keine Ahnung, was er tut.
Dmourati

4
@DrI Das Entfernen sudound Gewähren von uneingeschränktem Root-Zugriff für Benutzer ist ein wichtiger Schritt ZURÜCK in Bezug auf die Systemsicherheit. Ich werde ehrlich sein, wenn Ihre Chefsachen sudo"esoterische Technologie" sind, sind sie ein Idiot.
Voretaq7

1
@ voretaq7 Ich weiß das, aber wie ich bereits sagte, arbeite ich für ein großes Unternehmen, nicht für mich selbst, also kümmere ich mich nicht um jeden Aspekt unserer IT und muss mich mit meinen Tools befassen ;-) Meine Hauptfrage war verwandt Wenn der DBA den Root-Zugriff benötigt und die meisten Leute das Gegenteil meinen, werde ich seine Bedürfnisse genauer untersuchen ;-) und mich dann mit ihm für eine gefährdete Situation befassen.
Dr. I.

6

Im Allgemeinen - und nicht spezifisch für Datenbankadministratoren - ist jeder, der rootohne Angabe eines gültigen Grundes Zugriff verlangt, entweder:

  1. Jemand, der nicht weiß, was er tut.
  2. Arrogant und unkooperativ.
  3. Beide der oben genannten.

Nun, es mag echte Gründe geben, warum sie rootZugriff benötigen , um ihre Aufgabe zu erledigen, aber auch hier würde ich mich nicht mit ihnen befassen, wenn sie nicht erklären können, warum und schriftlich. Profis, die sich mit Servern befassen, verstehen und respektieren Grenzen. Heiße Schüsse, die genug wissen, um in Schwierigkeiten zu geraten, glauben, dass die Regeln für alle außer ihnen gelten.

In Fällen, in denen ich mich mit Leuten wie diesen herumschlagen musste, habe ich darauf bestanden, dass die Zeit im Voraus festgelegt wird, damit ich mit ihnen auf dem Server sein kann, um auftretende Probleme zu behandeln. Und das hat tatsächlich gut funktioniert.

Eine andere - möglicherweise nicht praktikable - Alternative besteht darin, einen genauen Klon des betreffenden Servers zu erstellen und diesen rootZugriff darauf zu gewähren . Vergewissern Sie sich natürlich, dass Sie das Passwort in ein spezielles Passwort ändern. Lassen Sie sie eine isolierte Entwicklungskiste in die Luft jagen.

Aber im Allgemeinen, wenn Sie derjenige sind, der spät nachts angerufen wird, um ein Durcheinander zu beseitigen, das dieser Typ verursachen könnte, dann haben Sie das Recht, zu einer pauschalen Anfrage nach rootZugang nein zu sagen .


4

Theoretisch können DBAs ohne Root-Privilegien arbeiten, aber es ist PITA für beide Seiten. Es ist praktisch unmöglich, eine Befehlsliste zu definieren, über die zugegriffen werden kann sudo.

Geben Sie DBAs root-Rechte, wenn:

  • Sie möchten nicht mitten in der Nacht aufgeweckt werden, nur um den Server neu zu starten
  • Sie möchten ein schnelles und reibungsloses Incident Management
  • wenn Ihr Server nur für DB-Server reserviert ist

DBAs benötigen normalerweise root-Rechte für: Kernel-Parameter-Anpassungen (sysctl), Speichermanipulation und Problemuntersuchungen.

Eine ordnungsgemäße Prüfung gewährleistet bessere Ausführungsbedingungen als streng definierte Sicherheitsregeln. Wenn Sie Auditing implementiert haben, können Sie immer fragen, warum sie etwas getan / geändert haben. Wenn Sie keine Überwachung haben, haben Sie ohnehin keine Sicherheit.

BEARBEITET

Dies ist eine Liste der allgemeinen Oracle-Anforderungen für Standalone-Installationen (nicht geclusterte Installationen).

  • Kernel-Parameter

    • Speicherbezogen (Konfiguration großer / großer Seiten, gemeinsam genutzter Arbeitsspeicher (IPCS), nicht austauschbarer (gesperrter) Arbeitsspeicher)
    • Netzwerkbezogen (Sende- / Empfangsfenstergröße, TCP-Keepalive)
    • speicherbezogen (Anzahl offener Dateien, asynchrone E / A)

    Möglicherweise gibt es etwa 15-20 sysctl-Parameter. Für jeden von ihnen liefert Oracle einen empfohlenen Wert oder eine Gleichung. Für einige Parameter kann sich die empfohlene Gleichung im Laufe der Zeit ändern (aync io), oder in einigen Fällen hat Oracle mehr als eine Gleichung für denselben Parameter bereitgestellt.

  • Speicher: Linux-udev-Regeln garantieren keine dauerhaften Gerätenamen beim Booten. Daher stellte Oracle Kerneltreiber und Tools (AsmLib) zur Verfügung. Auf diese Weise können Sie physische Partitionen als Root kennzeichnen und diese Kennzeichnungen dann beim Verwalten des Datenbankspeichers anzeigen
  • Problemuntersuchung:
    • Wenn die Datenbank abstürzt, weil keine weiteren Datei-Handles geöffnet werden können, besteht die einzige Lösung darin, das Kernel-Limit zu erhöhen, "sysctl -p" auszuführen und dann die Datenbank zu starten.
    • Auch wenn Sie feststellen, dass der physische RAM zu fragmentiert ist und die Datenbank keine großen Seiten zuordnen kann, besteht die einzige Möglichkeit darin, den Server neu zu starten.
    • (DCD) - Dead Connection Detection. Zum Beispiel druckt netstat unter AIX keine PID. Die einzige Möglichkeit, eine TCP-Verbindung mit PID zu koppeln, ist der Kernel-Debugger.
    • glance (so etwas wie top unter HP-UX) erfordert root-Rechte
    • verschiedene Veritas-Level-Untersuchungen
    • und viele viele andere

Es liegt an Ihnen, zu entscheiden, wie viel Zeit Sie "verschwenden", bis das Problem behoben ist. Ich wollte nur darauf hinweisen, dass die starke Rollentrennung in manchen Fällen sehr teuer sein kann. Anstatt die "Sicherheit" zu erhöhen, konzentrieren Sie sich auf die Reduzierung von Risiken und Gefahren. Welches ist nicht das gleiche. Mit Tools wie ttysnoop oder Shell Spy können Sie die gesamte SSH-Sitzung "aufzeichnen" und so die Unbestreitbarkeit gewährleisten. Dies kann besser als sudo dienen.


4
Es ist nicht die Aufgabe des DBAs, Produktionsserver neu zu starten, den Kernelparameter des Produktionsservers zu ändern, den Produktionsserverspeicher zu manipulieren usw. Seine Aufgabe besteht darin, die Konfiguration eines Produktionsservers zu definieren und die Implementierungsaufgabe den Sysadmins zu überlassen. Incident Management, das sich auf einen Produktionsserver auswirkt, sollte immer an den Sysadmin und nicht an die DBA gehen.
Stephane,

6
@Stephane In einer idealen Welt sind ja alle Rollen klar definiert. In vielen Fällen ist dies jedoch nicht der Fall. Bei der beschriebenen DBA-Arbeit wird möglicherweise dieser DBA eingestellt, um die Leistung auf Serverebene zu optimieren. Seien wir ehrlich: Nicht alle Sysadmins verstehen Konfigurationsoptimierungen für alle Apps, die sie steuern. Was mich jedoch falsch reibt, ist der Wunsch des DBA nach einem Zugang ohne Details. Massive rote Fahne in meinem Buch.
JakeGould

2
@Stephane Oracle ist in diesem Fall sehr spezifisch. Die Anforderungen an Kernel-Tuneables können nicht trivial sein, es hat eine eigene LVM (ASM) und darüber hinaus werden im Falle von Oracle RAC einige seiner CLusterwares-Prozesse mit Root-Privs ausgeführt und es werden auch Speicher und NICs manipuliert. Manchmal ist es einfacher, DBA den vxdisk resizeBefehl ausführen zu lassen, als mitten in der Nacht E-Mail-Ping-Pong zu spielen. Es geht mehr um Vertrauen und Auditing als um "Sicherheit".
ibre5041

Oracle ist ein dampfender Haufen. Die besten Dokumente sind: puschitz.com
dmourati 13.11.13

1
Wenn sie bestimmte Dinge optimieren, um bestimmte Probleme zu beheben oder zu verbessern, sollten sie diese in einer Entwicklungsumgebung testen / verifizieren (und in Ordnung, geben Sie ihnen die Wurzel) und dann dem Sysadmin / Ops-Team Anweisungen geben, was genau zu tun ist in die Live-Umgebung, um diese Änderungen zu implementieren, sobald sie getestet wurden. Und wenn sie das nicht tun und stattdessen nur mit den Einstellungen herumspielen, bis es funktioniert, sollte das sowieso niemand in der Live-Umgebung tun .
Rob Moir

1

Ich bin ein Oracle-DBA und meine Antwort lautet: Normalerweise benötigt der DBA keinen Root-Zugriff. Aber ein RAC DBA? Auf jeden Fall benötigt er den Root-Zugriff, um CRS, Housekeeping und alles zu verwalten.


0

Diese Frage stammt aus einer Zeit, in der Systeme viel einfacher waren und Betriebssystem- und Datenbankprozesse separat definiert und identifizierbar waren. Die Aufgaben und Verantwortlichkeiten der Systemadministration und der Datenbankadministration waren sehr unterschiedlich. In den heutigen IT-Umgebungen und insbesondere auf den heutigen Datenbankservern überschneiden sich diese Aufgaben und Verantwortlichkeiten häufig. Der Systemadministrator ist bemüht, den Root-Zugriff in Bezug auf das Risikomanagement zu beschränken.

Angesichts der heutigen Anforderungen nach „hoher Verfügbarkeit“ und „sofortiger Behebung“ von Problemen mit unseren RAC-Datenbanksystemen dienen die Systemadministratoren und Datenbankadministratoren ihren funktionalen Geschäftsgemeinschaften als Team. Es sollten keine Bedenken hinsichtlich "Vertrauen" bestehen, da beide Parteien ein begründetes Interesse daran haben, die RAC-Datenbankserver fast immer online zu halten. Bedenken Sie, dass der DBA bereits als Datenbankadministrator Shell-Zugriff hat (mit oder ohne Befehle, die er über sudo ausführen kann; mit oder ohne Chroot), sodass der DBA offensichtlich ein "vertrauenswürdiger" Agent ist. In Wirklichkeit sollte die Frage lauten: "Warum benötigt der Oracle-DBA keinen Zugriff?"

Der heutige Datenbankadministrator hat zusätzliche Aufgaben für den Datenbankserver übernommen, bei dem ein Datenbankserver Mitglied eines Oracle Real Application Cluster (RAC) ist und mithilfe von Oracle Automatic Storage Management (ASMLIB) gemeinsam genutzten Speicher für die RAC-Datenbank (en) bereitstellt. Die Verwaltung des RAC und des ASM durch den DBA entlastet den bereits überarbeiteten Systemadministrator. Dies sollte ein willkommener Beitrag für die STS-Gruppe / das STS-Team sein.

Und, wie ibre5043 sagte, "... starke Rollentrennung kann in einigen Fällen sehr teuer sein. Statt die" Sicherheit "zu erhöhen, konzentrieren Sie sich auf die Reduzierung von Risiken und Gefahren. Das ist nicht dasselbe. Tools wie ttysnoop oder Shell Spy ermöglichen es Ihnen um die gesamte SSH-Sitzung "aufzuzeichnen", gewähren sie Unbestreitbarkeit. Dies kann besser als Sudo dienen. " Sie sollten auch fragen, wer die SSAs überwacht.


0

Wenn die Server Oracle Grid Infrastructure-Software wie CRS, RAC oder Oracle Restart verwenden, werden viele der kritischen Datenbankdienste als Root ausgeführt und viele der kritischen Datenbankkonfigurationsdateien gehören Root. Es ist ein inhärentes Konstruktionsmerkmal der Software. Wenn dies einen Verstoß gegen Ihre Richtlinien darstellt, müssen die Richtlinien überarbeitet werden.

Der DBA benötigt Root-Zugriff, um diese Funktionen zu verwalten. Theoretisch könnten Sie ihn nach einer Liste der Befehle fragen, die er voraussichtlich in Sudo ausführen wird, aber die Antwort ist eine sehr lange Liste. Schauen Sie sich einfach $ GRID_HOME / bin an, um eine Liste aller Binärdateien zu erhalten, die der DBA möglicherweise regelmäßig verwendet. Wenn sie Patching-Aktivitäten ausführen (was sie auch sein sollten), könnte die Liste sogar noch länger werden.


0

Ich habe gerade eine ähnliche Frage gestellt. Eigentlich ist der Grund, warum ein Sysadmin das Root-Privileg nicht vergeben möchte, der der Verantwortung und Verantwortlichkeit, denke ich.

Aber wenn dies die Ursache ist, sollte der DBA auch der einzige Systemadministrator sein. Und der Grund ist einfach. Wenn eine Trennung von Verantwortlichkeit und Verantwortung erforderlich ist, kann der Sysadmin IMMER auch der DBA sein. Er kann die Identität des Oracle-Kontos annehmen, er kann die Datenbank als SYSDBA eingeben und alles tun, ohne das SYS- oder SYSTEM-Kennwort zu benötigen.

Wenn aus Gründen der Verantwortlichkeit und Verantwortlichkeit eine Trennung von Systemadministratoren und Datenbankadministratoren erforderlich ist, liegt meiner Meinung nach die einzige logische Ursache darin, dass der Server auch vom Datenbankadministrator und nicht vom Systemadministrator verwaltet werden sollte. Der Server und die Datenbank sollten als Ganzes in der Verantwortung des DBA liegen, der auch über einige Kenntnisse in der Systemadministration verfügen sollte.

Wenn der Server für mehr als das Hosten der Datenbank verwendet wird und eine getrennte Verantwortung und Rechenschaftspflicht erforderlich ist, bedeutet dies Probleme. Aber wenn der Server nur zum Hosten der Datenbank verwendet wird, sehe ich keinen Grund, warum der DBA nicht über das Root-Privileg verfügen sollte, wenn man die unzähligen Fälle berücksichtigt, die er auch benötigen würde.

Persönlich würde ich die Frage andersherum stellen. Warum sollte der Sysadmin das Root-Privileg auf einem dedizierten Datenbankserver haben? Tatsächlich wäre seine Spezialität in weitaus weniger Fällen erforderlich als die des DBA (mit dem Root-Privileg).


0

Für die Installation und das Patchen von Oracle Grids ist Root-Zugriff erforderlich. Daran führt kein Weg vorbei. Wenn es eine Möglichkeit gäbe, einem DBA für solche Anforderungen temporären Root-Zugriff zu gewähren, wäre dies ideal.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.