September 2015

Band 30, Nummer 9

Dieser Artikel wurde maschinell übersetzt.

Microsoft Azure – Azure wichtige Tresor vertraulichen Informationen zu schützen

Durch Rahul Nath | September 2015

Viele Clientanwendungen erstellt heute viel mit vertraulichen Informationen in irgendeiner Form oder einer anderen häufig mit einem externen System wie z. B. eine Datenbank-Verbindungszeichenfolgen. Diese Schlüssel werden in der Regel als Teil der Konfigurationsdatei der Anwendung bereitgestellt und als nur-Text für alle Benutzer mit Zugriff auf den Bereitstellungsservern verfügbar sind. Dies wirft natürlich ein großer Sicherheitsrisiko.

Microsoft Azure Schlüssel Tresor ist ein Cloud-gehosteten Hardwaresicherheitsmodulen (HSM)-Dienst zum Verwalten von kryptografischen Schlüsseln und andere vertrauliche Informationen gesichert – geheime Schlüssel im Schlüssel Tresor Terminologie – an einem zentralen Ort, und kann über eine REST-API zugegriffen werden, durch den entsprechenden URI für den Schlüssel oder den geheimen Schlüssel angeben. Schlüssel Tresor können auch einen Softwareschlüssel, statt ein HSM-Backup erstellen; in beiden Fällen der private Teil des Schlüssels nicht lassen Sie die Taste Tresor Grenze und kann nie werden angezeigt oder freigegeben.

In diesem Artikel werde ich ein Szenario erläutert, ein großes Unternehmen, Contoso, eine Line-of-Business (LOB)-Anwendung, mit der Entwicklung auf verschiedenen Anbietern ausgelagert erstellen. Die Anwendung interagiert mit mehrere Dienste von Drittanbietern und befasst sich mit vertraulichen Informationen, einschließlich Kunden personenbezogene Informationen (PII). Werde ich zunächst an die vorhandene Implementierung und die Sicherheit dieser wirft für das Unternehmen gibt, dann zeigen, wie das Unternehmen Tresor der Azure-Schlüssel verwendet, um diese Probleme zu lösen.

Die vorhandene Anwendung

Contoso ist ein großer Produktion Autohersteller derzeit erstellt eine LOB-Anwendung, eine verbundene Auto-Erfahrung für Kunden, die Fahrzeuge und andere interessierten Parteien auf einer einzigen Plattform bereitzustellen. Da Contoso nur ein kleines IT-Team intern verfügt, ausgelagerte es die Entwicklung der Anwendung verschiedener Hersteller jeweils verschiedene Teile der Anwendung zu erstellen. Die Anwendung wird der Cloud gehostete und stellt verschiedene APIs für verschiedene Entitäten, um mit ihr interagieren. Es verwendet auch die Anwendung des Drittanbieters APIs, nutzen Daten aus externen Diensten, und ruft in interne Contoso-Clientanwendungen, die über Webdienste verfügbar gemacht.

Die Anwendung behandelt personenbezogene Daten, die vertraulich behandelt und sicher gespeichert werden soll. Zu Beginn nicht viel aufwändiger wurde angegeben, wie vertraulicher Informationen behandelt werden sollen, und verschiedener Hersteller haben ihre eigenen Methoden. Die meisten Verbindungszeichenfolgen waren Bestandteil der Konfigurationsdatei der Anwendung, deshalb pro Bereitstellung nicht geändert werden kann; Einige Schlüssel zum Verschlüsseln Personenbezogene Informationen waren in der Anwendung hartcodiert. und einige Zertifikatdetails für die Verbindung mit der Contoso-Webdienste wurden in der Datenbank der Anwendung. Für Contoso verwaltet wurde, und das Unternehmen gemeinsam verwenden die vertrauliche Informationen der Anwendungsanbieter Entwicklung empfohlen wird nicht beendet. Contoso erkannte auch, wer Zugriff auf ihren Bereitstellungsserver hatten sehr leicht PII-Daten manipulieren könnten wäre eine ernsthafte Bedrohung. Das Unternehmen musste den Ansatz für die Verwaltung und den Zugriff auf vertrauliche Informationen zu vereinheitlichen.

