第20章 Red Hat Gluster Storage でのネットワーク暗号化の設定

ネットワーク暗号化は、データを暗号化形式またはコードに変換して、ネットワークでセキュアに送信できるようにするプロセスです。暗号化により、不必要なデータの使用が阻止されます。
Red Hat Gluster Storage は、TLS/SSL を使用したネットワーク暗号化をサポートします。ネットワークの暗号化が有効な場合には、Red Hat Gluster Storage は認証および承認に TLS/SSL を使用します。非暗号化接続に使用される認証フレームワークの代わりに、Red Hat Gluster Storage は認証および承認に TLS/SSL を使用します。以下の種類の暗号化がサポートされます。
I/O 暗号化
Red Hat Gluster Storage クライアントとサーバーとの間の I/O 接続の暗号化。
管理暗号化
信頼できるストレージプール内の管理 (glusterd) 接続の暗号化、および glusterd と NFS Ganesha または SMB クライアント間の暗号化。
ネットワークの暗号化は、以下のファイルで設定します。
/etc/ssl/glusterfs.pem
システムの一意に署名された TLS 証明書が含まれる証明書ファイル。このファイルはシステムごとに一意で、他のシステムと共有しないでください。
/etc/ssl/glusterfs.key
このファイルには、システムの固有の秘密鍵が含まれます。このファイルは、他のユーザーと共有しないでください。
/etc/ssl/glusterfs.ca
このファイルには、証明書に署名した認証局 (CA) の証明書が含まれます。glusterf.ca ファイルは、信頼できるプール内のすべてのサーバーで同一でなければならないので、すべてのサーバーおよびクライアントの署名 CA の証明書が含まれている必要があります。すべてのクライアントには、すべてのサーバーの署名 CA の証明書が含まれる .ca ファイルも必要です。
Red Hat Gluster Storage は、システムと共に提供されるグローバル CA 証明書を使用しないので、独自の自己署名証明書を作成するか、証明書を作成して認証局が署名する必要があります。自己署名証明書を使用している場合、サーバーの CA ファイルは、すべてのサーバーとすべてのクライアントに関連する .pem ファイルを連結したものです。クライアント CA ファイルは、全サーバーの証明書ファイルを連結したものです。
/var/lib/glusterd/secure-access
このファイルは、管理暗号化に必要です。これにより、全サーバーの glusterd とクライアント間の接続との間の管理 (glusterd) 接続の暗号化が有効になり、認証局が必要とする設定はすべて含まれます。すべてのサーバーの glusterd サービスは、このファイルを使用して volfiles を取得し、クライアントに volfile 変更を通知します。このファイルは、全サーバーに存在し、管理暗号化が適切に機能するにはすべてのクライアントに存在する必要があります。これは空にすることができますが、ほとんどの設定には、認証局で必要な証明書の深さ (transport.socket.ssl-cert-depth) を設定するには少なくとも 1 行必要です。

20.1. 証明書の準備

ネットワークの暗号化を設定するには、各サーバーとクライアントに署名した証明書と秘密鍵が必要です。証明書には 2 つのオプションがあります。
自己署名証明書
証明書の生成と署名
認証局 (CA) 署名付き証明書
証明書を生成し、その証明書に署名するようにリクエストします。
これらのオプションにより、ネットワーク上で送信されたデータにはサードパーティーからアクセスできませんが、認証局が署名した証明書には信頼レベルが追加され、ストレージを使用して顧客に対して検証されます。

