Esercitazione: Configurare ed eseguire query sui log di controllo delle operazioni HSM per Azure Cloud HSM

Azure Cloud HSM supporta la registrazione delle operazioni HSM tramite le impostazioni di diagnostica di Monitoraggio di Azure. La categoria di log HsmOperations contiene record a prova di manomissione generati dal firmware del modulo di protezione hardware per le operazioni di gestione eseguite sulle partizioni del modulo di protezione hardware. Inviare questi record sia a un account di archiviazione sia a un'area di lavoro Log Analytics per raccolte, analisi, monitoraggio e conservazione centralizzate.

La registrazione delle operazioni HSM è la strategia di registrazione consigliata per la sicurezza e la conformità. Registra operazioni di gestione, ad esempio accessi, gestione degli utenti, creazione ed eliminazione delle chiavi, importazione ed esportazione delle chiavi e backup e ripristino. I log vengono recuperati da ogni partizione del modulo di protezione hardware in batch e ogni batch viene firmato dal modulo di protezione hardware usando la chiave del certificato di partizione. Tutti i record di un batch condividono lo stesso CorrelationId I record esportati includono anche la firma corrispondente per il batch firmato e i certificati pubblici HSM, che possono essere usati per verificare l'integrità e l'autenticità dell'audit trail.

Azure Cloud HSM fornisce anche la HsmServiceOperations categoria di registrazione eventi. Questi log delle operazioni del servizio descrivono le richieste osservate dal servizio HSM cloud e possono integrare i log delle operazioni del modulo di protezione hardware per la risoluzione dei problemi. È possibile abilitare entrambe le categorie nella stessa impostazione di diagnostica, ma usare HsmOperations come origine primaria per le operazioni di controllo registrate dal modulo di protezione hardware.

In questa esercitazione, imparerai a:

  • Impostare e configurare i log delle operazioni del modulo di protezione hardware, inclusa la creazione di un account di archiviazione e un'area di lavoro di analisi dei log.
  • Facoltativamente, abilitare i log delle operazioni del servizio insieme ai log delle operazioni del modulo di protezione hardware.
  • Eseguire query sui log delle operazioni HSM per recuperare operazioni di gestione specifiche.
  • Ottenere un elenco completo dei comandi di gestione registrati dai log delle operazioni del modulo di protezione hardware.

Importante

Le impostazioni di diagnostica controllano dove vengono esportati i log.

Limitare l'accesso all'account di archiviazione di destinazione e all'area di lavoro Log Analytics. I record delle operazioni HSM possono includere identificatori operativi, ad esempio ID utente, handle di sessione, handle di chiave e dettagli specifici dell'operazione.

Prerequisites

Impostare e configurare i log delle operazioni del modulo di protezione hardware

Usare i comandi nelle sezioni seguenti per configurare le risorse da monitorare.

Creare un account di archiviazione per archiviare i log delle operazioni del modulo di protezione hardware

Per conservare i log delle operazioni HSM in un account di archiviazione, creare prima un gruppo di risorse e quindi creare l'account di archiviazione in tale gruppo di risorse.

az group create --name "<resource-group>" --location "<location>"

az storage account create \
  --name "<storage-account-name>" \
  --resource-group "<resource-group>" \
  --location "<location>" \
  --sku Standard_LRS \
  --kind StorageV2

Creare un'area di lavoro Log Analytics

Per creare un'area di lavoro Log Analytics per l'archiviazione e l'analisi dei log delle operazioni HSM, usare il comando seguente.

az monitor log-analytics workspace create \
  --resource-group "<resource-group>" \
  --workspace-name "<workspace-name>" \
  --location "<location>" \
  --retention-time "<NumOfDays>"

Note

Il tempo di conservazione dell'area di lavoro supportato Log Analytics deve essere di almeno 30 giorni.

Per altre informazioni sulla creazione di un'area di lavoro Log Analytics per Monitoraggio di Azure, vedere Creare un'area di lavoro Log Analytics.

