Azure Key Vault のログ記録

1 つまたは複数のキー コンテナーを作成したら、いつ、どのように、誰によってキー コンテナーがアクセスされるのかを監視するのが一般的です。 Azure Key Vault のログ記録を有効にすることで、指定した Azure Storage アカウントに情報が保存されます。 詳しい手順については、「Key Vault のログ記録を有効にする方法」を参照してください。

キー コンテナーの操作を行ってから最大 10 分後には、ログ情報にアクセスできます。 ほとんどの場合は、より早く確認できます。 ストレージ アカウントでのログの管理はお客様に委ねられます。

  • ストレージ アカウントに標準的な Azure アクセス制御方法を使用し、ログにアクセスできるユーザーを制限することでログのセキュリティを保護します。
  • ストレージ アカウントに保持する必要がなくなったログは削除します。

Key Vault の概要については、「Azure Key Vault とは」を参照してください。 Key Vault が使用可能な場所については、価格に関するページをご覧ください。 Azure Monitor for Key Vault の使用に関する詳細です。

Key Vault のログを解釈する

ログ記録を有効にすると、指定したストレージ アカウント用の insights-logs-auditevent という名前の新しいコンテナーが自動的に作成されます。 このストレージ アカウントを使用して複数のキー コンテナーのログを収集することができます。

個々の BLOB はテキストとして格納されます (JSON BLOB 形式)。 ログ エントリの例を見てみましょう。

    {
        "records":
        [
            {
                "time": "2016-01-05T01:32:01.2691226Z",
                "resourceId": "/SUBSCRIPTIONS/361DA5D4-A47A-4C79-AFDD-XXXXXXXXXXXX/RESOURCEGROUPS/CONTOSOGROUP/PROVIDERS/MICROSOFT.KEYVAULT/VAULTS/CONTOSOKEYVAULT",
                "operationName": "VaultGet",
                "operationVersion": "2015-06-01",
                "category": "AuditEvent",
                "resultType": "Success",
                "resultSignature": "OK",
                "resultDescription": "",
                "durationMs": "78",
                "callerIpAddress": "104.40.82.76",
                "correlationId": "",
                "identity": {"claim":{"http://schemas.microsoft.com/identity/claims/objectidentifier":"d9da5048-2737-4770-bd64-XXXXXXXXXXXX","http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn":"live.com#username@outlook.com","appid":"1950a258-227b-4e31-a9cf-XXXXXXXXXXXX"}},
                "properties": {"clientInfo":"azure-resource-manager/2.0","requestUri":"https://control-prod-wus.vaultcore.azure.net/subscriptions/361da5d4-a47a-4c79-afdd-XXXXXXXXXXXX/resourcegroups/contosoresourcegroup/providers/Microsoft.KeyVault/vaults/contosokeyvault?api-version=2015-06-01","id":"https://contosokeyvault.vault.azure.net/","httpStatusCode":200}
            }
        ]
    }

次の表にフィールド名と説明を示します。

フィールド名 説明
time 日付と時刻 (UTC)。
resourceId Azure Resource Manager リソース ID。 Key Vault のログの場合は、常に Key Vault リソース ID となります。
operationName 次の表に示すような操作の名前です。
operationVersion クライアントによって要求された REST API バージョン。
category 結果の種類。 Key Vault のログの場合、AuditEvent は使用可能な唯一の値です。
resultType REST API 要求の結果です。
resultSignature HTTP の状態です。
resultDescription 結果に関する追加の説明です (使用可能な場合)。
durationMs REST API 要求を処理するのにかかった時間 (ミリ秒単位) です。 時間にはネットワーク待機時間は含まれません。従って、クライアント側で測定する時間はこの時間と一致しない場合があります。
callerIpAddress 要求を行ったクライアントの IP アドレスです。
correlationId オプションの GUID であり、クライアント側のログとサービス側の (Key Vault) ログを対応付ける場合に渡します。
identity REST API 要求に提示されたトークンからの ID です。 通常、要求が Azure PowerShell コマンドレットから送信された場合など、"ユーザー"、"サービス プリンシパル"、または "user+appId" の組み合わせです。
properties 操作によって異なる情報です (operationName)。 ほとんどの場合、このフィールドには、クライアント情報 (クライアントから渡されたユーザー エージェント文字列)、正確な REST API 要求 URI、および HTTP 状態コードが含まれます。 さらに、要求 (KeyCreateVaultGet など) を行った結果としてオブジェクトが返される場合、キーの URI (id として)、コンテナーの URI、またはシークレットの URI も含まれます。

operationName フィールドの値は、ObjectVerb 形式となります。 次に例を示します。

  • キー コンテナーに関するすべての操作は、Vault<action> 形式となります (VaultGetVaultCreate など)。
  • キーに関するすべての操作は、Key<action> 形式となります (KeySignKeyList など)。
  • シークレットに関するすべての操作は、Secret<action> 形式となります (SecretGetSecretListVersions など)。

次の表に、operationName の値と、対応する REST API コマンドを示します。

操作名の表

operationName REST API コマンド
認証 Microsoft Entra エンドポイント経由で認証する
VaultGet キー コンテナーに関する情報を取得します
VaultPut キー コンテナーを作成または更新します
VaultDelete キー コンテナーを削除します
VaultPatch Key Vault を更新します
VaultList リソース グループ内のすべてのキー コンテナーを一覧表示します
VaultPurge 削除されたコンテナーを消去します
VaultRecover 削除されたコンテナーを復旧します
VaultGetDeleted 削除されたコンテナーを取得します
VaultListDeleted 削除されたコンテナーを一覧表示します
VaultAccessPolicyChangedEventGridNotification コンテナーのアクセス ポリシーの変更イベントが発行されました。 Event Grid サブスクリプションが存在するかどうかに関係なく、ログに記録されます。

Azure Monitor ログの使用

Azure Monitor ログの Key Vault ソリューションを使用して、Key Vault の AuditEvent ログを調査することができます。 Azure Monitor ログでは、ログ クエリを使用してデータを分析し、必要な情報を取得します。

設定方法などの詳細については、Azure Monitor の Azure Key Vault に関するページをご覧ください。

ログを分析する方法については、Kusto ログ クエリのサンプルに関するページを参照してください

次の手順