14.2.3.2. Tang 디스크 암호화 활성화

다음 절차에 따라 OpenShift Container Platform 설치 중에 Tang 모드 디스크 암호화를 활성화합니다.

사전 요구 사항

  • 설치 노드에 OpenShift Container Platform 설치 프로그램이 다운로드되어 있습니다.
  • Tang 교환 키의 지문을 생성하는 데 사용할 수 있는 RHEL (Red Hat Enterprise Linux) 8 시스템에 액세스할 수 있습니다.

프로세스

  1. Tang 서버를 설정하거나 기존 서버에 액세스합니다. 자세한 내용은 Network-bound disk encryption에서 참조하십시오.
  2. 클러스터에 대해 Red Hat Enterprise Linux CoreOS (RHCOS) 설치를 수행할 때 네트워크를 설정하기 위해 커널 인수를 추가합니다. 예를 들어 DHCP 네트워킹을 설정하려면 ip=dhcp를 지정하거나 커널 명령 줄에 매개 변수를 추가할 때 정적 네트워크를 설정합니다. DHCP 및 정적 네트워킹 모두에 대해 rd.neednet = 1 커널 인수도 제공해야 합니다.

    중요

    이 단계를 건너 뛰면 두 번째 부팅이 실패합니다.

  1. 아직 설치되지 않은 경우 RHEL 8 시스템에 clevis 패키지를 설치합니다.

    $ sudo yum install clevis
  1. RHEL 8 시스템에서 다음 명령을 실행하여 교환 키의 지문을 생성합니다. http://tang.example.com:7500을 Tang 서버의 URL로 바꿉니다.

    $ clevis-encrypt-tang '{"url":"http://tang.example.com:7500"}' < /dev/null > /dev/null 1
    1
    이 예에서 tangd.socket은 Tang 서버의 포트 7500에서 수신 대기 중입니다.
    참고

    clevis-encrypt-tang 명령은 이 단계에서 교환 키의 지문을 생성하는 데만 사용됩니다. 이때 데이터가 암호화를 위해 명령에 전달되지 않으므로 /dev/null 은 일반 텍스트 대신 입력으로 제공됩니다. 이 프로세스에 필요하지 않으므로 암호화된 출력은 /dev/null에도 전송됩니다.

    출력 예

    The advertisement contains the following signing keys:
    
    PLjNyRdGw03zlRoGjQYMahSZGu9 1

    1
    교환 키의 지문입니다.

    Do you wish to trust these keys? [ynYN] 프롬프트가 표시되면 Y를 입력합니다.

    참고

    RHEL 8에서는 SHA-1 해시 알고리즘을 사용하여 지문을 생성하는 Clevis 버전 15를 제공합니다. 다른 일부 배포에서는 지문에 SHA-256 해시 알고리즘을 사용하는 Clevis 버전 17 이상을 제공합니다. OpenShift Container Platform 클러스터 노드에 RHCOS(Red Hat Enterprise Linux CoreOS)를 설치할 때 Clevis 바인딩 문제를 방지하려면 SHA-1을 사용하여 지문을 생성하는 Clevis 버전을 사용해야 합니다.

  2. Base64로 인코딩된 파일을 만들고 값을 새로 생성된 Tang 서버 (url) URL 및 지문 (thp)으로 바꿉니다.

    $ (cat <<EOM
    {
     "url": "http://tang.example.com:7500", 1
     "thp": "PLjNyRdGw03zlRoGjQYMahSZGu9" 2
    }
    EOM
    ) | base64 -w0
    1
    Tang 서버의 URL을 지정합니다. 이 예에서 tangd.socket은 Tang 서버의 포트 7500에서 수신 대기 중입니다.
    2
    이전 단계에서 생성된 교환 키 지문을 지정합니다.

    출력 예

    ewogInVybCI6ICJodHRwOi8vdGFuZy5leGFtcGxlLmNvbTo3NTAwIiwgCiAidGhwIjogIlBMak55UmRHdzAzemxSb0dqUVlNYWhTWkd1OSIgCn0K

  3. Kubernetes 매니페스트를 아직 생성하지 않은 경우 설치 노드에 설치 프로그램이 포함된 디렉터리로 변경하고 생성합니다.

    출력 예

    $ ./openshift-install create manifests --dir <installation_directory> 1

    1
    <installation_directory>를 설치 파일을 저장하려는 디렉토리의 경로로 바꿉니다.
  4. Tang 암호화 모드를 사용하여 컨트롤 플레인 또는 컴퓨팅 노드의 부팅 디스크를 암호화하도록 머신 구성 파일을 생성합니다.

    • 컨트롤 플레인 노드에서 암호화를 구성하려면 다음 머신 구성 샘플을 <installation_directory>/openshift 디렉터리의 파일에 저장합니다. 예를 들어 파일 이름을 99-openshift-master-tang-encryption.yaml 로 지정합니다.

      apiVersion: machineconfiguration.openshift.io/v1
      kind: MachineConfig
      metadata:
        name: master-tang
        labels:
          machineconfiguration.openshift.io/role: master
      spec:
        config:
          ignition:
            version: 3.1.0
          storage:
            files:
            - contents:
                source: data:text/plain;base64,e30K
                source: data:text/plain;base64,ewogInVybCI6ICJodHRwOi8vdGFuZy5leGFtcGxlLmNvbTo3NTAwIiwgCiAidGhwIjogIlBMak55UmRHdzAzemxSb0dqUVlNYWhTWkd1OSIgCn0K 1
              mode: 420
              overwrite: true
              path: /etc/clevis.json
        kernelArguments:
          - rd.neednet=1 2
      1
      이전 단계에서 생성된 Base64 인코딩 문자열을 지정합니다.
      2
      rd.neednet=1 커널 인수를 추가하여 initramfs에서 네트워크를 가져옵니다. 이 인수는 필수입니다.
    • 계산 노드에서 암호화를 구성하려면 다음 머신 구성 샘플을 <installation_directory>/openshift 디렉터리의 파일에 저장합니다. 예를 들어 파일 이름을 99-openshift-worker-tang-encryption.yaml 로 지정합니다.

      apiVersion: machineconfiguration.openshift.io/v1
      kind: MachineConfig
      metadata:
        name: worker-tang
        labels:
          machineconfiguration.openshift.io/role: worker
      spec:
        config:
          ignition:
            version: 3.1.0
          storage:
            files:
            - contents:
                source: data:text/plain;base64,e30K
                source: data:text/plain;base64,ewogInVybCI6ICJodHRwOi8vdGFuZy5leGFtcGxlLmNvbTo3NTAwIiwgCiAidGhwIjogIlBMak55UmRHdzAzemxSb0dqUVlNYWhTWkd1OSIgCn0K 1
              mode: 420
              overwrite: true
              path: /etc/clevis.json
        kernelArguments:
          - rd.neednet=1 2
      1
      이전 단계에서 생성된 Base64 인코딩 문자열을 지정합니다.
      2
      rd.neednet=1 커널 인수를 추가하여 initramfs에서 네트워크를 가져옵니다. 이 인수는 필수입니다.
  5. YAML 파일의 백업 사본을 생성합니다. Ignition 구성 파일을 생성할 때 원본 YAML 파일이 사용됩니다.
  6. 나머지 OpenShift Container Platform 설치를 계속합니다.