Gibt es ein Sicherheitsrisiko, wenn viele Fremdschlüssel auf eine einzelne Tabelle verweisen?

7

Ich habe einen Lehrer, der mir sagte, dass eine Datenbank mit einer Tabelle, auf die etwa 60% der anderen Tabellen verweisen, ein Sicherheits-Nein-Nein ist. Das Problem ist, dass er nicht erklären konnte, warum es ein Sicherheitsrisiko war.

Geben Sie hier die Bildbeschreibung ein

Cordelia_Chase
quelle
1
Sieht aus wie der einzige, der weiß, warum es ein Sicherheitsrisiko sein könnte, ist Ihr Lehrer. Ich habe noch nie eine solche Vorstellung gehört.
Mendosi
Ich würde den Lehrer um Klarstellung bitten. Soweit ich weiß, würde es kein tatsächliches Sicherheitsrisiko geben, vielleicht Leistungsprobleme, wenn Ihre Indizes größer werden (unglaublich groß, damit es Probleme gibt). Aber vielleicht meint er ein Sicherheitsrisiko auf nicht so wörtliche Weise? Vielleicht ein böswilliger Benutzer, der Zugriff auf die Haupttabelle erhält, auf die verwiesen wird, Datensätze löscht und die Auswirkungen auf den Rest kaskadiert?
Iqbal Khan
Ich kann mir keine Sicherheitsrisiken vorstellen, die mit einem solchen Design verbunden sind. Man könnte argumentieren, dass es ein schlechtes Design ist, wenn es sich um ein OLTP-System handelt, aber Sternschemata sind sehr häufig und sehr effektiv für Data Marts und Data Warehouses. Es bedient bestimmte Workloads sehr gut und hat seine Nachteile, aber sie betreffen hauptsächlich die Leistung und nicht die Sicherheit. Ich vermute, viele hier sind neugierig zu wissen, welche Sicherheitsrisiken Ihr Lehrer für diese Art von Schema identifiziert hat.
SQLmojoe

Antworten:

1

Ich glaube, dass ein gewisses Risiko darin besteht, dass mit REFERENCES Daten gelesen werden können, die jemand eigentlich nicht lesen sollte, wenn Sie die Berechtigung REFERENCES für ein Objekt übersehen, wenn Sie einem Konto den direkten Zugriff auf das Objekt verweigern Lesen - zumindest aus der angegebenen Schlüsselspalte. Die Schlüsselspalte kann eine Bankkontonummer oder eine SSN sein. Zumindest können Sie es ausnutzen, um herauszufinden, ob der Datenwert ABCDEF in der Tabelle enthalten ist oder nicht. In der Dokumentation von Oracle heißt es "Berechtigungen konservativ gewähren", was bedeutet, dass sie überhaupt nicht gewährt werden, im Idealfall explizit verweigert werden. Halten Sie sie insbesondere von einem "öffentlichen" oder "Gast" -Konto fern, für das keine spezielle Berechtigung für Ihre Datenbank erforderlich ist.

Auf einem Server mit hohem Standard (ich verwende Microsoft SQL Server) kann dies gemindert werden, wenn auf Tabelle A in Tabelle B und auch in den Tabellen C bis Z verwiesen wird. Es sind jedoch die anderen Tabellen selbst, die das Recht haben, a nachzuschlagen Fremdschlüssel in Tabelle A, es ist kein Recht des Benutzers. Es sei denn, der Benutzer kann die Daten in Tabelle M aktualisieren, wodurch er die Werte der in Tabelle A enthaltenen Daten erneut prüfen kann.

Was andere Risiken als die Sicherheit betrifft ... Schlüssel werden dort platziert, um darauf verwiesen zu werden. Ein guter Server sollte nicht ausfallen, wenn eine Tabelle von allen anderen referenziert wird, obwohl in "Ich habe meinen eigenen SQL Server All In Javascript geschrieben" (was hoffentlich imaginär ist) etwas schief gehen könnte. Wenn eine Schlüsselspalte stark von Beziehungen und Abfragen referenziert wird, müssen ihre Spezifikation und ihre Indizierung sorgfältig abgewogen werden. Microsoft SQL ermöglicht beispielsweise, dass ein Index für die Spalten A und B als separate Kopie der Tabellendaten fungiert und die Spalten C, D und E ebenfalls in der Doppelgangertabelle enthalten sind (das Schlüsselwort INCLUDE). In der Zwischenzeit befindet sich ein weiterer Index für die Tasten A und B, wobei auch die Spalten F und G enthalten sind. Wenn dies die beiden Abfragen darstellt, die Sie am häufigsten stellen, ist dies ein zu berücksichtigendes Design.

