Cassandra ইন্টারনোড এনক্রিপশন চালু করা

TLS ব্যবহার করে ক্লাস্টারের মধ্যে নোড থেকে নোডে ডেটা যাতায়াত করার সময় ইন্টারনোড (বা নোড-টু-নোড) এনক্রিপশন তা সুরক্ষিত রাখে। এই পৃষ্ঠায় Edge for Private Cloud-এ TLS ব্যবহার করে Cassandra ইন্টারনোড এনক্রিপশন কীভাবে চালু করতে হয় তা ব্যাখ্যা করা হয়েছে। এইসব ধাপ পারফর্ম করতে, আপনাকে অবশ্যই Cassandra রিংয়ের বিবরণ সম্পর্কে জানতে হবে।

Cassandra ইন্টারনোড এনক্রিপশন চালু করা

Cassandra ইন্টারনোড এনক্রিপশন চালু করতে এইসব ধাপ অনুসরণ করুন:

  1. সেল্ফ-সাইন করা কী ও সার্টিফিকেট তৈরি করতে, পরিশিষ্ট লিঙ্কে উল্লেখ করা ধাপগুলি অনুসরণ করে সার্ভার সার্টিফিকেট তৈরি করুন।

    আপনি FIPS চালু থাকা অপারেটিং সিস্টেমে Private Cloud-এর জন্য Edge ব্যবহার করলে, BouncyCastle FIPS Keystore (BCFKS) ব্যবহার করুন। BCFKS ধরনের কীস্টোর নিয়ে কাজ করার ব্যাপারে পরামর্শ পেতে, নিচে দেওয়া পরিশিষ্ট দেখুন।

    নিচে উল্লেখ করা ধাপগুলি ধরে নেয় যে আপনি পরিশিষ্টে ব্যাখ্যা করা 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
      
    # 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-এর মালিকানা apigee ব্যবহারকারীর কাছে আছে:
    chown apigee:apigee \
    /opt/apigee/customer/application/cassandra.properties
    

প্রতিটি Cassandra নোডে নিম্নলিখিত ধাপগুলি এক এক করে এক্সিকিউট করুন, যাতে ব্যবহারকারীদের জন্য কোনও ডাউনটাইম না করেই পরিবর্তনগুলি কার্যকর করা যায়:

  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 এনক্রিপশন পরিষেবা চালু হয়েছে কিনা তা নির্ধারণ করতে, নিম্নলিখিত মেসেজের জন্য সিস্টেম লগ চেক করুন:
    Internode messaging enabled TLS protocols
    Internode messaging enabled cipher suites
    

সার্টিফিকেট রোটেশন পারফর্ম করা

সার্টিফিকেট রোটেট করতে, এইসব ধাপ অনুসরণ করুন:

  1. আগে থেকে থাকা Cassandra নোডের ট্রাস্টস্টোরে প্রতিটি অনন্য জেনারেট করা কী পেয়ারের (পরিশিষ্ট দেখুন) সার্টিফিকেট যোগ করুন, যাতে পুরনো ও নতুন সার্টিফিকেট একই ট্রাস্টস্টোরে থাকে:
    keytool -import -v -trustcacerts -alias NEW_ALIAS \
    -file CERT -keystore EXISTING_TRUSTSTORE
    

    যেখানে NEW_ALIAS হল এন্ট্রি শনাক্ত করার অনন্য স্ট্রিং, CERT হল যোগ করার জন্য সার্টিফিকেট ফাইলের নাম এবং EXISTING_TRUSTSTORE হল Cassandra নোডে আগে থেকে থাকা ট্রাস্টস্টোরের নাম।

  2. ক্লাস্টারের সব Cassandra নোডে truststore ডিস্ট্রিবিউট করতে, scp-এর মতো কপি ইউটিলিটি ব্যবহার করুন। এটি প্রতিটি নোডের ব্যবহার করা বর্তমান truststore-কে রিপ্লেস করবে।
  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
      

    যেখানে NEW_KEYSTORE_PATH হল ডিরেক্টরির পাথ যেখানে কীস্টোর ফাইলটি অবস্থিত এবং NEW_KEYSTORE_PASSWORD হল সার্টিফিকেট তৈরি করার সময় সেট করা কীস্টোর পাসওয়ার্ড, যা পরিশিষ্টে ব্যাখ্যা করা হয়েছে।

  5. Cassandra পরিষেবা বন্ধ করুন:
    /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 কীস্টোর ও কী, দুটির ক্ষেত্রেই keypass একই হতে হবে।
dname node0-এর IP অ্যাড্রেস 10.128.0.39 হিসেবে শনাক্ত করে।
-validity এই ফ্ল্যাগে সেট করা ভ্যালু, তৈরি হওয়া কী পেয়ারকে ১০ বছরের জন্য বৈধ করে তোলে।
  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. কোনও কী ছাড়াই সার্টিফিকেটের PEM ফাইল তৈরি করতে openssl ব্যবহার করুন। মনে রাখবেন, 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

FIPS চালু করা অপারেটিং সিস্টেমের জন্য BCFKS কীস্টোর নিয়ে কাজ করা

FIPS চালু করা অপারেটিং সিস্টেমের সাথে কাজ করার সময়, BouncyCastle FIPS Keystores (BCFKS) ব্যবহার করুন। BCFKS ধরনের কীস্টোর কীভাবে ব্যবহার করতে হয় তা নিচের বিভাগে বর্ণনা করা হয়েছে। কীস্টোর নিয়ে কাজ করার জন্য অন্যান্য ধাপগুলি (যেমন, ফাইলের মালিকানা, ফাইলের লোকেশন এবং অন্যান্য) এই পরিশিষ্টে উল্লেখ করা ধাপগুলির মতোই থাকে।

BCFKS ধরনের কীস্টোর তৈরি করতে, নিচে উল্লেখ করা কমান্ড ব্যবহার করুন:

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

মনে রাখবেন: কীস্টোর পাসওয়ার্ড ও কী পাসওয়ার্ড একই হতে হবে।

মনে রাখবেন: Apigee-এর পাঠানো bc-fips jar ব্যবহার করা যেতে পারে অথবা BouncyCastle-এর রেপোজিটরি থেকে একই jar ডাউনলোড করা যেতে পারে। BCFKS কীস্টোর কীভাবে তৈরি করতে হয় সেই ব্যাপারে আরও জানতে BouncyCastle-এর ডকুমেন্টেশন দেখুন।

আলাদা ফাইলে সার্টিফিকেট এক্সপোর্ট করুন:

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

নোডের ট্রাস্টস্টোরে জেনারেট করা সার্টিফিকেট node0.cer ইমপোর্ট করুন:

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