Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

4.10.3. SELinux を Enforcing モードで有効にした Tang サーバーのデプロイメント

Red Hat Enterprise Linux 7.7 以降は SELinux タイプ tangd_port_t を提供し、Tang サーバーを SELinux Enforcing モードで制限のあるサービスとしてデプロイできます。

前提条件

  • policycoreutils-python-utils パッケージとその依存関係がインストールされている。

Procedure

  1. tang パッケージとその依存関係をインストールするには、root で以下のコマンドを実行します。
    ~]# yum install tang
  2. 7500/tcp などの不要なポートを選択し、tangd サービスがそのポートにバインドできるようにします。
    ~]# semanage port -a -t tangd_port_t -p tcp 7500
    ポートは 1 つのサービスのみで一度に使用できるため、すでに使用しているポートを使用しようとすると、ValueError: Port already defined エラーが発生します。
  3. ファイアウォールのポートを開きます。
    ~]# firewall-cmd --add-port=7500/tcp
    ~]# firewall-cmd --runtime-to-permanent
  4. systemd を使用して tangd サービスを有効にします。
    ~]# systemctl enable tangd.socket
    Created symlink from /etc/systemd/system/multi-user.target.wants/tangd.socket to /usr/lib/systemd/system/tangd.socket.
  5. オーバーライドファイルを作成します。
    ~]# systemctl edit tangd.socket
  6. 以下のエディター画面で、/etc/systemd/system/tangd.socket.d/ ディレクトリーにある空の override.conf ファイルを開き、次の行を追加して、Tang サーバーのデフォルトのポートを、80 から、以前取得した番号に変更します。
    [Socket]
    ListenStream=
    ListenStream=7500
    ファイルを保存して、エディターを終了します。
  7. 変更した設定を再読み込みし、tangd サービスを起動します。
    ~]# systemctl daemon-reload
  8. 設定が機能していることを確認します。
    ~]# systemctl show tangd.socket -p Listen
    Listen=[::]:7500 (Stream)
  9. tangd サービスを起動します。
    ~]# systemctl start tangd.socket
tangdsystemd ソケットアクティベーションメカニズムを使用しているため、最初の接続が入るとすぐにサーバーが起動します。最初の起動時に、一組の暗号鍵が自動的に生成されます。
鍵の手動生成などの暗号化操作を実行するには、jose ユーティリティーを使用します。詳細は、jose -h コマンドを入力するか、man ページのjose(1) を参照してください。

例4.4 Tang 鍵のローテーション

鍵を定期的に変更することが重要です。鍵を変更するのに適した間隔は、アプリケーション、鍵サイズ、および組織のポリシーにより異なります。一般的な推奨事項は「Cryptographic Key Length Recommendation 」ページを参照してください。
鍵をローテートするには、鍵データベースディレクトリー(通常は /var/db/tang )に新しい鍵を生成します。たとえば、以下のコマンドを使用して、新しい署名を作成し、鍵を交換します。
~]# DB=/var/db/tang
~]# jose jwk gen -i '{"alg":"ES512"}' -o $DB/new_sig.jwk
~]# jose jwk gen -i '{"alg":"ECMR"}' -o $DB/new_exc.jwk
アドバタイズメントから見えなくなるように、古い鍵の名前の先頭に . を付けます。以下の例のファイル名は、鍵データベースディレクトリーに実在する固有のファイル名とは異なります。
~]# mv $DB/old_sig.jwk $DB/.old_sig.jwk
~]# mv $DB/old_exc.jwk $DB/.old_exc.jwk
Tang は、直ちにすべての変更を適用します。再起動は必要ありません。
この時点で、新しいクライアントバインディングは新しい鍵を選択し、以前のクライアントは古い鍵を使用し続けます。すべてのクライアントが新しい鍵を使用することを確認すると、古い鍵を削除できます。
警告
クライアントが使用している最中に古い鍵を削除すると、データが失われる場合があります。

4.10.3.1. 高可用性システムのデプロイメント

Tang は、高可用性デプロイメントを構築する方法を 2 つ提供します。
  1. クライアント冗長性(推奨)
    クライアントは、複数の Tang サーバーにバインドする機能を使用して設定する必要があります。この設定では、各 Tang サーバーに独自の鍵があり、クライアントは、このサーバーのサブセットに問い合わせて復号化できます。Clevis はすでに、sss プラグインを使用してこのワークフローに対応しています。
    この設定に関する詳細情報は、以下の man ページを参照してください。
    • tang(8) の High Availability セクション
    • clevis(1) の Shamir's Secret Sharing セクション
    • clevis-encrypt-sss(1)
    Red Hat は、高可用性のデプロイメントにこの方法を推奨します。
  2. 鍵共有
    冗長性を確保するために、Tang のインスタンスは複数デプロイできます。2 番目またはそれ以降のインスタンスを設定するには、tang パッケージをインストールし、SSH 経由で rsync を使用してキーディレクトリーを新規ホストにコピーします。鍵を共有すると鍵への不正アクセスのリスクが高まり、追加の自動化インフラストラクチャーが必要になるため、Red Hat はこの方法を推奨していません。

このページには機械翻訳が使用されている場合があります (詳細はこちら)。