26.11. IPsec 암호화 구성


IPsec을 활성화하면 클러스터 외부의 Pod와 IPsec 끝점 간의 내부 pod-to-pod 클러스터 트래픽을 모두 암호화할 수 있습니다. OVN-Kubernetes 클러스터 네트워크의 노드 간 모든 pod-to-pod 네트워크 트래픽은 IPsec 전송 모드로 암호화됩니다.

IPsec은 기본적으로 비활성화되어 있습니다. 클러스터를 설치하는 동안 또는 클러스터를 설치한 후 활성화할 수 있습니다. 클러스터 설치에 대한 자세한 내용은 OpenShift Container Platform 설치 개요 를 참조하십시오. 클러스터 설치 후 IPsec을 활성화해야 하는 경우 먼저 IPsec ESP IP 헤더의 오버헤드를 고려하여 클러스터 MTU의 크기를 조정해야 합니다.

참고

IBM Cloud®의 IPsec은 NAT-T만 지원합니다. ESP 사용은 지원되지 않습니다.

다음 문서의 절차를 사용하여 다음을 수행합니다.

  • 클러스터 설치 후 IPSec 활성화 및 비활성화
  • 클러스터 외부의 외부 IPsec 끝점에 대한 지원 구성
  • IPsec이 다른 노드의 Pod 간 트래픽을 암호화하는지 확인합니다.

26.11.1. 사전 요구 사항

26.11.2. IPsec이 활성화된 경우 네트워크 연결 요구 사항

OpenShift Container Platform 클러스터 구성 요소가 통신할 수 있도록 시스템 간 네트워크 연결을 구성해야 합니다. 각 시스템에서 클러스터에 있는 다른 모든 시스템의 호스트 이름을 확인할 수 있어야 합니다.

표 26.12. 모든 시스템 간 통신에 사용되는 포트
프로토콜포트설명

UDP

500

IPsec IKE 패킷

4500

IPsec NAT-T 패킷

ESP

해당 없음

IPsec Encapsulating Security Payload (ESP)

26.11.3. pod-to-pod 트래픽에 대한 IPsec 암호화

OpenShift Container Platform은 Pod 간 네트워크 트래픽에 대한 IPsec 암호화를 지원합니다.

26.11.3.1. pod-to-pod IPsec으로 암호화된 네트워크 트래픽 흐름 유형

IPsec을 활성화하면 포드 간 다음 네트워크 트래픽 흐름만 암호화됩니다.

  • 클러스터 네트워크의 서로 다른 노드에 있는 pod 간 트래픽
  • 호스트 네트워크의 포드에서 클러스터 네트워크의 포드로의 트래픽

다음 트래픽 흐름은 암호화되지 않습니다.

  • 클러스터 네트워크의 동일한 노드에 있는 pod 간 트래픽
  • 호스트 네트워크의 포드 간 트래픽
  • 클러스터 네트워크의 포드에서 호스트 네트워크 포드로의 트래픽

암호화되거나 암호화되지 않은 흐름은 다음 다이어그램에 설명되어 있습니다.

IPsec 암호화 및 암호화되지 않은 트래픽 흐름

26.11.3.2. 암호화 프로토콜 및 IPsec 모드

사용된 암호화 암호는 AES-GCM-16-256입니다. 무결성 검사 값(ICV)은 16바이트입니다. 키 길이는 256비트입니다.

사용된 IPsec 모드는 전송 모드입니다. 즉, ESP(Encapsulated Security Payload) 헤더를 원래 패킷의 IP 헤더에 추가하고 패킷 데이터를 암호화하여 엔드 투 엔드 통신을 암호화하는 모드입니다. OpenShift Container Platform은 현재 pod-to-pod 통신에 IPsec tunnel 모드를 사용하거나 지원하지 않습니다.

26.11.3.3. 보안 인증서 생성 및 교체

CNO(Cluster Network Operator)는 암호화에 IPsec에서 사용하는 자체 서명된 X.509 인증 기관(CA)을 생성합니다. 각 노드의 CSR(인증서 서명 요청)은 CNO에서 자동으로 충족됩니다.

CA는 10년 동안 유효합니다. 개별 노드 인증서는 5년간 유효하며 4년 6개월 경과 후 자동으로 교체됩니다.

26.11.3.4. pod-to-pod IPsec 암호화 활성화

클러스터 관리자는 클러스터 설치 후 pod-to-pod IPsec 암호화를 활성화할 수 있습니다.

