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:
- Erstellen eines universellen v2-Speicherkontos (oder Bestimmen eines bestehenden Kontos, das hier verwendet werden soll)
- Bereitstellen einer Azure Key Vault-Ressource
- Install Azure PowerShell auf Ihrer administrativen Arbeitsstation
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.