<img height="1" width="1" style="display:none" src="https://www.facebook.com/tr?id=1678611822423757&amp;ev=PageView&amp;noscript=1">
Defrag This

| Read. Reflect. Reboot.

Bereitstellen eines verwalteten Speicherkontos in Microsoft Azure

Tim Warner| November 12 2019

| IT insights

deploy-a-managed-storage-account-in-microsoft-azure

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.

figure01

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.

figure02

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.

figure03

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.

Topics: IT insights

Leave a Reply

Your email address will not be published. Required fields are marked *

THIS POST WAS WRITTEN BY 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.

Free Trials

Getting started has never been easier. Download a trial today.

Download Free Trials

Contact Us

Let us know how we can help you. Focus on what matters. 

Send us a note

Subscribe to our Blog

Let’s stay in touch! Register to receive our blog updates.