9.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
9.3.1. Ingress 노드 방화벽 구성 오브젝트
Ingress 노드 방화벽 구성 오브젝트의 필드는 다음 표에 설명되어 있습니다.
필드 | 유형 | 설명 |
---|---|---|
|
|
CR 오브젝트의 이름입니다. 방화벽 규칙 오브젝트의 이름은 |
|
|
Ingress Firewall 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 노드 방화벽 데몬 세트를 생성합니다.
9.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 노드 방화벽 규칙 세트의 전체 구성이 지정됩니다.
사용자는 적절한 기능을 보장하기 위해 애플리케이션이 허용 목록에 사용하는 모든 포트를 추가해야 합니다.
제로 트러스트 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