Abilitare le impostazioni di diagnostica

Per esportare i log delle operazioni di Azure Cloud HSM, creare un'impostazione di diagnostica con la categoria HsmOperations abilitata. Gli esempi seguenti inviano i log a un account di archiviazione e a un'area di lavoro Log Analytics.

resourceId="/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.HardwareSecurityModules/cloudHsmClusters/<hsm-name>"

storageAccountId="/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.Storage/storageAccounts/<storage-account-name>"

workspaceId="/subscriptions/<subscription-id>/resourcegroups/<resource-group>/providers/microsoft.operationalinsights/workspaces/<workspace-name>"

az monitor diagnostic-settings create \
  --resource $resourceId \
  --name "my-chsmAuditLogs" \
  --storage-account $storageAccountId \
  --workspace $workspaceId \
  --export-to-resource-specific true \
  --logs '[{"category":"HsmOperations","enabled":true}]'

Per raccogliere anche i log delle operazioni del servizio per la risoluzione dei problemi, abilitare HsmServiceOperations insieme a HsmOperations.

az monitor diagnostic-settings create \
  --resource $resourceId \
  --name "my-chsmAuditLogs" \
  --storage-account $storageAccountId \
  --workspace $workspaceId \
  --export-to-resource-specific true \
  --logs '[{"category":"HsmOperations","enabled":true},{"category":"HsmServiceOperations","enabled":true}]'

Verificare l'impostazione di diagnostica

Elencare le impostazioni di diagnostica per la risorsa Cloud HSM e verificare che l'impostazione includa l'account di archiviazione, l'area di lavoro Log Analytics, Dedicated il tipo di destinazione e la categoria HsmOperations abilitata. Se sono stati abilitati i log delle operazioni del servizio, verificare anche che HsmServiceOperations sia abilitato.

resourceId="/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.HardwareSecurityModules/cloudHsmClusters/<hsm-name>"

az monitor diagnostic-settings list \
  --resource $resourceId \
  --output json

Verificare la configurazione della registrazione delle operazioni di Cloud HSM

Dopo aver creato l'impostazione di diagnostica ed eseguito un'operazione di gestione supportata, consentire al modulo di protezione hardware di pubblicare il batch di controllo firmato e a Monitoraggio di Azure di acquisirlo.

Note

Dopo aver creato un'impostazione di diagnostica, i log vengono comunemente visualizzati in Log Analytics entro alcuni minuti. L'inserimento dei log delle risorse di Azure può richiedere circa 20 minuti in condizioni normali e l'attivazione iniziale di una nuova impostazione di diagnostica può richiedere occasionalmente fino a 90 minuti. Le impostazioni di diagnostica non compilano retroattivamente i log generati prima della creazione dell'impostazione.

È possibile eseguire query sui log delle operazioni di Cloud HSM dal portale di Azure tramite l'area di lavoro Log Analytics. I record delle operazioni HSM vengono archiviati nella CloudHsmHardwareOperationAuditLogs tabella. Se è stato abilitato HsmServiceOperationsanche , tali record vengono archiviati separatamente nella CloudHsmServiceOperationAuditLogs tabella.

È anche possibile eseguire query sui registri eventi delle operazioni del modulo di protezione hardware cloud usando il interfaccia della riga di comando di Azure o Azure PowerShell.

workspaceCustomerId=$(az monitor log-analytics workspace show \
  --resource-group "<resource-group>" \
  --workspace-name "<workspace-name>" \
  --query customerId --output tsv)

az monitor log-analytics query \
  --workspace $workspaceCustomerId \
  --analytics-query 'CloudHsmHardwareOperationAuditLogs'

Errore di registrazione

Se viene visualizzato il messaggio di errore "<subscription> non è registrato per l'uso di microsoft.insights", la sottoscrizione Azure non è registrata per l'uso del Microsoft.Insights provider di risorse. Per risolvere questo problema, registra il provider Microsoft.Insights nella tua sottoscrizione.

