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

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

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

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

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

Для работы с этим учебником необходимо наличие следующих компонентов.

  • Существующее хранилище ключей, которое вы используете.
  • Azure Cloud Shell — среда Bash
  • Достаточный объем хранилища в Azure для журналов хранилищ ключей.

Команды в этом руководстве представлены в формате для Cloud Shell со средой Bash.

Подключение к подписке 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>"

Создание учетной записи хранения для журналов

Хотя можно использовать и существующую учетную запись хранения для журналов, мы создадим новую учетную запись, выделенную для хранения журналов Key Vault.

Чтобы упростить управление, мы также будем использовать ту же группу ресурсов, которая содержит хранилище ключей. В кратких руководствах по Azure CLI и Azure PowerShell эта группа ресурсов называется myResourceGroup, а расположение — eastus. Замените эти значения собственными, по необходимости.

Кроме того, необходимо указать имя учетной записи хранения. Имя учетной записи хранения должно быть уникальным, содержать от 3 до 24 символов и состоять только из цифр и букв нижнего регистра. В завершение необходимо создать учетную запись хранения с номером SKU "Standard_LRS".

В Azure CLI используйте команду az storage account create.

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

В Azure PowerShell используйте командлет New-AzStorageAccount. Необходимо указать расположение, соответствующее группе ресурсов.

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

И в том, и в другом случае запишите идентификатор (id) учетной записи хранения. Операция Azure CLI возвращает значение id в выходных данных. Чтобы получить значение id с Azure PowerShell, используйте Get-AzStorageAccount и назначьте выходные данные переменной $sa. Затем можно найти учетную запись хранения с $sa.id (свойство $sa.Context также будет использоваться далее в этой статье).

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

Идентификатор id учетной записи хранения имеет следующий формат:/subscriptions/<идентификатор-подписки>/resourceGroups/myResourceGroup/providers/Microsoft.Storage/storageAccounts/<уникальное-имя-учетной-записи-хранения>.

Примечание

Если планируется использовать существующую учетную запись хранения, для нее должна использоваться та же подписка, что и для хранилища ключей. Кроме того, она должна быть создана с помощью модели развертывания Azure Resource Manager, а не классической модели развертывания.

Получение идентификатора ресурса хранилища ключей

Следуя инструкциям в кратких руководствах по CLI и PowerShell, вы создали ключ с уникальным именем. Используйте это имя еще раз при выполнении перечисленных ниже действий. Если вы не помните имя хранилища ключей, можно получить список имен с помощью команды 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-объекта. Но сначала мы рассмотрим загрузку всех 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 используйте командлет Gt-AzStorageBlobs, чтобы получить список BLOB-объектов, затем передайте его в командлет 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/*'
    

Теперь можно переходить к анализу содержимого журналов. Но прежде чем мы перейдем к этому, вам нужно изучить еще две команды:

Дополнительные сведения о том, как читать журналы, см. в документе Ведение журнала Key Vault: интерпретация журналов Key Vault

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

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

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

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