BASTA2020: Geheimniskrämerei in der Azure-Cloud mit dem Azure Key Vault

7252086bae9203045dd7f5664fd96a07?s=47 Manuel Meyer
September 22, 2020

BASTA2020: Geheimniskrämerei in der Azure-Cloud mit dem Azure Key Vault

Das Speichern von Geheimnissen, die von einer Anwendung benötigt werden, war schon immer eine Herausforderung. Eigentlich ist es ja ganz simpel: Alles was geheim ist, wird verschlüsselt. Die Verfahren sind bekannt und erprobt. Doof ist nur, dass der Schlüssel ja auch ein Geheimnis ist. Was machen wir dann mit dem Schlüssel? Mit einem Passwort den Schlüssel verschlüsseln? Moment, wir drehen uns gerade im Kreis. Der Azure Key Vault ist das Angebot der Azure-Cloud um dieses Problem zu lösen. In dieser Session schauen wir uns an, was der Key Vault ist und wie wir diesen in unserer Architektur verwenden.

7252086bae9203045dd7f5664fd96a07?s=128

Manuel Meyer

September 22, 2020
Tweet

Transcript

  1. Geheimniskrämerei in der Azure- Cloud mit dem Azure Key Vault

    Manuel Meyer Azure Solution Architect, Trivadis AG www.manuelmeyer.net @manumeyer1
  2. None
  3. None
  4. Vulnerabilities „Firewall Konfiguration“ „Betriebssytem- Bugs“ „Faule Sysadmins“ „Web Server Config“

  5. Applications 83% Operating Systems13% Hardware 4% VULNERABILITY CLASSIFICATION

  6. https://www.informationisbeautiful.net/visualizations/worlds-biggest-data-breaches-hacks/

  7. 2 Probleme: Der User & die IT-Leute

  8. Der User

  9. Mein Ansatz (früher) „Gleiches Passwort überall verwenden = NICHT GUT“

    1 Low Security Password: heybuddy24 1 High Security Passwort: htowi_fle98dk$$+djk(43.
  10. Mein Ansatz (heute) Keepass MFA.

  11. Mein Ansatz (heute) qhjp7n0Qdnctw87G5cPg Lkjsdk32lkö2dlkj3klj%&/lkjs() slkjsEWeio***djfkl1109823lskjwJ … Ein Ort für

    meine Passwörter Auto-Complete 439 Einträge.
  12. www.haveibeenpwned.com Troy Hunt

  13. None
  14. Azure Key Vault Übersicht 1. Speichern und schützen von “Geheimnissen”

    Keys, Secrets, Certificates 2. Geheimnisse anderen Apps und Services “zur Verfügung stellen”
  15. Basics ▪ Key ▪ Kryptographischer RSA Schlüssel ▪ Kann den

    Key Vault NIE verlassen! ▪ Apps müssen Ver-/Entschlüsselung und Signierung an den KV delegieren ▪ Secret ▪ Eine Sequenz von Bytes (unter 25kb) ▪ Authorisierte User schreiben secrets in den KV ▪ Authorisierte Apps lessen secrets vom KV ▪ Certificate.
  16. Basics Management Plane Data Plane “Verwalten von Geheimnissen” “Arbeiten mit

    Geheimnissen” RBAC KV Access Policy RBAC (Preview)
  17. Basics ▪ Software Protected Keys ▪ FIPS 140-2 Level 1

    ▪ HSM Protected Keys ▪ FIPS 140-2 Level 2 10k Operations = 0.03 EUR Cert Renewal: 2.53 EUR HSM Keys: 0.84 EUR/Mt. pro Key HSM Advanced: 4.22/Mt. pro Key.
  18. None
  19. None
  20. Azure Disk Encryption Encryption at Rest: ▪ SSE with PMK

    (default): Storage Service Encryption with Platform Managed Key ▪ SSE with CMK: Storage Service encryption with Customer Managed Key ▪ ADE: Azure Disk Encryption (OS Level) ▪ Windows: Bitlocker ▪ Linux: DM-Crypt
  21. IaaS Disk Encryption 1. VM Stoppen (Deallocated) 2. Im Key

    Vault Disk Encryption aktivieren 3. Schlüssel erstellen 4. Disk Encryption Set erstellen und im KV berechtigen 5. Disk dem Disk Encryption Set zuweisen.
  22. None
  23. None
  24. Azure Storage Encryption Encryption at Rest: ▪ PMK: Platform Managed

    Key (default) ▪ CMK: Customer Managed Key (a.k.a. BYOK) ▪ Client-Side Encryption.
  25. Digital Envelope, CEK, KEK, What??? Source: Nilay Parikh, https://blog.nilayparikh.com/azure/development/best-practices-client-side-encryption-with-azure-storage-services/

  26. Demo: Client Side Storage Encryption 1. Storage Account erstellen (erledigt)

    2. Applikation schreiben für Blob Upload: (erledigt: ClientSideEncryptionDemo) 3. Applikation im AAD registrieren (erledigt) Erstellt einen Service Principal (objectId, secret) 4. Applikation für die Verwendung des Service Principals konfigurieren (erledigt) 5. Schlüssel im KV erstellen “ClientSideEncryptionKey” 6. Eine KV Access Policy erstellen, damit die App den Schlüssen “ClientSideEncryptionKey” verwenden kann. 7. Applikation ausführen.
  27. None
  28. None
  29. Lets write some code! App

  30. www.shhgit.com

  31. Lets write some code! App

  32. Ziel: Kein Secret in Code/Config ▪ 1. Service Principal verwenden

    Wir brauchen ObjectId und Secret vom Service Principal im code ▪ 2. Verwenden einer Azure Managed Service Identity (MSI) Der App Service unterstützt die MSI.
  33. Demo: Kein Secret im Code/Config 1. Secret im Key Vault

    erstellen 2. AppService: Managed Identity Aktivieren 3. Key Vault: KV Access Policy für MSI erstellen 4. Code zur Abfrage des Secrets schreiben und deployen.
  34. None
  35. Zusammenfassung ▪ Der Key Vault speichert: ▪ Keys: Können nie

    mehr raus aus dem KV ▪ Secrets: Beliebige Zeichenketten ▪ Certificates: Zertifikate ▪ Verwaltung von Geheimnissen via “Management Plane” (Bspw. Azure Portal, abgesichert durch Azure RBAC) ▪ Verwendung der Geheimnisse über die Data Plane (REST API, abgesichert durch Key Vault Access Policies) ▪ Scenarios ▪ Key Vault für IaaS Disk Encryption ▪ Key Vault für Client Side Storage Encryption ▪ Key Vault um Geheimnisse aus dem Code zu entfernen. Mit einer MSI.
  36. Links ▪ Docs: https://docs.microsoft.com/en-us/azure/key-vault/ ▪ Key Vault Developer Guide: https://docs.microsoft.com/en-us/azure/key-

    vault/general/developers-guide ▪ Key Vault Diagnostics: https://zimmergren.net/azure-key-vault-diagnostics- who-accessing-your-vault/
  37. Thank you! Manuel Meyer www.manuelmeyer.net @manumeyer1 manuel.meyer@trivadis.com