az provider register --namespace Microsoft.Insights

az provider show --namespace Microsoft.Insights --query "registrationState" --output table

Dopo aver eseguito il comando, assicurarsi che il provider di risorse sia registrato. Se è ancora in fase di registrazione, può essere necessario attendere alcuni istanti e riprovare.

Eseguire query sui log delle operazioni di HSM

Eseguire le query seguenti nell'editor dei log di Log Analytics nel portale di Azure. Per eseguirli dalla riga di comando, sostituire il testo della query nel parametro interfaccia della riga di comando di Azure --analytics-query o il parametro Azure PowerShell -Query illustrato negli esempi di verifica precedenti.

Usare le query seguenti per recuperare le operazioni di gestione del modulo di protezione hardware da CloudHsmHardwareOperationAuditLogs. Per elencare tutti i record delle operazioni di gestione, eseguire:

CloudHsmHardwareOperationAuditLogs
| where OperationName startswith "CN_"

La tabella può anche contenere record di batch firmati e di certificati i cui nomi di operazione iniziano con BATCH_. Per informazioni dettagliate sui record batch e sulle operazioni di gestione che possono comparire, vedere il glossario delle operazioni.

Eventi di accesso e sessione

// Find login and session events.
CloudHsmHardwareOperationAuditLogs
| where OperationName in (
    "CN_LOGIN",
    "CN_LOGOUT",
    "CN_CLOSE_SESSION",
    "CN_CLOSE_ALL_SESSIONS",
    "CN_CLOSE_PARTITION_SESSIONS"
)
| project TimeGenerated, OperationName, ResultType, UserID, SessionHandle, HsmInstance, SequenceNumber

Eventi per la creazione e l'eliminazione di utenti

// Find user creation and deletion events.
CloudHsmHardwareOperationAuditLogs
| where OperationName in (
    "CN_CREATE_USER",
    "CN_CREATE_CO",
    "CN_CREATE_APPLIANCE_USER",
    "CN_CREATE_PRE_OFFICER",
    "CN_DELETE_USER"
)
| project TimeGenerated, OperationName, ResultType, UserID, HsmInstance, SequenceNumber, AdditionalInfo

Eventi per la creazione di chiavi

// Find key creation events.
CloudHsmHardwareOperationAuditLogs
| where OperationName in (
    "CN_GENERATE_KEY",
    "CN_GENERATE_KEY_PAIR",
    "CN_GENERATE_PBE_KEY",
    "CN_GEN_KEY_ENC_KEY",
    "CN_GEN_PSWD_ENC_KEY",
    "CN_DERIVE_KEY"
)
| project TimeGenerated, OperationName, ResultType, UserID, HsmInstance, SequenceNumber, AdditionalInfo

Eventi per l'eliminazione della chiave

// Find key deletion events.
CloudHsmHardwareOperationAuditLogs
| where OperationName in (
    "CN_DESTROY_OBJECT",
    "CN_TOMBSTONE_OBJECT",
    "CN_DELETE_TOMBSTONED_OBJECT"
)
| project TimeGenerated, OperationName, ResultType, UserID, HsmInstance, SequenceNumber, AdditionalInfo

Glossario delle operazioni

La registrazione delle operazioni HSM registra i record batch e i comandi di gestione del modulo di protezione hardware seguenti. Le query e le operazioni di sola lettura non elencate di seguito non vengono acquisite in HsmOperations.

Gestione delle sessioni

Nome dell'operazione Description
CN_LOGIN Consente l'accesso di un utente a una partizione.
CN_LOGOUT Disconnette un utente da una partizione.
CN_CLOSE_SESSION Chiude una sessione specifica.
CN_CLOSE_ALL_SESSIONS Chiude tutte le sessioni su una partizione.
CN_APP_FINALIZE Finalizza una sessione dell'applicazione, ad esempio PKCS#11 C_Finalize.
CN_CLOSE_PARTITION_SESSIONS Chiude tutte le sessioni su una partizione specifica.
CN_ENCRYPT_SESSION Stabilisce una sessione cifrata.

