Sto usando il pacchetto Pyro per creare un demone che, all'avvio, richiederà una password, e quindi il daemon lo memorizzerà finché è in esecuzione. Altri script eseguiranno quindi una connessione Pyro a questo demone ed eseguiranno i metodi dal demone, nessuno dei quali rivela o ha accesso alla password:
my_daemon.py :
import getpass
import Pyro.core
password = getpass.getpass()
class TestDaemon(Pyro.core.ObjBase):
def __init__(self):
Pyro.core.ObjBase.__init__(self)
def do_some_stuff(self):
return "I am a method which would do some stuff, utilizing password \"{0}\" which is only accessible from this daemon.".format(password)
Pyro.core.initServer()
daemon=Pyro.core.Daemon()
uri=daemon.connect(TestDaemon(), "TestDaemon")
daemon.requestLoop()
driver.py :
import Pyro.core
my_daemon = Pyro.core.getProxyForURI("PYROLOC://localhost:7766/TestDaemon")
print my_daemon.do_some_stuff()
# note: the password variable in the daemon is inaccessible from here.
Vorrei ricevere consigli su quanto è sicuro e quali misure posso adottare per aumentare la sicurezza. Ad esempio, so che questo non è al 100% infallibile --- se qualcuno fosse in grado di scaricare la memoria, la password sarebbe probabilmente accessibile in quel modo. È uno sfortunato con cui sono disposto a vivere. Cos'altro?
Il modello "memorizzazione-password-in-memoria-tramite-demone" non è qualcosa da cui possa deviare. Questo approccio è stato deciso dal team nel suo insieme (al contrario di mettere la password in un file di testo di sola lettura root, per esempio). Quindi è meno una questione di "quali alternative ho", e più che altro, "quali strumenti posso utilizzare per svolgere questa particolare attività con il codice più semplice e facile da gestire senza sacrificare troppa sicurezza?"