23.8. Egress ファイアウォールとネットワークポリシールールのロギング
クラスター管理者は、クラスターの監査ロギングを設定し、1 つ以上の namespace のロギングを有効にできます。OpenShift Container Platform は、Egress ファイアウォールとネットワークポリシーの両方の監査ログを生成します。
監査ログは、OVN-Kubernetes ネットワークプラグイン でのみ使用できます。
23.8.1. 監査ロギング リンクのコピーリンクがクリップボードにコピーされました!
OVN-Kubernetes ネットワークプラグインは、Open Virtual Network (OVN) ACL を使用して、Egress ファイアウォールとネットワークポリシーを管理します。監査ロギングは ACL イベントの許可および拒否を公開します。
syslog サーバーや UNIX ドメインソケットなど、監査ログの宛先を設定できます。追加の設定に関係なく、監査ログは常にクラスター内の各 OVN-Kubernetes Pod の /var/log/ovn/acl-audit-log.log
に保存されます。
各 namespace 設定に k8s.ovn.org/acl-logging
セクションをアノテーション付けすることで、各 namespace の監査ログを有効にできます。k8s.ovn.org/acl-logging
セクションでは、namespace の監査ログを有効にするために、allow
、deny
、またはその両方の値を指定する必要があります。
ネットワークポリシーでは、Pass
アクションセットをルールとして設定することはサポートされていません。
ACL ロギング実装は、ネットワークのアクセス制御リスト (ACL) イベントをログに記録します。これらのログを表示して、潜在的なセキュリティー問題を分析できます。
namespace アノテーションの例
デフォルトの ACL ロギング設定値を表示するには、cluster-network-03-config.yml
ファイルの policyAuditConfig
オブジェクトを参照してください。必要に応じて、このファイル内のログファイルパラメーターの ACL ロギング設定値を変更できます。
ログメッセージの形式は、RFC5424 で定義されている syslog と互換性があります。syslog ファシリティーは設定可能です。デフォルトは local0
です。次の例は、ログメッセージに出力される主要なパラメーターとその値を示しています。
パラメーターとその値を出力するロギングメッセージの例
<timestamp>|<message_serial>|acl_log(ovn_pinctrl0)|<severity>|name="<acl_name>", verdict="<verdict>", severity="<severity>", direction="<direction>": <flow>
<timestamp>|<message_serial>|acl_log(ovn_pinctrl0)|<severity>|name="<acl_name>", verdict="<verdict>", severity="<severity>", direction="<direction>": <flow>
詳細は、以下のようになります。
-
<timestamp>
は、ログメッセージが作成された日時を示します。 -
<message_serial>
には、ログメッセージのシリアル番号がリストされます。 -
acl_log(ovn_pinctrl0)
は、OVN-Kubernetes プラグイン内のログメッセージロケーションを出力するリテラル文字列です。 -
<severity>
は、ログメッセージの重大度レベルを設定します。allow
タスクとdeny
タスクをサポートする監査ロギングを有効にすると、ログメッセージ出力に 2 つの重大度レベルが表示されます。 -
<name>
は、ネットワークポリシーによって作成された OVN Network Bridging Database (nbdb
) 内の ACL ロギング実装の名前を示します。 -
<verdict>
は、allow
またはdrop
のいずれかになります。 -
<direction>
は、to-lport
またはfrom-lport
のいずれかで、ポリシーが Pod に向かうトラフィックまたは Pod から出るトラフィックに適用されたことを示します。 -
<flow>
は、OpenFlow
プロトコルと同等の形式でパケット情報を表示します。このパラメーターは Open vSwitch (OVS) フィールドで構成されます。
次の例は、flow
パラメーターがシステムメモリーからパケット情報を抽出するために使用する OVS フィールドを示しています。
flow
パラメーターがパケット情報を抽出するために使用する OVS フィールドの例
<proto>,vlan_tci=0x0000,dl_src=<src_mac>,dl_dst=<source_mac>,nw_src=<source_ip>,nw_dst=<target_ip>,nw_tos=<tos_dscp>,nw_ecn=<tos_ecn>,nw_ttl=<ip_ttl>,nw_frag=<fragment>,tp_src=<tcp_src_port>,tp_dst=<tcp_dst_port>,tcp_flags=<tcp_flags>
<proto>,vlan_tci=0x0000,dl_src=<src_mac>,dl_dst=<source_mac>,nw_src=<source_ip>,nw_dst=<target_ip>,nw_tos=<tos_dscp>,nw_ecn=<tos_ecn>,nw_ttl=<ip_ttl>,nw_frag=<fragment>,tp_src=<tcp_src_port>,tp_dst=<tcp_dst_port>,tcp_flags=<tcp_flags>
詳細は、以下のようになります。
-
<proto>
はプロトコルを指定します。有効な値はtcp
とudp
です。 -
vlan_tci=0x0000
は、内部 Pod ネットワークトラフィックに VLAN ID が設定されていないため、VLAN ヘッダーを0
として示します。 -
<src_mac>
は、メディアアクセス制御 (MAC) アドレスのソースを指定します。 -
<source_mac>
は、MAC アドレスの宛先を指定します。 -
<source_ip>
は、送信元 IP アドレスをリストします。 -
<target_ip>
は、ターゲット IP アドレスをリストします。 -
<tos_dscp>
は、特定のネットワークトラフィックを他のトラフィックよりも分類して優先順位を付ける Differentiated Services Code Point (DSCP) 値を指定します。 -
<tos_ecn>
は、ネットワーク内の輻輳したトラフィックを示す Explicit Congestion Notification (ECN) 値を示します。 -
<ip_ttl>
は、パケットの Time To Live (TTP) 情報を示します。 -
<fragment>
は、一致させる IP フラグメントまたは IP 非フラグメントのタイプを指定します。 -
<tcp_src_port>
は、TCP および UDP プロトコルのポートのソースを示します。 -
<tcp_dst_port>
は、TCP および UDP プロトコルの宛先ポートをリストします。 -
<tcp_flags>
は、SYN
、ACK
、PSH
などの多数のフラグをサポートします。複数の値を設定する必要がある場合は、各値を縦棒 (|
) で区切ります。UDP プロトコルはこのパラメーターをサポートしていません。
以前のフィールドの説明の詳細は、OVS の man ページの ovs-fields
を参照してください。
ネットワークポリシーの ACL 拒否ログエントリーの例
2021-06-13T19:33:11.590Z|00005|acl_log(ovn_pinctrl0)|INFO|name="verify-audit-logging_deny-all", verdict=drop, severity=alert: icmp,vlan_tci=0x0000,dl_src=0a:58:0a:80:02:39,dl_dst=0a:58:0a:80:02:37,nw_src=10.128.2.57,nw_dst=10.128.2.55,nw_tos=0,nw_ecn=0,nw_ttl=64,icmp_type=8,icmp_code=0
2021-06-13T19:33:11.590Z|00005|acl_log(ovn_pinctrl0)|INFO|name="verify-audit-logging_deny-all", verdict=drop, severity=alert: icmp,vlan_tci=0x0000,dl_src=0a:58:0a:80:02:39,dl_dst=0a:58:0a:80:02:37,nw_src=10.128.2.57,nw_dst=10.128.2.55,nw_tos=0,nw_ecn=0,nw_ttl=64,icmp_type=8,icmp_code=0
以下の表は、namespace アノテーションの値を説明しています。
フィールド | 説明 |
---|---|
|
|
|
|
|
|
23.8.2. 監査設定 リンクのコピーリンクがクリップボードにコピーされました!
監査ロギングの設定は、OVN-Kubernetes クラスターネットワークプロバイダー設定の一部として指定されます。次の YAML は、監査ログのデフォルト値を示しています。
監査ロギング設定
次の表では、監査ログの設定フィールドを説明します。
フィールド | 型 | 説明 |
---|---|---|
| integer |
ノードごとに毎秒生成されるメッセージの最大数。デフォルト値は、1 秒あたり |
| integer |
監査ログの最大サイズ (バイト単位)。デフォルト値は |
| string | 以下の追加の監査ログターゲットのいずれかになります。
|
| string |
RFC5424 で定義される |
23.8.3. クラスターの Egress ファイアウォールとネットワークポリシー監査の設定 リンクのコピーリンクがクリップボードにコピーされました!
クラスター管理者は、クラスターの監査ログをカスタマイズできます。
前提条件
-
OpenShift CLI (
oc
) がインストールされている。 -
cluster-admin
権限を持つユーザーとしてクラスターにログインする。
手順
監査ロギング設定をカスタマイズするには、次のコマンドを入力します。
oc edit network.operator.openshift.io/cluster
$ oc edit network.operator.openshift.io/cluster
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ヒントまたは、以下の YAML をカスタマイズして適用することで、監査ロギングを設定できます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
ネットワークポリシーを使用して namespace を作成するには、次の手順を実行します。
検証用の namespace を作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
namespace/verify-audit-logging created
namespace/verify-audit-logging created
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 監査ロギングを有効にします。
oc annotate namespace verify-audit-logging k8s.ovn.org/acl-logging='{ "deny": "alert", "allow": "alert" }'
$ oc annotate namespace verify-audit-logging k8s.ovn.org/acl-logging='{ "deny": "alert", "allow": "alert" }'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow namespace/verify-audit-logging annotated
namespace/verify-audit-logging annotated
Copy to Clipboard Copied! Toggle word wrap Toggle overflow namespace のネットワークポリシーを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
networkpolicy.networking.k8s.io/deny-all created networkpolicy.networking.k8s.io/allow-from-same-namespace created
networkpolicy.networking.k8s.io/deny-all created networkpolicy.networking.k8s.io/allow-from-same-namespace created
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
ソーストラフィックの Pod を
default
namespace に作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow verify-audit-logging
namespace に 2 つの Pod を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
pod/client created pod/server created
pod/client created pod/server created
Copy to Clipboard Copied! Toggle word wrap Toggle overflow トラフィックを生成し、ネットワークポリシー監査ログエントリーを作成するには、以下の手順を実行します。
verify-audit-logging
namespace でserver
という名前の Pod の IP アドレスを取得します。POD_IP=$(oc get pods server -n verify-audit-logging -o jsonpath='{.status.podIP}')
$ POD_IP=$(oc get pods server -n verify-audit-logging -o jsonpath='{.status.podIP}')
Copy to Clipboard Copied! Toggle word wrap Toggle overflow default
の namespace のclient
という名前の Pod の直前のコマンドから IP アドレスに ping し、すべてのパケットがドロップされていることを確認します。oc exec -it client -n default -- /bin/ping -c 2 $POD_IP
$ oc exec -it client -n default -- /bin/ping -c 2 $POD_IP
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
PING 10.128.2.55 (10.128.2.55) 56(84) bytes of data. --- 10.128.2.55 ping statistics --- 2 packets transmitted, 0 received, 100% packet loss, time 2041ms
PING 10.128.2.55 (10.128.2.55) 56(84) bytes of data. --- 10.128.2.55 ping statistics --- 2 packets transmitted, 0 received, 100% packet loss, time 2041ms
Copy to Clipboard Copied! Toggle word wrap Toggle overflow verify-audit-logging
namespace のclient
という名前の Pod からPOD_IP
シェル環境変数に保存されている IP アドレスに ping し、すべてのパケットが許可されていることを確認します。oc exec -it client -n verify-audit-logging -- /bin/ping -c 2 $POD_IP
$ oc exec -it client -n verify-audit-logging -- /bin/ping -c 2 $POD_IP
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
ネットワークポリシー監査ログの最新エントリーを表示します。
for pod in $(oc get pods -n openshift-ovn-kubernetes -l app=ovnkube-node --no-headers=true | awk '{ print $1 }') ; do oc exec -it $pod -n openshift-ovn-kubernetes -- tail -4 /var/log/ovn/acl-audit-log.log done
$ for pod in $(oc get pods -n openshift-ovn-kubernetes -l app=ovnkube-node --no-headers=true | awk '{ print $1 }') ; do oc exec -it $pod -n openshift-ovn-kubernetes -- tail -4 /var/log/ovn/acl-audit-log.log done
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
23.8.4. namespace の Egress ファイアウォールとネットワークポリシーの監査ログを有効にする リンクのコピーリンクがクリップボードにコピーされました!
クラスター管理者は、namespace の監査ログを有効にすることができます。
前提条件
-
OpenShift CLI (
oc
) がインストールされている。 -
cluster-admin
権限を持つユーザーとしてクラスターにログインする。
手順
namespace の監査ログを有効にするには、次のコマンドを入力します。
oc annotate namespace <namespace> \ k8s.ovn.org/acl-logging='{ "deny": "alert", "allow": "notice" }'
$ oc annotate namespace <namespace> \ k8s.ovn.org/acl-logging='{ "deny": "alert", "allow": "notice" }'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ここでは、以下のようになります。
<namespace>
- namespace の名前を指定します。
ヒントまたは、以下の YAML を適用して監査ロギングを有効化できます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
namespace/verify-audit-logging annotated
namespace/verify-audit-logging annotated
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
監査ログの最新のエントリーを表示します。
for pod in $(oc get pods -n openshift-ovn-kubernetes -l app=ovnkube-node --no-headers=true | awk '{ print $1 }') ; do oc exec -it $pod -n openshift-ovn-kubernetes -- tail -4 /var/log/ovn/acl-audit-log.log done
$ for pod in $(oc get pods -n openshift-ovn-kubernetes -l app=ovnkube-node --no-headers=true | awk '{ print $1 }') ; do oc exec -it $pod -n openshift-ovn-kubernetes -- tail -4 /var/log/ovn/acl-audit-log.log done
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
2021-06-13T19:33:11.590Z|00005|acl_log(ovn_pinctrl0)|INFO|name="verify-audit-logging_deny-all", verdict=drop, severity=alert: icmp,vlan_tci=0x0000,dl_src=0a:58:0a:80:02:39,dl_dst=0a:58:0a:80:02:37,nw_src=10.128.2.57,nw_dst=10.128.2.55,nw_tos=0,nw_ecn=0,nw_ttl=64,icmp_type=8,icmp_code=0
2021-06-13T19:33:11.590Z|00005|acl_log(ovn_pinctrl0)|INFO|name="verify-audit-logging_deny-all", verdict=drop, severity=alert: icmp,vlan_tci=0x0000,dl_src=0a:58:0a:80:02:39,dl_dst=0a:58:0a:80:02:37,nw_src=10.128.2.57,nw_dst=10.128.2.55,nw_tos=0,nw_ecn=0,nw_ttl=64,icmp_type=8,icmp_code=0
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
23.8.5. namespace の Egress ファイアウォールとネットワークポリシーの監査ログを無効にする リンクのコピーリンクがクリップボードにコピーされました!
クラスター管理者は、namespace の監査ログを無効にすることができます。
前提条件
-
OpenShift CLI (
oc
) がインストールされている。 -
cluster-admin
権限を持つユーザーとしてクラスターにログインする。
手順
namespace の監査ログを無効にするには、次のコマンドを入力します。
oc annotate --overwrite namespace <namespace> k8s.ovn.org/acl-logging-
$ oc annotate --overwrite namespace <namespace> k8s.ovn.org/acl-logging-
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ここでは、以下のようになります。
<namespace>
- namespace の名前を指定します。
ヒントまたは、以下の YAML を適用して監査ロギングを無効化できます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
namespace/verify-audit-logging annotated
namespace/verify-audit-logging annotated
Copy to Clipboard Copied! Toggle word wrap Toggle overflow