Ciclo di vita della partizione

Nome dell'operazione Description
CN_INIT_TOKEN Inizializza o formatta una partizione.
CN_INIT_DONE Contrassegna l'inizializzazione della partizione come completata.
CN_ZEROIZE Azzera una partizione.
CN_VENDOR_ZEROIZE Esegue un'operazione di zeroizzazione specifica del fornitore.
CN_SET_NODEID Imposta l'ID del nodo di partizione.
CN_SET_M_VALUE Imposta il valore M per il quorum M-of-N.
CN_SET_POLICY Imposta un criterio di partizione.
CN_SET_HSM_CONFIG Imposta la configurazione hardware dell'HSM.
CN_SET_KBK_PRIMARY Imposta la Key Block Key (KBK) primaria.
CN_PARTN_STORAGE_UPDATE Aggiorna l'archiviazione permanente della partizione.
CN_PARTN_STORAGE_DELETE Elimina un record di archiviazione permanente della partizione.

Gestione degli utenti

Nome dell'operazione Description
CN_CREATE_USER Crea un utente crypto (CU).
CN_CREATE_CO Crea un crypto officer (CO).
CN_CREATE_APPLIANCE_USER Crea un dispositivo o un utente di servizio.
CN_CREATE_PRE_OFFICER Crea un pre-officer.
CN_CHANGE_PSWD Modifica la password o il PIN di un utente.
CN_RENAME_PCO Rinomina un pre-officer.
CN_DELETE_USER Elimina un utente.
CN_UNLOCK_CO Sblocca un Crypto Officer a cui è stato bloccato l'accesso.
CN_GET_CHALLENGE_CO Ottiene una richiesta per lo sblocco di Crypto Officer.
CN_SET_USER_ATTR Imposta gli attributi utente.
CN_UNLOCK_USER Sblocca un utente bloccato.
CN_ALWAYS_AUTHORIZE_USER Configura un utente sempre autorizzato per M-of-N.
CN_REGISTER_AUTH_PUB_KEY Registra una chiave pubblica di autenticazione.
CN_SET_AUTH_PUB_KEY Imposta una chiave pubblica di autenticazione.

Generazione della chiave

Nome dell'operazione Description
CN_GENERATE_KEY Genera una chiave simmetrica.
CN_GENERATE_KEY_PAIR Genera una coppia di chiavi asimmetriche.
CN_GENERATE_PBE_KEY Genera una chiave di crittografia basata su password.
CN_GEN_KEY_ENC_KEY Genera una chiave di crittografia delle chiavi.
CN_GEN_PSWD_ENC_KEY Genera una chiave per la crittografia delle password.
CN_DERIVE_KEY Deriva una chiave da una chiave di base.

Incapsulamento della chiave, importazione ed esportazione

Nome dell'operazione Description
CN_WRAP_KEY Esegue il wrapping di una chiave per l'esportazione protetta.
CN_WRAP_KEY2 Esegue il wrapping di una chiave con attributi estesi.
CN_UNWRAP_KEY Rimuove il wrapping da una chiave protetta.
CN_UNWRAP_KEY2 Rimuove il wrapping di una chiave protetta con attributi estesi.
CN_NIST_AES_WRAP Esegue il wrapping delle chiavi NIST AES.
CN_NIST_AES_WRAP_UNWRAP2 Esegue il wrapping o l'unwrapping della chiave NIST AES.
CN_INSERT_MASKED_OBJECT Inserisce un oggetto chiave mascherato.
CN_EXTRACT_MASKED_OBJECT Estrae un oggetto chiave mascherato.
CN_INSERT_MASKED_OBJECT_USER Inserisce un oggetto mascherato con contesto utente.
CN_EXTRACT_MASKED_OBJECT_USER Estrae un oggetto mascherato con contesto utente.
CN_STORE_KBK_SHARE Archivia una quota KBK per la protezione con chiave M-of-N.

