Bereitstellen eines verwalteten Speicherkontos in Microsoft Azure

November 17, 2019 Sicherheit und Compliance, MOVEit

Heute erfahren Sie, wie Sie ein – wie Microsoft es nennt – verwaltetes Speicherkonto erstellen. Wie Sie wahrscheinlich wissen, verfügt jedes Speicherkonto über zwei austauschbare private Schlüssel, mit denen Sie sich bei den vier Diensten des universellen Speicherkontos programmatisch authentifizieren können:

  • Blob
  • Datei
  • Tabelle
  • Warteschlange

Betrachten Sie mein universelles v2-Speicherkonto Ipstorage704, das in Abbildung 1 dargestellt ist. Es handelt sich um ein nicht verwaltetes Speicherkonto. Dies bedeutet, dass wir – und nicht Azure – die beiden privaten Schlüssel verwalten.

Abbildung 1. Ein nicht verwaltetes Azure-Speicherkonto.

Falls Sie vergessen, die Schlüssel neu zu generieren und eine Schlüsselrotation durchzuführen, oder noch schlimmer, falls Sie Klartextschlüssel im Quelltext stehen lassen, nehmen Sie eine Gefährdung der Azure-Datensicherheit geradezu in Kauf.

Was also ist ein verwaltetes Speicherkonto?

Ein verwaltetes Speicherkonto ist ein universelles Speicherkonto, dessen Sicherheit von Azure verwaltet wird. Dies bedeutet, dass dadurch die folgenden Ziele erreicht werden:

  • Speichern der beiden Zugriffsschlüssel in einem Azure Key Vault
  • Anweisung an Azure, die Schlüssel in regelmäßigen Abständen neu zu generieren

Um Ihre Azure-Umgebung für diese Übung einzurichten, müssen Sie die folgenden drei Aufgaben ausführen:

Ja, wir müssen ein verwaltetes Speicherkonto mit Azure PowerShell oder mit Azure CLI (Command-Line Interface, Befehlszeilenschnittstelle) programmatisch definieren, weil diese Funktion im Azure-Portal derzeit nicht verfügbar ist. Ich habe den Code aus dem Microsoft Docs-Artikel zu Azure mit dem Titel „Manage storage account keys with Key Vault and Azure PowerShell (Verwalten von Speicherkontoschlüsseln mit Azure Key Vault und Azure PowerShell)“ übernommen. Machen wir uns an die Arbeit!

Einrichten der Azure PowerShell-Umgebung

Als Erstes fahren Sie eine erhöhte PowerShell-Konsole oder eine Visual Studio Code-Instanz hoch und authentifizieren sich für Ihr Azure-Abonnement:

Connect-AzAccount

Wenn Sie mehr als ein Azure-Abonnement besitzen, müssen Sie Ihren Standardkontext angeben:

Set-AzContext -SubscriptionName 'MySub'

Als Nächstes definieren wir Variablen, um Speicherkonto- und Key-Vault-Verweise zu vereinfachen. Bitte beachten Sie, dass Sie meine Werte durch eigene Werte ersetzen müssen:

$resourceGroupName = "ipswitch"

$storageAccountName = "ipstorage704"

$storageAccountKey = "aUQBMQFMnnk2fBNsv2K49mqW31Vc0nHjMDGJm4HAZId+5PgBYfKbrZMippBaTGjlGOsg+EovpVYKwhBCIT0eSA=="

$keyVaultName = "ipswitch-keyvault"

$keyVaultSpAppId = "cfa8b339-82a2-471a-a3c9-0fc0be7a4093"

Hier einige Hinweise zum vorhergehenden Code:

  • Sie können den Speicherkontoschlüssel im Azure-Portal auf dem Blatt „Zugriffsschlüssel“ des Speicherkontos abrufen (siehe Abbildung 1). Es spielt keine Rolle, ob Sie Schlüssel 1 oder Schlüssel 2 verwenden.
  • Die Anwendungs-ID von Azure Key Vault ist festgelegt und wird von Microsoft bereitgestellt. Für die öffentliche Azure-Cloud verwenden Sie den obigen Wert. Für andere Clouds finden Sie die entsprechenden Werte in den Azure Docs.

Wir müssen außerdem unsere Benutzer-ID abrufen und auf das Zielspeicherkonto verweisen:

$userId = (Get-AzContext).Account.Id

$storageAccount = Get-AzStorageAccount -ResourceGroupName $resourceGroupName -StorageAccountName $storageAccountName

Key Vault für die Verwaltung der Speicherkontoschlüssel

Für den Zugriff mit den geringsten Rechten weisen wir unserem Key Vault die rollenbasierte Zugriffssteuerungsrolle (Role Based Access Control-, RBAC-Rolle) „Dienstrolle Speicherkonto-Schlüsseloperator" zu. Dadurch wird sichergestellt, dass Key Vault nur Speicherkontoschlüssel und kein weiteres Key Vault-Geheimnis bzw. keine weitere Key Vault-Ressource verwalten kann:

New-AzRoleAssignment -ApplicationId $keyVaultSpAppId -RoleDefinitionName 'Storage Account Key Operator Service Role' -Scope $storageAccount.Id

Anhand von Abbildung 2 sehen Sie, dass mein Key Vault über die entsprechende RBAC-Rollenzuweisung für mein Speicherkonto verfügt.

Abbildung 2. Mein Key Vault kann auf mein Speicherkonto zugreifen.

