Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Almacenamiento y distribución de secretos

Almacenamiento y distribución de secretos

3fafd51aa8dad766208e11eaaa1d534c?s=128

Pablo Ángel Trinidad

June 28, 2018
Tweet

Transcript

  1. Almacenamiento y distribución de secretos Pablo Trinidad @pablotrinidadpa

  2. Secreto "Cualquier cosa que provee acceso o identificación en un

    sistema”
  3. Secreto "Cualquier cosa que provee acceso o identificación en un

    sistema” • Credenciales de usuario • Accesos a una DB • API Keys • Certificados TLS
  4. Escenario #1

  5. Escenario #1

  6. Escenario #1

  7. Escenario #1

  8. Escenario #1

  9. Escenario #1

  10. Escenario #1

  11. Escenario #2 Automated

  12. Escenario #2 Automated

  13. Escenario #2 Automated $ source .env
 $ ./manage.py runserver

  14. Escenario #2 Automated

  15. Escenario #2 Automated

  16. Escenario #2 Automated $ echo “.env” >> .gitignore

  17. Escenario #2 Automated $ echo “.env” >> .gitignore

  18. Escenario #3 Elastic Infrastructure

  19. Problemas • Añadir, actualizar o borrar secretos puede ocasionar downtimes

    • ¡Los secretos están en texto plano!
  20. Escenario #4 CI & CD Pipeline

  21. Problemas • ¿Quién tiene acceso a los secretos? • ¿Quién?

    ¿Cuándo? ¿Cómo? • “Cifrados” - Los secretos están a una llave de estar expuestos
  22. None
  23. None
  24. • Open Source • Centralizado • Cifrado (en reposo &

    en tránsito) • Políticas de acceso (ACL) • Transparente (auditable) & • REST JSON API
  25. None
  26. HTTP 1.1 GET /secret/chilango-django/ { "DJANGO_SECRET_KEY": “9cmcj5H8WUUgM7hhxWbyaS…”, "AWS_SECRET_KEY_ID": "AKIACXGQAKANUXMINXLXV", "AWS_SECRET_KEY":

    "IpOBT3LkGh8YmD90itGzsryHVG2K2+Ek72FMOiu/Ktg" } Secretos (kv)
  27. Políticas (ACL)

  28. Secretos dinámicos

  29. -Efímeros -Únicos -Revocables Secretos dinámicos

  30. Encryption as a service

  31. Architecture Core

  32. Architecture Core Auth • AWS • LDAP • GitHub •

    Tokens • Username/Password
  33. Architecture Core Auth • AWS • LDAP • GitHub •

    Tokens • Username/Password Storage • RDB (PostgreSQL, MySQL, etc) • Cloud DB • Consul
  34. Architecture Core Auth • AWS • LDAP • GitHub •

    Tokens • Username/Password Storage • RDB (PostgreSQL, MySQL, etc) • Cloud DB • Consul Audit • File • Syslog • Socket
  35. Architecture Core Auth • AWS • LDAP • GitHub •

    Tokens • Username/Password Storage • RDB (PostgreSQL, MySQL, etc) • Cloud DB • Consul Audit • File • Syslog • Socket Secret • Key-Value (kv) • Database • RabbitMQ • AWS • SSH • PKI • Google Cloud
  36. Deployment

  37. Deployment

  38. Deployment

  39. UI!

  40. Use case CI & CD Pipeline

  41. Use case CI & CD Pipeline • Source (GitHub) •

    Unit Tests (AWS Code Build) <—> AWS IAM Auth • Staging (AWS CodeDeploy) <—> AWS EC2 Auth • Manual Approval (AWS SNS) • Production (AWS CodeDeploy) <—> AWS EC2 Auth
  42. Use case CI & CD Pipeline • Source (GitHub) •

    Unit Tests (AWS Code Build) <—> AWS IAM Auth • Staging (AWS CodeDeploy) <—> AWS EC2 Auth • Manual Approval (AWS SNS) • Production (AWS CodeDeploy) <—> AWS EC2 Auth
  43. vaultproject.io

  44. ¡Gracias! Pablo Trinidad @pablotrinidadpa p@pablotrinidad.me