Aktivieren der Protokollierung in Key Vault

Nachdem Sie einen oder mehrere Schlüsseltresore erstellt haben, möchten Sie vermutlich überwachen, wie, wann und von wem auf die Schlüsseltresore zugegriffen wird. Ausführliche Informationen zum Feature finden Sie unter Azure Key Vault-Protokollierung.

Protokollierte Inhalte

  • Alle authentifizierten REST-API-Anforderungen, z. B. auch Anforderungen, die aufgrund von Zugriffsberechtigungen, Systemfehlern oder fehlerhaften Anforderungen nicht erfolgreich sind.
  • Vorgänge im Schlüsseltresor selbst, z. B. Erstellung, Löschung und Festlegung von Schlüsseltresor-Zugriffsrichtlinien und Aktualisierung von Schlüsseltresor-Attributen wie Tags.
  • Vorgänge mit Schlüsseln und Geheimnissen im Schlüsseltresor, einschließlich:
    • Erstellen, Ändern oder Löschen dieser Schlüssel oder Geheimnisse.
    • Signieren, Verifizieren, Verschlüsseln, Entschlüsseln, Ver- und Entpacken von Schlüsseln, Erhalten von Geheimnissen und Auflisten von Schlüsseln und Geheimnissen (und deren Versionen).
  • Bei nicht authentifizierten Anforderungen wird eine 401-Antwort zurückgegeben. Beispiele sind Anforderungen ohne Bearertoken, falsch formatierte oder abgelaufene Anforderungen oder Anforderungen, deren Token ungültig ist.
  • Azure Event Grid-Benachrichtigungsereignisse für die folgenden Bedingungen: abgelaufen, demnächst ablaufend und geänderte Tresorzugriffsrichtlinie (das Ereignis bei einer neuen Version wird nicht protokolliert). Ereignisse werden auch dann protokolliert, wenn im Schlüsseltresor ein Ereignisabonnement erstellt wurde. Weitere Informationen finden Sie unter Azure Key Vault als Event Grid-Quelle.

Voraussetzungen

Für dieses Tutorial benötigen Sie Folgendes:

  • Vorhandenen Schlüsseltresor, der von Ihnen genutzt wird
  • Azure Cloud Shell mit Bash-Umgebung
  • Ausreichend Speicherplatz unter Azure für Ihre Schlüsseltresor-Protokolle

Die Befehle in diesem Artikel sind für Cloud Shell mit Bash als Umgebung formatiert.

Herstellen einer Verbindung zu Ihrem Key Vault-Abonnement

Der erste Schritt für das Einrichten der Schlüsselprotokollierung ist das Herstellen einer Verbindung mit dem Abonnement, das Ihren Schlüsseltresor enthält. Dies ist besonders dann wichtig, wenn Ihrem Konto mehrere Abonnements zugeordnet sind.

Mithilfe der Azure-Befehlszeilenschnittstelle können Sie alle Abonnements anzeigen, indem Sie den Befehl az account list ausführen. Stellen Sie dann mit dem Befehl az account set eine Verbindung mit einem Abonnement her:

az account list

az account set --subscription "<subscriptionID>"

In Azure PowerShell können Sie Ihre Abonnements zunächst auflisten, indem Sie das Cmdlet Get-AzSubscription ausführen. Dann können Sie mithilfe des Cmdlets Set-AzContext eine Verbindung mit einem Abonnement herstellen:

Get-AzSubscription

Set-AzContext -SubscriptionId "<subscriptionID>"

Erstellen eines Speicherkontos für Ihre Protokolle

Sie können zwar ein vorhandenes Speicherkonto für Ihre Protokolle verwenden, aber hier soll ein neues für Key Vault-Protokolle dediziertes Speicherkonto erstellt werden.

Um die Verwaltung noch weiter zu vereinfachen, verwenden Sie außerdem die gleiche Ressourcengruppe, die auch den Schlüsseltresor enthält. Im Azure CLI-Schnellstart und im Azure PowerShell-Schnellstart wird diese Ressourcengruppe als myResourceGroup (meineRessourcengruppe) bezeichnet. Der Standort ist eastus. Ersetzen Sie diese Werte gegebenenfalls durch Ihre eigenen.

Geben Sie außerdem einen Speicherkontonamen an. Speicherkontonamen müssen eindeutig und zwischen drei und 24 Zeichen lang sein, und sie dürfen nur Zahlen und Kleinbuchstaben enthalten. Abschließend erstellen Sie ein Speicherkonto mit der SKU Standard_LRS.