Die Anwendung einpassen

Contoso wurde in verschiedenen Alternativen für das Verwalten von vertraulichen Informationen und die Erfahrung zusammen, sodass es konsistent in verschiedenen Anwendungen hergestellt werden konnte. Das Unternehmen wollte einen zentralen Speicher für die Schlüssel, die mit den Security-Team einfach verwaltet werden können, und es leistungsfähig mit verschiedenen Richtlinien auf die Informationen bereitstellen möchte. Darüber hinaus hat Contoso dies erfordern täglichen Überwachung mit vielen Wartungsaufwand möchten.

Es entschied sich Azure Schlüssel Tresor, wodurch die Verwendung von Software und Keys HSM-Backup sowie Importieren vorhandener Schlüssel aus einer PFX-Datei. Depot-Taste können Sie kleine Informationseinheiten (Kennwörter) sicher in der Cloud speichern und darauf zugreifen, wie erforderlich. Da dieser Dienst ist vollständig verwaltet und auf der Azure-Plattform verwaltet, werden Sie von dem zusätzlichen Aufwand der Verwaltung freigegeben.

Schlüssel Tresor baut so auf, dass die Schlüssel nicht erkannt oder von allen Benutzern somit eine sehr sichere Plattform extrahiert. Es bietet eine umfangreiche API für den Zugriff und die Interaktion mit dem Tresor als auch eine C#-API-Bibliothek für Clientanwendungen, die auf Microsoft .NET Framework ausgeführt. Die Möglichkeit, die steuern, wie die verschiedenen Anwendungen und Anbietern interagieren kann es ist ein wichtiger Faktor, der Schlüssel Tresor eine gute Wahl für Contoso, macht das Unternehmen möchte die Weise einschränken verschiedener Hersteller der Anwendung können die sicheren Informationen interagieren. Darüber hinaus Contoso Techniker bereits stark Windows PowerShell-Skripts zur Verwaltung der verschiedenen anderen Server, und Schlüssel Tresor ist vollständig über Windows PowerShell verwaltet.

Erstellen den Schlüssel Tresor: Der Sicherheitsadministrator des Contoso-IT-Teams ist verantwortlich für das Depot Schlüssel einrichten und Verwalten der Schlüssel und geheime Schlüssel. Azure Schlüssel Tresor können erstellt werden und mithilfe von Windows PowerShell-Cmdlets verwaltet und ist mit den neuesten Azure PowerShell verfügbar (0.9.2 oder höher). Sobald auf Azure-Abonnements auf der Azure-PowerShell-Aufforderung verbunden ist, müssen Sie AzureResourceManager-Modus wechseln, der für die Cmdlets Tresor Schlüssel benötigt. Anschließend können verwenden das Cmdlet "New-AzureKeyVault", Sie ein neues Depot durch einen Tresor Name (global eindeutig ist), die Ressourcengruppe und Speicherort angeben:

Switch-AzureMode AzureResourceManager
New-AzureResourceGroup –Name 'ContosoResourceGroup' –Location 'East Asia'
New-AzureKeyVault -VaultName 'ContosoKeyVault' -ResourceGroupName
  'ContosoResourceGroup' -Location 'East Asia'

Bei erfolgreicher Ausführung der Befehle sind die Details des neu erstellten Schlüssel Tresor der Azure-PowerShell-Konsole ausgeben umfasst den Namen des sicherungstresors und der URI zur eindeutigen Identifizierung den Tresor.

Einrichten von Tresor Schlüssel: Azure Schlüssel Tresor ermöglicht die Erstellung und Speicherung von kryptografischen Schlüsseln und auch die Speicherung der Kennwörter, die begrenzte Größe-Oktett-Objekte sind, die keine spezifische Semantik aufweisen.

Kryptografische Schlüssel im Tresor als JSON-Web-Schlüssel-Objekte dargestellt werden, und zurzeit nur RSA-Schlüssel werden unterstützt. Sobald ein Schlüssel im Tresor erstellt wurde, ist nur der öffentliche Teil des Schlüssels außerhalb der Grenzen Tresor verfügbar.

