Azure Cloud HSM은 Log Analytics 작업 영역을 통한 작업 이벤트 로깅을 지원합니다. 이 기능을 사용하면 클라우드 HSM 리소스에서 로그를 중앙 집중식으로 수집, 분석 및 모니터링할 수 있습니다.
작업 이벤트 로깅은 HSM(하드웨어 보안 모듈)의 전반적인 보안에 매우 중요합니다. 모든 액세스 및 작업에 대한 투명하고 변경할 수 없는 레코드를 제공하여 책임과 추적 가능성을 보장합니다.
작업 로그는 사용자 활동, 키 관리 작업 및 시스템 이벤트와 같은 세부 정보를 캡처하여 무단 액세스를 감지하고 보안 인시던트 조사 및 규정 요구 사항을 준수하는 데 도움이 됩니다. 또한 잠재적인 위반 또는 잘못된 구성을 나타낼 수 있는 변칙을 식별하는 데 중요한 역할을 합니다. 이러한 방식으로 암호화 작업의 무결성과 기밀성을 유지하는 조직의 기능을 강화합니다.
이 자습서에서는 다음을 수행합니다.
- 스토리지 계정 및 Log Analytics 작업 영역 만들기를 포함하여 작업 이벤트 로그를 설정하고 구성합니다.
- 작업 이벤트 로그를 쿼리하여 특정 HSM 작업 이벤트를 검색합니다.
- HSM 작업 이벤트의 포괄적인 목록을 가져옵니다.
중요합니다
보안 및 개인 정보를 유지하기 위해 로깅은 키 ID, 키 이름 및 키, 사용자 또는 세션과 관련된 기타 식별 가능한 정보와 같은 중요한 세부 정보를 제외합니다. 로그는 수행된 HSM 작업, 작업 시간 및 관련 HSM 메타데이터를 캡처합니다.
Azure Cloud HSM 작업 이벤트 로깅은 HSM 작업의 성공 또는 실패 여부를 확인할 수 없습니다. 작업이 실행되었다는 사실만 기록할 수 있습니다.
사전 요구 사항
- 활성 구독이 있는 Azure 계정입니다. 무료로 계정을 만들 수 있습니다.
- 배포, 초기화 및 구성한 Azure Cloud HSM 리소스입니다. 자세한 내용은 Azure Cloud HSM 온보딩 가이드 참조하세요.
작업 이벤트 로그 설정 및 구성
다음 섹션의 명령을 사용하여 모니터링할 리소스를 설정합니다.
HSM 로그를 저장할 스토리지 계정 만들기
HSM 로그를 저장하기 위한 스토리지 계정을 만들려면 먼저 리소스 그룹을 만들어야 합니다. 또한 해당 리소스 그룹 내에서 스토리지 계정을 만들어야 합니다.
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
Log Analytics 작업 영역 만들기
HSM 로그를 저장하고 분석하기 위한 Log Analytics 작업 영역을 만들려면 다음 명령을 사용합니다.
az monitor log-analytics workspace create \
--resource-group "<resource-group>" \
--workspace-name "<workspace-name>"
Azure Monitor Log Analytics 작업 영역을 만드는 방법에 대한 자세한 내용은 Log Analytics 작업 영역 만들기 참조하세요.
진단 설정 사용
Azure Cloud HSM 작업 이벤트 로깅에 대한 진단 설정을 사용하도록 설정하려면 다음 코드를 사용합니다. 자리 표시자를 사용자 환경에 적합한 값으로 바꿉 있습니다.
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 \
--logs '[{"category":"HsmServiceOperations","enabled":true}]'
클라우드 HSM 로깅 구성 확인
진단 설정을 만든 후 로그가 1~2분 안에 흐르기 시작합니다.
Log Analytics 작업 영역을 통해 Azure 포털에서 Cloud HSM 작업 이벤트 로그를 쿼리할 수 있습니다.
Azure CLI 또는 Azure PowerShell 사용하여 Cloud HSM 작업 이벤트 로그를 쿼리할 수도 있습니다.
workspaceId=$(az monitor log-analytics workspace show \
--resource-group "<resource-group>" \
--workspace-name "<workspace-name>" \
--query customerId --output tsv)
az monitor log-analytics query \
--workspace $workspaceId \
--analytics-query "CloudHsmServiceOperationAuditLogs | take 10"
등록 오류
"<subscription> microsoft.insights를 사용하도록 등록되지 않았습니다."라는 오류 메시지가 표시되면 Azure 구독이 Microsoft.Insights 리소스 공급자를 사용하도록 등록되지 않습니다. 이 문제를 해결하려면 구독에서 Microsoft.Insights 공급자에 등록해야 합니다.
az provider register --namespace Microsoft.Insights
az provider show --namespace Microsoft.Insights --query "registrationState" --output table
명령을 실행한 후 리소스 공급자가 등록되어 있는지 확인합니다. 여전히 등록 중인 경우 잠시 기다렸다가 다시 확인해야 할 수 있습니다.
쿼리 작업 이벤트 로그
다음 명령을 사용하여 작업 로그에 기록된 특정 HSM 작업 이벤트를 검색할 수 있습니다. 모든 작업 이벤트를 나열하려면 실행 CloudHsmServiceOperationAuditLogs하기만 하면됩니다.
쿼리할 수 있는 다른 작업에 대한 자세한 내용은 이 문서의 뒷부분에 있는 기록된 작업의 포괄적인 목록을 참조하세요.
로그인 및 세션 이벤트
// Find login and session events
CloudHsmServiceOperationAuditLogs
| where OperationName in ("CN_LOGIN", "CN_AUTHORIZE_SESSION")
| project OperationName, MemberId, CallerIpAddress, TimeGenerated
사용자를 만들고 삭제하기 위한 이벤트
// Find user creation and deletion events
CloudHsmServiceOperationAuditLogs
| where OperationName in ("CN_CREATE_USER", "CN_DELETE_USER")
| project OperationName, MemberId, CallerIpAddress, TimeGenerated
키 만들기를 위한 이벤트
// Find key creation events
CloudHsmServiceOperationAuditLogs
| where OperationName in ("CN_GENERATE_KEY", "CN_GENERATE_KEY_PAIR")
| project OperationName, MemberId, CallerIpAddress, TimeGenerated
키 삭제에 대한 이벤트
// Find key deletion events
CloudHsmServiceOperationAuditLogs
| where OperationName == "CN_TOMBSTONE_OBJECT"
| project OperationName, MemberId, CallerIpAddress, TimeGenerated
작업 용어집
다음 이름은 HSM 작업 이벤트와 관련이 있습니다.
azcloudhsm_util
| 작전명 | 명령 이름 | 설명 |
|---|---|---|
CN_LOGIN |
loginHSM |
HSM에 로그인합니다. |
CN_LOGOUT |
logoutHSM |
HSM에서 로그아웃합니다. |
CN_GENERATE_KEY |
genSymKey |
대칭 키를 생성합니다. |
CN_GENERATE_KEY_PAIR |
genRSAKeyPair |
RSA 키 쌍을 생성합니다. |
CN_GENERATE_KEY_PAIR |
genECCKeyPair |
ECC 키 쌍을 생성합니다. |
CN_SHARE_OBJECT |
shareKey |
기존 키를 다른 사용자와 공유/공유 해제합니다. |
CN_TOMBSTONE_OBJECT |
deleteKey |
키를 삭제합니다. |
CN_FIND_OBJECTS_FROM_INDEX |
findSingleKey |
단일 키를 찾습니다. |
CN_FIND_OBJECTS_USING_COUNT |
findKey |
키를 찾습니다. |
CN_GET_OBJECT_INFO |
getKeyInfo |
공유 사용자/세션에 대한 주요 정보를 가져옵니다. |
HASH_SINGLE_CALL |
sign |
서명(ME_PKCS_PKCS1v15_CRT_ENCRYPT)을 생성합니다. |
HASH_SINGLE_CALL |
verify |
서명(ME_PKCS_PKCS1v15_DECRYPT)을 확인합니다. |
CN_LIST_TOKENS |
listTokens |
현재 파티션의 모든 토큰을 나열합니다. |
CN_GET_TOKEN |
getToken |
토큰을 가져옵니다. |
CN_CREATE_USER |
createUser |
사용자를 만듭니다. |
CN_DELETE_USER |
deleteUser |
사용자를 삭제합니다. |
CN_LIST_USERS |
listUsers |
사용자를 나열합니다. |
CN_CHANGE_PSWD |
changePswd |
암호를 변경합니다. |
CN_MODIFY_OBJECT |
setAttribute |
개체의 특성을 설정합니다. |
CN_GET_ATTRIBUTE_VALUECN_GET_ALL_ATTRIBUTE_VALUECN_GET_ATTRIBUTE_SIZECN_GET_ALL_ATTRIBUTE_SIZE |
getAttribute |
개체의 특성을 가져옵니다. |
CN_TOKEN_INFO |
getHSMInfo |
HSM 정보를 가져옵니다. |
CN_PARTITION_INFO |
getPartitionInfo |
파티션 정보를 가져옵니다. |
| --- | getClusterInfo |
기록되지 않았습니다. |
| --- | server |
기록되지 않았습니다. |
azcloudhsm_mgmt
| 작전명 | 명령 이름 | 설명 |
|---|---|---|
CN_LOGIN |
loginHSM |
HSM에 로그인합니다. |
CN_LOGOUT |
logoutHSM |
HSM에서 로그아웃합니다. |
CN_GENERATE_KEY |
genSymKey |
대칭 키를 생성합니다. |
CN_GENERATE_KEY_PAIR |
genRSAKeyPair |
RSA 키 쌍을 생성합니다. |
CN_GENERATE_KEY_PAIR |
genECCKeyPair |
ECC 키 쌍을 생성합니다. |
CN_SHARE_OBJECT |
shareKey |
기존 키를 다른 사용자와 공유/공유 해제합니다. |
CN_TOMBSTONE_OBJECT |
deleteKey |
키를 삭제합니다. |
CN_FIND_OBJECTS_FROM_INDEX |
findSingleKey |
단일 키를 찾습니다. |
CN_FIND_OBJECTS_USING_COUNT |
findKey |
키를 찾습니다. |
CN_GET_OBJECT_INFO |
getKeyInfo |
공유 사용자/세션에 대한 주요 정보를 가져옵니다. |
HASH_SINGLE_CALL |
sign |
서명(ME_PKCS_PKCS1v15_CRT_ENCRYPT)을 생성합니다. |
HASH_SINGLE_CALL |
verify |
서명(ME_PKCS_PKCS1v15_DECRYPT)을 확인합니다. |
CN_LIST_TOKENS |
listTokens |
현재 파티션의 모든 토큰을 나열합니다. |
CN_GET_TOKEN |
getToken |
토큰을 가져옵니다. |
CN_CREATE_USER |
createUser |
사용자를 만듭니다. |
CN_DELETE_USER |
deleteUser |
사용자를 삭제합니다. |
CN_LIST_USERS |
listUsers |
사용자를 나열합니다. |
CN_CHANGE_PSWD |
changePswd |
암호를 변경합니다. |
CN_MODIFY_OBJECT |
setAttribute |
개체의 특성을 설정합니다. |
CN_GET_ATTRIBUTE_VALUECN_GET_ALL_ATTRIBUTE_VALUECN_GET_ATTRIBUTE_SIZECN_GET_ALL_ATTRIBUTE_SIZE |
getAttribute |
개체의 특성을 가져옵니다. |
CN_TOKEN_INFO |
getHSMInfo |
HSM 정보를 가져옵니다. |
CN_PARTITION_INFO |
getPartitionInfo |
파티션 정보를 가져옵니다. |
| --- | getClusterInfo |
기록되지 않았습니다. |
| --- | server |
기록되지 않았습니다. |
백업 및 복원
| 작전명 | 명령 이름 | 설명 |
|---|---|---|
/backup |
||
/restore |