ネットワーク方向プロセッサ

ソースIPアドレス、宛先IPアドレス、および内部ネットワークのリストに基づいてネットワークの方向を計算します。

ネットワーク方向プロセッサは、デフォルトでElastic Common Schema (ECS)フィールドからIPアドレスを読み取ります。ECSを使用する場合は、internal_networksオプションのみを指定する必要があります。


表32. ネットワーク方向オプション

名前 必須 デフォルト 説明
source_ip いいえ source.ip ソースIPアドレスを含むフィールド。
destination_ip いいえ destination.ip 宛先IPアドレスを含むフィールド。
target_field いいえ network.direction ネットワーク方向の出力フィールド。
internal_networks はい * 内部ネットワークのリスト。IPv4およびIPv6アドレスとCIDR表記の範囲をサポートします。また、以下にリストされている名前付き範囲もサポートします。これらはテンプレートスニペットを使用して構築できます。* internal_networksまたはinternal_networks_fieldのいずれか1つのみを指定する必要があります。
internal_networks_field いいえ 指定されたドキュメントのinternal_networks設定を読み取るためのフィールド。
ignore_missing いいえ true trueおよび必要なフィールドが欠落している場合、

プロセッサは静かに終了し、ドキュメントを変更しません。 |
| description | いいえ | - | プロセッサの説明。プロセッサの目的や設定を説明するのに役立ちます。 |
| if | いいえ | - | 条件付きでプロセッサを実行します。条件付きでプロセッサを実行するを参照してください。 |
| ignore_failure | いいえ | false | プロセッサの失敗を無視します。パイプラインの失敗を処理するを参照してください。 |
| on_failure | いいえ | - | プロセッサの失敗を処理します。パイプラインの失敗を処理するを参照してください。 |
| tag | いいえ | - | プロセッサの識別子。デバッグやメトリクスに役立ちます。 |

  1. ## サポートされている名前付きネットワーク範囲
  2. `````internal_networks`````オプションでサポートされている名前付き範囲は次のとおりです:
  3. - `````loopback````` - `````127.0.0.0/8`````または`````::1/128`````の範囲内のループバックアドレスに一致します。
  4. - `````unicast`````または`````global_unicast````` - RFC 1122RFC 4632、およびRFC 4291で定義されたグローバルユニキャストアドレスに一致します。ただし、IPv4ブロードキャストアドレス(`````255.255.255.255`````)は除きます。これにはプライベートアドレス範囲が含まれます。
  5. - `````multicast````` - マルチキャストアドレスに一致します。
  6. - `````interface_local_multicast````` - IPv6インターフェースローカルマルチキャストアドレスに一致します。
  7. - `````link_local_unicast````` - リンクローカルユニキャストアドレスに一致します。
  8. - `````link_local_multicast````` - リンクローカルマルチキャストアドレスに一致します。
  9. - `````private````` - RFC 1918 (IPv4)およびRFC 4193 (IPv6)で定義されたプライベートアドレス範囲に一致します。
  10. - `````public````` - ループバック、未指定、IPv4ブロードキャスト、リンクローカルユニキャスト、リンクローカルマルチキャスト、インターフェースローカルマルチキャスト、またはプライベートでないアドレスに一致します。
  11. - `````unspecified````` - 未指定のアドレスに一致します(IPv4アドレス"0.0.0.0"またはIPv6アドレス"::")。
  12. ## 例
  13. 次の例は、ネットワーク方向プロセッサの使用を示しています:
  14. #### Python
  15. ``````python
  16. resp = client.ingest.simulate(
  17. pipeline={
  18. "processors": [
  19. {
  20. "network_direction": {
  21. "internal_networks": [
  22. "private"
  23. ]
  24. }
  25. }
  26. ]
  27. },
  28. docs=[
  29. {
  30. "_source": {
  31. "source": {
  32. "ip": "128.232.110.120"
  33. },
  34. "destination": {
  35. "ip": "192.168.1.1"
  36. }
  37. }
  38. }
  39. ],
  40. )
  41. print(resp)
  42. `

Ruby

  1. response = client.ingest.simulate(
  2. body: {
  3. pipeline: {
  4. processors: [
  5. {
  6. network_direction: {
  7. internal_networks: [
  8. 'private'
  9. ]
  10. }
  11. }
  12. ]
  13. },
  14. docs: [
  15. {
  16. _source: {
  17. source: {
  18. ip: '128.232.110.120'
  19. },
  20. destination: {
  21. ip: '192.168.1.1'
  22. }
  23. }
  24. }
  25. ]
  26. }
  27. )
  28. puts response

Js

  1. const response = await client.ingest.simulate({
  2. pipeline: {
  3. processors: [
  4. {
  5. network_direction: {
  6. internal_networks: ["private"],
  7. },
  8. },
  9. ],
  10. },
  11. docs: [
  12. {
  13. _source: {
  14. source: {
  15. ip: "128.232.110.120",
  16. },
  17. destination: {
  18. ip: "192.168.1.1",
  19. },
  20. },
  21. },
  22. ],
  23. });
  24. console.log(response);

コンソール

  1. POST _ingest/pipeline/_simulate
  2. {
  3. "pipeline": {
  4. "processors": [
  5. {
  6. "network_direction": {
  7. "internal_networks": ["private"]
  8. }
  9. }
  10. ]
  11. },
  12. "docs": [
  13. {
  14. "_source": {
  15. "source": {
  16. "ip": "128.232.110.120"
  17. },
  18. "destination": {
  19. "ip": "192.168.1.1"
  20. }
  21. }
  22. }
  23. ]
  24. }

次の結果が得られます:

コンソール-結果

  1. {
  2. "docs": [
  3. {
  4. "doc": {
  5. ...
  6. "_source": {
  7. "destination": {
  8. "ip": "192.168.1.1"
  9. },
  10. "source": {
  11. "ip": "128.232.110.120"
  12. },
  13. "network": {
  14. "direction": "inbound"
  15. }
  16. }
  17. }
  18. }
  19. ]
  20. }