Ein Schlüssel Depot kann Schlüssel und geheime Schlüssel enthalten und externer Zugriff auf diese separat gesteuert werden kann. Schlüssel und geheime Schlüssel sind versionsspezifisch Objekte im Tresor, und eine neue wird eindeutig durch die Depot-URL und den Objektnamen und die Versionsnummer. Wenn ein Objekt mit einem vorhandenen Namen erstellt wird, ein neues Objekt mit demselben Namen und eine neue Versionsnummer erstellt, und dadurch wird die aktuelle Version. Ein Objekt ohne eine Versionsnummer zugreifen möchten, gibt die aktuelle Version zurück. Die Objekt-ID zur eindeutigen Identifizierung ein Objekts in einem Depot verwendet wird, weist das folgende Format, und wird verwendet, um Schlüssel und geheime Schlüssel mit der API interagieren:

https://{keyvault-name}.vault.azure.net/{object-type}/{object-name}/{object-version}

Wobei gilt:

keyvault-name           : Globally unique key vault name
object-type               : Either "keys" or "secrets," indicating the type of object
object-name              : Unique name within a key vault
object-version           : System generated string, optionally used to          
                              identify a specific version of object

Schlüssel im Tresor der Azure-Schlüssel werden als JSON-Web-Schlüssel (JWK)-Objekte dargestellt, mit der grundlegenden JWK Spezifikationen erweitert, um wichtige Typen zu aktivieren, die für die Implementierung der Tresor der Azure-Schlüssel eindeutig sind. Zurzeit werden Tresor der Azure-Schlüssel nur den RSA-Algorithmus einen asymmetrischen Algorithmus unterstützt. Azure Schlüssel Tresor unterstützt erstellen, importieren, aktualisieren, löschen, auflisten, abrufen, Backup und Wiederherstellung für Schlüssel, und diese Vorgänge mithilfe der REST-API und Windows PowerShell-Cmdlets verfügbar sind. Da die Contoso-Anwendung Schlüssel zum Ver- und Entschlüsseln von bestimmten Personenbezogene Informationen verwendet, ein Schlüssel im Tresor erstellt werden soll. Contoso-Techniker verwenden Sie das folgende Skript um einen neuen Schlüssel in den Tresor, mit einem Namen hinzuzufügen, der in ihren Depot eindeutig ist:

Add-AzureKeyVaultKey -VaultName 'ContosoKeyVault' -Name 'ContosoPIIKey'
  -Destination 'Software'

