ゾーンファイル共有のトランジット暗号化の確立

IPsecセキュリティプロトコルと X.509 証明書を使用して、ゾーン内のファイル共有に対して暗号化されたマウント接続を確立し、エンドツーエンドのデータ暗号化によるセキュリティを確保します。

IPsecは、機器間の暗号化された接続を設定するプロトコルのグループである。 公共ネットワーク上で送信されるデータの安全性を保つのに役立つ。 IPsecはIPパケットを暗号化し、パケットの送信元を認証する。 仮想サーバーインスタンスにIPsecを設定するには、オープンソースのIPsecベースのVPNソリューションである strongSwanを使用することができます。 strongSwan 仕組みの詳細については、 strongSwanIPsec プロトコルの概要」も参照してください。

IPsec接続には、認証用に X.509 証明書が必要です。 X.509 公開鍵証明書の国際標準フォーマットであり、暗号鍵ペアをウェブサイト、個人、組織などの ID と安全に関連付けるデジタル文書である。 メタデータ・サービスは、証明書の作成に使用される。

証明書署名要求(CSR)は、ユーザが証明書を申請する際に認証局(CA)に転送される、エンコードされたテキストのブロックである。 CSRは、証明書がインストールされるサーバー上で作成される。 CSRには、ドメイン名、組織名、地域、国などの情報が含まれる。 リクエストには、生成された証明書に関連する公開鍵と、秘密鍵も含まれる。 CA は、証明書の作成時に公開鍵のみを使用する。 秘密鍵は保存し、秘密にしておかなければならない。 秘密鍵は公開鍵との鍵ペアの一部であり、秘密鍵が失われると証明書は機能しない。

IPsec接続を使用してゾーンのファイル共有をマウントする場合、メンテナンス時やノード障害時に、一時的なマウントの中断が発生する可能性があります。 ごくまれに、IPsecが設定されたマウントで、最大3分間のサービス中断が発生することがあります。 詳細については、「 メンテナンス中のIPsec設定済みゾーンファイル共有におけるマウント障害の可能性 」を参照してください。

IPsecでトランジット暗号化の設定を始める前に

この機能を使用するには、以下の条件を満たす必要がある:

IBM Cloud® ファイルサービスには、コンピュートホスト上で実行される以下のタスクを自動化する「 マウントヘルパー」ユーティリティ が用意されています。

ゾーン内の異なるVPCで実行されているインスタンスにファイル共有を接続したい場合は、複数のマウント先を作成することができます。 VPCごとに1つのマウントターゲットを作成できます。

インスタンスID証明書の取得

認証に必要な X.509 証明書を取得する。 同じ証明書を複数の地域で使用することはできない。

  1. 以下のコマンドは、opensslを使用して証明書署名要求 (CSR)と RSAキー・ペアを生成します。

    openssl req -sha256 -newkey rsa:4096 -subj '/C=US' -out ./sslcert.csr -keyout file.key -nodes
    

    コマンドを実行する際は、国番号 US'/C=US' の2桁の国番号に置き換えてください。

    OpenSSL X.509 の証明書、証明書署名要求(CSR)、および暗号鍵を扱うために使用できる、オープンソースのコマンドラインツールキットです。 詳細については、『 OpenSSL 』のドキュメントを参照してください。

    CSRの作成に別のソフトウェアを使用している場合、所在地に関する情報を入力するよう求められることがあります。 あなたの位置情報には、国コード(C)、州(ST)、地域(L)、組織名(O)、組織単位(OU)を含めることができます。 これらの命名属性のいずれかを使用することができる。 コモン・ネームのような他の命名属性は拒否される。 要求を行う際、システムはインスタンス ID 値をインスタンス ID 証明書のサブジェクト共通名 に自動的に適用するため、共通名が指定された CSR は拒否される。 延長されたCSRも拒否される。

  2. メタデータ・サービスをAPIコールする前に、以下のコマンドを使用してcsrをフォーマットする。

    awk 'NF {sub(/\r/, ""); printf "%s\\n",$0;}' sslcert.csr
    
  3. 次に、 仮想サーバーインスタンス または ベアメタルサーバーの メタデータサービスを使用して、クライアント証明書を作成します。

    1. PUT /instance_identity/v1/token (仮想サーバーインスタンス)または PUT /identity/v1/tokens (ベアメタルサーバー)リクエストを行って、VPC IDサービスからトークンを取得し、以降の呼び出しに使用します。 詳しくは、以下のトピックを参照してください。
    2. ID トークンを使用して ID 証明書を作成する。 仮想サーバーインスタンスの POST /instance_identity/v1/certificates 、またはベアメタルサーバーの POST /identity/v1/certificates。 HTTP AuthorizationヘッダーにIDトークンを指定し、さらに証明書署名要求( csr プロパティ)と有効期間( expires_in プロパティ)を指定する。 この呼び出しは、クライアントがIPsec Encryption in Transitを使用してファイル共有にアクセスできるようにする、新しいクライアント証明書と中間証明書チェーンを返す。 詳しくは、以下のトピックを参照してください。
    3. -----BEGIN CERTIFICATE----------END CERTIFICATE----- の行を含むAPIレスポンス出力をコピーし、 ca-cert.pem のようなわかりやすい名前のファイルに保存する。 作成するファイルの拡張子が .pem であることを確認してください。
  4. インスタンスID証明書を /etc/ipsec.d/cacerts ディレクトリにコピーする。

    sudo cp /tmp/ca-cert.pem /etc/ipsec.d/cacerts
    

ホストの設定と共有のマウント

  1. strongSwan クライアントを インストールし、設定する。 マウントターゲットアドレスに IPsecトランスポートモードを設定する必要があります。

  2. 認証に必要なプラグイン(libcharon-extra-plugins )をインストールし、インスタンスID証明書の場所を設定ファイルで更新してください。

  3. strongSwan クライアントを起動して安全な接続を確立する。

  4. ファイル共有をマウントする。