Key Vault のログ記録を有効にする

1 つまたは複数のキー コンテナーを作成したら、いつ、どのように、誰によってキー コンテナーがアクセスされるのかを監視するのが一般的です。 機能の詳細については、Azure Key Vault のログ記録に関するページを参照してください。

ログに記録される内容:

  • 認証されたすべての REST API 要求。これには、アクセス許可がないため、システム エラーのため、または不正な要求の結果として、失敗した要求が含まれます。
  • キー コンテナー自体に関する操作。これには、作成、削除、キー コンテナーのアクセス ポリシーの設定、キー コンテナー属性 (タグなど) の更新が含まれます。
  • 次の操作を含む、キー コンテナーのキーとシークレットに関する操作。
    • これらのキーまたはシークレットの作成、変更、または削除。
    • 署名、確認、暗号化、復号化、キーのラップとラップ解除、シークレットの取得、およびキーとシークレット (およびそのバージョン) の一覧表示。
  • 結果として 401 応答が発生する、認証されていない要求。 たとえば、ベアラー トークンがない、形式が正しくない、有効期限が切れている、または無効なトークンを持つ要求です。
  • 期限切れ、期限切れ間近、コンテナー アクセス ポリシーの変更 (新しいバージョンのイベントはログ記録されない) の状態に関する Azure Event Grid 通知イベント。 キー コンテナーで作成されたイベント サブスクリプションがある場合でも、イベントはログされます。 詳細については、「Event Grid ソースとして Azure Key Vault」を参照してください。

前提条件

このチュートリアルを完了するには、Azure キー コンテナーが必要です。 次のいずれかの方法を使用し、新しいキー コンテナーを作成できます。

ログの宛先も必要です。 宛先は、既存または新しい Azure ストレージ アカウントや Log Analytics ワークスペースになります。

次のいずれかの方法を使用し、新しい Azure ストレージ アカウントを作成できます。

次のいずれかの方法を使用して Log Analytics ワークスペースを新規作成できます。

Key Vault サブスクリプションに接続する

キーのログ記録を設定する最初の手順は、アカウントに複数のサブスクリプションが関連付けられている場合、キー コンテナーを含むサブスクリプションに接続することです。

Azure CLI では、az account list コマンドを使用してすべてのサブスクリプションを表示できます。 その後、その 1 つに az account set コマンドを使用して接続します。

az account list

az account set --subscription "<subscriptionID>"

Azure PowerShell では、最初に Get-AzSubscription コマンドレットを使用してサブスクリプションを一覧表示できます。 その後、その 1 つに Set AzContext コマンドレットを使用して接続します。

Get-AzSubscription

Set-AzContext -SubscriptionId "<subscriptionID>"

リソース ID を取得する

キー コンテナーのログ記録を有効にするには、キー コンテナーのリソース ID と、宛先 (Azure Storage または Log Analytics アカウント) が必要になります。

キー コンテナーの名前を覚えていない場合は、Azure CLI の az keyvault list コマンドまたは Azure PowerShell の Get-AzKeyVault コマンドレットを使用してそれを見つけることができます。

キー コンテナーの名前を使用して、そのリソース ID を見つけます。 Azure CLI では、az keyvault show コマンドを使用します。

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

Azure PowerShell では、Get-AzKeyVault コマンドレットを使用します。

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

キー コンテナーのリソース ID は、"/subscriptions/お使いのサブスクリプション ID/resourceGroups/myResourceGroup/providers/Microsoft.KeyVault/vaults/お使いの一意のキー コンテナー名" という形式になります。 次の手順のためにそれを書き留めます。

ログの有効化

Azure CLI、Azure PowerShell、または Azure portal を使用して、Key Vault のログを有効にできます。

Azure CLI

Azure CLI の az monitor diagnostics-settings create コマンド、ストレージ アカウント ID、キー コンテナーのリソース ID を、次のように使用します。

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 をダウンロードする必要があります。

最初に、コンテナー内のすべての 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 という形式になっていることがわかります。 日付と時刻の値は、協定世界時を使用しています。

同じストレージ アカウントを使用して複数のリソースのログを収集することができるので、必要な BLOB のみにアクセスしたり、ダウンロードしたりする場合には、BLOB 名に完全なリソース ID を使用すると便利です。

しかし最初は、すべての 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 コマンドレットを使用して、BLOB のリストを取得します。 それから、パイプを使用してその一覧を Get-AzStorageBlobContent コマンドレットに渡し、選択したパスにログをダウンロードします。

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

この 2 番目のコマンドレットを PowerShell で実行すると、BLOB 名に含まれる / 区切り記号によって、宛先フォルダーの下にフォルダー構造全体が作成されます。 この構造は、BLOB をファイルとしてダウンロードし、保存するために使用します。

BLOB を選択的にダウンロードするには、ワイルドカードを使用します。 次に例を示します。

  • 複数の Key Vault を持っている場合に、CONTOSOKEYVAULT3 という名前の Key Vault のみについてログをダウンロードするには、次のようにします。

    Get-AzStorageBlob -Container "insights-logs-auditevent" -Context $sa.Context -Blob '*/VAULTS/CONTOSOKEYVAULT3
    
  • 複数のリソース グループを持っている場合、1 つのリソース グループのみについてログをダウンロードするには、次のように -Blob '*/RESOURCEGROUPS/<resource group name>/*'を使用します。

    Get-AzStorageBlob -Container "insights-logs-auditevent" -Context $sa.Context -Blob '*/RESOURCEGROUPS/CONTOSORESOURCEGROUP3/*'
    
  • 2019 年 1 月のすべてのログをダウンロードする場合は、次のように -Blob '*/year=2019/m=01/*' を使用します。

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

Azure Monitor ログの使用

Azure Monitor ログの Key Vault ソリューションを使用して、Key Vault の AuditEvent ログを調査することができます。 Azure Monitor ログでは、ログ クエリを使用してデータを分析し、必要な情報を取得します。 詳細については、Key Vault の監視に関するページをご覧ください。

次のステップ

  • 概念的な情報については、Key Vault のログを解釈する方法を含め、Key Vault のログ記録に関するページを参照してください。
  • ご自身のキー コンテナー上での Azure Monitor の使用の詳細については、Key Vault の監視に関するページをご覧ください。