Bei erfolgreicher Ausführung wird dadurch einen neuen Software RSA-Schlüssel erstellt, in der ContosoKeyVault, die mit einem eindeutigen Bezeichner (z. B. https://ContosoKeyVault.vault.azure.net/keys/ContosoPIIKey/ bfacf5f768ae42ffb0a0bca448aead87) identifiziert werden kann, der die Techniker die Hersteller der Anwendung gemeinsam genutzt werden.

Vertrauliche Informationen in den Tresor der Azure-Schlüssel sind Oktettsequenzen mit einer maximalen Größe von 25 KB. jede Art von Daten akzeptiert und sicher gespeichert. Schlüssel Tresor unterstützt erstellen, abrufen, auflisten, löschen und Update-Vorgänge für geheime Schlüssel und diese Vorgänge sind über die REST-API und Windows PowerShell-Cmdlets verfügbar. Da die Contoso-Anwendung Verbindungszeichenfolgen in den Konfigurationsdateien der Anwendung speichert, entscheiden Contoso-Techniker dies in den Tresor Schlüssel zu verschieben, in denen es sicher gespeichert werden kann und dennoch möglich, dass mithilfe eines eindeutigen Bezeichners. Das folgende Skript wurde verwendet, die SQL-Datenbank-Verbindungszeichenfolge in den Tresor hinzufügen:

$ContosoSQLConnectionString = ConvertTo-SecureString -String
  "ContosoSQLConnectionString"
  -AsPlainText -Force
Set-AzureKeyVaultSecret -VaultName "ContosoKeyVault" -Name
  "ContosoSQLConnectionString"
  -SecretValue $ContosoSQLConnectionString

Bei erfolgreicher Ausführung wird dadurch einen geheimen Wert erstellt, in der ContosoKeyVault, die über einen eindeutigen Bezeichner (z. B. https://ContosoKeyVault.vault.azure.net/secrets/ContosoSQLConnectionString/ 90018dbb96a84117a0d2847ef8e7189d), den Hersteller der Anwendung erneut die Techniker freigeben identifiziert werden kann.

Authentifizieren von Clientanwendungen für die Verwendung des Schlüssels Tresor: Der neu erstellte Tresor ist derzeit möglich, nur über den Azure-Konto, das sie erstellt und nicht von einer anderen Person. Contoso muss verschiedene Clientanwendungen bieten Zugriff auf den Tresor. Zugriff auf ein Azure wichtige Tresor ist mit einer Azure Active Directory (Azure AD) anwendungstoken gesichert. Zu diesem Zweck müssen die Contoso-Techniker eine Anwendung in Azure AD erstellen und Sichern Sie es mit einem Authentifizierungsschlüssel (ein gemeinsamer geheimer Schlüssel) oder ein Zertifikat. Erstellen eine gesicherte Schlüsselzugriff Authentifizierung mit Azure AD-Anwendung kann mithilfe der Azure-Verwaltungsportal unter der Registerkarte "Applications", in der Active Directory-Option erreicht werden. Aber schützen seiner wichtigsten Tresor mit einem Authentifizierungsschlüssel ist nicht was Contoso bevorzugt, erneut würde dann bedeuten vertraulichen Informationen in den Client einfügen Anwendungskonfigurationsdatei wird besteht, die diese benötigten, überhaupt zu vermeiden. Da wichtige Tresor der einzelnen Speicher für alle vertraulichen Daten handelt, ist außerdem ermöglicht den Zugriff auf die Anmeldeinformationen für die es etwas, das stark vermieden werden sollte. Aus diesem Grund entscheidet sich Contoso zertifikatbasierte Authentifizierung verwenden, damit sie das Zertifikat direkt auf die Anwendungsbereiche bereitstellen und weiter kann das Zertifikat mit einem Kennwort zu schützen.

Erstellen einer Azure AD-Anwendung, die Zertifikatauthentifizierung verwendet, kann über die Windows PowerShell-Befehlszeile durchgeführt werden. Contoso verfügt bereits über einen Mechanismus zum Generieren von Zertifikaten für die interne Anwendung sichern, damit das Unternehmen den gleichen Dienst verwendet, um ein Zertifikat für die Azure AD-Anwendung zu generieren. Sobald das Unternehmen das Zertifikat verfügt, kann die Azure AD-Anwendung mit dem folgenden Skript erstellt werden:

$certificateFilePath = "C:\certificates\ContosoADApplication.cer"
$x509Certificate2 = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2
$x509Certificate2.Import($certificateFilePath)
$rawCertData = $x509Certificate2.GetRawCertData()
$credentialValue = [System.Convert]::ToBase64String($rawCertData)
$startDate= [System.DateTime]::Now
$endDate = $startDate.AddYears(1)
$newADApplication = New-AzureADApplication -DisplayName
  "ContosoKeyVaultADApplication"
  -HomePage  "https://www.contoso.com" -IdentifierUris "https://www.contoso.com" 
  -KeyValue  $credentialValue -KeyType "AsymmetricX509Cert" -KeyUsage "Verify"
  -StartDate $startDate -EndDate $endDate

Mit dem Schlüssel Tresor und der Azure AD-Anwendung erstellt muss Contoso jetzt diese miteinander verknüpfen, damit das anwendungstoken vom Azure AD-Anwendung zum Authentifizieren beim Tresors Schlüssel verwendet werden kann. Dies kann mithilfe des Set-AzureKeyVaultAccessPolicy-Cmdlet. Stellen Sie auch die Berechtigungen, die die Azure AD-Anwendung für die wichtigsten Depot zu diesem Zeitpunkt hat die Parameter PermissionToKeys und PermissionToSecrets verwenden.

Der PermissionToKeys-Parameter gibt ein Array von Schlüsselvorgang Berechtigungen auf die Anwendung gewährt werden soll, und verfügt über eine Liste zulässiger Werte (entschlüsseln, verschlüsseln, UnwrapKey, WrapKey, vergewissern Sie sich, melden Sie sich, abrufen, auflisten, aktualisieren, erstellen, importieren, löschen, sichern, wiederherstellen, alle). Der PermissionToSecrets-Parameter gibt ein Array von geheimen Vorgang Berechtigungen für die Anwendung und verfügt auch über eine Liste zulässiger Werte (abrufen, auflisten, festlegen, löschen, alle). Die Berechtigungen gelten für alle Schlüssel und geheime Informationen in den Tresor zur Verfügung; Selektive Berechtigungen erteilen, um bestimmte Schlüssel oder Kennwörter im Tresor ist nicht zulässig. Wenn selektiven Berechtigung, Schlüssel oder Kennwörter erforderlich ist, müssen Sie separate Depots mit dem ausgewählten Schlüssel und zu handhaben, die Berechtigungen zu erstellen. Kein Setup Gebühr für die wichtigsten Tresor selbst, aber könnte dies zu ändern und wichtige Tresor Preis vor dem Erstellen von separaten Depots überprüfen möchten. Um verschiedene Zugriffsebenen auf die gleichen Schlüssel und geheime Schlüssel zu gewähren, können Sie mehrere Azure AD-Anwendung erstellen und mit unterschiedlichen Berechtigungsstufen zu registrieren.

Contoso-Techniker verwenden Sie das folgende Skript zum Zuordnen von Azure AD-Anwendung und die wichtigsten Tresor, und die Berechtigungen an, die die Anwendung auf den Tresor:

$ServicePrincipal = New-AzureADServicePrincipal -ApplicationId $newADApplication.ApplicationId
Set-AzureKeyVaultAccessPolicy -VaultName 'ContosoKeyVaultRahul' -ObjectId  $ServicePrincipal.Id
  -PermissionsToKeys encrypt,decrypt,get -PermissionsToSecrets get
$ServicePrincipal.ApplicationId

Herstellen einer Verbindung mit Schlüssel Tresor, von der Clientanwendung: Nachdem die Azure AD-Anwendung erstellt und die wichtigsten Tresor zugeordnet wurde, können es von einer Clientanwendung Sie zur Authentifizierung mit den wichtigsten Tresor. Da die Contoso-Anwendung auf der entwickelt wurde, verwenden die Anwendungsanbieter Microsoft.Azure.KeyVault NuGet-Paket (bit.ly/1Ji6xcS) für die Verbindung zum wichtigsten Tresor.

Authentifizieren von einer Clientanwendung mit der Azure AD-Anwendung geschieht einfach mithilfe der Azure AD Authentication Library (ADAL), das ebenfalls als NuGet-Paket verfügbar ist. Die Anwendung mit der Azure AD-Anwendung authentifizieren muss lediglich eine Client-ID und die Zertifikat-ID (z. B. den Fingerabdruck), die in der Konfigurationsdatei platziert werden kann. Diese können sicher in der Konfigurationsdatei bereitgestellt werden, da sich diese vertraulichen Informationen sind.

Das c#-SDK enthält eine KeyVaultClient-Klasse, siehe Abbildung 1. Der Konstruktor akzeptiert eine Callback-Methode, um die gültigen Tokens von Azure AD-Anwendung bereitzustellen. Die Rückrufmethode wird immer dann aufgerufen, wenn eine kryptografische Aktion mit dem Client ausgeführt wird. Verwendung der benutzerdefinierten Funktion GetCertificateByThumbprint, verwenden die Detailinformationen aus der Konfigurationsdatei der Anwendung und zum Authentifizieren von Azure AD-Anwendung ein gültiges Zertifikat abgerufen. Die ADAL-Bibliothek speichert das Token vom Azure AD-Anwendungszeit das erste und das Token aus dem Cache bei jedem nachfolgenden Aufruf dient, bis das Token abgelaufen ist.

Abbildung 1 Herstellen einer Verbindung mit wichtigen Tresor

var keyVaultClient = new KeyVaultClient(async (authority, resource, scope) =>
{               
  string azureAdApplicationId =
     ConfigurationManager.AppSettings["AzureAdApplicationId"];
  string certificateThumbprint =
    ConfigurationManager.AppSettings["CertificateThumbprint"];
  X509Certificate2 certificate =
    GetCertificateByThumbprint(certificateThumbprint);
  var clientAssertionCertificate =
    new ClientAssertionCertificate(azureAdApplicationId, certificate);
  var authenticationContext = new AuthenticationContext(authority);
  var result =
    await authenticationContext.AcquireTokenAsync(resource,  
    clientAssertionCertificate);
  return result.AccessToken;
});

Konfigurieren von Clientanwendungen, die Schlüssel und geheime Schlüssel verwenden: Der Client Anwendungsanbieter müssen nun aktualisieren Sie die vorhandene Anwendung, die den Schlüssel und geheime Bezeichner von Contoso-Techniker gemeinsam verwenden, um die erforderliche Verbindungszeichenfolge und wichtige Informationen aus dem Tresor zu erhalten. Der Schlüsselbezeichner selbst sind nicht vertrauliche Informationen, können sie problemlos in der Konfigurationsdatei der Anwendung platziert werden.

Verbindungszeichenfolge oder ähnliche vertrauliche Informationen, die als einen geheimen Schlüssel im Schlüssel-Tresor gespeichert wurde, erforderlich ist, wird der vorhandene Code zum Lesen aus dem Tresor mithilfe der KeyVaultClient ersetzt:

var connectionStringIdentifier =
  ConfigurationManager.AppSettings["ConnectionStringIdentifier"];
var contosoSQLConnectionString =
  await keyVaultClient.GetSecretAsync(connectionStringIdentifier);

Dieser Code sucht zunächst geheimen Bezeichner für die Verbindungszeichenfolge, die in der Konfigurationsdatei gespeichert wurde und mit dem SDK-Client den geheimen Wert abgerufen, in diesem Fall eine Verbindungszeichenfolge verwendet. Die Verbindungszeichenfolge kann dann verwendet werden nach Bedarf für die Verbindung mit der Anwendungsdatenbank.

Hat die Anwendung zu verschlüsseln oder entschlüsseln Personenbezogene Informationen, wird der vorhandene Code durch Code zum Ausführen des Vorgangs mithilfe des SDK-Clients und angeben den Schlüsselbezeichner zu verwendende ersetzt. Der folgende Code zeigt, wie Text verschlüsselt und dann wieder auf den ursprünglichen Text entschlüsselt werden kann:

// Within the actual application, encryption and decryption
// would happen at different parts.
var contosoPIIKeyIdentifier =
  ConfigurationManager.AppSettings["ContosoPIIKeyIdentifier"];
Byte[] textToEncrypt = Encoding.Unicode.GetBytes("Consumer PII Information");
var encryptedResult =
  await keyVaultClient.EncryptAsync(contosoPIIKeyIdentifier, "RSA_OAEP",  textToEncrypt);
var decryptedResult =
  await keyVaultClient.DecryptAsync(contosoPIIKeyIdentifier,
  "RSA_OAEP", encryptedResult.Result);
var text = Encoding.Unicode.GetString(decryptedResult.Result);

Verwalten von wichtigen Tresor: Contoso-Techniker sind dafür verantwortlich wichtigen Tresor während der Lebensdauer der enthält, ändern den Schlüsselwert, der eine Schlüssel-ID zugeordnet; aktualisiert den geheimen Wert, einen geheimen Bezeichner zugeordnet ist. Erstellen neue Schlüssel oder geheimen Werte; Aktualisieren des Zertifikats zum Azure AD-Anwendungsauthentifizierung und so weiter.

Zum Erstellen oder Aktualisieren von Schlüssel und geheime Informationen in den Tresor, sind Skripts wie der oben genannten verwendet. Wenn die Objekt-ID für einen Schlüssel oder einen geheimen Schlüssel angegebene im Tresor vorhanden ist, wird ein neues Objekt erstellt. Für einen vorhandenen Bezeichner der Tresor erstellt automatisch eine neue Version und ändert, die die aktuelle Version. Der ältere Wert, der im Tresor beibehalten wird und durch einen Verweis auf den Namen des Bezeichners und die Versionsnummer im URI verwendet werden kann. Clientanwendungen können entscheiden, ob die Versionsnummer in den Bezeichnern entsprechend ihren Anforderungen enthalten. Für verschiedene Anwendungsversionen Sie haben die Wahl, verschiedenen Tresoren oder Bezeichner mit unterschiedlichen Namen im gleichen Tresor oder Bezeichner mit dem gleichen Namen, jedoch mit angegeben Versionsnummern explizit in der URI-Bezeichner. Die Contoso-Sicherheitsrichtlinie erfordert eine häufige Änderung (Rollen) Schlüsseln, geheimen Werte wie Verbindungszeichenfolgen und Zertifikate, für die die Techniker im folgenden Workflow folgen:

  • Wenn im Tresor gespeicherten Schlüssel auf neuere Versionen aktualisiert werden, müssen Clientanwendungen, die mit diesen Schlüsseln verschlüsselte Daten speichern, stellen Sie sicher, dass die verschlüsselten Daten migriert werden, um den neuen Schlüssel zu verwenden.
  • Die Contoso-Clientanwendung behält die Key-Version verwendet, um die Daten zu verschlüsseln und immer verwendet, wenn dieselben Daten zu entschlüsseln.
  • Beim Verschlüsseln der Daten verwendet die Anwendung immer neue Schlüsselinformationen. Dadurch kann die Anwendung migrieren progressiv zu den neuen Schlüsselwerten als und für sie erstellt werden.

Zum Aktualisieren von geheimen Werte, hängt von der Prozess der Art des Werts, der der geheimen Schlüssel darstellt. Für Werte, die Informationen wie Verbindungszeichenfolgen enthalten, Sie zunächst wechseln Sie den Schlüssel-Wert in den standby-Dienst und dann Zurücksetzen die Anmeldeinformationen des primären Dienstes und aktualisiert den geheimen Schlüssel mit den aktualisierten Anmeldeinformationen für den primären Dienst. Für bestimmte Dienste, wie beispielsweise Azure-Speicher ist dies einfacher, weil es primäre und sekundäre Schlüssel, die können synonym verwendet beim entweder aktualisiert wird. Für vertrauliche Daten, deren Wert nur mit der Anwendung verknüpft ist, wird der geheime Schlüssel direkt einen beliebigen neuen Wert entsprechend aktualisiert.

Wenn Zertifikate zur Sicherung von Azure AD-Anwendung geändert werden müssen, verwenden Contoso Techniker Windows PowerShell-Skripts zum Durchführen der Aktualisierung. Um das Zertifikat für eine Azure AD-Anwendung zu aktualisieren, muss das Azure AD-Modul installiert werden. Sie finden das Modul bit.ly/1OdZTIS. Contoso-Techniker mithilfe des Skripts in Abbildung 2 des neuen Zertifikats zum Sichern der Azure AD-Anwendung hochladen.

Abbildung 2 Azure PowerShell-Skript für ein neues Zertifikat hochladen

$certificateFilePath = "C:\certificates\ContosoADApplicationNew.cer"
$x509Certificate2 =
  New-Object System.Security.Cryptography.X509Certificates.X509Certificate2
$x509Certificate2.Import($certificateFilePath)
$rawCertData = $x509Certificate2.GetRawCertData()
$credentialValue = [System.Convert]::ToBase64String($rawCertData)
$startDate= [System.DateTime]::Now
$endDate = $startDate.AddYears(1)
$msolCredentials = get-credential
connect-msolservice -credential $msolCredentials
New-MsolServicePrincipalCredential -ServicePrincipalName $ServicePrincipal.ApplicationId
  -Type Asymmetric -Value $credentialValue -StartDate $startDate -EndDate $endDate

Wenn Anmeldeinformationen Zertifikat von einer Anwendung nicht mehr verwendet wird, führen Sie Contoso-Techniker das folgende Skript zum Entfernen der Anmeldeinformationsschlüssels aus der Dienstprinzipal, verwenden das Cmdlet "Get-MsolServicePrincipalCredential" den Bezeichner der Anmeldeinformationen abrufen, die entfernt werden muss:

$servicePrincipalCredential = Get-MsolServicePrincipalCredential
  -ServicePrincipalName $ServicePrincipal.ApplicationId -ReturnKeyValues 0
Remove-MsolServicePrincipalCredential
  -ServicePrincipalName $ServicePrincipal.ApplicationId
  -KeyIds $servicePrincipalCredential[0].KeyId

Dieses Skript zeigt die Verwendung des Cmdlets, einfach durch die erste Anmeldeinformationen aus der Liste zu entfernen. In einer realen Anwendung können Sie den Bezeichner der zu entfernenden Anmeldeinformationen Zertifikat explizit anzugeben.

Behandeln mehrere Bereitstellungen: Die Anwendung abhängig ist derzeit nur auf die Azure AD-ID, den Fingerabdruck des Zertifikats zum Identifizieren des Zertifikats zur Authentifizierung mit Azure AD-Anwendung und verschiedene Schlüssel und geheime Bezeichner. Für andere Bereitstellungen der Anwendung können verschiedene wichtige Depots verwendet werden. Dev-Bereitstellung kann jeder Hersteller der Anwendung einen wichtigen Tresor mithilfe ihrer Azure-Abonnement die vorgestellten Schritte erstellen. Richten Sie den Tresor, und füllen Sie es mit dem Schlüssel und geheime Informationen, die die Anwendung erwartet wird; und aktualisieren Sie die Konfigurationsdatei. Wenn das Contoso-Team zum Bereitstellen der Anwendung zum Testen benötigt, können sie die Konfigurationsdatei mit den Details aus dem Tresor aktualisieren, die unter dem Abonnement bereitgestellt wird.

Nachbereitung

Contoso ist erfreut fest, dass den Switch in Azure-Schlüssel-Tresor vorgenommen haben, der geholfen, das Unternehmen, das einfach die meisten Sicherheitsrisiken behandeln die bindend unterzogen worden war. Alle erreichen mit nur sehr wenige Anpassungen vornehmen, um den Anwendungscode zu tun, Einrichtung werden konnte, und dies auch erleichterte es, verschiedene Arten von vertraulichen Informationen zu verwalten. Die Leichtigkeit, mit der Contoso vornehmen dieser Schalter wurde, fördert das Unternehmen beschäftigt sich erneut mit anderen LOB-Anwendungen und lassen sich sicherer. Azure Schlüssel Tresor ist etwas, dass die Anwendung mithilfe der Batchverarbeitung und macht, speichern und Verwalten von kryptografischen Schlüsseln und andere vertrauliche Informationen, einfachen und sicheren optimal nutzen können.


Rahul Nath ist ein Entwickler, Berater und Blogger mit Erfahrung im Bereich von umfangreichen Windows-Clientanwendungen für umfangreiche Clientanwendungen auf der Azure-Plattform erstellen. Folgen Sie ihm auf Twitter unter twitter.com/rahulpnath oder Lesen Sie seinen Blog unter rahulpnath.com.

Vielen Dank an den folgenden technischen Experten von Microsoft für die Überprüfung dieses Artikels: Amit Bapat
Amit Bapat derzeit Program Manager für Microsoft Azure-Schlüssel beim Tresor. Bevor Sie Microsoft arbeitete Amit Intel in verschiedenen Rollen einschließlich Produktmarketing Intel Xeon-Prozessoren und technische Rollen für verschiedene Softwareprojekte und als CAD-Engineer für das Entwerfen von Intel-CPUs.