eBizTalk - Berichten, Unterhalten, Weiterbilden
Ob Branchendiskurs, Fachartikel oder ein Blick hinter die Unternehmenskulissen: eBizTalk ist die Plattform, die uns auffordert, unsere Leser über Events und Projekte auf dem Laufenden zu halten. Und uns gegenseitig natürlich auch.

Geheimnisse sichern mit Azure Key Vault

Veröffentlicht am 01.06.2017 von Alexander Müller , Azure , Security

Da IT-Sicherheit in der heutigen Zeit immer mehr an Bedeutung gewinnt, gehört das Basiswissen über kryptografische Protokolle, Verschlüsselungsalgorithmen und Hash-Funktionen sowie deren kryptografische Stärke zum Basisrepertoire eines jeden Entwicklers. Mit dem aktuellen Trend zur Cloud stellt sich häufig die Frage wie dort Geheimnisse und Schlüssel geschützt werden können. Microsoft bietet dafür den Service „Azure Key Vault“ an.

Durch einen Vortrag auf der Technical Summit 2016 bin ich auf Azure Key Vault aufmerksam geworden. Da das Thema im Vortrag nur in einem Nebensatz erwähnt wurde, habe ich beschlossen mich näher damit auseinanderzusetzen und meine Erkenntnisse zu teilen.

Die Herausforderung

Als .NET-Entwickler hat man sich daran gewöhnt Connection Strings, API Keys etc. im Klartext in der Konfigurationsdatei der Anwendung (z. B. app.config) gleich neben den Anwendungseinstellungen abzulegen – meist einhergehend mit dem Gefühl, dass dies nicht der sicherste Ort dafür ist. Denn die Konfigurationsdatei wird in der Quellcodeverwaltung hinzugefügt und ist dadurch für das gesamte Entwicklungsteam, aber auch für alle anderen Personen mit Zugriff auf das Repository oder das Dateisystem, sichtbar. 

Azure Key Vault 

Mit Azure Key Vault bietet Microsoft einen Cloud Service an, mit dessen Hilfe geheime Schlüssel von der Anwendung separiert und an einem gesicherten Ort abgelegt werden können. So bleibt die Kontrolle über diese Daten beim Besitzer. Der Anwendung selbst wird bei Bedarf die Verwendung eines Schlüssels eingeräumt, jedoch nie direkter Zugriff darauf gewährt. Weiterhin wird jede Aktion in Azure Key Vault geloggt. Dieses Log kann zur Analyse von Monitoring-Systemen genutzt werden, um im Falle einer kompromittierten Anwendung, schnell gewarnt zu werden. Selbst im Fall der Fälle, können bei Verwendung eines Read-only Service Users keine Schlüssel durch die Anwendung geändert oder gelöscht werden.

Schlüssel und Geheimnisse

 image

In Azure Key Vault können Schlüssel und Geheimnisse gespeichert werden, doch worin liegt der Unterschied?

Mit Schüssel (keys) sind kryptografische Schlüssel zum Verschlüsseln und Entschlüsseln von sensiblen Daten in der Anwendung gemeint. Besonders zu schützende Schlüssel können direkt in Hardwaresicherheitsmodule (HSM) importiert oder dort generiert werden (Premium Service Tier notwendig, siehe auch Key Vault – Preise). Damit ist sichergestellt, dass diese nur innerhalb der Modulgrenzen bekannt sind.

In Azure Key Vault gibt es keine semantische Vorgabe, was als Geheimnis zählt und was nicht. Allerdings existiert eine Größenlimitierung von 25KB. Passwörter, API Keys, Connection Strings sind dort bspw. richtig aufgehoben. 

Schutz durch Azure Active Directory

Wie können Anwendungen nun auf die geheimen Daten zugreifen, ohne selbst wieder ein Geheimnis für den Zugriff auf Azure Key Vault preiszugeben? Die Antwort ist „Azure Active Directory“Authentifizierung. Die Anwendung wird im Active Directory registriert und authentifiziert sich dann mit Hilfe von ClientID und ClientSecret. Daraufhin ist der Zugriff auf den Key Vault, welcher sich im selben Active Directory befindet, möglich.

Aber wohin nun mit ClientID und ClientSecret? Beide können als Anwendungseinstellung in der Konfigurationsdatei der Anwendung gespeichert werden, sind dann jedoch wieder für jede Person mit Berechtigung auf Repository oder Dateisystem sichtbar. Zur Umgehung dieses Problems, gibt es zwei Lösungsansätze:

  1. Statt die Werte im Klartext in der Konfigurationsdatei zu speichern, werden „leere“ Einstellungen für ClientID und ClientSecret erstellt und die Werte selbst in den Anwendungseinstellungen im Azure Portal hinzugefügt. Dadurch werden vorhandene Werte zur Laufzeit durch die im Portal konfigurierten Werte überschrieben. Das Portal gilt als sicherer, da es in der Regel nur von einem eingeschränkten Personenkreis administriert wird und durch Zwei-Faktor-Authentifizierung zusätzlich geschützt werden kann. Dennoch, das Geheimnis ist im Klartext im Portal ersichtlich. 
  2. Mehr Sicherheit bietet die Authentifizierung mit ClientID und Zertifikat. Dies ist die sicherste Methode, da in Azure hinzugefügte Zertifikate nicht heruntergeladen werden können und der private Schlüssel nicht über die Oberfläche sichtbar ist. 

Fazit

Azure Key Vault ist ein Service, mit dem Schlüssel und Geheimnisse leicht zentral und separiert von der Anwendung administriert werden können. Laut Produktbeschreibung kann nicht einmal Microsoft selbst diese Daten einsehen. Der zusätzliche Programmieraufwand zur Verwendung des Service hält sich sehr in Grenzen, sodass der Aufwand auch für kleinere Applikationen gerechtfertigt werden kann. Besonders für Cloud-Anwendungen, in denen mit personenbezogenen Daten gearbeitet wird, sollte die Verwendung in Erwägung gezogen werden. Erste Schritte mit Azure Key Vault habe ich in diesem Sway dokumentiert. Eine Kostenübersicht für Azure Key Vault ist hier zu finden.

google_about_ebiz fb_about_ebiztwitter_about_ebizxing_about_ebiz
ebiz_consulting_expertise