Verwenden Sie in der Azure CLI den Befehl az storage account create.

az storage account create --name "<your-unique-storage-account-name>" -g "myResourceGroup" --sku "Standard_LRS"

Verwenden Sie bei Verwendung von Azure PowerShell das Cmdlet New-AzStorageAccount. Sie müssen den Speicherort angeben, der dem der Ressourcengruppe entspricht.

 New-AzStorageAccount -ResourceGroupName myResourceGroup -Name "<your-unique-storage-account-name>" -Type "Standard_LRS" -Location "eastus"

Notieren Sie sich in jedem Fall die ID des Speicherkontos. Bei Verwendung der Azure-Befehlszeilenschnittstelle wird die ID in der Ausgabe zurückgegeben. Wenn Sie Azure PowerShell verwenden, erhalten Sie die ID mithilfe des Cmdlet Get-AzStorageAccount. Weisen Sie die Ausgabe dann der Variable $sa zu. Das Speicherkonto wird dann mit $sa.id angezeigt. (Die $sa.Context-Eigenschaft wird auch später in diesem Artikel noch verwendet.)

$sa = Get-AzStorageAccount -Name "<your-unique-storage-account-name>" -ResourceGroup "myResourceGroup"
$sa.id

Die ID des Speicherkontos weist das folgende Format auf: /subscriptions/Ihre-Abonnement-ID/resourceGroups/myResourceGroup/providers/Microsoft.Storage/storageAccounts/ .

Hinweis

Wenn Sie sich für die Verwendung eines bestehenden Speicherkontos entscheiden, muss dieses das gleiche Abonnement wie Ihr Schlüsseltresor verwenden. Anstelle des klassischen Bereitstellungsmodells muss das Konto das Azure Resource Manager-Bereitstellungsmodell verwenden.

Abrufen der Ressourcen-ID des Schlüsseltresors

Im CLI-Schnellstart bzw. PowerShell-Schnellstart haben Sie einen Schlüssel mit eindeutigem Namen erstellt. Verwenden Sie diesen Namen in den folgenden Schritten erneut. Wenn Sie sich an den Namen Ihres Schlüsseltresors nicht mehr erinnern, können Sie ihn mit dem Azure CLI-Befehl az keyvault list oder dem Azure PowerShell-Cmdlet Get-AzKeyVault abrufen.

Verwenden Sie den Namen Ihres Schlüsseltresors, um nach seiner Ressourcen-ID zu suchen. Verwenden Sie bei Verwendung der Azure-Befehlszeilenschnittstelle den Befehl az keyvault show.

az keyvault show --name "<your-unique-keyvault-name>"

In Azure PowerShell verwenden Sie das Cmdlet Get-AzKeyVault.

Get-AzKeyVault -VaultName "<your-unique-keyvault-name>"

Die Ressourcen-ID für Ihren Schlüsseltresor weist das folgende Format auf: /subscriptions/ /resourceGroups/myResourceGroup/providers/Microsoft.KeyVault/vaults/ <Ihr-eindeutiger-Schlüsseltresorname> . Speichern Sie ihn für den nächsten Schritt.

Aktivieren der Protokollierung

Sie können die Protokollierung für Key Vault mithilfe der Azure-Befehlszeilenschnittstelle, mit Azure PowerShell oder im Azure-Portal aktivieren.

Azure CLI

Verwenden Sie den Azure CLI-Befehl az monitor diagnostic-settings create mit der Speicherkonto-ID und der Ressourcen-ID für den Schlüsseltresor wie folgt:

az monitor diagnostic-settings create --storage-account "<storage-account-id>" --resource "<key-vault-resource-id>" --name "Key vault logs" --logs '[{"category": "AuditEvent","enabled": true}]' --metrics '[{"category": "AllMetrics","enabled": true}]'

Optional können Sie eine Aufbewahrungsrichtlinie für Ihre Protokolle festlegen, mit der ältere Protokolle nach einer angegeben Dauer automatisch gelöscht werden. Sie könnten beispielsweise eine Aufbewahrungsrichtlinie so festlegen, dass alle Protokolle, die älter als 90 Tage sind, automatisch gelöscht werden.

Verwenden Sie den Befehl az monitor diagnostic-settings update mithilfe der Azure CLI.