사전 요구 사항

  • OpenShift CLI(oc)를 설치합니다.
  • cluster-admin 권한이 있는 사용자로 클러스터에 로그인합니다.
  • IPsec ESP 헤더의 오버헤드를 허용하도록 클러스터 MTU의 크기를 46 바이트 감소했습니다.

프로세스

  • IPsec 암호화를 활성화하려면 다음 명령을 입력합니다.

    $ oc patch networks.operator.openshift.io cluster --type=merge \
    -p '{"spec":{"defaultNetwork":{"ovnKubernetesConfig":{"ipsecConfig":{ }}}}}'

검증

  1. OVN-Kubernetes 데이터 플레인 Pod의 이름을 찾으려면 다음 명령을 입력합니다.

    $ oc get pods -n openshift-ovn-kubernetes -l=app=ovnkube-node

    출력 예

    ovnkube-node-5xqbf                       8/8     Running   0              28m
    ovnkube-node-6mwcx                       8/8     Running   0              29m
    ovnkube-node-ck5fr                       8/8     Running   0              31m
    ovnkube-node-fr4ld                       8/8     Running   0              26m
    ovnkube-node-wgs4l                       8/8     Running   0              33m
    ovnkube-node-zfvcl                       8/8     Running   0              34m

  2. 다음 명령을 실행하여 클러스터에서 IPsec이 활성화되어 있는지 확인합니다.

    $ oc -n openshift-ovn-kubernetes rsh ovnkube-node-<XXXXX> ovn-nbctl --no-leader-only get nb_global . ipsec

    다음과 같습니다.

    <XXXXX>
    이전 단계에서 Pod의 임의의 문자 시퀀스를 지정합니다.

    출력 예

    true

26.11.3.5. IPsec 암호화 비활성화

클러스터 관리자는 클러스터 설치 후 IPsec을 활성화한 경우에만 IPsec 암호화를 비활성화할 수 있습니다.

참고

클러스터를 설치할 때 IPsec을 활성화하면 이 절차를 사용하여 IPsec을 비활성화할 수 없습니다.

사전 요구 사항

  • OpenShift CLI(oc)를 설치합니다.
  • cluster-admin 권한이 있는 사용자로 클러스터에 로그인합니다.

프로세스

  1. IPsec 암호화를 비활성화하려면 다음 명령을 입력합니다.

    $ oc patch networks.operator.openshift.io/cluster --type=json \
      -p='[{"op":"remove", "path":"/spec/defaultNetwork/ovnKubernetesConfig/ipsecConfig"}]'
  2. 선택 사항: IP 패킷의 IPsec ESP 헤더에서 오버헤드가 더 이상 없으므로 클러스터 MTU 크기를 46 바이트까지 늘릴 수 있습니다.

26.11.4. 외부 트래픽에 대한 IPsec 암호화

OpenShift Container Platform은 외부 호스트로의 트래픽에 대해 IPsec 암호화를 지원합니다.

IPsec 구성 파일 자체 및 TLS 인증서를 포함하는 사용자 지정 IPsec 구성을 제공해야 합니다.

다음과 같은 금지 사항이 있는지 확인합니다.

  • 사용자 지정 IPsec 구성에는 클러스터의 pod-to-pod IPsec 구성을 방해할 수 있는 연결 사양이 포함되어서는 안 됩니다.
  • 인증서 번들에 있는 인증서 일반 이름(CN)은 각 노드의 NSS(Network Security Services) 데이터베이스에서 pod-to-pod IPsec CN 이름과 충돌할 수 있으므로 ovs_ 접두사로 시작하지 않아야 합니다.
중요

외부 엔드 포인트에 대한 IPsec 지원은 기술 프리뷰 기능 전용입니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.

Red Hat 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 기술 프리뷰 기능 지원 범위를 참조하십시오.

26.11.4.1. 외부 IPsec 끝점에 IPsec 암호화 활성화

클러스터 관리자는 클러스터와 외부 IPsec 끝점 간에 IPsec 암호화를 활성화할 수 있습니다. 이 절차에서는 Butane을 사용하여 머신 구성을 생성하므로 butane 명령이 설치되어 있어야 합니다.

참고

머신 구성을 적용한 후 Machine Config Operator가 클러스터의 영향을 받는 노드를 재부팅하여 새 머신 구성을 롤아웃합니다.

사전 요구 사항

  • OpenShift CLI(oc)를 설치합니다.
  • cluster-admin 권한이 있는 사용자로 클러스터에 로그인합니다.
  • IPsec ESP 헤더의 오버헤드를 허용하도록 클러스터 MTU의 크기를 46 바이트 감소했습니다.
  • butane 유틸리티가 설치되어 있습니다.
  • IPsec 끝점에 대한 기존 PKCS#12 인증서와 PEM 형식의 CA 인증서가 있습니다.

