Cassandra ノード間暗号化を有効にする

ノード間(ノード間)暗号化は、クラスタ内のノード間を移動するデータを保護する 通信できます。このページでは、Edge で TLS を使用した Cassandra ノード間暗号化を有効にする方法について説明します。 プライベート クラウド以下の手順を行うには、Cassandra ノードの詳細をよく理解している必要があります。 呼び出します。

Cassandra のノード間暗号化を有効にする

Cassandra のノード間暗号化を有効にする手順は次のとおりです。

  1. 付録の手順に沿ってサーバー証明書を生成する 自己署名鍵を作成して、 構成します。

    次の手順では、keystore.node0 が作成されていることを前提としています。 および truststore.node0付録で説明されているように、キーストアとトラストストアのパスワードも指定できます。 続行する前に、各ノードに予備ステップとしてキーストアとトラストストアを作成する必要があります 説明します。

  2. /opt/apigee/customer/application/cassandra.properties に次のプロパティを追加します。 表示されます。ファイルが存在しない場合は作成します。
      conf_cassandra_server_encryption_internode_encryption=all
      conf_cassandra_server_encryption_keystore=/opt/apigee/data/apigee-cassandra/keystore.node0
      conf_cassandra_server_encryption_keystore_password=keypass
      conf_cassandra_server_encryption_truststore=/opt/apigee/data/apigee-cassandra/truststore.node0
      conf_cassandra_server_encryption_truststore_password=trustpass
      # Optionally set the following to enable 2-way TLS or mutual TLS
      conf_cassandra_server_encryption_require_client_auth=true
  3. ファイル cassandra.properties の所有者が Apigee ユーザーであることを確認します。
    chown apigee:apigee \
    /opt/apigee/customer/application/cassandra.properties

各 Cassandra ノードで次の手順を 1 つずつ実行します。これにより、変更が有効になります。 ユーザーのダウンタイムを発生させることなく、

  1. Cassandra サービスを停止します。
    /opt/apigee/apigee-service/bin/apigee-service \
    apigee-cassandra stop
  2. Cassandra サービスを再起動します。
    /opt/apigee/apigee-service/bin/apigee-service \
    apigee-cassandra start
  3. TLS 暗号化サービスが開始したかどうかを確認するには、システムログで次のメッセージを確認します。
    Starting Encrypted Messaging Service on TLS port

証明書のローテーションを実行する

証明書をローテーションする手順は次のとおりです。

  1. 生成された一意の鍵ペアごとに証明書を追加します(付録を参照)。 既存の Cassandra に 古い証明書と新しい証明書の両方が同じゾーンに配置されるようにします。 トラストストア:
    keytool -import -v -trustcacerts -alias NEW_ALIAS \
    -file CERT -keystore EXISTING_TRUSTSTORE

    ここで、NEW_ALIAS はエントリを識別するための一意の文字列、CERT は 証明書の名前 ファイル、EXISTING_TRUSTSTORE Cassandra ノード上の既存のトラストストアの名前です。

  2. scp などのコピー ユーティリティを使用して、トラストストアをクラスタ内のすべての Cassandra ノードに分散します。 各ノードで使用されている既存のトラストストアを置き換えます。
  3. クラスタのローリング再起動を実行して新しいトラストストアを読み込み、 確保しておく必要があります。
    /opt/apigee/apigee-service/bin/apigee-service \
    apigee-cassandra restart
  4. クラスタ内の各 Cassandra ノードで、以下のプロパティを新しいキーストアに更新します。 cassandra.properties ファイルに値を設定します
    conf_cassandra_server_encryption_keystore=NEW_KEYSTORE_PATH
    conf_cassandra_server_encryption_keystore_password=NEW_KEYSTORE_PASSWORD
    

    where NEW_KEYSTORE_PATH is the path to the directory where the keystore file is located and NEW_KEYSTORE_PASSWORD is the keystore password set when the certificates were created, as explained in the Appendix.

  5. Stop the Cassandra service:
    /opt/apigee/apigee-service/bin/apigee-service \
    apigee-cassandra stop
  6. Cassandra サービスを再起動します。
    /opt/apigee/apigee-service/bin/apigee-service \
    apigee-cassandra start
  7. すべてのノード間の通信が正常に確立されたら、 Cassandra ノード。注: 通信が成功した場合にのみ、次のノードに進みます。 確立されます。

付録

次の例は、以下を実行するために必要なサーバー証明書を準備する方法を示しています。 ノード間の暗号化の手順を説明します。例に示すコマンドでは、次のパラメータを使用しています。

パラメータ 説明
node0 ノードを識別する一意の文字列。
keystore.node0 キーストア名。このコマンドは、このファイルが現在のディレクトリにあることを前提とします。
keypass キーストアと鍵の両方でキーパスが同じである必要があります。
dname node0 の IP アドレスを 10.128.0.39 として識別します。
-validity このフラグに設定された値により、生成された鍵ペアは 10 年間有効になります。
  1. 次のディレクトリに移動します。
    cd /opt/apigee/data/apigee-cassandra
  2. 次のコマンドを実行して、現在のディレクトリに keystore.node0 という名前のファイルを生成します。
    keytool -genkey -keyalg RSA -alias node0 -validity 3650 \
    -keystore keystore.node0 -storepass keypass \
    -keypass keypass -dname "CN=10.128.0.39, OU=None, \
    O=None, L=None, C=None"

    重要: 鍵のパスワードがキーストアのパスワードと同じであることを確認してください。

  3. 証明書を別のファイルにエクスポートします。
    keytool -export -alias node0 -file node0.cer \
    -keystore keystore.node0
  4. このファイルを Apigee ユーザーのみが読み取り可能にし、他のユーザーは読み取りできないようにします。
    $ chown apigee:apigee \
    /opt/apigee/data/apigee-cassandra/keystore.node0
    $ chmod 400 /opt/apigee/data/apigee-cassandra/keystore.node0
  5. 生成された証明書 node0.cer をノードのトラストストアにインポートします。
    keytool -import -v -trustcacerts -alias node0 \
    -file node0.cer -keystore truststore.node0

    上記のコマンドでは、パスワードの設定を求められます。これはトラストストアのパスワードです。 先ほど設定したキーストアのパスワードとは別のものにする必要があります。証明書を信頼するよう求められたら、 「yes」と入力します。

  6. opensl を使用して、鍵のない証明書の PEM ファイルを生成します。なお、cqlsh は 生成された形式の証明書では機能しません。
    $ keytool -importkeystore -srckeystore keystore.node0 \
    -destkeystore node0.p12 -deststoretype PKCS12 -srcstorepass \
    keypass -deststorepass keypass
    $ openssl pkcs12 -in node0.p12 -nokeys -out node0.cer.pem \
    -passin pass:keypass
    $ openssl pkcs12 -in node0.p12 -nodes -nocerts -out node0.key.pem -passin pass:keypass
  7. ノード間の暗号化の場合は、node0.cer ファイルを各ノードにコピーしてインポートします。 各ノードのトラストストアに送信します。
    keytool -import -v -trustcacerts -alias node0 \
    -file node0.cer -keystore truststore.node1
  8. keytool -list を使用して、キーストア ファイルとトラストストア ファイル内の証明書を確認します。
    $ keytool -list -keystore keystore.node0
    $ keytool -list -keystore truststore.node0