14.2.3.2. Tang ディスク暗号化の有効化

以下の手順を使用して、OpenShift Container Platform のインストール時に Tang モードディスクの暗号化を有効にします。

前提条件

  • インストールノードで OpenShift Container Platform インストールプログラムをダウンロードしている。
  • Tang 交換キーのサムプリントの生成に使用できる Red Hat Enterprise Linux (RHEL) 8 マシンにアクセスできる。

手順

  1. Tang サーバーを設定するか、または既存のサーバーにアクセスします。手順については、NBDE (Network-Bound Disk Encryption) を参照してください。
  2. クラスターについて Red Hat Enterprise Linux CoreOS (RHCOS) インストールを実行する際にネットワークを設定するためにカーネル引数を追加します。たとえば、DHCP ネットワークを設定するには、ip=dhcp を特定するか、またはカーネルコマンドラインにパラメーターを追加する際に静的ネットワークを設定します。DHCP と静的ネットワークの両方の場合、rd.neednet=1 カーネル引数も指定する必要があります。

    重要

    このステップを省略すると、2 番目の起動に失敗します。

  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 want to trust these keys? [ynYN] のプロンプトが表示されたら、Y と入力します 。

    注記

    RHEL 8 には、Clevis バージョン 15 が同梱されており、SHA-1 ハッシュアルゴリズムを使用してサムプリントを生成します。その他のディストリビューションには、Clevis バージョン 17 以降があり、サムプリントに SHA-256 ハッシュアルゴリズムを使用します。サムプリントを作成するために SHA-1 を使用する Clevis バージョンを使用し、OpenShift Container Platform クラスターノードに Red Hat Enterprise Linux CoreOS (RHCOS) のインストール時に 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
    前述のステップで生成された Exchange キーサムプリントを指定します。

    出力例

    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 ファイルのバックアップコピーを作成します。元の YAML ファイルは Ignition 設定ファイルの作成時に使用されます。
  6. 残りの OpenShift Container Platform インストールを継続します。