Samouczek: konfigurowanie i wykonywanie zapytań dotyczących dzienników inspekcji operacji modułu HSM dla Azure Cloud HSM

Azure Cloud HSM obsługuje rejestrowanie operacji HSM za pośrednictwem ustawień diagnostycznych Azure Monitor. Kategoria HsmOperations dziennika zawiera rekordy ze śladami naruszenia wygenerowane przez oprogramowanie układowe HSM na potrzeby operacji zarządzania wykonywanych na partycjach HSM. Wyślij te rekordy zarówno do konta usługi Storage, jak i obszaru roboczego Log Analytics w celu scentralizowanego zbierania, analizowania, monitorowania i przechowywania.

Rejestrowanie operacji HSM jest zalecaną strategią rejestrowania pod kątem zabezpieczeń i zgodności. Rejestruje operacje zarządzania, takie jak logowania, zarządzanie użytkownikami, tworzenie i usuwanie kluczy, importowanie i eksportowanie kluczy oraz tworzenie kopii zapasowych i przywracanie. Dzienniki są pobierane z każdej partycji HSM w partiach, a każda partia jest podpisana przez moduł HSM przy użyciu klucza certyfikatu partycji. Wszystkie rekordy z partii mają ten sam CorrelationId. Wyeksportowane rekordy obejmują również odpowiedni podpis dla podpisanej partii i certyfikaty publiczne HSM, które mogą służyć do weryfikowania integralności i autentyczności ścieżki audytu.

Azure Cloud HSM udostępnia również kategorię rejestrowania HsmServiceOperations zdarzeń. Te dzienniki operacji usługi opisują żądania obserwowane przez usługę Cloud HSM i mogą uzupełniać dzienniki operacji modułu HSM na potrzeby rozwiązywania problemów. Obie kategorie można włączyć w tym samym ustawieniu diagnostycznym, ale należy użyć HsmOperations jako podstawowego źródła dla operacji audytu zarejestrowanych przez moduł HSM.

W tym samouczku nauczysz się następujących rzeczy:

  • Skonfiguruj i ustaw dzienniki operacji modułu HSM, w tym utworzenie konta magazynu i obszaru roboczego Log Analytics.
  • Opcjonalnie włącz dzienniki operacji usługi obok dzienników operacji modułu HSM.
  • Wykonywanie zapytań dotyczących dzienników operacji modułu HSM w celu pobrania określonych operacji zarządzania.
  • Uzyskaj kompleksową listę poleceń zarządzania zarejestrowanych przez dzienniki operacji modułu HSM.

Important

Ustawienia diagnostyczne określają, gdzie są eksportowane dzienniki.

Ogranicz dostęp do docelowego konta magazynu i obszaru roboczego Log Analytics. Rekordy operacji modułu HSM mogą zawierać identyfikatory operacyjne, takie jak identyfikatory użytkowników, uchwyty sesji, uchwyty kluczy i szczegóły specyficzne dla operacji.

Prerequisites

Konfigurowanie i ustawianie dzienników operacji modułu HSM

Użyj poleceń w poniższych sekcjach, aby skonfigurować zasoby, które mają być monitorowane.

Utwórz konto magazynowe do przechowywania dzienników operacji modułu HSM

Aby zachować dzienniki operacji modułu HSM na koncie magazynu danych, najpierw utwórz grupę zasobów, a następnie utwórz konto magazynu danych w tej grupie zasobów.

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

Tworzenie obszaru roboczego usługi Log Analytics

Aby utworzyć obszar roboczy Log Analytics do przechowywania i analizowania dzienników operacji modułu HSM, użyj następującego polecenia.

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

Note

Obsługiwany czas przechowywania obszaru roboczego Log Analytics musi być co najmniej 30 dni.

Aby uzyskać więcej informacji na temat tworzenia obszaru roboczego usługi Log Analytics dla usługi Azure Monitor, zobacz Tworzenie obszaru roboczego usługi Log Analytics.

