Включение журналирования Azure Key Vault

Создав одно или несколько хранилищ ключей вы, вероятно, захотите отслеживать, кто, как и когда осуществлял доступ к этим хранилищам. Полные сведения о функции см. в разделе Ведение журнала Key Vault.

Какие данные регистрируются в журнале:

  • все прошедшие проверку подлинности запросы REST API, включая запросы, ставшие неудачными из-за определенных разрешений на доступ, системных ошибок или неправильных запросов;
  • операции с хранилищем ключей, включая создание, удаление и настройку политик доступа к нему, а также обновление таких его атрибутов, как теги;
  • операции с ключами и секретами в хранилище ключей, в том числе:
    • создание, изменение или удаление ключей или секретов;
    • подписывание, проверка, шифрование, расшифровка, упаковка и распаковка ключей, получение секретов и вывод списка ключей и секретов (и их версий);
  • непроверенные запросы, которые приводят к появлению ответа 401 Примерами могут быть запросы, которые не имеют маркера носителя, имеют неправильный формат или срок действия или имеют недопустимый маркер.
  • События уведомления службы "Сетка событий Azure" для следующих условий: срок действия истек, срок действия приближается и изменена политика доступа к хранилищу (событие новой версии не регистрируется). События регистрируются даже при наличии подписки на события, созданной в хранилище ключей. Дополнительные сведения см. в разделе Azure Key Vault как источник сетки событий.

Предварительные требования

Для работы с этим руководством вам потребуется хранилище ключей Azure. Вы можете создать новое хранилище ключей одним из следующих способов:

Вам также потребуется место назначения для журналов. Назначением может быть существующая или новая учетная запись хранения Azure и(или) рабочая область Log Analytics.

Вы можете создать учетную запись хранения Azure одним из следующих способов:

Вы можете создать рабочую область Log Analytics одним из следующих способов:

Подключение к подписке Key Vault

Первым шагом при настройке ведения журнала ключей является подключение к подписке, содержащей хранилище ключей, если с вашей учетной записью связано несколько подписок.

С Azure CLI можно просмотреть все подписки с помощью команды az account list. Затем подключитесь к одной из них с помощью команды az account set:

az account list

az account set --subscription "<subscriptionID>"

С Azure PowerShell можно сначала вывести список подписок с помощью командлета Get-AzSubscription. Затем подключитесь к одной из них с помощью командлета Set-AzContext:

Get-AzSubscription

Set-AzContext -SubscriptionId "<subscriptionID>"

Получение идентификаторов ресурсов

Чтобы включить ведение журнала в хранилище ключей, вам потребуется идентификатор ресурса хранилища ключей и назначение (служба хранилища Azure или учетная запись Log Analytics).

Если вы не помните имя хранилища ключей, воспользуйтесь командой Azure CLI az keyvault list или командлетом Azure PowerShell Get-AzKeyVault.

Используйте имя хранилища ключей, чтобы найти его идентификатор ресурса. В Azure CLI используйте команду az keyvault show.

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

В Azure PowerShell используйте командлет Get-AzKeyVault.

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

Идентификатор ресурса для хранилища ключей будет иметь формат: /subscriptions/идентификатор-подписки/resourceGroups/myResourceGroup/providers/Microsoft.KeyVault/vaults/уникальное-имя-хранилища-ключей. Запишите его, так как он потребуется при выполнении следующего действия.

Включение ведения журналов

Можно включить ведение журнала для Key Vault с помощью Azure CLI, Azure PowerShell или через портал Azure.

Azure CLI

Используйте команду Azure CLI az monitor diagnostic-settings create вместе с идентификатором учетной записи хранения и идентификатором ресурса хранилища ключей, как указано ниже.

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}]'

При желании можно задать для журналов политику хранения, например для автоматического удаления старых журналов по истечении указанного интервала времени. Например, можно настроить политику хранения, которая автоматически удаляет журналы старше 90 дней.

В Azure CLI используйте команду az monitor diagnostic-settings update.

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

Доступ к журналам

Журналы Key Vault сохраняются в контейнере insights-logs-auditevent в указанной учетной записи хранения. Чтобы просмотреть эти журналы, скачайте большие двоичные объекты.

Сначала получите список всех BLOB-объектов в контейнере. В Azure CLI используйте команду az storage blob list.

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

В Azure PowerShell воспользуйтесь командой Get-AzStorageBlob. Чтобы получить список всех больших двоичных объектов (BLOB-объектов) в этом контейнере, введите следующее:

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

Как видно из выходных данных команды Azure CLI или командлета Azure PowerShell, имена BLOB-объектов имеют следующий формат: resourceId=<ARM resource ID>/y=<year>/m=<month>/d=<day of month>/h=<hour>/m=<minute>/filename.json. Значения даты и времени используют время в формате UTC.

Поскольку одну учетную запись можно использовать для сбора журналов нескольких ресурсов, для просмотра и скачивания нужных BLOB-объектов желательно указывать полный идентификатор ресурса в имени BLOB-объекта.

Но сначала загрузите все большие двоичные объекты. В Azure CLI используйте команду az storage blob download, передав ей имена BLOB-объектов и путь к файлу, в котором требуется сохранить результаты.

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

Используя Azure PowerShell, используйте командлет Get-AzStorageBlob, чтобы получить список больших двоичных объектов. Затем передайте этот список в командлет Get-AzStorageBlobContent, чтобы скачать журналы по выбранному пути.

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

При выполнении этого второго командлета в PowerShell разделитель / в именах BLOB-объектов используется для создания полной структуры папок в папке назначения. Эта структура будет использоваться для скачивания и хранения больших двоичных объектов в виде файлов.

Для выборочной загрузки BLOB-объектов используйте подстановочные знаки. Пример:

  • Если у вас есть несколько хранилищ ключей, но вы хотите загрузить журналы только для одного хранилища с именем CONTOSOKEYVAULT3.

    Get-AzStorageBlob -Container "insights-logs-auditevent" -Context $sa.Context -Blob '*/VAULTS/CONTOSOKEYVAULT3
    
  • Если у вас есть несколько групп ресурсов, но вы хотите загрузить журналы только для одной из них, используйте -Blob '*/RESOURCEGROUPS/<resource group name>/*':

    Get-AzStorageBlob -Container "insights-logs-auditevent" -Context $sa.Context -Blob '*/RESOURCEGROUPS/CONTOSORESOURCEGROUP3/*'
    
  • Если вы хотите скачать все журналы за январь 2019 г., используйте -Blob '*/year=2019/m=01/*':

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

Использование журналов Azure Monitor

Решение Key Vault в журналах Azure Monitor позволяет просматривать журналы AuditEvent для Key Vault. В журналах Azure Monitor запросы по журналам используются для анализа данных и получения необходимых сведений. Дополнительные сведения см. в статье Мониторинг Key Vault.

Дальнейшие действия

  • Основные сведения, в том числе информацию о том, как анализировать журналы Key Vault, см. в статье Ведение журнала Azure Key Vault.
  • Дополнительные данные об использовании Azure Monitor в хранилище ключей см. в статье Мониторинг Key Vault.