Azure AD ログインログを収集する
このドキュメントでは、Azure Storage アカウントを使用して Azure AD サインインログを Google Security Operations にエクスポートする方法について説明します。パーサーは、JSON 形式の未加工ログを取得し、Unified Data Model(UDM)に準拠した構造化形式に変換します。関連するフィールドを抽出し、値を正規化し、さまざまなタイムスタンプを処理して、ユーザー情報、IP アドレス、条件付きアクセス ポリシーなどのセキュリティ関連のコンテキストでデータを拡充します。
始める前に
次の前提条件を満たしていることを確認します。
- Google SecOps インスタンス
- アクティブな Azure テナント
- Azure への特権アクセス
Azure Storage アカウントを構成する
- Azure コンソールで、[ストレージ アカウント] を検索します。
- [+ 作成] をクリックします。
- 次の入力パラメータの値を指定します。
- Subscription: サブスクリプションを選択します。
- リソース グループ: リソース グループを選択します。
- Region: リージョンを選択します。
- パフォーマンス: パフォーマンスを選択します(標準が推奨)。
- 冗長性: 冗長性(GRS または LRS を推奨)を選択します。
- ストレージ アカウント名: 新しいストレージ アカウントの名前を入力します。
- [Review + create] をクリックします。
- アカウントの概要を確認して、[作成] をクリックします。
- [ストレージ アカウントの概要] ページで、[セキュリティとネットワーキング] の [アクセスキー] サブメニューを選択します。
- [key1] または [key2] の横にある [Show] をクリックします。
- [クリップボードにコピー] をクリックして、キーをコピーします。
- キーは後で使用できるように安全な場所に保存します。
- [ストレージ アカウントの概要] ページで、[設定] の [エンドポイント] サブメニューを選択します。
- [クリップボードにコピー] をクリックして、Blob サービス エンドポイント URL(例:
https://<storageaccountname>.blob.core.windows.net
)をコピーします。 - エンドポイント URL は、後で使用できるように安全な場所に保存します。
Azure AD サインイン ログのログ エクスポートを構成する方法
- 特権アカウントを使用して Azure Portal にログインします。
- [Microsoft Entra ID] > [Monitoring] > [Diagnostic settings] に移動します。
- [診断設定を追加] をクリックします。
- 診断設定のわかりやすい名前を入力します。
- [ログインログ] を選択します。
- 移行先として [ストレージ アカウントにアーカイブする] チェックボックスをオンにします。
- サブスクリプションとストレージ アカウントを指定します。
フィードを設定する
Google SecOps プラットフォームでフィードを設定するには、次の 2 つのエントリ ポイントがあります。
- [SIEM 設定] > [フィード]
- [Content Hub] > [Content Packs]
[SIEM 設定] > [フィード] でフィードを設定する
このプロダクト ファミリー内で異なるログタイプに対して複数のフィードを構成するには、プロダクトごとにフィードを構成するをご覧ください。
1 つのフィードを設定する手順は次のとおりです。
- [SIEM 設定] > [フィード] に移動します。
- [Add New Feed] をクリックします。
- 次のページで、[単一フィードを設定] をクリックします。
- [フィード名] フィールドに、フィードの名前を入力します(例: Azure Sign-In Logs)。
- [ソースタイプ] で [Microsoft Azure Blob Storage] を選択します。
- [ログタイプ] として [Azure Sign-In] を選択します。
- [次へ] をクリックします。
次の入力パラメータの値を指定します。
- Azure URI: BLOB エンドポイント URL。
ENDPOINT_URL/BLOB_NAME
- 次のように置き換えます。
ENDPOINT_URL
: BLOB エンドポイント URL(https://<storageaccountname>.blob.core.windows.net
)BLOB_NAME
: blob の名前(insights-logs-<logname>
など)
- 次のように置き換えます。
- URI is a: ログストリームの構成([単一ファイル] | [ディレクトリ] | [サブディレクトリを含むディレクトリ])に応じて URI タイプを選択します。
Source deletion options: 取り込みの設定に応じて削除オプションを選択します。
共有キー: Azure Blob Storage のアクセスキー。
アセットの名前空間: アセットの名前空間。
Ingestion labels: このフィードのイベントに適用されるラベル。
- Azure URI: BLOB エンドポイント URL。
[次へ] をクリックします。
[Finalize] 画面で新しいフィードの設定を確認し、[送信] をクリックします。
コンテンツ ハブからフィードを設定する
次のフィールドに値を指定します。
- Azure URI: BLOB エンドポイント URL。
ENDPOINT_URL/BLOB_NAME
- 次のように置き換えます。
ENDPOINT_URL
: BLOB エンドポイント URL(https://<storageaccountname>.blob.core.windows.net
)BLOB_NAME
: blob の名前(insights-logs-<logname>
など)
- 次のように置き換えます。
- URI is a: ログストリームの構成([単一ファイル] | [ディレクトリ] | [サブディレクトリを含むディレクトリ])に応じて URI タイプを選択します。
- Source deletion options: 取り込みの設定に応じて削除オプションを選択します。
- 共有キー: Azure Blob Storage のアクセスキー。
詳細オプション
- フィード名: フィードを識別する事前入力された値。
- ソースタイプ: Google SecOps にログを収集するために使用される方法。
- Asset Namespace: フィードに関連付けられた名前空間。
- Ingestion Labels: このフィードのすべてのイベントに適用されるラベル。
UDM マッピング テーブル
ログフィールド | UDM マッピング | ロジック |
---|---|---|
AppDisplayName | read_only_udm.target.application | 未加工ログの AppDisplayName フィールドから直接マッピングされます。 |
AppId | read_only_udm.security_result.detection_fields.value | 未加工ログの AppId フィールドから直接マッピングされます。キーは appId に設定されます。 |
カテゴリ | read_only_udm.security_result.category_details | 未加工ログの Category フィールドから直接マッピングされます。 |
ConditionalAccessPolicies[].displayName | read_only_udm.security_result.rule_name | 未加工ログの ConditionalAccessPolicies 配列内の displayName フィールドから直接マッピングされます。 |
ConditionalAccessPolicies[].enforcedGrantControls[] | read_only_udm.security_result.rule_labels.value | 未加工ログの ConditionalAccessPolicies 配列内の enforcedGrantControls 配列から直接マッピングされます。キーは applied_conditional_access_policies_enforced_grant_controls に設定されます。 |
ConditionalAccessPolicies[].enforcedSessionControls[] | read_only_udm.security_result.rule_labels.value | 未加工ログの ConditionalAccessPolicies 配列内の enforcedSessionControls 配列から直接マッピングされます。キーは applied_conditional_access_policies_enforced_session_controls に設定されます。 |
ConditionalAccessPolicies[].id | read_only_udm.security_result.rule_id | 未加工ログの ConditionalAccessPolicies 配列内の id フィールドから直接マッピングされます。 |
ConditionalAccessPolicies[].Result | read_only_udm.security_result.rule_labels.value | 未加工ログの ConditionalAccessPolicies 配列内の Result フィールドから直接マッピングされます。キーは applied_conditional_access_policies_result に設定されます。 |
ConditionalAccessStatus | read_only_udm.additional.fields.value.string_value | 未加工ログの ConditionalAccessStatus フィールドから直接マッピングされます。キーは conditionalAccessStatus に設定されます。 |
CorrelationId | read_only_udm.security_result.detection_fields.value | 未加工ログの CorrelationId フィールドから直接マッピングされます。キーは correlationId に設定されます。 |
DurationMs | read_only_udm.additional.fields.value.string_value | 未加工ログの DurationMs フィールドから直接マッピングされます。キーは durationMs に設定されます。 |
HomeTenantId | read_only_udm.security_result.detection_fields.value | 未加工ログの HomeTenantId フィールドから直接マッピングされます。キーは HomeTenantId に設定されます。 |
IPAddress | read_only_udm.principal.asset.ip、read_only_udm.principal.ip | 未加工ログの IPAddress フィールドから直接マッピングされます。 |
ID | read_only_udm.security_result.detection_fields.value | 未加工ログの Id フィールドから直接マッピングされます。キーは id に設定されます。 |
ID | read_only_udm.target.resource.attribute.labels.value | 未加工ログの Identity フィールドから直接マッピングされます。キーは identity に設定されます。 |
レベル | read_only_udm.security_result.severity、read_only_udm.security_result.severity_details | 未加工ログの Level フィールドから直接マッピングされます。重大度は Level の値に基づいて決定されます。Information 、Informational 、0 、4 は INFORMATIONAL に、Warning 、1 、3 は MEDIUM に、Error 、2 は ERROR に、Critical は CRITICAL にマッピングされます。 |
OperationName | read_only_udm.metadata.product_event_type | 未加工ログの OperationName フィールドから直接マッピングされます。 |
ResourceGroup | read_only_udm.security_result.detection_fields.value | 未加工ログの ResourceGroup フィールドから直接マッピングされます。キーは ResourceGroup に設定されます。 |
ResultSignature | read_only_udm.additional.fields.value.string_value | 未加工ログの ResultSignature フィールドから直接マッピングされます。キーは resultSignature に設定されます。 |
ResultType | read_only_udm.additional.fields.value.string_value | 未加工ログの ResultType フィールドから直接マッピングされます。キーは resultType に設定されます。 |
TenantId | read_only_udm.metadata.product_deployment_id | 未加工ログの TenantId フィールドから直接マッピングされます。 |
TimeGenerated | read_only_udm.metadata.event_timestamp.seconds、read_only_udm.metadata.event_timestamp.nanos | 未加工ログの TimeGenerated フィールドから直接マッピングされます。このフィールドはタイムスタンプとして解析され、seconds フィールドと nanos フィールドへの入力に使用されます。 |
TokenIssuerType | read_only_udm.security_result.detection_fields.value | 未加工ログの TokenIssuerType フィールドから直接マッピングされます。キーは TokenIssuerType に設定されます。 |
UniqueTokenIdentifier | read_only_udm.security_result.detection_fields.value | 未加工ログの UniqueTokenIdentifier フィールドから直接マッピングされます。キーは UniqueTokenIdentifier に設定されます。 |
UserAgent | read_only_udm.network.http.user_agent、read_only_udm.network.http.parsed_user_agent | 未加工ログの UserAgent フィールドから直接マッピングされます。このフィールドはユーザー エージェント文字列として解析され、parsed_user_agent オブジェクトの入力に使用されます。 |
UserDisplayName | read_only_udm.target.user.user_display_name | 未加工ログの UserDisplayName フィールドから直接マッピングされます。 |
UserId | read_only_udm.target.user.userid | 未加工ログの UserId フィールドから直接マッピングされます。 |
UserPrincipalName | read_only_udm.target.user.email_addresses | 未加工ログの UserPrincipalName フィールドから直接マッピングされますが、メールアドレスのパターンと一致する場合に限ります。 |
UserType | read_only_udm.target.user.attribute.roles.name | 未加工ログの UserType フィールドから直接マッピングされます。 |
_Internal_WorkspaceResourceId | read_only_udm.security_result.detection_fields.value | 未加工ログの _Internal_WorkspaceResourceId フィールドから直接マッピングされます。キーは Internal_WorkspaceResourceId に設定されます。 |
_ItemId | read_only_udm.security_result.detection_fields.value | 未加工ログの _ItemId フィールドから直接マッピングされます。キーは ItemId に設定されます。 |
properties.appId | read_only_udm.security_result.detection_fields.value | 未加工ログの properties オブジェクト内の appId フィールドから直接マッピングされます。キーは appId に設定されます。 |
properties.authenticationDetails[].authenticationMethod | read_only_udm.security_result.detection_fields.value | 未加工ログの authenticationDetails 配列内の authenticationMethod フィールドから直接マッピングされます。キーは authenticationMethod に設定されます。 |
properties.authenticationDetails[].authenticationMethodDetail | read_only_udm.security_result.detection_fields.value | 未加工ログの authenticationDetails 配列内の authenticationMethodDetail フィールドから直接マッピングされます。キーは authenticationMethodDetail に設定されます。 |
properties.authenticationDetails[].authenticationStepDateTime | read_only_udm.security_result.detection_fields.value | 未加工ログの authenticationDetails 配列内の authenticationStepDateTime フィールドから直接マッピングされます。キーは authenticationStepDateTime に設定されます。 |
properties.authenticationDetails[].authenticationStepRequirement | read_only_udm.security_result.detection_fields.value | 未加工ログの authenticationDetails 配列内の authenticationStepRequirement フィールドから直接マッピングされます。キーは authenticationStepRequirement に設定されます。 |
properties.authenticationDetails[].authenticationStepResultDetail | read_only_udm.security_result.detection_fields.value | 未加工ログの authenticationDetails 配列内の authenticationStepResultDetail フィールドから直接マッピングされます。キーは authenticationStepResultDetail に設定されます。 |
properties.authenticationDetails[].succeeded | read_only_udm.security_result.action、read_only_udm.security_result.action_details | 未加工ログの authenticationDetails 配列内の succeeded フィールドから直接マッピングされます。値が true の場合、アクションは ALLOW に設定されます。それ以外の場合は BLOCK に設定されます。 |
properties.conditionalAccessStatus | read_only_udm.additional.fields.value.string_value | 未加工ログの properties オブジェクト内の conditionalAccessStatus フィールドから直接マッピングされます。キーは conditionalAccessStatus に設定されます。 |
properties.id | read_only_udm.security_result.detection_fields.value | 未加工ログの properties オブジェクト内の id フィールドから直接マッピングされます。キーは id に設定されます。 |
properties.status.errorCode | read_only_udm.security_result.action | 値が 0 の場合、アクションは ALLOW に設定されます。それ以外の場合は、BLOCK に設定されます。 |
properties.userId | read_only_udm.target.user.userid | 未加工ログの properties オブジェクト内の userId フィールドから直接マッピングされます。 |
properties.userPrincipalName | read_only_udm.target.user.email_addresses | 未加工ログの properties オブジェクト内の userPrincipalName フィールドから直接マッピングされますが、メールアドレスのパターンと一致する場合に限ります。 |
resourceId | read_only_udm.target.resource.name | 未加工ログの resourceId フィールドから直接マッピングされます。 |
時間 | read_only_udm.metadata.event_timestamp.seconds、read_only_udm.metadata.event_timestamp.nanos | 未加工ログの time フィールドから直接マッピングされます。このフィールドはタイムスタンプとして解析され、seconds フィールドと nanos フィールドへの入力に使用されます。 |
read_only_udm.extensions.auth.type | 値は AUTHTYPE_UNSPECIFIED に設定されています。 |
|
read_only_udm.metadata.event_type | 値は principal.ip フィールドと target.user.userid フィールドの有無に基づいて決定されます。両方が存在する場合は、タイプが USER_LOGIN に設定されます。principal.ip のみが存在する場合は、タイプが STATUS_UPDATE に設定されます。それ以外の場合は、GENERIC_EVENT に設定されます。 |
さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。