Włączanie ustawień diagnostycznych

Aby wyeksportować dzienniki operacji usługi Azure Cloud HSM, utwórz ustawienie diagnostyczne z włączoną kategorią HsmOperations. W poniższych przykładach dzienniki są wysyłane zarówno do konta magazynu danych, jak i obszaru roboczego usługi 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}]'

Aby również zebrać dzienniki operacji usługi na potrzeby rozwiązywania problemów, włącz element HsmServiceOperations obok HsmOperationselementu .

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

Weryfikowanie ustawienia diagnostycznego

Wyświetl listę ustawień diagnostycznych zasobu Cloud HSM i upewnij się, że ustawienie zawiera konto magazynu, obszar roboczy Log Analytics, Dedicated typ docelowy i włączoną HsmOperations kategorię. Jeśli włączono dzienniki operacji usługi, upewnij się również, że HsmServiceOperations jest włączone.

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

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

Weryfikowanie konfiguracji rejestrowania operacji Cloud HSM

Po utworzeniu ustawienia diagnostycznego i wykonaniu obsługiwanej operacji zarządzania odczekaj, aż moduł HSM opublikuje podpisaną partię inspekcji oraz aż usługa Azure Monitor go zaimportował.

Note

Po utworzeniu ustawienia diagnostycznego dzienniki są często wyświetlane w Log Analytics w ciągu kilku minut. Pozyskiwanie danych dziennika zasobów platformy Azure może potrwać około 20 minut w normalnych warunkach, a początkowa aktywacja nowego ustawienia diagnostycznego może czasami potrwać do 90 minut. Ustawienia diagnostyczne nie uzupełniają wstecz dzienników wygenerowanych przed utworzeniem ustawienia.

Dzienniki operacji modułu HSM w chmurze można przeszukiwać w portalu Azure za pośrednictwem obszaru roboczego Log Analytics. Rekordy operacji modułu HSM są przechowywane w CloudHsmHardwareOperationAuditLogs tabeli. Jeśli włączysz również opcję HsmServiceOperations, te rekordy są przechowywane oddzielnie w tabeli CloudHsmServiceOperationAuditLogs.

Możesz również wykonywać zapytania dotyczące dzienników zdarzeń operacji modułu HSM w chmurze przy użyciu Azure CLI lub 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'

Błąd rejestracji

Jeśli zostanie wyświetlony komunikat o błędzie "<subscription> nie jest zarejestrowany do używania microsoft.insights", subskrypcja Azure nie jest zarejestrowana do korzystania z Microsoft.Insights dostawcy zasobów. Aby rozwiązać ten problem, zarejestruj dostawcę Microsoft.Insights w subskrypcji.

az provider register --namespace Microsoft.Insights

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

Po uruchomieniu polecenia upewnij się, że dostawca zasobów jest zarejestrowany. Jeśli nadal się rejestruje, może być konieczne chwilowe odczekanie i ponowne sprawdzenie.

Zapytania do dzienników operacji modułu HSM

Uruchom następujące zapytania w edytorze Log Analytics Logs w portalu Azure. Aby uruchomić je z wiersza polecenia, zastąp tekst zapytania w parametrze Azure CLI --analytics-query lub w parametrze Azure PowerShell -Query pokazanym w poprzednich przykładach weryfikacji.

Użyj następujących zapytań, aby pobrać operacje zarządzania modułem HSM z CloudHsmHardwareOperationAuditLogs. Aby wyświetlić listę wszystkich rekordów operacji zarządzania, uruchom polecenie:

CloudHsmHardwareOperationAuditLogs
| where OperationName startswith "CN_"

Tabela może również zawierać rekordy podpisanych partii i certyfikatów, których nazwy operacji zaczynają się od BATCH_. Aby uzyskać szczegółowe informacje na temat rejestrów partii i operacji zarządzania, które mogą występować, zapoznaj się ze słownikiem operacji.