手順20.1 自己署名証明書の準備

  1. 各サーバーとクライアントの証明書の生成および署名

    各サーバーおよびクライアントで以下の手順を実行します。
    1. このマシンの秘密鍵を生成する

      # openssl genrsa -out /etc/ssl/glusterfs.key 2048
    2. このマシンの自己署名証明書の生成

      以下のコマンドは、デフォルトの 30 日ではなく、365 日で有効期限が切れる署名済み証明書を生成します。COMMONNAME の代わりにこのマシンの短縮名を指定します。これは通常、ホスト名、FQDN、または IP アドレスです。
      # openssl req -new -x509 -key /etc/ssl/glusterfs.key -subj "/CN=COMMONNAME" -days 365 -out /etc/ssl/glusterfs.pem
  2. クライアント側の認証局一覧の生成

    最初のサーバーから、すべてのサーバーの /etc/ssl/glusterfs.pem ファイルを glusterfs.ca という単一のファイルに連結し、このファイルをすべてのクライアントの /etc/ssl ディレクトリーに置きます。
    たとえば、server1 から以下のコマンドを実行すると、2 つのサーバーの証明書 (.ca ファイル) が含まれる認証局一覧 (.pem ファイル) が作成され、認証局リスト (.ca ファイル) を 3 つのクライアントにコピーします。
    # cat /etc/ssl/glusterfs.pem > /etc/ssl/glusterfs.ca
    # ssh user@server2 cat /etc/ssl/glusterfs.pem >> /etc/ssl/glusterfs.ca
    # scp /etc/ssl/glusterfs.ca client1:/etc/ssl/glusterfs.ca
    # scp /etc/ssl/glusterfs.ca client2:/etc/ssl/glusterfs.ca
    # scp /etc/ssl/glusterfs.ca client3:/etc/ssl/glusterfs.ca
  3. サーバー側の glusterfs.ca ファイルの生成

    最初のサーバーから、すべてのクライアントからの証明書 (/etc/ssl/glusterfs.pem ファイル) を直前の手順で生成した認証局一覧 (/etc/ssl/glusterfs.ca ファイル) の最後に追加します。
    たとえば、server1 で以下のコマンドを実行し、3 つのクライアントの証明書 (.pem ファイル) を server1 の認証局リスト (.ca ファイル) に追加してから、その認証局リスト (.ca ファイル) を他のサーバーにコピーします。
    # ssh user@client1 cat /etc/ssl/glusterfs.pem >> /etc/ssl/glusterfs.ca
    # ssh user@client2 cat /etc/ssl/glusterfs.pem >> /etc/ssl/glusterfs.ca
    # ssh user@client3 cat /etc/ssl/glusterfs.pem >> /etc/ssl/glusterfs.ca
    # scp /etc/ssl/glusterfs.ca server2:/etc/ssl/glusterfs.ca
  4. サーバー証明書の確認

    サーバーの /etc/ssl ディレクトリーで以下のコマンドを実行し、認証局の一覧に対してそのマシンの証明書を確認します。
    # openssl verify -verbose -CAfile glusterfs.ca glusterfs.pem
    このコマンドの出力が glusterfs.pem: OK の場合は、証明書が正しいこと。
    注記
    このプロセスは、自己署名のクライアント証明書には有効ではありません。

手順20.2 一般的な認証局証明書の準備

承認する各サーバーとクライアントで以下の手順を実行します。
  1. 秘密鍵の生成

    # openssl genrsa -out /etc/ssl/glusterfs.key 2048
  2. 証明書の署名リクエストを生成します。

    以下のコマンドは、デフォルトの 30 日ではなく、365 日で期限切れになる証明書の証明書署名要求を生成します。COMMONNAME の代わりにこのマシンの短縮名を指定します。これは通常、ホスト名、FQDN、または IP アドレスです。
    # openssl req -new -sha256 -key /etc/ssl/glusterfs.key -subj '/CN=<COMMONNAME>' -days 365 -out glusterfs.csr
  3. 生成された glusterfs.csr ファイルを認証局に送信します。

    認証局は、このマシンの署名済み証明書を a .pem ファイル形式で、および a .ca ファイル形式で認証局の証明書を提供します。
  4. 認証局が提供する .pem ファイルを配置する。

    .pem ファイルが glusterfs.pem と呼ばれていることを確認します。このサーバーの /etc/ssl ディレクトリーにこのファイルを置きます。
  5. 認証局が提供する .ca ファイルを配置する

    .ca ファイルが glusterfs.ca という名前であることを確認します。すべてのサーバーの /etc/ssl ディレクトリーに .ca ファイルを配置します。
  6. 証明書の確認

    すべてのクライアントおよびサーバーの /etc/ssl ディレクトリーで以下のコマンドを実行し、認証局の一覧に対してそのマシンの証明書を確認します。
    # openssl verify -verbose -CAfile glusterfs.ca glusterfs.pem
    このコマンドの出力が glusterfs.pem: OK の場合は、証明書が正しいこと。