프로세스

클러스터 관리자는 외부 IPsec 엔드포인트에 대한 IPsec 지원을 활성화할 수 있습니다.

  1. ipsec-endpoint-config.conf 라는 IPsec 구성 파일을 만듭니다. 다음 단계에서 구성이 사용됩니다. 자세한 내용은 IPsec VPN 구현으로 Libreswan을 참조하십시오.
  2. 각 호스트의 NSS(Network Security Services) 데이터베이스에 추가할 다음 인증서 파일을 제공합니다. 이러한 파일은 후속 단계에서 Butane 구성의 일부로 가져옵니다.

    • left_server.p12: IPsec 엔드포인트의 인증서 번들
    • ca.pem: 인증서에 서명한 인증 기관
  3. 다음 두 단계를 사용하여 IPsec 구성을 클러스터에 적용할 머신 구성을 생성합니다.

    1. IPsec 구성을 추가하려면 다음 콘텐츠를 사용하여 컨트롤 플레인 및 작업자 노드에 대한 Butane 구성 파일을 생성합니다.

      $ for role in master worker; do
        cat >> "99-ipsec-${role}-endpoint-config.bu" <<-EOF
        variant: openshift
        version: 4.14.0
        metadata:
          name: 99-${role}-import-certs-enable-svc-os-ext
          labels:
            machineconfiguration.openshift.io/role: $role
        openshift:
          extensions:
            - ipsec
        systemd:
          units:
          - name: ipsec-import.service
            enabled: true
            contents: |
              [Unit]
              Description=Import external certs into ipsec NSS
              Before=ipsec.service
      
              [Service]
              Type=oneshot
              ExecStart=/usr/local/bin/ipsec-addcert.sh
              RemainAfterExit=false
              StandardOutput=journal
      
              [Install]
              WantedBy=multi-user.target
          - name: ipsecenabler.service
            enabled: true
            contents: |
              [Service]
              Type=oneshot
              ExecStart=systemctl enable --now ipsec.service
      
              [Install]
              WantedBy=multi-user.target
        storage:
          files:
          - path: /etc/ipsec.d/ipsec-endpoint-config.conf
            mode: 0400
            overwrite: true
            contents:
              local: ipsec-endpoint-config.conf
          - path: /etc/pki/certs/ca.pem
            mode: 0400
            overwrite: true
            contents:
              local: ca.pem
          - path: /etc/pki/certs/left_server.p12
            mode: 0400
            overwrite: true
            contents:
              local: left_server.p12
          - path: /usr/local/bin/ipsec-addcert.sh
            mode: 0740
            overwrite: true
            contents:
              inline: |
                #!/bin/bash -e
                echo "importing cert to NSS"
                certutil -A -n "CA" -t "CT,C,C" -d /var/lib/ipsec/nss/ -i /etc/pki/certs/ca.pem
                pk12util -W "" -i /etc/pki/certs/left_server.p12 -d /var/lib/ipsec/nss/
                certutil -M -n "left_server" -t "u,u,u" -d /var/lib/ipsec/nss/
      EOF
      done
    2. 이전 단계에서 생성한 Butane 파일을 머신 구성으로 변환하려면 다음 명령을 입력합니다.

      $ for role in master worker; do
        butane 99-ipsec-${role}-endpoint-config.bu -o ./99-ipsec-$role-endpoint-config.yaml
      done
  4. 머신 구성을 클러스터에 적용하려면 다음 명령을 입력합니다.

    $ for role in master worker; do
      oc apply -f 99-ipsec-${role}-endpoint-config.yaml
    done
    중요

    MCO(Machine Config Operator)는 각 머신 구성 풀에서 머신을 업데이트하므로 각 노드를 하나씩 재부팅합니다. 외부 IPsec 연결을 사용할 수 있으려면 모든 노드가 업데이트될 때까지 기다려야 합니다.

  5. 다음 명령을 입력하여 머신 구성 풀 상태를 확인합니다.

    $ oc get mcp

    업데이트된 노드의 상태가 UPDATED=true, UPDATING=false,DEGRADED=false입니다.

    참고

    기본적으로 MCO는 풀당 한 번에 하나의 시스템을 업데이트하므로 클러스터 크기에 따라 마이그레이션에 걸리는 총 시간이 증가합니다.

26.11.5. 추가 리소스

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.