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

Düğümler arası (veya düğümden düğüme) şifreleme, bir kümedeki düğümler arasında aktarılan verileri TLS kullanarak korur. Bu sayfada, Edge for Private Cloud'da TLS kullanarak Cassandra düğümler arası şifrelemenin nasıl etkinleştirileceği açıklanmaktadır. Bu adımları uygulamak için Cassandra halkasının ayrıntılarını bilmeniz 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. Kendi kendine imzalanmış bir anahtar ve sertifika oluşturmak için Ek bölümündeki adımları uygulayarak sunucu sertifikaları oluşturun.

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

  2. /opt/apigee/customer/application/cassandra.properties dosyasına aşağıdaki özellikleri ekleyin. Dosya yoksa 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
      
  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 kapalı kalma süresine neden olmadan geçerli olması amacıyla 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üğünde aşağıdaki mesajı kontrol edin:
    Internode messaging enabled TLS protocols
    Internode messaging enabled cipher suites
    

Sertifika rotasyonu gerçekleştirme

Sertifikaları rotasyona tabi tutmak için aşağıdaki adımları uygulayın:

  1. Oluşturulan her benzersiz anahtar çifti için sertifikayı (bkz. Ek) mevcut bir Cassandra düğümünün güvenli anahtar deposuna ekleyin. Böylece hem eski hem de yeni sertifikalar aynı güvenli anahtar deposunda yer alır:
    keytool -import -v -trustcacerts -alias NEW_ALIAS \
    -file CERT -keystore EXISTING_TRUSTSTORE
    

    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 deposunu kümedeki tüm Cassandra düğümlerine dağıtmak için scp gibi bir kopyalama yardımcı programı kullanın ve her düğüm tarafından kullanılan mevcut güven deposunu değiştirin.
  3. Yeni güven deposunu yüklemek ve yeni anahtarlar yerleştirilmeden önce güven oluşturmak için kümenin kademeli olarak yeniden başlatılmasını sağlayın:
    /opt/apigee/apigee-service/bin/apigee-service \
    apigee-cassandra restart
    
  4. Kümedeki her Cassandra düğümünde, cassandra.properties dosyasında aşağıda gösterilen özellikleri 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 yolu, NEW_KEYSTORE_PASSWORD ise Ek'te açıklandığı gibi sertifikalar oluşturulurken ayarlanan 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 iletişim başarıyla kurulduğunda bir sonraki Cassandra düğümüne geçin. Not: Yalnızca tüm düğümler arasında iletişim başarıyla 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 Bir anahtar deposu adı. Komutlar, bu dosyanın geçerli dizinde olduğunu varsayar.
keypass Anahtar deposu ve anahtar için aynı anahtar şifresi kullanılmalıdır.
dname node0 IP adresini 10.128.0.39 olarak tanımlar.
-validity Bu işaret için ayarlanan değer, oluşturulan anahtar çiftini 10 yıl boyunca geçerli kı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 deposu ş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 okunabildiğinden ve başka hiç kimse tarafından okunamadığından emin olun:
    $ chown apigee:apigee \
    /opt/apigee/data/apigee-cassandra/keystore.node0
    $ chmod 400 /opt/apigee/data/apigee-cassandra/keystore.node0
  5. Oluşturulan sertifikayı (node0.cer) düğümün güven deposuna aktarın:
    keytool -import -v -trustcacerts -alias node0 \
    -file node0.cer -keystore truststore.node0

    Yukarıdaki komut sizden bir şifre belirlemenizi ister. Bu, güvenilir depo şifresidir ve daha önce belirlediğiniz anahtar deposu şifresinden farklı olabilir. Sertifikaya güvenmeniz istenirse yes yazın.

  6. Anahtar içermeyen bir sertifika PEM dosyası oluşturmak için openssl'yi kullanın. cqlsh, oluşturulan biçimdeki sertifikayla çalışmaz.
    $ 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 aracını kullanın:
    $ keytool -list -keystore keystore.node0
    $ keytool -list -keystore truststore.node0