Re: [Python] Encryption at rest
2018-04-05 10:35 GMT+02:00 Lorenzo Mainardi: > Buongiorno a tutti, > ho una webapp che usa Flask + SQLAlchemy. Mi devo mettere in regola con il > GDPR usando un prodotto esterno che cifra/decifra al volo alcuni campi del > DB. > Ad esempio: supponiamo che io abbia il numero di carta di credito > 1234-5678-8765-4321. > Quando lo voglio scrivere nel db passo il numero della carta di credito al > servizio (tramite una API REST) e lui mi ritorna il dato cifrato > --- che poi vado a salvare nel db. > > Quando voglio leggere un dato dal DB, devo fare il contrario. > > Come posso integrare questa roba con SQLAlchemy? > Avevo pensato di usare un decoratore, ma poi mi sono un po' arenato. > Puoi utilizzare un tipo personalizzato: http://docs.sqlalchemy.org/en/latest/core/custom_types.html#augmenting-existing-types Il problema รจ passare i parametri per l'API esterna che usi, ma li puoi salvare come variabili globali o salvarli nell'instanza di dialect che viene passato ai metodi del tipo personalizzato. Ad esempio: class SecureString(types.TypeDecorator): '''Encrypt Unicode values using some API. ''' impl = types.Unicode def process_bind_param(self, value, dialect): return api.encrypt(value, dialect.encrypt_api_params) def process_result_value(self, value, dialect): return api.decrypt(value, dialect.encrypt_api_params) def copy(self, **kw): return MyType(self.impl.length) engine = create_engine('postgresql://scott:tiger@localhost:5432/mydatabase') engine.dialect.encrypt_api_params = { 'a': 1, 'b': 2 } Manlio ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] Encryption at rest
A questo punto un contesto sarebbe carino. With decoder:.Ti ricordo che un decoratore cambia irrimediabilmente una funzione. Il gio 5 apr 2018, 12:04 Lorenzo Mainardiha scritto: > Un decoratore di cosa? Se proprio vuoi fare una chiamata ad api esterne >> dall'ORM >> fatti un tipo http://docs.sqlalchemy.org/en/latest/core/custom_types.html > > > Ad esempio io ho due funzioni: insert_on_db(dato_in_chiaro) e > retrieve_from_db(). Ovviamente ambedue lavorano con i dati in chiaro. > > I decoratori che volevo fare erano due: > > @encrypt > insert_on_db(dato_in_chiaro) > > e > > @decrypt > retrieve_from_db() > > In questo modo ridurrei al minimo l'impatto sul db e sul codice. > Che ne pensate? > > -- > LORENZO MAINARDI > > ___ > Python mailing list > Python@lists.python.it > https://lists.python.it/mailman/listinfo/python > ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] Encryption at rest
> > Un decoratore di cosa? Se proprio vuoi fare una chiamata ad api esterne > dall'ORM > fatti un tipo http://docs.sqlalchemy.org/en/latest/core/custom_types.html Ad esempio io ho due funzioni: insert_on_db(dato_in_chiaro) e retrieve_from_db(). Ovviamente ambedue lavorano con i dati in chiaro. I decoratori che volevo fare erano due: @encrypt insert_on_db(dato_in_chiaro) e @decrypt retrieve_from_db() In questo modo ridurrei al minimo l'impatto sul db e sul codice. Che ne pensate? -- LORENZO MAINARDI ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] Encryption at rest
Il 05/04/2018 10:35, Lorenzo Mainardi ha scritto: Buongiorno a tutti, ho una webapp che usa Flask + SQLAlchemy. Mi devo mettere in regola con il GDPR usando un prodotto esterno che cifra/decifra al volo alcuni campi del DB. Ad esempio: supponiamo che io abbia il numero di carta di credito 1234-5678-8765-4321. Quando lo voglio scrivere nel db passo il numero della carta di credito al servizio (tramite una API REST) e lui mi ritorna il dato cifrato --- che poi vado a salvare nel db. Quando voglio leggere un dato dal DB, devo fare il contrario. Come posso integrare questa roba con SQLAlchemy? Avevo pensato di usare un decoratore, ma poi mi sono un po' arenato. Un decoratore di cosa? Se proprio vuoi fare una chiamata ad api esterne dall'ORM fatti un tipo http://docs.sqlalchemy.org/en/latest/core/custom_types.html -- Riccardo Magliocchetti @rmistaken http://menodizero.it ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
[Python] Encryption at rest
Buongiorno a tutti, ho una webapp che usa Flask + SQLAlchemy. Mi devo mettere in regola con il GDPR usando un prodotto esterno che cifra/decifra al volo alcuni campi del DB. Ad esempio: supponiamo che io abbia il numero di carta di credito 1234-5678-8765-4321. Quando lo voglio scrivere nel db passo il numero della carta di credito al servizio (tramite una API REST) e lui mi ritorna il dato cifrato --- che poi vado a salvare nel db. Quando voglio leggere un dato dal DB, devo fare il contrario. Come posso integrare questa roba con SQLAlchemy? Avevo pensato di usare un decoratore, ma poi mi sono un po' arenato. Avete qualche suggerimento? Grazie -- LORENZO MAINARDI ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python