BeeGFS 8 の TLS 暗号化を設定する
BeeGFS 8の管理サービスとクライアント間の通信を保護するために、TLS暗号化を設定します。
概要
BeeGFS 8 では、管理ツール( `beegfs`コマンドラインユーティリティなど)と Management や Remote などの BeeGFS サーバーサービス間のネットワーク通信を暗号化するための TLS サポートが導入されています。BeeGFS クラスターで TLS 暗号化を設定するには、次の 3 つの方法のいずれかを使用します:
-
信頼できる認証局を使用する: BeeGFS クラスターで既存の CA 署名付き証明書を使用します。
-
ローカル Certificate Authority の作成: ローカル Certificate Authority を作成し、それを使用して BeeGFS サービスの証明書に署名します。この方法は、外部の CA に頼らずに独自の信頼チェーンを管理したい環境に適しています。
-
TLS 無効: 暗号化が不要な環境やトラブルシューティングのために、TLS を完全に無効にします。このオプションは、ファイルシステムの構造や構成に関する機密情報を平文で公開してしまう可能性があるため、本番環境では避けてください。
環境と組織のポリシーに最適な方法を選択してください。詳細については、"BeeGFS TLS"ドキュメントを参照してください。
|
|
`beegfs-client`サービスを実行しているクライアントは、BeeGFSファイルシステムをマウントするためにTLSを必要としません。BeeGFS CLIおよびRemoteやSyncなどのその他のBeeGFSサービスを使用するには、TLSが必要です。 |
信頼できる証明機関の使用
信頼できる認証局(CA)が発行した証明書(社内のエンタープライズCAまたはサードパーティプロバイダーの証明書)にアクセスできる場合は、自己署名証明書を生成する代わりに、これらのCA署名付き証明書を使用するようにBeeGFS 8を設定できます。
新しいBeeGFS 8クラスタの導入
新しい BeeGFS 8 クラスタの導入では、Ansible インベントリの `user_defined_params.yml`ファイルを設定して、CA 署名付き証明書を参照します:
beegfs_ha_tls_enabled: true
beegfs_ha_ca_cert_src_path: files/beegfs/cert/ca_cert.pem
beegfs_ha_tls_cert_src_path: files/beegfs/cert/mgmtd_tls_cert.pem
beegfs_ha_tls_key_src_path: files/beegfs/cert/mgmtd_tls_key.pem
|
|
`beegfs_ha_tls_config_options.alt_names`が空でない場合、Ansibleは指定されたalt_namesを証明書のサブジェクト別名(SAN)として使用し、自己署名TLS証明書と鍵を自動的に生成します。 `beegfs_ha_tls_cert_src_path`および `beegfs_ha_tls_key_src_path`で指定された独自のカスタムTLS証明書と鍵を使用するには、 `beegfs_ha_tls_config_options`セクション全体をコメントアウトするか削除する必要があります。そうしないと、自己署名証明書の生成が優先され、カスタム証明書と鍵は使用されません。 |
既存のBeeGFS 8クラスタの設定
既存のBeeGFS 8クラスタの場合、BeeGFS管理サービスの構成ファイル内のパスを、ファイルノードのCA署名付き証明書に設定します:
tls-cert-file = /path/to/cert.pem
tls-key-file = /path/to/key.pem
CA署名付き証明書を使用したBeeGFS 8クライアントの設定
|
|
既存の BeeGFS 7 クラスターを BeeGFS 8 にアップグレードする場合は、"BeeGFS 8にアップグレード"の手順に従ってください。アップグレード手順で指示されるまで、クライアント TLS を設定しないでください。 |
BeeGFS 8 クライアントがシステムの証明書プールを使用して CA 署名付き証明書を信頼するように構成するには、各クライアントの構成で tls-cert-file = "" を設定します。システム証明書プールが使用されていない場合は、tls-cert-file = <local cert>を設定してローカル証明書へのパスを指定します。この設定により、クライアントはBeeGFS管理サービスから提示された証明書を認証できるようになります。
ローカル認証局の作成
BeeGFSクラスタ用に独自の証明書インフラストラクチャを構築する場合は、ローカル証明機関(CA)を作成して、BeeGFSクラスタ用の証明書の発行と署名を行うことができます。このアプローチでは、BeeGFS管理サービスの証明書に署名するCAを作成し、署名された証明書をクライアントに配布して信頼チェーンを確立します。
新しいBeeGFS 8クラスタの導入
新しい BeeGFS 8 の展開では、 beegfs_8 Ansible ロール(BeeGFS HA コレクションに含まれています)は、制御ノード上にローカル CA を作成し、管理サービスに必要な証明書を生成します。Ansible インベントリの `user_defined_params.yml`ファイルで以下のパラメータを設定することで、これを有効にできます:
beegfs_ha_tls_enabled: true
beegfs_ha_ca_cert_src_path: files/beegfs/cert/local_ca_cert.pem
beegfs_ha_tls_cert_src_path: files/beegfs/cert/mgmtd_tls_cert.pem
beegfs_ha_tls_key_src_path: files/beegfs/cert/mgmtd_tls_key.pem
beegfs_ha_tls_config_options:
alt_names: [<mgmt_service_ip>]
|
|
`beegfs_ha_tls_config_options.alt_names`が指定されていない場合、Ansibleは指定された証明書/キーパス内の既存の証明書の使用を試みます。 |
既存のBeeGFS 8クラスタの設定
既存のBeeGFSクラスタでは、ローカル証明機関を作成し、管理サービスに必要な証明書を生成することでTLSを統合できます。BeeGFS管理サービスの設定ファイル内のパスを、新しく作成した証明書を指すように更新してください。
|
|
これらの手順を参考にしてください。秘密鍵や証明書を取り扱う際は、適切なセキュリティ対策を講じてください。 |
認証局を作成する
信頼できるマシンに、BeeGFS管理サービスの証明書に署名するためのローカル証明機関(CA)を作成します。CA証明書はクライアントに配布され、信頼関係を確立し、BeeGFSサービスとの安全な通信を可能にします。
次の手順は、RHEL ベースのシステムでローカル認証局を作成するためのリファレンスです。
-
OpenSSL がまだインストールされていない場合はインストールします:
dnf install openssl -
証明書ファイルを保存するための作業ディレクトリを作成します:
mkdir -p ~/beegfs_tls && cd ~/beegfs_tls -
CA 秘密キーを生成します:
openssl genrsa -out ca_key.pem 4096 -
`ca.cnf`という名前の CA 構成ファイルを作成し、識別名フィールドを組織に合わせて調整します:
[ req ] default_bits = 4096 distinguished_name = req_distinguished_name x509_extensions = v3_ca prompt = no [ req_distinguished_name ] C = <Country> ST = <State> L = <City> O = <Organization> OU = <OrganizationalUnit> CN = BeeGFS-CA [ v3_ca ] basicConstraints = critical,CA:TRUE subjectKeyIdentifier = hash authorityKeyIdentifier = keyid:always,issuer:always -
CA証明書を生成します。この証明書は、システムの稼働期間中有効である必要があります。証明書の有効期限が切れる前に、再発行する計画を立ててください。証明書の有効期限が切れると、一部のコンポーネント間の通信が失敗します。TLS証明書を更新するには、通常、サービスの再起動が必要です。
次のコマンドは、1 年間有効な CA 証明書を生成します:
openssl req -new -x509 -key ca_key.pem -out ca_cert.pem -days 365 -config ca.cnfこの例では、簡潔にするために 1 年間の有効期間を使用していますが、組織のセキュリティ要件に応じて `-days`パラメータを調整し、証明書の更新プロセスを確立する必要があります。
管理サービス証明書を作成する
BeeGFS管理サービス用の証明書を生成し、作成したCAで署名します。これらの証明書は、BeeGFS管理サービスを実行するファイルノードにインストールされます。
-
管理サービスの秘密キーを生成します:
openssl genrsa -out mgmtd_tls_key.pem 4096 -
`tls_san.cnf`という名前の証明書構成ファイルを作成し、すべての管理サービス IP アドレスに対してサブジェクト別名(SAN)を設定します:
[ req ] default_bits = 4096 distinguished_name = req_distinguished_name req_extensions = req_ext prompt = no [ req_distinguished_name ] C = <Country> ST = <State> L = <City> O = <Organization> OU = <OrganizationalUnit> CN = beegfs-mgmt [ req_ext ] subjectAltName = @alt_names [ v3_ca ] subjectAltName = @alt_names basicConstraints = CA:FALSE [ alt_names ] IP.1 = <beegfs_mgmt_service_ip_1> IP.2 = <beegfs_mgmt_service_ip_2>CA 構成に一致するように識別名フィールドを更新し、 `IP.1`と `IP.2`の値を管理サービスの IP アドレスに置き換えます。
-
証明書署名要求(CSR)を生成します:
openssl req -new -key mgmtd_tls_key.pem -out mgmtd_tls_csr.pem -config tls_san.cnf -
CA を使用して証明書に署名します(有効期間 1 年):
openssl x509 -req -in mgmtd_tls_csr.pem -CA ca_cert.pem -CAkey ca_key.pem -CAcreateserial -out mgmtd_tls_cert.pem -days 365 -sha256 -extensions v3_ca -extfile tls_san.cnf組織のセキュリティポリシーに基づいて証明書の有効期間(`-days 365`を調整してください。多くの組織では、1~2年ごとに証明書のローテーションが必要です。 -
証明書が正しく作成されたことを確認します:
openssl x509 -in mgmtd_tls_cert.pem -text -nooutSubject Alternative Name セクションにすべての管理 IP アドレスが含まれていることを確認します。
ファイルノードに証明書を配布する
CA 証明書と管理サービス証明書を適切なファイル ノードとクライアントに配布します。
-
CA 証明書と管理サービス証明書およびキーを管理サービスを実行しているファイル ノードにコピーします:
scp ca_cert.pem mgmtd_tls_cert.pem mgmtd_tls_key.pem user@beegfs_01:/etc/beegfs/ scp ca_cert.pem mgmtd_tls_cert.pem mgmtd_tls_key.pem user@beegfs_02:/etc/beegfs/
管理サービスをTLS証明書に指定する
BeeGFS 管理サービスの構成を更新して TLS を有効にし、作成された TLS 証明書を参照します。
-
BeeGFS 管理サービスを実行しているファイルノードから、管理サービス構成ファイル(例:
/mnt/mgmt_tgt_mgmt01/mgmt_config/beegfs-mgmtd.toml)を編集します。次の TLS 関連パラメータを追加または更新します:tls-disable = false tls-cert-file = "/etc/beegfs/mgmtd_tls_cert.pem" tls-key-file = "/etc/beegfs/mgmtd_tls_key.pem" -
BeeGFS管理サービスを再起動します。
systemctl restart beegfs-mgmtd -
管理サービスが正常に開始されたことを確認します:
journalctl -xeu beegfs-mgmtdTLS の初期化と証明書の読み込みが成功したことを示すログエントリを探します。
Successfully initialized certificate verification library. Successfully loaded license certificate: TMP-XXXXXXXXXX
BeeGFS 8クライアント向けにTLSを設定する
|
|
既存の BeeGFS 7 クラスターを BeeGFS 8 にアップグレードする場合は、"BeeGFS 8にアップグレード"の手順に従ってください。アップグレード手順で指示されるまで、クライアント TLS を設定しないでください。 |
BeeGFS管理サービスとの通信を必要とするすべてのBeeGFSクライアントに対し、ローカルCAによって署名された証明書を作成し、配布する。
-
[create-management-service-certificates]に記載されているのと同じプロセスを使用してクライアント証明書を生成し、Subject Alternative Name(SAN)フィールドにクライアントのIPアドレスまたはホスト名を代入します。
-
クライアント証明書をクライアントノードにコピーして、名前を `cert.pem`に変更します:
scp client_cert.pem user@client:/etc/beegfs/cert.pem -
すべてのクライアントで BeeGFS クライアント サービスを再起動します:
systemctl restart beegfs-client -
BeeGFS CLIコマンドを実行して、クライアントの接続性を確認します。次に例を示します。
beegfs health check
TLSの無効化
トラブルシューティングのため、または環境で暗号化が不要な場合は、TLSを無効にしてください。このオプションは、ファイルシステムの構造や構成に関する機密情報を平文で公開してしまう可能性があるため、本番環境では避けてください。
新しいBeeGFS 8クラスタの導入
新しい BeeGFS クラスターのデプロイでは、Ansible インベントリの `user_defined_params.yml`ファイルで次のパラメータを設定して TLS を無効にします:
beegfs_ha_tls_enabled: false
既存のBeeGFS 8クラスタの設定
既存のBeeGFS 8クラスターの場合は、管理サービス構成ファイルを編集してください。例えば、以下のファイルを編集します。 `/mnt/mgmt_tgt_mgmt01/mgmt_config/beegfs-mgmtd.toml`そして設定します:
tls-disable = true
変更を有効にするには、管理サービスを再起動してください。