Zdarzenia logowania i sesji

// 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

Zdarzenia dotyczące tworzenia i usuwania użytkowników

// 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

Zdarzenia związane z generowaniem kluczy

// 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

Zdarzenia usuwania klucza

// 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

Słownik operacji

Rejestrowanie operacji HSM obejmuje następujące rekordy wsadowe i polecenia zarządzania modułem HSM. Zapytania i operacje tylko do odczytu, które nie są wymienione tutaj, nie są przechwytywane w HsmOperations.

Zarządzanie sesjami

Nazwa operacji Description
CN_LOGIN Loguje użytkownika do partycji.
CN_LOGOUT Wylogowuje użytkownika z partycji.
CN_CLOSE_SESSION Zamyka określoną sesję.
CN_CLOSE_ALL_SESSIONS Zamyka wszystkie sesje na partycji.
CN_APP_FINALIZE Kończy sesję aplikacji, taką jak PKCS#11 C_Finalize.
CN_CLOSE_PARTITION_SESSIONS Zamyka wszystkie sesje na określonej partycji.
CN_ENCRYPT_SESSION Ustanawia zaszyfrowaną sesję.

Cykl życia partycji

Nazwa operacji Description
CN_INIT_TOKEN Inicjuje lub formatuje partycję.
CN_INIT_DONE Oznacza inicjalizację partycji jako zakończoną.
CN_ZEROIZE Zeruje partycję.
CN_VENDOR_ZEROIZE Wykonuje operację zeroize specyficzną dla dostawcy.
CN_SET_NODEID Ustawia identyfikator węzła partycji.
CN_SET_M_VALUE Ustawia wartość M dla kworum M-of-N.
CN_SET_POLICY Ustawia zasadę partycjonowania.
CN_SET_HSM_CONFIG Ustawia konfigurację sprzętu modułu HSM.
CN_SET_KBK_PRIMARY Ustawia klucz Key Block Key (KBK) jako podstawowy.
CN_PARTN_STORAGE_UPDATE Aktualizuje trwałą pamięć masową partycji.
CN_PARTN_STORAGE_DELETE Usuwa rekord trwałej pamięci masowej partycji.

Zarządzanie użytkownikami

Nazwa operacji Description
CN_CREATE_USER Tworzy użytkownika kryptograficznego (CU).
CN_CREATE_CO Tworzy Crypto Officer (CO).
CN_CREATE_APPLIANCE_USER Tworzy użytkownika urządzenia lub usługi.
CN_CREATE_PRE_OFFICER Tworzy wstępnego oficera.
CN_CHANGE_PSWD Zmienia hasło użytkownika lub numer PIN.
CN_RENAME_PCO Zmienia nazwę elementu „pre-officer”.
CN_DELETE_USER Usuwa użytkownika.
CN_UNLOCK_CO Odblokuje zablokowanego Crypto Officer.
CN_GET_CHALLENGE_CO Otrzymuje wyzwanie do odblokowania Crypto Officer.
CN_SET_USER_ATTR Ustawia atrybuty użytkownika.
CN_UNLOCK_USER Odblokuje zablokowanego użytkownika.
CN_ALWAYS_AUTHORIZE_USER Konfiguruje zawsze autoryzowanego użytkownika dla M-of-N.
CN_REGISTER_AUTH_PUB_KEY Rejestruje klucz publiczny uwierzytelniania.
CN_SET_AUTH_PUB_KEY Ustawia klucz publiczny uwierzytelniania.

Generowanie klucza

Nazwa operacji Description
CN_GENERATE_KEY Generuje klucz symetryczny.
CN_GENERATE_KEY_PAIR Generuje parę kluczy asymetrycznych.
CN_GENERATE_PBE_KEY Generuje klucz szyfrowania oparty na haśle.
CN_GEN_KEY_ENC_KEY Generuje klucz szyfrujący klucze.
CN_GEN_PSWD_ENC_KEY Generuje klucz do szyfrowania hasła.
CN_DERIVE_KEY Wyprowadza klucz na podstawie klucza podstawowego.