Ciclo di vita delle chiavi e degli oggetti

Nome dell'operazione Description
CN_CREATE_OBJECT Crea una chiave o un oggetto dati.
CN_MODIFY_OBJECT Modifica gli attributi dell'oggetto.
CN_MODIFY_KEY_OWNER Trasferisce la proprietà della chiave a un altro utente.
CN_DESTROY_OBJECT Elimina definitivamente un oggetto .
CN_TOMBSTONE_OBJECT Contrassegna un oggetto come eliminato per la sincronizzazione.
CN_DELETE_TOMBSTONED_OBJECT Rimuove definitivamente un oggetto contrassegnato come tombstone.
CN_SHARE_OBJECT Condivide un oggetto della chiave con altri utenti.
CN_PARK_OBJECT Serializza un oggetto per il trasferimento.
CN_UNPARK_OBJECT Deserializza un oggetto parcheggiato.

Backup e ripristino

Nome dell'operazione Description
CN_BACKUP_BEGIN Avvia un'operazione di backup.
CN_BACKUP_CONFIG Esegue il backup della configurazione della partizione.
CN_BACKUP_USERS Esegue il backup del database utente.
CN_BACKUP_KEY Esegue il backup delle chiavi.
CN_BACKUP_OBJECT Esegue il backup di oggetti.
CN_BACKUP_END Completa e finalizza un backup.
CN_RESTORE_BEGIN Avvia un'operazione di ripristino.
CN_RESTORE_END Completa un'operazione di ripristino.
CN_CLONE_SOURCE_INIT Inizializza una partizione come origine clone.
CN_CLONE_TARGET_INIT Inizializza una partizione come destinazione clone.
CN_CLONE_SOURCE_STAGE1 Esegue la fase clone-source 1.
CN_CLONE_TARGET_STAGE1 Esegue la fase 1 di clone-target.

Operazioni con token M-of-N

Nome dell'operazione Description
CN_APPROVE_TOKEN Approva un token di autorizzazione M-of-N.
CN_GET_TOKEN Recupera un token M-of-N.
CN_DELETE_TOKEN Elimina un token M-of-N.
CN_TOKEN_TIMEOUT Registra un timeout del token M-of-N.

Operazioni del firmware e dell'applicazione sicure

Nome dell'operazione Description
CN_SMAPP_DELETE Elimina un'applicazione sicura.
CN_SMAPP_CTRL Gestisce un'applicazione sicura.
CN_SMAPP_UPDATE_BEGIN Avvia un aggiornamento dell'applicazione protetta.
CN_SMAPP_UPDATE Scrive dati di aggiornamento per applicazioni sicure.
CN_SMAPP_UPDATE_END Finalizza un aggiornamento dell'applicazione sicura.
CN_SMAPP_DELETE_FILE Elimina un file secure-application.
CN_SMAPP_WRITE_SFRAM Scrive su SFRAM.
CN_SMAPP_READ_SFRAM Legge da SFRAM.
CN_SMAPP_WRITE_DATA Scrive i dati dell'applicazione sicura.
CN_SMAPP_READ_DATA Legge i dati dell'applicazione protetta.

Integrità del lotto e record dei certificati

Tutti i record nello stesso batch condividono un CorrelationId. Usare questo valore per associare i record dell'operazione di gestione del modulo di protezione hardware ai record di firma e certificato pubblico corrispondenti.