Erfahrungsgemäß ist es äußerst unpraktisch, wenn Ihr häufig referenzierter Datenschlüssel in allen Tabellen geändert werden muss, während der Rest der Daten gleich bleibt. Wenn es sich beispielsweise um die Telefonnummer des Kunden handelt (beispielsweise um die Datenbank der Telefongesellschaft), müssen Sie die Nummer des Kunden nach störenden Anrufen ändern. Dies ist ein Grund, diese Art von Nummer nicht als Schlüssel in der gesamten Datenbank zu verwenden - obwohl es so bequem ist, Daten in einer Abfrage in der Tabelle PDQOK mit diesem praktischen Wert nachzuschlagen. Oder, schlimmer noch, der Kunde kündigt - dann geben Sie seine Nummer an jemand anderen weiter ...

Robert Carnegie
quelle
0

Dies erweitert die Grenzen der Glaubwürdigkeit. Das einzige, woran ich denken kann, ist, dass der Angreifer durch absichtliches Verursachen von referenziellen Integritätsfehlern in der Lage ist, die Fehlermeldungen zu sammeln und Informationen über das zugrunde liegende Schema abzuleiten.

Wenn der Angreifer dies jedoch kann, haben Sie größere Sorgen.

Dave Poole
quelle
0

Da Sie nicht mehr Kontext angeben als bereits verfügbar, liegt Ihr Lehrer falsch.

Solche Schemata werden in OLAP-Datenbanken als Sternschemata oder Schneeflockenschemata bezeichnet und sind dort Best Practice und Standard der Wahl. Sie würden jedoch so etwas wie Sales numberin der zentralen Tabelle benötigen und Kunden und andere Dinge in den anderen Tabellen haben.

Grimaldi
quelle
0

Dies hängt von der Definition des Sicherheitsrisikos durch den Lehrer ab.

IT-Risikomanagement gemäß einem Artikel auf Wikipedia hat die folgende Definition:

Laut Risk IT [1] umfasst dies nicht nur die negativen Auswirkungen von Betrieb und Servicebereitstellung, die zur Zerstörung oder Wertminderung des Unternehmens führen können, sondern auch den Nutzen und das Risiko, das mit dem Fehlen von Möglichkeiten zur Nutzung von Technologie verbunden ist Aktivieren oder verbessern Sie das Geschäfts- oder IT-Projektmanagement für Aspekte wie Mehrausgaben oder verspätete Lieferung mit nachteiligen Auswirkungen auf das Geschäft.

Wenn Sie den Artikel weiterverfolgen, stoßen Sie auf die folgende Formel:

Risiko = Bedrohung * Sicherheitslücke * Vermögenswert

Jetzt können Sie Ihre Tabellendaten als Assets und ein allgemeines Risiko als Sicherheitsrisiko weiterführen und definieren, da Ihre Assets vertrauliche Daten enthalten, sodass Sie Folgendes haben:

Sicherheitsrisiko = Bedrohung * Sicherheitsanfälligkeit * Table_Data

In einem wirklich weit hergeholten Sinne kann eine Bedrohung in Kombination mit einer Sicherheitsanfälligkeit zu einem Datenverstoß in Ihren Table_Data führen . Als Ergebnis haben Sie ein Sicherheitsrisiko .

Wenn Sie nun alle relevanten Daten in Ihrer zentralen Tabelle referenzieren, kann dies aus Sicht Ihres Lehrers ein erhöhtes Sicherheitsrisiko darstellen. Dies ist jedoch sehr weit hergeholt.


Grundsätzlich kann alles als Sicherheitsrisiko definiert werden. Das hängt von Ihrer Argumentation ab.

John aka hot2use
quelle