Azure Cloud HSM에 대한 작업 이벤트 로깅을 구성한 경우 클라우드 HSM 클러스터에서 HsmServiceOperations 로그를 Storage 및 Log Analytics 라우팅하는 작업 진단 설정이 이미 있습니다. Event Hubs를 대상으로 추가하려면 동일한 진단 설정에 세 번째 대상을 추가하거나 Event Hubs를 대상으로 하는 새 대상을 만듭니다.
Azure Monitor 진단 설정은 동시에 여러 대상을 지원합니다. Log Analytics 파이프라인은 이미 Cloud HSM의 로그 배출이 작동하고 있음을 증명하므로 Event Hubs는 동일한 HsmServiceOperations 범주를 수신하는 다른 대상이 됩니다.
이 자습서에서는 다음을 수행합니다.
- 클라우드 HSM 로그에 대한 Event Hub 네임스페이스 및 이벤트 허브를 만듭니다.
- 최소 권한 권한으로 권한 부여 규칙을 구성합니다.
- Event Hubs로 로그를 스트리밍하도록 진단 설정을 업데이트합니다.
- Event Hubs가 클라우드 HSM 작업 이벤트를 수신했는지 확인합니다.
사전 요구 사항
- 배포되고 활성화된 Azure Cloud HSM 리소스입니다. 자세한 내용은 Azure Cloud HSM 온보딩 가이드 참조하세요.
- 스토리지와 로그 분석에 작업 이벤트 로그를 내보내는 진단 설정입니다. 자세한 내용은 Azure Cloud HSM 대한
구성 및 쿼리 작업 이벤트 로깅을 참조하세요. - Cloud HSM 리소스 그룹에서
Contributor또는Monitoring Contributor역할
로그 리소스 그룹이 있는지 확인
Event Hubs는 작업 이벤트 로깅을 위해 스토리지 계정 및 Log Analytics 작업 영역을 포함하는 동일한 리소스 그룹에 배포해야 합니다. 운영 이벤트 로깅을 설정하지 않은 경우 먼저 Azure Cloud HSM 대한
대상 리소스 그룹이 있는지 확인합니다.
az group show --name "<resource-group>" --query "{name:name, location:location}" --output table
Event Hubs 네임스페이스 만들기
네임스페이스는 하나 이상의 이벤트 허브를 보유하는 컨테이너입니다. 진단 설정 통합에 필요한 표준 계층을 사용합니다.
az eventhubs namespace create \
--name "<eventhub-namespace>" \
--resource-group "<resource-group>" \
--location "<location>" \
--sku Standard \
--capacity 1 \
--enable-auto-inflate false
키 옵션:
- 표준 SKU: 기본 계층은 진단 설정을 대상으로 지원하지 않습니다.
- 용량 1: 하나의 처리량 단위(1-MB/s 수신, 2-MB/s 송신)는 HSM 감사 로그에 충분합니다.
- 자동 인플레이트 사용 안 함: HSM 로그 볼륨이 낮으므로 autoinflate가 필요하지 않습니다.
네임스페이스 내에 이벤트 허브 만들기
클라우드 HSM 로그를 받으려면 네임스페이스 내에 이벤트 허브를 만듭니다.
az eventhubs eventhub create \
--name "cloudhsm-logs" \
--namespace-name "<eventhub-namespace>" \
--resource-group "<resource-group>" \
--partition-count 2 \
--retention-time-in-hours 168 \
--cleanup-policy Delete
키 옵션:
- 파티션 수 2: 두 파티션은 HSM 감사 로그 처리량에 충분합니다.
- 보존 시간 168시간: 7일 동안 메시지를 유지합니다(표준 계층의 최대값).
- 정리 정책 삭제: 보존 기간이 만료된 후 메시지를 삭제합니다.
소비자 그룹 만들기
다운스트림 처리를 위한 전용 소비자 그룹을 만듭니다. 다른 용도로 기본 $Default 그룹을 예약합니다.
az eventhubs eventhub consumer-group create \
--name "azure-cloud-hsm" \
--namespace-name "<eventhub-namespace>" \
--eventhub-name "cloudhsm-logs" \
--resource-group "<resource-group>"
권한 부여 규칙 만들기
진단 설정에는 이벤트 허브에 로그를 푸시할 수 있는 보내기 권한이 필요합니다. 필요한 권한만 사용하여 공유 액세스 정책을 만듭니다.
az eventhubs namespace authorization-rule create \
--name "DiagnosticSettingsSendRule" \
--namespace-name "<eventhub-namespace>" \
--resource-group "<resource-group>" \
--rights Send
메모
이 규칙은 Send 권한만 부여하며, Listen 또는 Manage 권한은 부여하지 않습니다. 최소 권한 원칙을 따릅니다. 다운스트림 소비자(예: Azure Functions 또는 Stream Analytics)는 Listen 권한이 있는 별도의 규칙을 사용해야 합니다.
권한 부여 규칙 리소스 ID 가져오기
진단 설정에서 사용할 권한 부여 규칙 리소스 ID를 검색합니다.
authRuleId=$(az eventhubs namespace authorization-rule show \
--name "DiagnosticSettingsSendRule" \
--namespace-name "<eventhub-namespace>" \
--resource-group "<resource-group>" \
--query id --output tsv)
echo "Auth Rule ID: $authRuleId"
다음 단계에서 사용하기 위해 이 값을 저장합니다.
Event Hubs를 추가하도록 진단 설정 업데이트
Event Hubs를 대상지로 추가할 수 있는 두 가지 옵션이 있습니다.
옵션 A: 기존 진단 설정 업데이트(권장)
이 방법은 스토리지 및 Log Analytics 유지하면서 Event Hubs를 추가하도록 기존 진단 설정을 업데이트합니다.
# Set your resource group variables
hsmResourceGroup="<resource-group>"
logsResourceGroup="<resource-group>"
# Find the HSM cluster name (auto-generated during deployment)
hsmClusterName=$(az resource list \
--resource-group $hsmResourceGroup \
--resource-type Microsoft.HardwareSecurityModules/cloudHsmClusters \
--query "[0].name" --output tsv)
echo "HSM Cluster: $hsmClusterName"
# Get the HSM cluster resource ID
hsmResourceId=$(az resource show \
--resource-group $hsmResourceGroup \
--resource-type Microsoft.HardwareSecurityModules/cloudHsmClusters \
--name $hsmClusterName \
--query id --output tsv)
# Get your existing storage account ID
storageAccountId=$(az storage account list \
--resource-group $logsResourceGroup \
--query "[0].id" --output tsv)
# Get your existing Log Analytics workspace ID
workspaceId=$(az monitor log-analytics workspace list \
--resource-group $logsResourceGroup \
--query "[0].id" --output tsv)
# Get the Event Hub auth rule ID
authRuleId=$(az eventhubs namespace authorization-rule show \
--name "DiagnosticSettingsSendRule" \
--namespace-name "<eventhub-namespace>" \
--resource-group $logsResourceGroup \
--query id --output tsv)
# Update the diagnostic setting with all three destinations
az monitor diagnostic-settings create \
--name "<diagnostic-setting-name>" \
--resource $hsmResourceId \
--storage-account $storageAccountId \
--workspace $workspaceId \
--event-hub "cloudhsm-logs" \
--event-hub-rule $authRuleId \
--logs '[{"category":"HsmServiceOperations","enabled":true}]'
중요합니다
이름이 기존 이름과 일치하는 경우 CLI 및 PowerShell 명령 모두 전체 진단 설정을 바꿉니다. 스토리지 계정 및 작업 영역을 다시 포함해야 합니다. 그렇지 않으면 해당 대상이 제거됩니다.
옵션 B: Event Hubs에 대해서만 별도의 진단 설정 만들기
기존 설정을 변경하지 않고 두 번째 설정을 추가하려는 경우
# Find the HSM cluster name
hsmClusterName=$(az resource list \
--resource-group "<resource-group>" \
--resource-type Microsoft.HardwareSecurityModules/cloudHsmClusters \
--query "[0].name" --output tsv)
hsmResourceId=$(az resource show \
--resource-group "<resource-group>" \
--resource-type Microsoft.HardwareSecurityModules/cloudHsmClusters \
--name $hsmClusterName \
--query id --output tsv)
authRuleId=$(az eventhubs namespace authorization-rule show \
--name "DiagnosticSettingsSendRule" \
--namespace-name "<eventhub-namespace>" \
--resource-group "<resource-group>" \
--query id --output tsv)
az monitor diagnostic-settings create \
--name "chsm-eventhub-diagnostic-setting" \
--resource $hsmResourceId \
--event-hub "cloudhsm-logs" \
--event-hub-rule $authRuleId \
--logs '[{"category":"HsmServiceOperations","enabled":true}]'
메모
Azure 리소스당 최대 5개의 진단 설정을 지원합니다. 두 번째 설정은 유효하며 문제를 구분하여 유지합니다.
Event Hubs가 메시지를 수신하고 있는지 확인
진단 설정을 구성한 후 Event Hubs가 클라우드 HSM 로그를 수신하고 있는지 확인합니다.
포털에서 진단 설정 확인
- Azure 포털에서 클라우드 HSM 클러스터로 이동합니다.
- 모니터링에서 진단 설정을 선택합니다.
- Event Hubs가 대상으로 나열되어 있는지 확인합니다.
Event Hubs 메트릭 확인
다음 명령을 실행하여 지난 1시간 동안 들어오는 메시지를 확인합니다.
# Get your subscription ID
subId=$(az account show --query id --output tsv)
# Check incoming messages (last 1 hour)
az monitor metrics list \
--resource "/subscriptions/$subId/resourceGroups/<resource-group>/providers/Microsoft.EventHub/namespaces/<eventhub-namespace>" \
--metric "SuccessfulRequests" \
--interval PT1H \
--output table
메시지 보기(선택 사항)
콘텐츠를 확인하기 위해 몇 가지 메시지를 읽으려면 수신 대기 규칙을 만듭니다.
# Create a Listen rule for your consumer
az eventhubs namespace authorization-rule create \
--name "ConsumerListenRule" \
--namespace-name "<eventhub-namespace>" \
--resource-group "<resource-group>" \
--rights Listen
# Get the connection string
az eventhubs namespace authorization-rule keys list \
--name "ConsumerListenRule" \
--namespace-name "<eventhub-namespace>" \
--resource-group "<resource-group>" \
--query primaryConnectionString --output tsv
이 연결 문자열을 Azure Event Hubs 탐색기, Visual Studio Code의 Event Hubs 확장 또는 Python 스크립트와 함께 사용하여 메시지를 볼 수 있습니다.