$30 off During Our Annual Pro Sale. View Details »

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

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.

Manuel Meyer

September 22, 2020
Tweet

More Decks by Manuel Meyer

Other Decks in Programming

Transcript

  1. Geheimniskrämerei in der Azure-
    Cloud mit dem Azure Key Vault
    Manuel Meyer
    Azure Solution Architect, Trivadis AG
    www.manuelmeyer.net
    @manumeyer1

    View Slide

  2. View Slide

  3. View Slide

  4. Vulnerabilities
    „Firewall
    Konfiguration“
    „Betriebssytem-
    Bugs“
    „Faule
    Sysadmins“
    „Web Server
    Config“

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  8. Der User

    View Slide

  9. Mein Ansatz (früher)
    „Gleiches Passwort überall verwenden = NICHT GUT“
    1 Low Security Password: heybuddy24
    1 High Security Passwort: htowi_fle98dk$$+djk(43.

    View Slide

  10. Mein Ansatz (heute)
    Keepass
    MFA.

    View Slide

  11. Mein Ansatz (heute)
    qhjp7n0Qdnctw87G5cPg
    Lkjsdk32lkö2dlkj3klj%&/lkjs()
    slkjsEWeio***djfkl1109823lskjwJ

    Ein Ort für meine Passwörter
    Auto-Complete
    439 Einträge.

    View Slide

  12. www.haveibeenpwned.com
    Troy Hunt

    View Slide

  13. View Slide

  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”

    View Slide

  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.

    View Slide

  16. Basics
    Management
    Plane
    Data Plane
    “Verwalten von
    Geheimnissen”
    “Arbeiten mit
    Geheimnissen”
    RBAC
    KV Access Policy
    RBAC (Preview)

    View Slide

  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.

    View Slide

  18. View Slide

  19. View Slide

  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

    View Slide

  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.

    View Slide

  22. View Slide

  23. View Slide

  24. Azure Storage Encryption
    Encryption at Rest:
    ▪ PMK: Platform Managed Key (default)
    ▪ CMK: Customer Managed Key (a.k.a. BYOK)
    ▪ Client-Side Encryption.

    View Slide

  25. Digital Envelope, CEK, KEK, What???
    Source: Nilay Parikh, https://blog.nilayparikh.com/azure/development/best-practices-client-side-encryption-with-azure-storage-services/

    View Slide

  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.

    View Slide

  27. View Slide

  28. View Slide

  29. Lets write some code!
    App

    View Slide

  30. www.shhgit.com

    View Slide

  31. Lets write some code!
    App

    View Slide

  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.

    View Slide

  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.

    View Slide

  34. View Slide

  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.

    View Slide

  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/

    View Slide

  37. Thank you!
    Manuel Meyer
    www.manuelmeyer.net
    @manumeyer1
    [email protected]

    View Slide