8.3. Ingress Node Firewall Operator 배포
사전 요구 사항
- Ingress Node Firewall Operator가 설치되어 있습니다.
절차
Ingress Node Firewall Operator를 배포하려면 Operator의 데몬 세트를 배포할 IngressNodeFirewallConfig
사용자 정의 리소스를 생성합니다. 방화벽 규칙을 적용하여 노드에 하나 이상의 IngressNodeFirewall
CRD를 배포할 수 있습니다.
-
ingressnodefirewallconfig
라는openshift-ingress-node-firewall
네임스페이스에IngressNodeFirewallConfig
를 생성합니다. 다음 명령을 실행하여 Ingress Node Firewall Operator 규칙을 배포합니다.
$ oc apply -f rule.yaml
8.3.1. Ingress 노드 방화벽 구성 오브젝트
Ingress 노드 방화벽 구성 오브젝트의 필드는 다음 표에 설명되어 있습니다.
필드 | 유형 | 설명 |
---|---|---|
|
|
CR 오브젝트의 이름입니다. 방화벽 규칙 오브젝트의 이름은 |
|
|
Ingress 방화벽 Operator CR 오브젝트의 네임스페이스입니다. |
|
| 지정된 노드 레이블을 통해 노드를 대상으로 하는 노드 선택 제약 조건입니다. 예를 들면 다음과 같습니다. spec: nodeSelector: node-role.kubernetes.io/worker: "" 참고
데몬 세트를 시작하려면 |
Operator는 CR을 사용하고 nodeSelector
와 일치하는 모든 노드에서 Ingress 노드 방화벽 데몬 세트를 생성합니다.
Ingress Node Firewall Operator 구성 예
전체 Ingress 노드 방화벽 구성은 다음 예에 지정됩니다.
Ingress 노드 방화벽 구성 오브젝트의 예
apiVersion: ingressnodefirewall.openshift.io/v1alpha1 kind: IngressNodeFirewallConfig metadata: name: ingressnodefirewallconfig namespace: openshift-ingress-node-firewall spec: nodeSelector: node-role.kubernetes.io/worker: ""
Operator는 CR을 사용하고 nodeSelector
와 일치하는 모든 노드에서 Ingress 노드 방화벽 데몬 세트를 생성합니다.
8.3.2. Ingress 노드 방화벽 규칙 오브젝트
Ingress 노드 방화벽 규칙 오브젝트의 필드는 다음 표에 설명되어 있습니다.
필드 | 유형 | 설명 |
---|---|---|
|
| CR 오브젝트의 이름입니다. |
|
|
이 오브젝트의 필드는 방화벽 규칙을 적용할 인터페이스를 지정합니다. 예를 들면 |
|
|
|
|
|
|
Ingress 오브젝트 구성
ingress
오브젝트의 값은 다음 표에 정의되어 있습니다.
필드 | 유형 | 설명 |
---|---|---|
|
| CIDR 블록을 설정할 수 있습니다. 다른 주소 제품군에서 여러 CIDR을 구성할 수 있습니다. 참고
다른 CIDR을 사용하면 동일한 순서 규칙을 사용할 수 있습니다. 동일한 노드와 겹치는 CIDR이 있는 인터페이스에 대해 |
|
|
Ingress 방화벽
규칙을 적용하거나 규칙을 참고 Ingress 방화벽 규칙은 잘못된 구성을 차단하는 확인 Webhook를 사용하여 확인합니다. 확인 Webhook를 사용하면 API 서버 또는 SSH와 같은 중요한 클러스터 서비스를 차단할 수 없습니다. |
Ingress 노드 방화벽 규칙 오브젝트의 예
전체 Ingress 노드 방화벽 구성은 다음 예에 지정됩니다.
Ingress 노드 방화벽 구성의 예
apiVersion: ingressnodefirewall.openshift.io/v1alpha1
kind: IngressNodeFirewall
metadata:
name: ingressnodefirewall
spec:
interfaces:
- eth0
nodeSelector:
matchLabels:
<ingress_firewall_label_name>: <label_value> 1
ingress:
- sourceCIDRs:
- 172.16.0.0/12
rules:
- order: 10
protocolConfig:
protocol: ICMP
icmp:
icmpType: 8 #ICMP Echo request
action: Deny
- order: 20
protocolConfig:
protocol: TCP
tcp:
ports: "8000-9000"
action: Deny
- sourceCIDRs:
- fc00:f853:ccd:e793::0/64
rules:
- order: 10
protocolConfig:
protocol: ICMPv6
icmpv6:
icmpType: 128 #ICMPV6 Echo request
action: Deny
- 1
- <label_name> 및 <label_value>는 노드에 있어야 하며
ingressfirewallconfig
CR을 실행할 노드에 적용되는nodeselector
레이블 및 값과 일치해야 합니다. <label_value>는true
또는false
일 수 있습니다.nodeSelector
레이블을 사용하면 별도의 노드 그룹을 대상으로 하여ingressfirewallconfig
CR을 사용하는 데 다른 규칙을 적용할 수 있습니다.
신뢰할 수 있는 Ingress 노드 방화벽 규칙 오브젝트 예
제로 트러스트된 Ingress 노드 방화벽 규칙은 다중 인터페이스 클러스터에 추가 보안을 제공할 수 있습니다. 예를 들어, 제로 트러스트 Ingress 노드 방화벽 규칙을 사용하여 SSH를 제외한 특정 인터페이스의 모든 트래픽을 삭제할 수 있습니다.
제로 신뢰 Ingress 노드 방화벽 규칙 세트의 전체 구성이 다음 예에 지정됩니다.
사용자는 적절한 기능을 보장하기 위해 다음 경우 해당 애플리케이션이 allowlist에 사용하는 모든 포트를 추가해야 합니다.
제로 신뢰 Ingress 노드 방화벽 규칙의 예
apiVersion: ingressnodefirewall.openshift.io/v1alpha1 kind: IngressNodeFirewall metadata: name: ingressnodefirewall-zero-trust spec: interfaces: - eth1 1 nodeSelector: matchLabels: <ingress_firewall_label_name>: <label_value> 2 ingress: - sourceCIDRs: - 0.0.0.0/0 3 rules: - order: 10 protocolConfig: protocol: TCP tcp: ports: 22 action: Allow - order: 20 action: Deny 4