Azure Cloud HSM の操作イベント ログを構成した場合は、HsmServiceOperations ログをストレージとLog Analyticsにルーティングする、Cloud HSM クラスターで動作する診断設定が既にあります。 Event Hubs を宛先として追加するには、同じ診断設定に 3 番目の宛先を追加するか、Event Hubs を対象とする新しいターゲットを作成します。
Azure Monitor診断設定では、複数の宛先が同時にサポートされます。 Log Analytics パイプラインは既に Cloud HSM からのログの出力が機能していることを証明しているため、Event Hubs は同じ HsmServiceOperations カテゴリを受け取る別の宛先になります。
このチュートリアルでは、次の操作を行います。
- Cloud HSM ログ用のイベント ハブ名前空間とイベント ハブを作成します。
- 最小特権のアクセス許可を使用して承認規則を構成します。
- 診断設定を更新して、ログを Event Hubs にストリーミングします。
- Event Hubs が Cloud HSM 操作イベントを受信することを確認します。
前提条件
- デプロイおよびアクティブ化された Azure Cloud HSM リソース。 詳細については、Azure Cloud HSM オンボード ガイドを参照してください。
- Storage とLog Analyticsに操作イベント ログを出力する診断設定。 詳細については、「 Azure Cloud HSM の構成とクエリ操作イベントのログ記録を参照してください。
- Cloud HSM リソース グループにおける
ContributorまたはMonitoring Contributorのロール。
リソース グループが存在するログの確認
Event Hubs は、運用イベント ログ記録のために、ストレージ アカウントとLog Analytics ワークスペースを含む同じリソース グループにデプロイする必要があります。 運用イベント ログを設定していない場合は、まず、 Cloud HSM の Azure構成とクエリ操作のイベント ログ記録のガイダンスに従います。
対象のリソース グループが存在することを確認します。
az group show --name "<resource-group>" --query "{name:name, location:location}" --output table
Event Hubs 名前空間を作成する
名前空間は、1 つ以上のイベント ハブを保持するコンテナーです。 診断設定の統合に必要な Standard レベルを使用します。
az eventhubs namespace create \
--name "<eventhub-namespace>" \
--resource-group "<resource-group>" \
--location "<location>" \
--sku Standard \
--capacity 1 \
--enable-auto-inflate false
主なオプション:
- Standard SKU: Basic レベルでは、送信先としての診断設定はサポートされていません。
- 容量 1: HSM 監査ログには、1 つのスループット ユニット (1 MB/秒のイングレス、2 MB/秒のエグレス) で十分です。
- 自動拡張が無効: HSM ログ ボリュームが少ないため、自動拡張は必要ありません。
名前空間内にイベント ハブを作成する
Cloud 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 監査ログのスループットには、2 つのパーティションで十分です。
- 保持時間 168 時間: メッセージを 7 日間保持します (Standard レベルの場合は最大)。
- クリーンアップ ポリシーの削除: 保持期間が経過した後にメッセージを削除します。
コンシューマー グループを作成する
ダウンストリーム処理用の専用コンシューマー グループを作成します。 既定の $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 を宛先として追加するには、次の 2 つのオプションがあります。
オプション 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}]'
Important
名前が既存の名前と一致する場合は、CLI と PowerShell の両方のコマンドによって診断設定全体が置き換えられます。 ストレージ アカウントとワークスペースをもう一度含める必要があります。または、それらの宛先が削除されます。
オプション B: Event Hubs 専用の個別の診断設定を作成する
既存の設定を変更せずに 2 つ目の設定を追加する場合は、
# 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 つの診断設定がサポートされます。 2 つ目の設定は有効であり、懸念事項は分離された状態を維持します。
Event Hubs がメッセージを受信することを確認する
診断設定を構成したら、Event Hubs が Cloud HSM ログを受信していることを確認します。
ポータルで診断設定を確認する
- Azure ポータルで、Cloud 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 Explorer、Visual Studio Code Event Hubs 拡張機能、またはPython スクリプトを使用してメッセージを表示できます。