La configurazione può essere considerata sicura. Tenete i dati decrittografati solo in memoria. In genere si utilizzerà una chiave per riga per crittografare i dati sensibili. Tuttavia non è possibile cercare i dati nel database (come indicato). Dipende dal caso d'uso che potresti essere in grado di risolvere il problema tagliando i dati sensibili. Quando si desidera cercare un valore particolare, è possibile eseguire l'hash del valore prima di cercarlo. Tuttavia puoi realizzare solo una ricerca di corrispondenze esatte e non una con caratteri jolly (l'operatore "mi piace" non funzionerà!).
Un approccio completamente diverso sarebbe quello di crittografare l'intero database. I dati vengono memorizzati crittografati sul disco rigido. Quando usi AWS con RDS puoi implementare facilmente questa strategia:
link
Tutti i backup sono crittografati e anche i dati stessi vengono archiviati crittografati. Tuttavia, se qualcuno accede al database quando è in esecuzione, i dati non vengono crittografati per questo particolare utente. Significa che quando si concede a qualcuno il permesso di accedere ai dati verrà decifrato. Tuttavia alla fine si tratta comunque di come hai impostato i tuoi ruoli IAM. O fai affidamento sui ruoli IAM per il KMS o per l'RDS. Quindi, se imposti correttamente i ruoli IAM, tutto andrà bene.
AWS supporta da qualche settimana anche la replica cross-region di tali istanze di database crittografate.
Normalmente per PCI DSS e per conformità HIPAA sono accettati entrambi gli approcci. Mentre stai cercando un modo per cercare i dati, ti consiglio il secondo approccio.
Crittografia disco con RDS
RDS utilizza un volume EBS per archiviare i dati. I dati sul volume EBS possono essere crittografati (vedi link ). Significa che quando l'istanza RDS accede al volume EBS, i dati vengono crittografati. decrittografato in modo trasparente. Significa la lettura resp. operazione di scrittura innesca una decrittazione resp. una crittografia dei dati.
Qui trovi i dettagli su come impostare RDS con volumi EBS crittografati:
link
In sostanza, durante la creazione dell'istanza devi specificare se deve essere crittografato o meno.
Dopo averlo configurato, devi configurare un utente con il database che consente di accedere al database. Alla fine è necessario anche un ruolo IAM che consente di modificare l'istanza del database tramite l'applicazione. Non so se ti servirà il dopo. Dipende molto dal tuo caso d'uso.
L'ultima cosa che consiglio è di crittografare la comunicazione tra l'applicazione e l'istanza RDS.
Riassunto i dati non vengono mai memorizzati in modo non criptato. I dati vengono sempre decodificati quando vengono utilizzati e i dati non crittografati vengono conservati solo nella memoria (RAM).