Wahrscheinlich wissen Sie bereits, dass Azure Key Vault Zugriffsrichtlinien verwendet, um Benutzern oder Dienstprinzipalen spezifische Berechtigungen für Azure Key Vault-Geheimnisse zu gewähren. Wir müssen unserer Benutzer-ID folgende Berechtigungen gewähren:

Set-AzKeyVaultAccessPolicy -VaultName $keyVaultName -UserPrincipalName $userId -PermissionsToStorage get, list, delete, set, update, regeneratekey, getsas, listsas, deletesas, setsas, recover, backup, restore, purge

Die Azure-Portalansicht meiner Key Vault-Zugriffsberechtigungen sehen Sie in Abbildung 3.

Abbildung 3. Mein Benutzerkonto hat volle Kontrolle über Key Vault-Geheimnisse.

Abschließen der Konfiguration

Als letzten Schritt fügen wir das Zielspeicherkonto zur Key Vault-Liste verwalteter Speicherkonten hinzu:

Add-AzKeyVaultManagedStorageAccount -VaultName $keyVaultName -AccountName $storageAccountName -AccountResourceId $storageAccount.Id -ActiveKeyName 'key1' -DisableAutoRegenerateKey

Hier einige Hinweise zum vorhergehenden Code:

  • Beachten Sie, dass der Wert des Parameters ActiveKeyName der Zeichenfolgename des Schlüssels ist und nicht der Wert selbst. Diese Werte sind „key1“ oder „key2“.
  • Der Switch-Parameter DisableAutoRegenerateKey erteilt Key Vault die Anweisung, Ihre Schlüssel nicht regelmäßig neu zu generieren.

Wenn Sie Key Vault für die Verwendung eines, sagen wir, 90-Tage-Zeitraums für die erneute Regenerierung konfigurieren möchten, könnten Sie zunächst eine Variable festlegen:

$regenerationPeriod = [System.Timespan]::FromDays(90)

Und ersetzen Sie dann das folgende Parameter/Wert-Paar anstelle des Switch-Parameters -DisableAutoRegenerateKey:

-RegenerationPeriod $regenerationPeriod

Wenn Probleme auftreten, Plan B anwenden

Sie können bei der Ausführung von Add-AzKeyVaultManagedStorageAccount die Fehlermeldung „Ungültige Anforderung“ erhalten. Dies ist ein bekanntes Problem, für das mindestens ein GitHub-Fehlerbericht vorhanden ist.

Wenn Sie diese Fehlermeldung erhalten, ist noch nicht alles verloren. Öffnen Sie einfach Azure Cloud Shell, authentifizieren Sie sich für Ihr Abonnement, und führen Sie den folgenden Azure CLI-Befehl aus, der Ihre Ressourcennamen und ID ersetzt:

az keyvault storage add --vault-name ipswitch-keyvault -n ipstorage704 --active-key-name key1 --auto-regenerate-key --regeneration-period P90D --resource-id "/subscriptions/2fbf906e-1101-4bc0-b64f-adc44e462fff/resourceGroups/ipswitch/providers/Microsoft.Storage/storageAccounts/ipstorage704"

Der vorhergehende Code wurde auf meinem System erfolgreich ausgeführt. Beachten Sie, dass wir hier einen 90-Tage-Zeitraum für die erneute Generierung angeben.

Vertrauen ist gut, Kontrolle ist besser

Leider zeigt das Azure-Portal absolut keinerlei Informationen zu unserem verwalteten Speicherkonto an, weder im Key Vault noch im Speicherkonto. Wir können für die Überprüfung aber Get-AzKeyVaultManagedStorageAccount ausführen:

Get-AzKeyVaultManagedStorageAccount -VaultName 'ipswitch-keyvault' -Name 'ipstorage704'

Id                  : https://ipswitch-keyvault.vault.azure.net:443/storage/ipstorage704

Vault Name          : ipswitch-keyvault

AccountName         : ipstorage704

Account Resource Id : /subscriptions/2fbf906e-1101-4bc0-b64f-adc44e462fff/resourceGroups/ipswitch/providers/Microsoft.Storage/
storageAccounts/ipstorage704

Active Key Name     : key1

Auto Regenerate Key : True

Regeneration Period : 90.00:00:00

Enabled             : True

Created             : 9/30/19 8:25:18 PM

Updated             : 9/30/19 8:25:18 PM

Tags                :

Da haben wir es! Die Vorgehensweise zum Erstellen eines verwalteten Speicherkontos ist ziemlich umständlich. Aber durch den Vorteil, dass Speicherkontoschlüssel nicht manuell verwaltet werden müssen, ist diese Konfiguration trotz des ganzen Aufwands sehr interessant.

Tipp: Mit WhatsUp Gold können Sie Status und Leistung jeder Kennzahl überwachen, die über die AWS- und Azure-APIs verfügbar ist. Sie können dazu Warnmeldungen sowie Berichte ausgeben und diese Daten in Ihre Infrastrukturabbildung, Ihr AlertCenter und in Dashboards integrieren. Cloud-Monitoring ist in den WhatsUp Gold-Editionen Premium und Total Plus verfügbar. 14 Tage kostenfrei Testen

Tim Warner

Tim Warner is a Microsoft MVP, Microsoft Press/Wiley author, and Azure solution architect based in Nashville, TN. Contact Tim at Twitter (@TechTrainerTim) or his website, techtrainertim.com.

Read next Benutzung der neuen MOVEit 2018 REST API mit PowerShell