PDA

View Full Version : Objektverifizierung nach Erzeugung / Installation



Seiten : 1 2 [3]

Matthias182
07-05-08, 09:01
kannst du mir noch kurz erklären, warum diese nicht hilfreich ist?

Fuerchau
07-05-08, 09:02
Und selbst wenn, diese ID diente nur der internen Verwaltung und ändert sich spätestens bei einer Kopie, sonst wäre die ID ja nicht eindeutig.

Jedes Objekt identifiziert sich durch das Einspeicher-Konzept letztlich durch seine 128-Bit-Adresse (16-Byte-Pointer), die auf LIB/OBJ/OBJART verweist.

Und wie Holger schon beschreibt, je nach Maschinenmodell kann sich ein Programmobjekt durch internen Recompile bereits unterscheiden.

Bei Dateien kannst du (nicht bei SQL) sicherlich auf die Format-ID referieren, die aber z.B. den aktuellen Key NICHT mit einschließt.
Hierfür mußt du dann per DSPFD(-API) die Keylisten vergleichen.

Aber wie bereits oben mitgeteilt mußt du je Objektart einen eigenen Weg beschreiten.

Und:
Letztendlich ist der Softwarelieferant ja für die korrekte Version und ggf. Versionsprüfung verantwortlich und (je nach Vertrag) auch in Regress zu nehmen.

BenderD
07-05-08, 09:36
das ist letztlich nur ein (indirekter) Pointer auf einen Plattenplatz und sagt nichts darüber aus, was sich da aktuell inhaltlich befindet. Ob du ein Objekt über Bibliothek.Name.ObjektArt oder über einen System Pointer adressierst, macht da keinen Unterschied.

D*B


kannst du mir noch kurz erklären, warum diese nicht hilfreich ist?

Matthias182
08-04-09, 15:41
Hallo Leute,

dieses Thema von mir ist zwar schon ein wenig älter, beschäftigt mich aber nach wie vor.

Das Ergebnis aus dem Gespräch hier war im letzten Jahr ein Programm, das für Programme die Attribute source lib, source change date und Erstellungsdatum, vei Dateien Format Level ID und Erstellungsdatum, vergleicht.

Dies war aus meiner Sicht bisher zufriedenstellend. Leider entwickelt sich dieses Thema fortlaufend und das Programm kann den Anforderungen in unserem sehr dynamischen Prozess nicht mehr standhalten.

Ein großes Thema dabei sind Veränderungen an Objekten durch lokale Programmierer oder Admins selbst. Diese kann ich leider aus der Ferne und über 10 Maschinen mit insgesamt 120 Instanzen unserer Software leider nicht mehr kontrollieren.

Nach weiteren Recherchen zu diesem Thema bin ich auf die Möglichkeit gestoßen Objekte mit einer Art Signatur versehen. Mein erster Gedanke ging dabei ich Richtung eines MD5 Hash, der in einer separaten Datenbank gespeichert wird.

Meine Fragen dazu sind:

1. Kann man mit einem Befehl oder Tool anhand zweier Objekte einen solchen Hash generieren und die Objekte auf Basis des Outputs auf ihre Integrität vergleichen?

2. Ist das Ergebnis des Hash auch über unterschiedliche OS Stände und Maschinen vergleichbar.

3. Wie reagiert ein solcher Hash auf SQL Objekte wie tables, views oder indizes?

4. Welche Maßnahmen sind notwendig um einen solchen Ansatz in einem kleinen Umfeld zu testen?

Hoffe mal, ihr könnt mir wieder ein wenig weiterhelfen. Daher schon mal danke im voraus.

Gruß
Matthias

Fuerchau
08-04-09, 17:14
Da hast du mal wieder schlechte Karten.
Bei Programmen kann sich intern der Code je nach Maschine/Release verändern (Recompile), so dass eine Checksumme hier zu einem anderen Ergebnis kommt.
Ausserdem verhindert das OS den Zugriff auf bestimmte Objekte als Streamfile mit den IFS-API's (man könnte ja sonst Code verändern).

Aber vielleicht gibts ja noch einen kleinen Trick.
Man kann per API an jedes beliebige Objekt ein Space-Objekt anhängen (wie USRSPC zu sehen).
In dieses Spaceobjekt kann man dann eigene Informationen unterbringen.
Diese werden auch genauso gesichert und wiederhergestellt.

Erstellt nun jemand dein Objekt auf der anderen Maschine neu, wird dieses Spaceobjekt wohl fehlen.

Such mal nach den API's:
QCLRPGAS
QCLSPGAS

Matthias182
18-08-09, 11:31
Hallo,

ich hole dieses Thema mal wieder hervor, da es mich nach wie vor intensiv beschäftigt.

Die Lösung mit dem Space-Objekt ist schon eine super Möglichkeit, aber löst nicht das Problem, wenn jemand das Objekt auf der gleichen Maschine von einer Umgebung in die andere (Backup & Restore) überträgt.

Mittlerweile habe ich bereits überlegt, ob es möglich ist, das Objekt mit einem Eintrag in einer Datenbank fest zu verknüpfen und das Löschen nur zu erlauben, wenn der Eintrag auch gelöscht wird. Also in etwa so, als wenn ein Prozess das Objekt allokiert hat.

Ob das letztendlich die richtige lösung ist, weiß ich auch nicht, aber vielleicht ein Schritt.

Wie stellen eigentlich andere kommerzielle Softwareprodukte die Integrität ihrer Umgebungen sicher? Oder verlässt man sich hier ausschließlich auf die Rechtevergabe? Gibt es bei solchen Tools prüfen, die man "laufen lassen" kann um einen Abgleich zu machen?

Hoffe, ihr habt noch ein paar Ideen für mich, die mich voran bringen.


Gruß
Matthias