az monitor diagnostic-settings update --name "Key vault retention policy" --resource "<key-vault-resource-id>" --set retentionPolicy.days=90

Zugreifen auf Ihre Protokolle

Ihre Key Vault-Protokolle befinden sich im Container insights-logs-auditevent in dem von Ihnen angegebenen Speicherkonto. Zur Anzeige der Protokolle müssen Sie Blobs herunterladen.

Rufen Sie zunächst alle Blobs im Container ab. Verwenden Sie in der Azure CLI den Befehl az storage blob list.

az storage blob list --account-name "<your-unique-storage-account-name>" --container-name "insights-logs-auditevent"

Verwenden Sie bei Azure PowerShell das Cmdlet Get-AzStorageBlob. Geben Sie Folgendes ein, um alle Blobs in diesem Container aufzulisten:

Get-AzStorageBlob -Container "insights-logs-auditevent" -Context $sa.Context

An der Ausgabe des Azure CLI-Befehls oder des Azure PowerShell-Cmdlets können Sie erkennen, dass die Blobnamen das folgende Format aufweisen: resourceId=<ARM resource ID>/y=<year>/m=<month>/d=<day of month>/h=<hour>/m=<minute>/filename.json. Für die Datums- und Zeitwerte wird die koordinierte Weltzeit (UTC) verwendet.

Da dasselbe Speicherkonto zum Erfassen von Protokollen für mehrere Ressourcen verwendet werden kann, ist die vollständige Ressourcen-ID im Blobnamen sehr hilfreich, um nur auf die benötigten Blobs zuzugreifen bzw. diese herunterzuladen.

Laden Sie zunächst alle Blobs herunter. Wenn Sie die Azure-Befehlszeilenschnittstelle verwenden, führen Sie den Befehl az storage blob download aus. Übergeben Sie dabei die Blobnamen sowie den Pfad zur Datei, in der die Ergebnisse gespeichert werden sollen.

az storage blob download --container-name "insights-logs-auditevent" --file <path-to-file> --name "<blob-name>" --account-name "<your-unique-storage-account-name>"

In Azure PowerShell können Sie das Cmdlet Get-AzStorageBlobs ausführen, um eine Liste aller Blobs abzurufen. Übergeben Sie diese Liste dann über eine Pipeline an das Cmdlet Get-AzStorageBlobContent, um die Protokolle in den von Ihnen ausgewählten Pfad herunterzuladen.

$blobs = Get-AzStorageBlob -Container "insights-logs-auditevent" -Context $sa.Context | Get-AzStorageBlobContent -Destination "<path-to-file>"

Beim Ausführen dieses zweiten Cmdlet in PowerShell wird mit dem Trennzeichen / in den Blobnamen eine vollständige Ordnerstruktur unter dem Zielordner erstellt. Sie verwenden diese Struktur, um die Blobs herunterzuladen und als Dateien zu speichern.

Verwenden Sie Platzhalter, um Blobs selektiv herunterzuladen. Beispiel:

  • Bei Verwendung mehrerer Schlüsseltresore und einem Download von Protokollen nur für einen Schlüsseltresor mit dem Namen CONTOSOKEYVAULT3:

    Get-AzStorageBlob -Container "insights-logs-auditevent" -Context $sa.Context -Blob '*/VAULTS/CONTOSOKEYVAULT3
    
  • Wenn Sie über mehrere Ressourcengruppen verfügen und nur Protokolle für eine Ressourcengruppe herunterladen möchten, verwenden Sie -Blob '*/RESOURCEGROUPS/<resource group name>/*':

    Get-AzStorageBlob -Container "insights-logs-auditevent" -Context $sa.Context -Blob '*/RESOURCEGROUPS/CONTOSORESOURCEGROUP3/*'
    
  • Wenn Sie alle Protokolle für den Monat Januar 2019 herunterladen möchten, verwenden Sie -Blob '*/year=2019/m=01/*':

    Get-AzStorageBlob -Container "insights-logs-auditevent" -Context $sa.Context -Blob '*/year=2016/m=01/*'
    

Verwenden von Azure Monitor-Protokollen

Sie können die Key Vault-Lösung in Azure Monitor verwenden, um AuditEvent-Protokolle von Key Vault zu überprüfen. In Azure Monitor-Protokollen verwenden Sie Protokollabfragen, um Daten zu analysieren und die benötigten Informationen zu erhalten. Weitere Informationen finden Sie unter Überwachen einer Key Vault-Instanz.

Nächste Schritte