Domino 9 und frühere Versionen > ND8: Entwicklung
Felder verbergen
skywook:
Hallo,
wie stelle ich das an, dass wenn ich ein Dokument in der Ansicht markiert habe und die Eigenschaften abrufe (mit rechter Maustaste) und der zweite Reiter (mit den Feldnamen) leer ist? Die Felder des Dokumentes werden nicht angezeigt.
Geht das nur wenn ich das Design verborgen habe?
Für einen Tipp wäre ich dankbar.
pram:
Ja, oder du setzt $keepPrivate im Dokument auf "1", dann kann man nicht mehr scrollen, Inhalte kopieren oder das Dokument drucken (die Feldnamen sieht man aber)
Gruß
Roland
Peter Klett:
Falls Du das Verbergen des Designs und damit das Nichtanzeigen der Felderliste als Sicherheitsfeature nutzen willst, um nicht berechtigten Usern den Einblick in die Feldinhalte zu verwehren (weil Du vielleicht im Dokument die Felder mittels eines zugriffsgesteuerten Abschnitts (Quatsch) einer Verbergeformel geschützt hast), vergiss es.
Ein Dokument in einer Datenbank mit verborgenem Design zeigt nicht die Felderliste. Aber: Kopiert in eine andere Datenbank mit offenem Design (z.B. der persönlichen Maildatenbank) sind die Felder wieder sichtbar.
Wenn das mit $KeepPrivate so funktioniert (ich hab das noch nicht probiert, glaube aber alles, was Roland sagt ;)), ist das zwar eine Hürde (das Dokument kann dann nicht kopiert werden), aber ein Autor auf dem Dokument entfernt mit einem simplen Smarticon oder einem Agenten das Feld, und alles ist wieder offen.
Oder man erstellt sich einen kleinen Agenten, der alle Felder des Dokuments ausliest (Forall item in doc.Items ...), dann reichen auch Leserechte (der Agent muss ja nicht in der gleichen Datenbank sein. Lokale Datenbank erstellen, Agent erstellen, fertig. Dazu braucht man noch nicht einmal einen Designer).
Wenn Du wirklich schützenswerte Daten hast, kannst Du das nur über Leserfelder in Dokumenten erreichen, Teilinformationen in allgemein sichtbaren Dokumenten musst Du dann auslagern.
Beispiel: Du hast Mitarbeiterdokumente, die jeder lesen kann. Darin enthalten sind die Gehaltsdaten, die nicht jeder lesen darf. Sind die Daten im Mitarbeiterdokument, gibt es keine sichere Methode, die zu schützen. Unwissenheit der "gewöhnlichen" Benutzer ist kein Schutz. Einzige wirklich funktionierende Lösung ist, die Gehaltsdaten in ein separates Dokument auszulagern, dieses Dokument mittels Leserfeld zu schützen und die Daten berechnet zur Anzeige (!!!) im Mitarbeiterdokument anzuzeigen. Berechtigte Benutzer sehen dann die Gehaltsdaten, nicht berechtigte nicht.
pram:
Wie Peter schon sagt, ist $keepPrivate lediglich eine Hürde und stimme Peter in allen Punkten zu. Lediglich zum letzten Punkt möchte ich noch ergänzen, dass man im "Gehaltsdaten"-Feld das "SEAL"-Flag (-> item.isEncrypted=true) setzen kann und das Dokument verschlüsseln kann.
Verschlüsselte Felder sehen dann nur Personen, die den entsprechenden Schlüssel haben.
Alle anderen Personen (die leseberechtigt sind) sehen dann nur die unverschlüsselten Felder (sowie ein Feld mit Namen $seal und $sealdata, welche als "Container" für alle verschlüsselten Felder dienen)
Personen die das Dokument nicht entschlüsseln können, können im Backend sogar Felder im Dokument ändern (z.B. Flags setzen)
Man muss aber höllisch aufpassen, dass man nicht "aus versehen" ein Dokument, welches eigentlich verschlüsselt sein sollte, unverschlüsselt ablegt.
Man muss UNMITTELBAR vorm doc.save ein doc.encrypt aufrufen, wenn das Dokument von einer Person gespeichert werden soll, die es entschlüsseln konnte.
Gruß
Roland
koehlerbv:
Zum Verschlüsseln ist noch zu sagen:
Ein einmal verteilter Schlüssel kann nicht "einfach so" zurückgezogen werden.
Bernhard
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln