Cassandra ile birlikte düğüm şifrelemesini etkinleştir

Düğümler arası (veya düğümden düğüme) şifreleme, bir kümedeki düğümler arasında TLS kullanılarak aktarılan verileri korur. Bu sayfada, Private Cloud için Edge'de TLS kullanılarak Cassandra düğümler arası şifrelemenin nasıl etkinleştirileceği açıklanmaktadır. Bu adımları uygulamak için Cassandra yüzüğünüzle ilgili ayrıntıları öğrenmeniz gerekir.

Cassandra düğümler arası şifrelemeyi etkinleştirme

Cassandra düğümler arası şifrelemeyi etkinleştirmek için aşağıdaki adımları uygulayın:

  1. Kendinden imzalı bir anahtar ve sertifika oluşturmak için Ek'teki adımları uygulayarak sunucu sertifikaları oluşturun.

    Private Cloud için Edge'i FIPS özellikli bir işletim sisteminde kullanıyorsanız BouncyCastle FIPS Anahtar Deposu'nu (BCFKS) kullanın. BCFKS türü anahtar deposuyla çalışmayla ilgili ipuçları için aşağıdaki Ek'e bakın.

    Aşağıdaki adımlarda, Ek bölümünde açıklandığı gibi keystore.node0 ve truststore.node0'nin yanı sıra anahtar mağazası ve güven mağazası şifrelerini oluşturduğunuz varsayılmaktadır. Sonraki adımlara geçmeden önce her düğümde anahtar deposu ve güven deposu ön adımlar olarak oluşturulmalıdır.

  2. /opt/apigee/customer/application/cassandra.properties dosyasına aşağıdaki özellikleri ekleyin. Dosya mevcut değilse dosyayı oluşturun.
    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
      
    # Set the following in FIPS enabled operating systems
    # With FIPS, older TLS protocols are disabled, so set to TLSv1.2
    conf_cassandra_server_encryption_protocol=TLSv1.2
    # With FIPS, use BCFKS keystores
    conf_cassandra_server_encryption_store_type=BCFKS
      
  3. cassandra.properties dosyasının, Apigee kullanıcısına ait olduğundan emin olun:
    chown apigee:apigee \
    /opt/apigee/customer/application/cassandra.properties
    

Değişikliklerin kullanıcılar için herhangi bir kesintiye neden olmadan geçerli olması için her Cassandra düğümünde aşağıdaki adımları tek tek uygulayın:

  1. Cassandra hizmetini durdurun:
    /opt/apigee/apigee-service/bin/apigee-service \
    apigee-cassandra stop
    
  2. Cassandra hizmetini yeniden başlatın:
    /opt/apigee/apigee-service/bin/apigee-service \
    apigee-cassandra start
    
  3. TLS şifreleme hizmetinin başlatılıp başlatılmadığını belirlemek için sistem günlüklerinde aşağıdaki mesajı arayın:
    Internode messaging enabled TLS protocols
    Internode messaging enabled cipher suites
    

Sertifika rotasyonu gerçekleştirme

Sertifikaları döndürmek için aşağıdaki adımları uygulayın:

  1. Oluşturulan her benzersiz anahtar çiftinin sertifikasını (Ek bölümüne bakın) mevcut bir Cassandra düğümünün güven deposuna ekleyin. Böylece hem eski sertifikalar hem de yeni sertifikalar aynı güven deposunda bulunur:
    keytool -import -v -trustcacerts -alias NEW_ALIAS \
    -file CERT -keystore EXISTING_TRUSTSTORE
    

    Burada NEW_ALIAS, girişi tanımlayan benzersiz bir dize, CERT eklenecek sertifika dosyasının adı ve EXISTING_TRUSTSTORE Cassandra düğümündeki mevcut güven deposunun adıdır.

  2. Güven mağazasını kümedeki tüm Cassandra düğümlerine dağıtmak için scp gibi bir kopyalama yardımcı programı kullanın. Bu işlem, her düğüm tarafından kullanılan mevcut güven mağazasını değiştirir.
  3. Yeni güven mağazasını yüklemek ve yeni anahtarlar kullanılmadan önce bunlara güven oluşturmak için kümeyi aşamalı olarak yeniden başlatın:
    /opt/apigee/apigee-service/bin/apigee-service \
    apigee-cassandra restart
    
  4. Kümedeki her Cassandra düğümünde, aşağıda gösterilen özellikleri cassandra.properties dosyasındaki yeni anahtar deposu değerleriyle güncelleyin:
    conf_cassandra_server_encryption_keystore=NEW_KEYSTORE_PATH
    conf_cassandra_server_encryption_keystore_password=NEW_KEYSTORE_PASSWORD
      

    Burada NEW_KEYSTORE_PATH, anahtar deposu dosyasının bulunduğu dizinin yoludur. NEW_KEYSTORE_PASSWORD, Ek'te açıklandığı üzere sertifikalar oluşturulurken belirlenen anahtar deposu şifresidir.

  5. Cassandra hizmetini durdurun:
    /opt/apigee/apigee-service/bin/apigee-service \
    apigee-cassandra stop
    
  6. Cassandra hizmetini yeniden başlatın:
    /opt/apigee/apigee-service/bin/apigee-service \
    apigee-cassandra start
    
  7. Tüm düğümler arasında başarılı bir şekilde iletişim kurulduktan sonra bir sonraki Cassandra düğümüne geçin. Not: Yalnızca tüm düğümler arasında başarılı bir şekilde iletişim kurulduysa bir sonraki düğüme geçin.

Ek

Aşağıdaki örnekte, düğümler arası şifreleme adımlarını gerçekleştirmek için gereken sunucu sertifikalarının nasıl hazırlanacağı açıklanmaktadır. Örnekte gösterilen komutlar aşağıdaki parametreleri kullanır:

Parametre Açıklama
node0 Düğümü tanımlayan benzersiz bir dize.
keystore.node0 Anahtar deposu adı. Komutlarda, bu dosyanın geçerli dizinde olduğu varsayılır.
keypass Anahtar anahtarı hem anahtar deposu hem de anahtar için aynı olmalıdır.
dname node0'ün IP adresini 10.128.0.39 olarak tanımlar.
-validity Bu işarette ayarlanan değer, oluşturulan anahtar çiftinin 10 yıl boyunca geçerli olmasını sağlar.
  1. Aşağıdaki dizine gidin:
    cd /opt/apigee/data/apigee-cassandra
  2. Geçerli dizinde keystore.node0 adlı bir dosya oluşturmak için aşağıdaki komutu çalıştırın:
    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"

    Önemli: Anahtar şifresinin, anahtar mağazası şifresiyle aynı olduğundan emin olun.

  3. Sertifikayı ayrı bir dosyaya aktarın:
    keytool -export -alias node0 -file node0.cer \
    -keystore keystore.node0
  4. Dosyanın yalnızca apigee kullanıcısı tarafından okunabilir olduğundan emin olun:
    $ chown apigee:apigee \
    /opt/apigee/data/apigee-cassandra/keystore.node0
    $ chmod 400 /opt/apigee/data/apigee-cassandra/keystore.node0
  5. Oluşturulan node0.cer sertifikasını düğümün güven deposuna aktarın:
    keytool -import -v -trustcacerts -alias node0 \
    -file node0.cer -keystore truststore.node0

    Yukarıdaki komutta, şifre belirlemeniz istenir. Bu, güven mağazası şifresidir ve daha önce belirlediğiniz anahtar mağazası şifresinden farklı olabilir. Sertifikaya güvenmeniz istenirse yes yazın.

  6. Anahtar içermeyen bir PEM dosyası oluşturmak için openssl'i kullanın. cqlsh etiketinin oluşturulan sertifikayla çalışmadığını unutmayın.
    $ 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. Düğümler arası şifreleme için node0.cer dosyasını her düğüme kopyalayın ve her düğümün güven deposuna aktarın.
    keytool -import -v -trustcacerts -alias node0 \
    -file node0.cer -keystore truststore.node1
  8. Anahtar deposu ve güven deposu dosyalarındaki sertifikaları kontrol etmek için keytool -list simgesini kullanın:
    $ keytool -list -keystore keystore.node0
    $ keytool -list -keystore truststore.node0

FIPS özellikli işletim sistemleri için BCFKS anahtar depolarıyla çalışma

FIPS özellikli işletim sistemleriyle çalışırken BouncyCastle FIPS Anahtar Depoları'nı (BCFKS) kullanın. Aşağıdaki bölümde, BCFKS türü anahtar depolarıyla nasıl çalışabileceğiniz açıklanmaktadır. Anahtar depolarıyla çalışmayla ilgili diğer adımlar (ör. dosya sahipliği, dosya konumu vb.) bu ekte belirtilenlerle aynıdır.

BCFKS türündeki bir anahtar mağazası oluşturmak için aşağıdaki komutu kullanın:

keytool -genkeypair -keyalg RSA -alias node0 -validity 365 -keystore keystore.node0 \
-storepass keypass -keypass keypass -v \
-dname "EMAILADDRESS=youremail@domain.com, CN=yourcn, OU=yourou, O=youro, L=yourl, C=yourc" \
-storetype BCFKS -providerpath /opt/apigee/edge-gateway/lib/thirdparty/bc-fips-1.0.2.4.jar \
-providerclass org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider -providername BCFIPS

Not: Anahtar deposu şifresi ve anahtar şifresi aynı olmalıdır.

Not: Apigee tarafından gönderilen bc-fips jar dosyası kullanılabilir veya aynı jar dosyası BouncyCastle'ın depolarından indirilebilir. BCFKS anahtar deposunun nasıl oluşturulacağıyla ilgili daha fazla bilgi için BouncyCastle'ın belgelerine bakın.

Sertifikayı ayrı bir dosyaya aktarın:

keytool -export -v -alias node0 -file node0.cer -keystore keystore.node0 -storepass keypass \
-storetype BCFKS -providerpath /opt/apigee/edge-gateway/lib/thirdparty/bc-fips-1.0.2.4.jar \
-providerclass org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider -providername BCFIPS

Oluşturulan node0.cer sertifikasını düğümün güven deposuna aktarın:

keytool -import -v -alias node0 -file node0.cer -keystore truststore.node0 -storepass storepass \
-storetype BCFKS -providerpath /opt/apigee/edge-gateway/lib/thirdparty/bc-fips-1.0.2.4.jar \
-providerclass org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider -providername BCFIPS