Zawijanie kluczy, importowanie i eksportowanie

Nazwa operacji Description
CN_WRAP_KEY Opakowuje klucz do eksportu chronionego.
CN_WRAP_KEY2 Opakowuje klucz z atrybutami rozszerzonymi.
CN_UNWRAP_KEY Odpakowuje chroniony klucz.
CN_UNWRAP_KEY2 Odpakowuje chroniony klucz z atrybutami rozszerzonymi.
CN_NIST_AES_WRAP Wykonuje opakowywanie klucza AES zgodnie z NIST.
CN_NIST_AES_WRAP_UNWRAP2 Wykonuje opakowywanie lub rozpakowywanie klucza NIST AES.
CN_INSERT_MASKED_OBJECT Wstawia zamaskowany obiekt klucza.
CN_EXTRACT_MASKED_OBJECT Wyodrębnia zamaskowany obiekt klucza.
CN_INSERT_MASKED_OBJECT_USER Wstawia zamaskowany obiekt z kontekstem użytkownika.
CN_EXTRACT_MASKED_OBJECT_USER Wyodrębnia zamaskowany obiekt w kontekście użytkownika.
CN_STORE_KBK_SHARE Przechowuje udział KBK na potrzeby ochrony kluczy M-of-N.

Cykl życia klucza i obiektu

Nazwa operacji Description
CN_CREATE_OBJECT Tworzy klucz lub obiekt danych.
CN_MODIFY_OBJECT Modyfikuje atrybuty obiektu.
CN_MODIFY_KEY_OWNER Przenosi własność klucza na innego użytkownika.
CN_DESTROY_OBJECT Trwale usuwa obiekt.
CN_TOMBSTONE_OBJECT Oznacza obiekt jako usunięty do synchronizacji.
CN_DELETE_TOMBSTONED_OBJECT Trwale usuwa obiekt oznaczony jako usunięty.
CN_SHARE_OBJECT Udostępnia obiekt klucza dodatkowym użytkownikom.
CN_PARK_OBJECT Serializuje obiekt do transferu.
CN_UNPARK_OBJECT Deserializuje obiekt wstrzymany.

Tworzenie kopii zapasowej i przywracanie

Nazwa operacji Description
CN_BACKUP_BEGIN Rozpoczyna operację tworzenia kopii zapasowej.
CN_BACKUP_CONFIG Wykonuje kopię zapasową konfiguracji partycji.
CN_BACKUP_USERS Wykonuje kopię zapasową bazy danych użytkowników.
CN_BACKUP_KEY Wykonuje kopię zapasową kluczy.
CN_BACKUP_OBJECT Wykonuje kopię zapasową obiektów.
CN_BACKUP_END Kończy i finalizuje kopię zapasową.
CN_RESTORE_BEGIN Rozpoczyna operację przywracania.
CN_RESTORE_END Kończy operację przywracania.
CN_CLONE_SOURCE_INIT Inicjuje partycję jako źródło klonowania.
CN_CLONE_TARGET_INIT Inicjuje partycję jako cel klonowania.
CN_CLONE_SOURCE_STAGE1 Wykonuje etap 1 clone-source.
CN_CLONE_TARGET_STAGE1 Wykonuje etap 1 clone-target.

Operacje na tokenach M-of-N

Nazwa operacji Description
CN_APPROVE_TOKEN Zatwierdza token uwierzytelniający M-of-N.
CN_GET_TOKEN Pobiera token M-of-N.
CN_DELETE_TOKEN Usuwa token M-of-N.
CN_TOKEN_TIMEOUT Rejestruje limit czasu tokenu M-of-N.

Oprogramowanie układowe i operacje bezpiecznych aplikacji

