6.4. 네트워크 보안을 위한 감사 로깅
OVN-Kubernetes 네트워크 플러그인은 OVN(Open Virtual Network) 액세스 제어 목록(ACL)을 사용하여 AdminNetworkPolicy,BaselineAdminNetworkPolicy,NetworkPolicy, EgressFirewall 오브젝트를 관리합니다. 감사 로깅은 NetworkPolicy ,EgressFirewall 및 BaselineAdmin 사용자 정의 리소스(CR)에 대한 ACL 이벤트를 NetworkPolicy 허용 및 거부합니다. 로깅은 관리NetworkPolicy (ANP) CR에 대한 ACL 이벤트도 노출하고,거부할 수 있습니다.
감사 로깅은 OVN-Kubernetes 네트워크 플러그인 에서만 사용할 수 있습니다.
6.4.1. 감사 구성 링크 복사링크가 클립보드에 복사되었습니다!
감사 로깅 구성은 OVN-Kubernetes 클러스터 네트워크 공급자 구성의 일부로 지정됩니다. 다음 YAML은 감사 로깅의 기본값을 보여줍니다.
감사 로깅 구성
apiVersion: operator.openshift.io/v1
kind: Network
metadata:
name: cluster
spec:
defaultNetwork:
ovnKubernetesConfig:
policyAuditConfig:
destination: "null"
maxFileSize: 50
rateLimit: 20
syslogFacility: local0
다음 표에서는 감사 로깅을 위한 구성 필드를 설명합니다.
| 필드 | 유형 | 설명 |
|---|---|---|
|
| integer |
노드당 1초마다 생성할 최대 메시지 수입니다. 기본값은 초당 |
|
| integer |
감사 로그의 최대 크기(바이트)입니다. 기본값은 |
|
| integer | 유지되는 최대 로그 파일 수입니다. |
|
| string | 다음 추가 감사 로그 대상 중 하나입니다.
|
|
| string |
RFC5424에 정의된 |
6.4.2. 감사 로깅 링크 복사링크가 클립보드에 복사되었습니다!
syslog 서버 또는 UNIX 도메인 소켓과 같은 감사 로그의 대상을 구성할 수 있습니다. 추가 구성에 관계없이 감사 로그는 항상 클러스터의 각 OVN-Kubernetes Pod의 /var/log/ovn/acl-audit-log.log에 저장됩니다.
k8s.ovn.org/acl-logging 섹션을 사용하여 각 네임스페이스 구성에 주석을 달아 각 네임스페이스에 대해 감사 로깅을 활성화할 수 있습니다. k8s.ovn.org/acl-logging 섹션에서 네임스페이스에 대한 감사 로깅을 활성화하려면 allow,deny 또는 두 값을 지정해야 합니다.
네트워크 정책은 Pass 작업 세트를 규칙으로 설정하는 것을 지원하지 않습니다.
ACL-logging 구현에서는 네트워크에 대한 ACL(액세스 제어 목록) 이벤트를 기록합니다. 이러한 로그를 보고 잠재적인 보안 문제를 분석할 수 있습니다.
네임스페이스 주석의 예
kind: Namespace
apiVersion: v1
metadata:
name: example1
annotations:
k8s.ovn.org/acl-logging: |-
{
"deny": "info",
"allow": "info"
}
기본 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)는 OVN-Kubernetes 플러그인에 로그 메시지의 위치를 출력하는 리터럴 문자열입니다. -
<severity>는 로그 메시지의 심각도 수준을 설정합니다.allow및deny작업을 지원하는 감사 로깅을 활성화하면 두 가지 심각도 수준이 로그 메시지 출력에 표시됩니다. -
<name>은 네트워크 정책에서 생성된 OVN 네트워크 브리징 데이터베이스(nbdb)에 ACL-logging 구현의 이름을 지정합니다. -
<verdict>는허용또는드롭일 수 있습니다. -
<direction>은to-lport또는from-lport중 하나로, Pod에서 나가는 트래픽에 정책이 적용되었음을 나타냅니다. -
<flow>는OpenFlow프로토콜과 동일한 형식으로 패킷 정보를 표시합니다. 이 매개변수는 OVS(Open vSwitch) 필드로 구성됩니다.
다음 예제에서는 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>
다음과 같습니다.
-
&
lt;proto>는 프로토콜을 표시합니다. 유효한 값은tcp및udp입니다. -
VLAN ID가 내부 Pod 네트워크 트래픽에 설정되지 않았기 때문에
vlan_tci=0x0000은 VLAN 헤더를0으로 지정합니다. -
<src_mac>는 MAC(Media Access Control) 주소의 소스를 지정합니다. -
<source_mac>는 MAC 주소의 대상을 지정합니다. -
<SOURCE_IP>는 소스 IP 주소 나열 -
<target_ip>는 대상 IP 주소를 나열합니다. -
<
tos_dscp>는 다른 트래픽보다 특정 네트워크 트래픽을 분류하고 우선 순위를 지정할 수 있는 다양한 서비스 코드 포인트(DSCP) 값을 나타냅니다. -
<tos_ecn>은 네트워크에서 혼잡한 트래픽을 나타내는 ECN(Explicit Congestion Notification) 값을 나타냅니다. -
<ip_ttl>은 패킷에 대한 TTP(Time To Live) 정보를 표시합니다. -
<fragment>는 일치시킬 IP 조각 또는 IP의 유형을 지정합니다. -
<tcp_src_port>는 TCP 및 UDP 프로토콜의 포트 소스를 보여줍니다. -
<tcp_dst_port>는 TCP 및 UDP 프로토콜의 대상 포트를 나열합니다. -
<tcp_flags>는SYN,ACK,PSH등과 같은 다양한 플래그를 지원합니다. 여러 값을 설정해야 하는 경우 각 값은 세로 막대(|)로 구분됩니다. UDP 프로토콜은 이 매개변수를 지원하지 않습니다.
이전 필드 설명에 대한 자세한 내용은 ovs-fields 의 OVS 매뉴얼 페이지로 이동하십시오.
네트워크 정책에 대한 ACL 거부 로그 항목의 예
2023-11-02T16:28:54.139Z|00004|acl_log(ovn_pinctrl0)|INFO|name="NP:verify-audit-logging:Ingress", verdict=drop, severity=alert, direction=to-lport: tcp,vlan_tci=0x0000,dl_src=0a:58:0a:81:02:01,dl_dst=0a:58:0a:81:02:23,nw_src=10.131.0.39,nw_dst=10.129.2.35,nw_tos=0,nw_ecn=0,nw_ttl=62,nw_frag=no,tp_src=58496,tp_dst=8080,tcp_flags=syn
2023-11-02T16:28:55.187Z|00005|acl_log(ovn_pinctrl0)|INFO|name="NP:verify-audit-logging:Ingress", verdict=drop, severity=alert, direction=to-lport: tcp,vlan_tci=0x0000,dl_src=0a:58:0a:81:02:01,dl_dst=0a:58:0a:81:02:23,nw_src=10.131.0.39,nw_dst=10.129.2.35,nw_tos=0,nw_ecn=0,nw_ttl=62,nw_frag=no,tp_src=58496,tp_dst=8080,tcp_flags=syn
2023-11-02T16:28:57.235Z|00006|acl_log(ovn_pinctrl0)|INFO|name="NP:verify-audit-logging:Ingress", verdict=drop, severity=alert, direction=to-lport: tcp,vlan_tci=0x0000,dl_src=0a:58:0a:81:02:01,dl_dst=0a:58:0a:81:02:23,nw_src=10.131.0.39,nw_dst=10.129.2.35,nw_tos=0,nw_ecn=0,nw_ttl=62,nw_frag=no,tp_src=58496,tp_dst=8080,tcp_flags=syn
다음 표에서는 네임스페이스 주석 값에 대해 설명합니다.
| 필드 | 설명 |
|---|---|
|
|
|
|
|
허용 작업과 함께 ACL 규칙과 일치하는 모든 트래픽에 대한 네임스페이스 액세스를 |
|
|
|
6.4.3. AdminNetworkPolicy 감사 로깅 링크 복사링크가 클립보드에 복사되었습니다!
다음 예와 같이 k8s.ovn.org/acl-logging 키로 ANP 정책에 주석을 달아 AdminNetworkPolicy CR별로 감사 로깅이 활성화됩니다.
예 6.8. AdminNetworkPolicy CR 주석의 예
apiVersion: policy.networking.k8s.io/v1alpha1
kind: AdminNetworkPolicy
metadata:
annotations:
k8s.ovn.org/acl-logging: '{ "deny": "alert", "allow": "alert", "pass" : "warning" }'
name: anp-tenant-log
spec:
priority: 5
subject:
namespaces:
matchLabels:
tenant: backend-storage # Selects all pods owned by storage tenant.
ingress:
- name: "allow-all-ingress-product-development-and-customer" # Product development and customer tenant ingress to backend storage.
action: "Allow"
from:
- pods:
namespaceSelector:
matchExpressions:
- key: tenant
operator: In
values:
- product-development
- customer
podSelector: {}
- name: "pass-all-ingress-product-security"
action: "Pass"
from:
- namespaces:
matchLabels:
tenant: product-security
- name: "deny-all-ingress" # Ingress to backend from all other pods in the cluster.
action: "Deny"
from:
- namespaces: {}
egress:
- name: "allow-all-egress-product-development"
action: "Allow"
to:
- pods:
namespaceSelector:
matchLabels:
tenant: product-development
podSelector: {}
- name: "pass-egress-product-security"
action: "Pass"
to:
- namespaces:
matchLabels:
tenant: product-security
- name: "deny-all-egress" # Egress from backend denied to all other pods.
action: "Deny"
to:
- namespaces: {}
특정 OVN ACL에 도달할 때마다 로그가 생성되고 로깅 주석에 설정된 작업 기준을 충족합니다. 예를 들어 테넌트: product-devel이라는 라벨이 있는 네임스페이스 중 하나라도 라는 레이블이 있는 네임스페이스에 액세스하는 경우 로그가 생성됩니다.
backend- storage
ACL 로깅은 60자로 제한됩니다. ANP 이름 필드가 길면 나머지 로그가 잘립니다.
다음은 다음 예제 로그 항목에 대한 방향 인덱스입니다.
| 방향 | Rule |
|---|---|
| Ingress |
|
| Egress |
|
예 6.9. Ingress:0 및 Egress:0을 사용하여 anp-tenant-log 라는 AdminNetworkPolicy 작업의 허용 로그 항목의 예
2024-06-10T16:27:45.194Z|00052|acl_log(ovn_pinctrl0)|INFO|name="ANP:anp-tenant-log:Ingress:0", verdict=allow, severity=alert, direction=to-lport: tcp,vlan_tci=0x0000,dl_src=0a:58:0a:80:02:1a,dl_dst=0a:58:0a:80:02:19,nw_src=10.128.2.26,nw_dst=10.128.2.25,nw_tos=0,nw_ecn=0,nw_ttl=64,nw_frag=no,tp_src=57814,tp_dst=8080,tcp_flags=syn
2024-06-10T16:28:23.130Z|00059|acl_log(ovn_pinctrl0)|INFO|name="ANP:anp-tenant-log:Ingress:0", verdict=allow, severity=alert, direction=to-lport: tcp,vlan_tci=0x0000,dl_src=0a:58:0a:80:02:18,dl_dst=0a:58:0a:80:02:19,nw_src=10.128.2.24,nw_dst=10.128.2.25,nw_tos=0,nw_ecn=0,nw_ttl=64,nw_frag=no,tp_src=38620,tp_dst=8080,tcp_flags=ack
2024-06-10T16:28:38.293Z|00069|acl_log(ovn_pinctrl0)|INFO|name="ANP:anp-tenant-log:Egress:0", verdict=allow, severity=alert, direction=from-lport: tcp,vlan_tci=0x0000,dl_src=0a:58:0a:80:02:19,dl_dst=0a:58:0a:80:02:1a,nw_src=10.128.2.25,nw_dst=10.128.2.26,nw_tos=0,nw_ecn=0,nw_ttl=64,nw_frag=no,tp_src=47566,tp_dst=8080,tcp_flags=fin|ack=0,nw_ecn=0,nw_ttl=64,nw_frag=no,tp_src=55704,tp_dst=8080,tcp_flags=ack
예 6.10. Ingress:1 및 Egress:1을 사용하여 anp-tenant-log 라는 AdminNetworkPolicy 동작에 대한 ACL 로그 항목의 예
2024-06-10T16:33:12.019Z|00075|acl_log(ovn_pinctrl0)|INFO|name="ANP:anp-tenant-log:Ingress:1", verdict=pass, severity=warning, direction=to-lport: tcp,vlan_tci=0x0000,dl_src=0a:58:0a:80:02:1b,dl_dst=0a:58:0a:80:02:19,nw_src=10.128.2.27,nw_dst=10.128.2.25,nw_tos=0,nw_ecn=0,nw_ttl=64,nw_frag=no,tp_src=37394,tp_dst=8080,tcp_flags=ack
2024-06-10T16:35:04.209Z|00081|acl_log(ovn_pinctrl0)|INFO|name="ANP:anp-tenant-log:Egress:1", verdict=pass, severity=warning, direction=from-lport: tcp,vlan_tci=0x0000,dl_src=0a:58:0a:80:02:19,dl_dst=0a:58:0a:80:02:1b,nw_src=10.128.2.25,nw_dst=10.128.2.27,nw_tos=0,nw_ecn=0,nw_ttl=64,nw_frag=no,tp_src=34018,tp_dst=8080,tcp_flags=ack
예 6.11. Egress:2 및 Ingress2를 사용하여 anp-tenant-log 라는 AdminNetworkPolicy 작업의 거부 작업의 예
2024-06-10T16:43:05.287Z|00087|acl_log(ovn_pinctrl0)|INFO|name="ANP:anp-tenant-log:Egress:2", verdict=drop, severity=alert, direction=from-lport: tcp,vlan_tci=0x0000,dl_src=0a:58:0a:80:02:19,dl_dst=0a:58:0a:80:02:18,nw_src=10.128.2.25,nw_dst=10.128.2.24,nw_tos=0,nw_ecn=0,nw_ttl=64,nw_frag=no,tp_src=51598,tp_dst=8080,tcp_flags=syn
2024-06-10T16:44:43.591Z|00090|acl_log(ovn_pinctrl0)|INFO|name="ANP:anp-tenant-log:Ingress:2", verdict=drop, severity=alert, direction=to-lport: tcp,vlan_tci=0x0000,dl_src=0a:58:0a:80:02:1c,dl_dst=0a:58:0a:80:02:19,nw_src=10.128.2.28,nw_dst=10.128.2.25,nw_tos=0,nw_ecn=0,nw_ttl=64,nw_frag=no,tp_src=33774,tp_dst=8080,tcp_flags=syn
다음 표에서는 ANP 주석을 설명합니다.
| 주석 | 현재의 |
|---|---|
|
|
네임스페이스에 대한 감사 로깅을 활성화하려면
|
6.4.4. BaselineAdminNetworkPolicy 감사 로깅 링크 복사링크가 클립보드에 복사되었습니다!
다음 예와 같이 k8s.ovn.org/acl-logging 키로 BANP 정책에 주석을 달아 BaselineAdminNetworkPolicy CR에서 감사 로깅이 활성화됩니다.
예 6.12. BaselineAdminNetworkPolicy CR 주석의 예
apiVersion: policy.networking.k8s.io/v1alpha1
kind: BaselineAdminNetworkPolicy
metadata:
annotations:
k8s.ovn.org/acl-logging: '{ "deny": "alert", "allow": "alert"}'
name: default
spec:
subject:
namespaces:
matchLabels:
tenant: workloads # Selects all workload pods in the cluster.
ingress:
- name: "default-allow-dns" # This rule allows ingress from dns tenant to all workloads.
action: "Allow"
from:
- namespaces:
matchLabels:
tenant: dns
- name: "default-deny-dns" # This rule denies all ingress from all pods to workloads.
action: "Deny"
from:
- namespaces: {} # Use the empty selector with caution because it also selects OpenShift namespaces as well.
egress:
- name: "default-deny-dns" # This rule denies all egress from workloads. It will be applied when no ANP or network policy matches.
action: "Deny"
to:
- namespaces: {} # Use the empty selector with caution because it also selects OpenShift namespaces as well.
이 예제에서는 tenant: dns 레이블이 있는 네임스페이스 중 하나에 tenant: workloads 라는 레이블이 있는 네임스페이스에 액세스하는 경우 로그가 생성됩니다.
다음은 다음 예제 로그 항목에 대한 방향 인덱스입니다.
| 방향 | Rule |
|---|---|
| Ingress |
|
| Egress |
|
예 6.13. ACL의 예는 Ingress:0을 사용하여 기본 BANP의 허용 작업에 대한 로그 항목을 허용합니다.
2024-06-10T18:11:58.263Z|00022|acl_log(ovn_pinctrl0)|INFO|name="BANP:default:Ingress:0", verdict=allow, severity=alert, direction=to-lport: tcp,vlan_tci=0x0000,dl_src=0a:58:0a:82:02:57,dl_dst=0a:58:0a:82:02:56,nw_src=10.130.2.87,nw_dst=10.130.2.86,nw_tos=0,nw_ecn=0,nw_ttl=64,nw_frag=no,tp_src=60510,tp_dst=8080,tcp_flags=syn
2024-06-10T18:11:58.264Z|00023|acl_log(ovn_pinctrl0)|INFO|name="BANP:default:Ingress:0", verdict=allow, severity=alert, direction=to-lport: tcp,vlan_tci=0x0000,dl_src=0a:58:0a:82:02:57,dl_dst=0a:58:0a:82:02:56,nw_src=10.130.2.87,nw_dst=10.130.2.86,nw_tos=0,nw_ecn=0,nw_ttl=64,nw_frag=no,tp_src=60510,tp_dst=8080,tcp_flags=psh|ack
2024-06-10T18:11:58.264Z|00024|acl_log(ovn_pinctrl0)|INFO|name="BANP:default:Ingress:0", verdict=allow, severity=alert, direction=to-lport: tcp,vlan_tci=0x0000,dl_src=0a:58:0a:82:02:57,dl_dst=0a:58:0a:82:02:56,nw_src=10.130.2.87,nw_dst=10.130.2.86,nw_tos=0,nw_ecn=0,nw_ttl=64,nw_frag=no,tp_src=60510,tp_dst=8080,tcp_flags=ack
2024-06-10T18:11:58.264Z|00025|acl_log(ovn_pinctrl0)|INFO|name="BANP:default:Ingress:0", verdict=allow, severity=alert, direction=to-lport: tcp,vlan_tci=0x0000,dl_src=0a:58:0a:82:02:57,dl_dst=0a:58:0a:82:02:56,nw_src=10.130.2.87,nw_dst=10.130.2.86,nw_tos=0,nw_ecn=0,nw_ttl=64,nw_frag=no,tp_src=60510,tp_dst=8080,tcp_flags=ack
2024-06-10T18:11:58.264Z|00026|acl_log(ovn_pinctrl0)|INFO|name="BANP:default:Ingress:0", verdict=allow, severity=alert, direction=to-lport: tcp,vlan_tci=0x0000,dl_src=0a:58:0a:82:02:57,dl_dst=0a:58:0a:82:02:56,nw_src=10.130.2.87,nw_dst=10.130.2.86,nw_tos=0,nw_ecn=0,nw_ttl=64,nw_frag=no,tp_src=60510,tp_dst=8080,tcp_flags=fin|ack
2024-06-10T18:11:58.264Z|00027|acl_log(ovn_pinctrl0)|INFO|name="BANP:default:Ingress:0", verdict=allow, severity=alert, direction=to-lport: tcp,vlan_tci=0x0000,dl_src=0a:58:0a:82:02:57,dl_dst=0a:58:0a:82:02:56,nw_src=10.130.2.87,nw_dst=10.130.2.86,nw_tos=0,nw_ecn=0,nw_ttl=64,nw_frag=no,tp_src=60510,tp_dst=8080,tcp_flags=ack
예 6.14. ACL의 예는 Egress:0 및 Ingress:1이 있는 기본 BANP의 허용 작업에 대한 로그 항목을 허용합니다.
2024-06-10T18:09:57.774Z|00016|acl_log(ovn_pinctrl0)|INFO|name="BANP:default:Egress:0", verdict=drop, severity=alert, direction=from-lport: tcp,vlan_tci=0x0000,dl_src=0a:58:0a:82:02:56,dl_dst=0a:58:0a:82:02:57,nw_src=10.130.2.86,nw_dst=10.130.2.87,nw_tos=0,nw_ecn=0,nw_ttl=64,nw_frag=no,tp_src=45614,tp_dst=8080,tcp_flags=syn
2024-06-10T18:09:58.809Z|00017|acl_log(ovn_pinctrl0)|INFO|name="BANP:default:Egress:0", verdict=drop, severity=alert, direction=from-lport: tcp,vlan_tci=0x0000,dl_src=0a:58:0a:82:02:56,dl_dst=0a:58:0a:82:02:57,nw_src=10.130.2.86,nw_dst=10.130.2.87,nw_tos=0,nw_ecn=0,nw_ttl=64,nw_frag=no,tp_src=45614,tp_dst=8080,tcp_flags=syn
2024-06-10T18:10:00.857Z|00018|acl_log(ovn_pinctrl0)|INFO|name="BANP:default:Egress:0", verdict=drop, severity=alert, direction=from-lport: tcp,vlan_tci=0x0000,dl_src=0a:58:0a:82:02:56,dl_dst=0a:58:0a:82:02:57,nw_src=10.130.2.86,nw_dst=10.130.2.87,nw_tos=0,nw_ecn=0,nw_ttl=64,nw_frag=no,tp_src=45614,tp_dst=8080,tcp_flags=syn
2024-06-10T18:10:25.414Z|00019|acl_log(ovn_pinctrl0)|INFO|name="BANP:default:Ingress:1", verdict=drop, severity=alert, direction=to-lport: tcp,vlan_tci=0x0000,dl_src=0a:58:0a:82:02:58,dl_dst=0a:58:0a:82:02:56,nw_src=10.130.2.88,nw_dst=10.130.2.86,nw_tos=0,nw_ecn=0,nw_ttl=64,nw_frag=no,tp_src=40630,tp_dst=8080,tcp_flags=syn
2024-06-10T18:10:26.457Z|00020|acl_log(ovn_pinctrl0)|INFO|name="BANP:default:Ingress:1", verdict=drop, severity=alert, direction=to-lport: tcp,vlan_tci=0x0000,dl_src=0a:58:0a:82:02:58,dl_dst=0a:58:0a:82:02:56,nw_src=10.130.2.88,nw_dst=10.130.2.86,nw_tos=0,nw_ecn=0,nw_ttl=64,nw_frag=no,tp_src=40630,tp_dst=8080,tcp_flags=syn
2024-06-10T18:10:28.505Z|00021|acl_log(ovn_pinctrl0)|INFO|name="BANP:default:Ingress:1", verdict=drop, severity=alert, direction=to-lport: tcp,vlan_tci=0x0000,dl_src=0a:58:0a:82:02:58,dl_dst=0a:58:0a:82:02:56,nw_src=10.130.2.88,nw_dst=10.130.2.86,nw_tos=0,nw_ecn=0,nw_ttl=64,nw_frag=no,tp_src=40630,tp_dst=8080,tcp_flags=syn
다음 표에서는 BANP 주석을 설명합니다.
| 주석 | 현재의 |
|---|---|
|
|
네임스페이스에 대한 감사 로깅을 활성화하려면
|
6.4.5. 클러스터에 대한 송신 방화벽 및 네트워크 정책 감사 구성 링크 복사링크가 클립보드에 복사되었습니다!
클러스터 관리자는 클러스터의 감사 로깅을 사용자 지정할 수 있습니다.
사전 요구 사항
-
OpenShift CLI(
oc)를 설치합니다. -
cluster-admin권한이 있는 사용자로 클러스터에 로그인합니다.
프로세스
감사 로깅 구성을 사용자 지정하려면 다음 명령을 입력합니다.
$ oc edit network.operator.openshift.io/cluster작은 정보또는 다음 YAML을 사용자 지정하고 적용하여 감사 로깅을 구성할 수 있습니다.
apiVersion: operator.openshift.io/v1 kind: Network metadata: name: cluster spec: defaultNetwork: ovnKubernetesConfig: policyAuditConfig: destination: "null" maxFileSize: 50 rateLimit: 20 syslogFacility: local0
검증
네트워크 정책을 사용하여 네임스페이스를 생성하려면 다음 단계를 완료합니다.
검증을 위해 네임스페이스를 생성합니다.
$ cat <<EOF| oc create -f - kind: Namespace apiVersion: v1 metadata: name: verify-audit-logging annotations: k8s.ovn.org/acl-logging: '{ "deny": "alert", "allow": "alert" }' EOF출력 예
namespace/verify-audit-logging created네임스페이스의 네트워크 정책을 생성합니다.
$ cat <<EOF| oc create -n verify-audit-logging -f - apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: deny-all spec: podSelector: matchLabels: policyTypes: - Ingress - Egress --- apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: allow-from-same-namespace namespace: verify-audit-logging spec: podSelector: {} policyTypes: - Ingress - Egress ingress: - from: - podSelector: {} egress: - to: - namespaceSelector: matchLabels: kubernetes.io/metadata.name: verify-audit-logging EOF출력 예
networkpolicy.networking.k8s.io/deny-all created networkpolicy.networking.k8s.io/allow-from-same-namespace created
default네임스페이스에서 소스 트래픽에 사용할 Pod를 생성합니다.$ cat <<EOF| oc create -n default -f - apiVersion: v1 kind: Pod metadata: name: client spec: containers: - name: client image: registry.access.redhat.com/rhel7/rhel-tools command: ["/bin/sh", "-c"] args: ["sleep inf"] EOFverify-audit-logging네임스페이스에 두 개의 Pod를 생성합니다.$ for name in client server; do cat <<EOF| oc create -n verify-audit-logging -f - apiVersion: v1 kind: Pod metadata: name: ${name} spec: containers: - name: ${name} image: registry.access.redhat.com/rhel7/rhel-tools command: ["/bin/sh", "-c"] args: ["sleep inf"] EOF done출력 예
pod/client created pod/server created트래픽을 생성하고 네트워크 정책 감사 로그 항목을 생성하려면 다음 단계를 완료합니다.
verify-audit-logging네임스페이스에서server라는 Pod의 IP 주소를 가져옵니다.$ POD_IP=$(oc get pods server -n verify-audit-logging -o jsonpath='{.status.podIP}')default네임스페이스에 있는client라는 Pod에서 이전 명령의 IP 주소를 ping하고 모든 패킷이 삭제되었는지 확인합니다.$ oc exec -it client -n default -- /bin/ping -c 2 $POD_IP출력 예
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 2041msverify-audit-logging네임스페이스의client라는 Pod에서POD_IP쉘 환경 변수에 저장된 IP 주소를 ping하고 모든 패킷이 허용되는지 확인합니다.$ oc exec -it client -n verify-audit-logging -- /bin/ping -c 2 $POD_IP출력 예
PING 10.128.0.86 (10.128.0.86) 56(84) bytes of data. 64 bytes from 10.128.0.86: icmp_seq=1 ttl=64 time=2.21 ms 64 bytes from 10.128.0.86: icmp_seq=2 ttl=64 time=0.440 ms --- 10.128.0.86 ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 1001ms rtt min/avg/max/mdev = 0.440/1.329/2.219/0.890 ms
네트워크 정책 감사 로그의 최신 항목을 표시합니다.
$ 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출력 예
2023-11-02T16:28:54.139Z|00004|acl_log(ovn_pinctrl0)|INFO|name="NP:verify-audit-logging:Ingress", verdict=drop, severity=alert, direction=to-lport: tcp,vlan_tci=0x0000,dl_src=0a:58:0a:81:02:01,dl_dst=0a:58:0a:81:02:23,nw_src=10.131.0.39,nw_dst=10.129.2.35,nw_tos=0,nw_ecn=0,nw_ttl=62,nw_frag=no,tp_src=58496,tp_dst=8080,tcp_flags=syn 2023-11-02T16:28:55.187Z|00005|acl_log(ovn_pinctrl0)|INFO|name="NP:verify-audit-logging:Ingress", verdict=drop, severity=alert, direction=to-lport: tcp,vlan_tci=0x0000,dl_src=0a:58:0a:81:02:01,dl_dst=0a:58:0a:81:02:23,nw_src=10.131.0.39,nw_dst=10.129.2.35,nw_tos=0,nw_ecn=0,nw_ttl=62,nw_frag=no,tp_src=58496,tp_dst=8080,tcp_flags=syn 2023-11-02T16:28:57.235Z|00006|acl_log(ovn_pinctrl0)|INFO|name="NP:verify-audit-logging:Ingress", verdict=drop, severity=alert, direction=to-lport: tcp,vlan_tci=0x0000,dl_src=0a:58:0a:81:02:01,dl_dst=0a:58:0a:81:02:23,nw_src=10.131.0.39,nw_dst=10.129.2.35,nw_tos=0,nw_ecn=0,nw_ttl=62,nw_frag=no,tp_src=58496,tp_dst=8080,tcp_flags=syn 2023-11-02T16:49:57.909Z|00028|acl_log(ovn_pinctrl0)|INFO|name="NP:verify-audit-logging:allow-from-same-namespace:Egress:0", verdict=allow, severity=alert, direction=from-lport: icmp,vlan_tci=0x0000,dl_src=0a:58:0a:81:02:22,dl_dst=0a:58:0a:81:02:23,nw_src=10.129.2.34,nw_dst=10.129.2.35,nw_tos=0,nw_ecn=0,nw_ttl=64,nw_frag=no,icmp_type=8,icmp_code=0 2023-11-02T16:49:57.909Z|00029|acl_log(ovn_pinctrl0)|INFO|name="NP:verify-audit-logging:allow-from-same-namespace:Ingress:0", verdict=allow, severity=alert, direction=to-lport: icmp,vlan_tci=0x0000,dl_src=0a:58:0a:81:02:22,dl_dst=0a:58:0a:81:02:23,nw_src=10.129.2.34,nw_dst=10.129.2.35,nw_tos=0,nw_ecn=0,nw_ttl=64,nw_frag=no,icmp_type=8,icmp_code=0 2023-11-02T16:49:58.932Z|00030|acl_log(ovn_pinctrl0)|INFO|name="NP:verify-audit-logging:allow-from-same-namespace:Egress:0", verdict=allow, severity=alert, direction=from-lport: icmp,vlan_tci=0x0000,dl_src=0a:58:0a:81:02:22,dl_dst=0a:58:0a:81:02:23,nw_src=10.129.2.34,nw_dst=10.129.2.35,nw_tos=0,nw_ecn=0,nw_ttl=64,nw_frag=no,icmp_type=8,icmp_code=0 2023-11-02T16:49:58.932Z|00031|acl_log(ovn_pinctrl0)|INFO|name="NP:verify-audit-logging:allow-from-same-namespace:Ingress:0", verdict=allow, severity=alert, direction=to-lport: icmp,vlan_tci=0x0000,dl_src=0a:58:0a:81:02:22,dl_dst=0a:58:0a:81:02:23,nw_src=10.129.2.34,nw_dst=10.129.2.35,nw_tos=0,nw_ecn=0,nw_ttl=64,nw_frag=no,icmp_type=8,icmp_code=0
6.4.6. 네임스페이스에 대한 송신 방화벽 및 네트워크 정책 감사 로깅 활성화 링크 복사링크가 클립보드에 복사되었습니다!
클러스터 관리자는 네임스페이스에 대한 감사 로깅을 활성화할 수 있습니다.
사전 요구 사항
-
OpenShift CLI(
oc)를 설치합니다. -
cluster-admin권한이 있는 사용자로 클러스터에 로그인합니다.
절차
네임스페이스에 대한 감사 로깅을 활성화하려면 다음 명령을 입력합니다.
$ oc annotate namespace <namespace> \ k8s.ovn.org/acl-logging='{ "deny": "alert", "allow": "notice" }'다음과 같습니다.
<namespace>- 네임스페이스의 이름을 지정합니다.
작은 정보다음 YAML을 적용하여 감사 로깅을 활성화할 수 있습니다.
kind: Namespace apiVersion: v1 metadata: name: <namespace> annotations: k8s.ovn.org/acl-logging: |- { "deny": "alert", "allow": "notice" }출력 예
namespace/verify-audit-logging annotated
검증
감사 로그의 최신 항목을 표시합니다.
$ 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출력 예
2023-11-02T16:49:57.909Z|00028|acl_log(ovn_pinctrl0)|INFO|name="NP:verify-audit-logging:allow-from-same-namespace:Egress:0", verdict=allow, severity=alert, direction=from-lport: icmp,vlan_tci=0x0000,dl_src=0a:58:0a:81:02:22,dl_dst=0a:58:0a:81:02:23,nw_src=10.129.2.34,nw_dst=10.129.2.35,nw_tos=0,nw_ecn=0,nw_ttl=64,nw_frag=no,icmp_type=8,icmp_code=0 2023-11-02T16:49:57.909Z|00029|acl_log(ovn_pinctrl0)|INFO|name="NP:verify-audit-logging:allow-from-same-namespace:Ingress:0", verdict=allow, severity=alert, direction=to-lport: icmp,vlan_tci=0x0000,dl_src=0a:58:0a:81:02:22,dl_dst=0a:58:0a:81:02:23,nw_src=10.129.2.34,nw_dst=10.129.2.35,nw_tos=0,nw_ecn=0,nw_ttl=64,nw_frag=no,icmp_type=8,icmp_code=0 2023-11-02T16:49:58.932Z|00030|acl_log(ovn_pinctrl0)|INFO|name="NP:verify-audit-logging:allow-from-same-namespace:Egress:0", verdict=allow, severity=alert, direction=from-lport: icmp,vlan_tci=0x0000,dl_src=0a:58:0a:81:02:22,dl_dst=0a:58:0a:81:02:23,nw_src=10.129.2.34,nw_dst=10.129.2.35,nw_tos=0,nw_ecn=0,nw_ttl=64,nw_frag=no,icmp_type=8,icmp_code=0 2023-11-02T16:49:58.932Z|00031|acl_log(ovn_pinctrl0)|INFO|name="NP:verify-audit-logging:allow-from-same-namespace:Ingress:0", verdict=allow, severity=alert, direction=to-lport: icmp,vlan_tci=0x0000,dl_src=0a:58:0a:81:02:22,dl_dst=0a:58:0a:81:02:23,nw_src=10.129.2.34,nw_dst=10.129.2.35,nw_tos=0,nw_ecn=0,nw_ttl=64,nw_frag=no,icmp_type=8,icmp_code=0
6.4.7. 네임스페이스에 대한 송신 방화벽 및 네트워크 정책 감사 로깅 비활성화 링크 복사링크가 클립보드에 복사되었습니다!
클러스터 관리자는 네임스페이스에 대한 감사 로깅을 비활성화할 수 있습니다.
사전 요구 사항
-
OpenShift CLI(
oc)를 설치합니다. -
cluster-admin권한이 있는 사용자로 클러스터에 로그인합니다.
프로세스
네임스페이스에 대한 감사 로깅을 비활성화하려면 다음 명령을 입력합니다.
$ oc annotate --overwrite namespace <namespace> k8s.ovn.org/acl-logging-다음과 같습니다.
<namespace>- 네임스페이스의 이름을 지정합니다.
작은 정보다음 YAML을 적용하여 감사 로깅을 비활성화할 수 있습니다.
kind: Namespace apiVersion: v1 metadata: name: <namespace> annotations: k8s.ovn.org/acl-logging: null출력 예
namespace/verify-audit-logging annotated