Gran pregunta Es una de las cosas importantes que a menudo se pasa por alto o se mira para otro lado o se esconde detrás de contratos, políticas y procedimientos.
Hay diferentes formas de abordar esto y cada uno tiene sus propios pros y contras.
a) Cifrar todo
- ¿Cuáles son algunos principios para construir servicios de almacenamiento en caché?
- ¿Cuántas UI de sitios web / foros sociales diferentes necesita realmente el mundo?
- Tengo 17 años y me enseño a codificar. Sé que tener un mentor me ayudará mucho durante el proceso. ¿Algún consejo?
- Si los sistemas NewSQL funcionan como se anuncia, ¿por qué alguien debería usar un DB NoSQL?
- ¿Qué puedo hacer para poder responder preguntas publicadas por otros en Stack Overflow? ¿En qué áreas debería centrarme en la programación?
Cifre todos los datos que considere confidenciales o sensibles para el usuario. los datos deben cifrarse antes de almacenarse en la base de datos y descifrarse durante la recuperación. Por lo tanto, debe tener una capa por encima de DB para hacer esto.
Cree una prueba de auditoría y haga que los datos sean accesibles solo para sus usuarios finales y, para mayor transparencia, haga que el registro de auditoría esté disponible.
Haga esto dando al usuario el control total, es decir, haga que proporcionen una clave, que puede utilizar para derivar la clave de cifrado.
b) Cifrar datos en reposo.
Este es el caso de uso más común al que recurren las personas, pero siempre tiene sus propios pros y contras. Los datos están encriptados y almacenados, pero son accesibles cuando tiene acceso para consultar la base de datos. Entonces, la manera limpia de hacer esto es crear usuarios de DB separados y auditar ensayos y monitoreo para asegurar que los datos no sean accesibles sin los permisos adecuados.
c) Anonimizar los datos.
Mantenga al usuario y la información del usuario separados y encriptados. mantener la información financiera de los usuarios por separado. Entonces, digamos que si está almacenando mis extractos bancarios o extractos de CC, tendrá startbucks, pagos de alquiler, etc. Pero cuando esto se atribuye a una “identidad” aleatoria, nadie puede (debería poder) derivar la identidad real .
Incluso puedes sustituir Starbucks por otros nombres aleatorios.
Qué hacer cuando habilita el cifrado:
a) Asegúrese de que las claves estén almacenadas en un lugar seguro. (AWS KMS o Azure KMS)
Creo que con AWS, incluso puede vincular la clave de cifrado a la identidad si habilita Cognito … recuerde vagamente leer esto … o al menos puede hacerlo para los archivos almacenados en S3. Así que busca extender si ofrecen API
b) Asegúrese de utilizar claves específicas para el usuario final y solo ese usuario tiene acceso a la clave.
c) No almacene claves en el sistema de archivos o la base de datos. Use HSM en prem o en la nube (AWS / Azure). SafeNet es la mejor apuesta.
d) Habilite la auditoría en cada punto que se le ocurra
e) Agregue siempre autorización cuando use cifrado. El cifrado sin autorización es inútil.
f) Transparencia: poner los datos a disposición de todos o según sea necesario para la transparencia.
Hazme un ping si necesitas más detalles.
Nota: Noté un par de respuestas al terminar esto. Sí, puede proteger los datos y brindar tranquilidad al cliente y aún así extraer los datos. La clave aquí es automatizar la generación de claves, la integración con su aplicación / servicios y crear pruebas de auditoría. Debe observar cómo se mueven los datos dentro de su sistema de un extremo a otro (al igual que TSA / DHS analiza las amenazas de seguridad dentro del aeropuerto y crea puntos de control) y asegurarse de que solo los usuarios / sistemas autorizados puedan acceder y monitorear el uso. Cualquier señal de alerta que tengas que investigar y repetir el proceso. De nuevo, es mucho trabajo pero vale la pena.