Nome dell'operazione Description
BATCH_BINARY_SIGNATURE Contiene la firma generata dal modulo di protezione hardware e l'hash SHA-256 per il batch. Usare la firma e la catena di certificati per verificare l'integrità e l'autenticità del batch.
BATCH_PARTITION_IDENTITY_CERT Contiene il certificato di identità della partizione firmato dal modulo di protezione hardware.
BATCH_HSM_DEVICE_CERT Contiene il certificato che identifica il dispositivo HSM.
BATCH_HSM_MANUFACTURER_ROOT_CERT Contiene il certificato radice del produttore del modulo di protezione hardware, ovvero l'ancoraggio di attendibilità per la catena di certificati HSM.
BATCH_HSM_OWNER_AUTH_CERT Contiene il certificato di autenticazione del proprietario HSM, che identifica il proprietario dell'hardware.

Scaricare i log delle operazioni HSM per la verifica della firma

Scaricare i log delle operazioni HSM come file JSON per usarli per la verifica della firma. Il file esportato deve contenere ogni record per ogni CorrelationId incluso, incluse le firme batch e i record del certificato. Non aggiungere take o limit a queste query perché così si potrebbe esportare un batch firmato incompleto.

Scaricare i log dagli ultimi sette giorni per una risorsa

Sostituire i segnaposto con i valori per la risorsa Cloud HSM e l'area di lavoro di Log Analytics. La query identifica i batch con record degli ultimi sette giorni e quindi esporta ogni record per tali batch in modo che rimangano completi. Il _ResourceId filtro non fa distinzione tra maiuscole e minuscole.

resourceGroupName="<resource-group>"
workspaceName="<workspace-name>"
resourceId="/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.HardwareSecurityModules/cloudHsmClusters/<hsm-name>"
outputFile="./logs/CloudHsmOperationLogsLast7Days.json"

mkdir -p ./logs

workspaceCustomerId=$(az monitor log-analytics workspace show \
  --resource-group "$resourceGroupName" \
  --workspace-name "$workspaceName" \
  --query customerId \
  --output tsv)

query=$(cat <<EOF
let recentBatches =
    CloudHsmHardwareOperationAuditLogs
    | where TimeGenerated >= ago(7d)
    | where _ResourceId =~ "$resourceId"
    | distinct CorrelationId;
CloudHsmHardwareOperationAuditLogs
| where _ResourceId =~ "$resourceId"
| where CorrelationId in (recentBatches)
EOF
)

az monitor log-analytics query \
  --workspace "$workspaceCustomerId" \
  --analytics-query "$query" \
  --output json > "$outputFile"

Scaricare tutti i log per un ID di correlazione specificato

Usare questa query per scaricare un batch firmato completo. Tutti i record che hanno lo CorrelationId specificato vengono scritti nel file di output, indipendentemente dal relativo ordine.

resourceGroupName="<resource-group>"
workspaceName="<workspace-name>"
correlationId="<correlation-id>"
outputFile="./logs/CloudHsmOperationLogsByCorrelationId.json"

mkdir -p ./logs

workspaceCustomerId=$(az monitor log-analytics workspace show \
  --resource-group "$resourceGroupName" \
  --workspace-name "$workspaceName" \
  --query customerId \
  --output tsv)

query=$(cat <<EOF
CloudHsmHardwareOperationAuditLogs
| where CorrelationId == "$correlationId"
EOF
)

az monitor log-analytics query \
  --workspace "$workspaceCustomerId" \
  --analytics-query "$query" \
  --output json > "$outputFile"

Passaggio successivo: Verifica della firma dei log scaricati

Usare le utilità del log di controllo di Azure Cloud HSM per verificare l'integrità e l'autenticità dei log delle operazioni HSM scaricati.

  1. Passare al repository Microsoft Azure Cloud HSM SDK.
  2. Apri la cartella Utilità.
  3. Scaricare il .zip pacchetto denominato AzureCloudHSM-AuditLogUtils.
  4. Estrarre il pacchetto e seguire le istruzioni incluse per verificare le firme batch e la catena di certificati del file di log scaricato.