Nazwa operacji Description
CN_SMAPP_DELETE Usuwa zabezpieczoną aplikację.
CN_SMAPP_CTRL Steruje bezpieczną aplikacją.
CN_SMAPP_UPDATE_BEGIN Rozpoczyna aktualizację Secure Application.
CN_SMAPP_UPDATE Zapisuje dane aktualizacji zabezpieczeń aplikacji.
CN_SMAPP_UPDATE_END Finalizuje aktualizację aplikacji Secure.
CN_SMAPP_DELETE_FILE Usuwa plik secure-application.
CN_SMAPP_WRITE_SFRAM Zapisuje do pamięci SFRAM.
CN_SMAPP_READ_SFRAM Odczytuje z SFRAM.
CN_SMAPP_WRITE_DATA Zapisuje dane secure-application.
CN_SMAPP_READ_DATA Odczytuje dane aplikacji Secure Application.

Integralność partii i rekordy certyfikatów

Wszystkie rekordy w tej samej partii mają wspólny CorrelationId. Użyj tej wartości, aby skojarzyć rekordy operacji zarządzania modułem HSM z odpowiednimi rekordami podpisów i certyfikatów publicznych.

Nazwa operacji Description
BATCH_BINARY_SIGNATURE Zawiera sygnaturę wygenerowaną przez moduł HSM i skrót SHA-256 dla partii. Użyj podpisu i łańcucha certyfikatów, aby zweryfikować integralność i autentyczność partii.
BATCH_PARTITION_IDENTITY_CERT Zawiera certyfikat tożsamości partycji podpisany przez moduł HSM.
BATCH_HSM_DEVICE_CERT Zawiera certyfikat identyfikujący urządzenie HSM.
BATCH_HSM_MANUFACTURER_ROOT_CERT Zawiera certyfikat główny producenta modułu HSM, który jest kotwicą zaufania łańcucha certyfikatów HSM.
BATCH_HSM_OWNER_AUTH_CERT Zawiera certyfikat uwierzytelniania właściciela modułu HSM, który identyfikuje właściciela sprzętu.

Pobieranie dzienników operacji modułu HSM na potrzeby weryfikacji podpisu

Pobierz dzienniki operacji HSM jako plik JSON, aby użyć ich do weryfikacji podpisu. Wyeksportowany plik musi zawierać każdy rekord dla każdego uwzględnionego CorrelationId, w tym rekordy podpisu partii i certyfikatu. Nie dodawaj take ani limit do tych zapytań, ponieważ może to wyeksportować niekompletną podpisaną partię.

Pobieranie dzienników z ostatnich siedmiu dni dla zasobu

Zastąp symbole zastępcze wartościami zasobu Cloud HSM i obszaru roboczego Log Analytics. Zapytanie identyfikuje partie, które mają rekordy z ostatnich siedmiu dni, a następnie eksportuje każdy rekord dla tych partii, aby pozostały one kompletne. Filtr _ResourceId jest niewrażliwy na wielkość liter.

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"

Pobierz wszystkie dzienniki dla danego identyfikatora korelacji

Użyj tego zapytania, aby pobrać jedną kompletną podpisaną partię. Wszystkie rekordy, które mają określone CorrelationId, są zapisywane do pliku wyjściowego, niezależnie od ich kolejności.

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"

Następny krok: Weryfikacja podpisu pobranych dzienników

Użyj narzędzi dzienników inspekcji modułu HSM w chmurze Azure, aby zweryfikować integralność i autentyczność pobranych dzienników operacji modułu HSM.

  1. Przejdź do repozytorium zestawu SDK modułu HSM w chmurze Microsoft Azure.
  2. Otwórz folder Narzędzia .
  3. .zip Pobierz pakiet o nazwie AzureCloudHSM-AuditLogUtils.
  4. Wyodrębnij pakiet i postępuj zgodnie z dołączonymi instrukcjami, aby zweryfikować sygnatury wsadowe i łańcuch certyfikatów pobranego pliku dziennika.