ক্যাসান্দ্রা ইন্টারনোড এনক্রিপশন সক্ষম করুন

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

ক্যাসান্দ্রা ইন্টারনোড এনক্রিপশন সক্ষম করুন

ক্যাসান্ড্রা ইন্টারনোড এনক্রিপশন সক্ষম করতে এই পদক্ষেপগুলি অনুসরণ করুন:

  1. একটি স্ব-স্বাক্ষরিত কী এবং শংসাপত্র তৈরি করতে পরিশিষ্টের ধাপগুলি অনুসরণ করে সার্ভার শংসাপত্র তৈরি করুন৷

    আপনি যদি একটি FIPS-সক্ষম অপারেটিং সিস্টেমে ব্যক্তিগত ক্লাউডের জন্য এজ ব্যবহার করেন, তাহলে একটি BouncyCastle FIPS কীস্টোর (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
    

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

  1. ক্যাসান্দ্রা পরিষেবা বন্ধ করুন:
    /opt/apigee/apigee-service/bin/apigee-service \
    apigee-cassandra stop
    
  2. ক্যাসান্দ্রা পরিষেবা পুনরায় চালু করুন:
    /opt/apigee/apigee-service/bin/apigee-service \
    apigee-cassandra start
    
  3. TLS এনক্রিপশন পরিষেবা শুরু হয়েছে কিনা তা নির্ধারণ করতে, নিম্নলিখিত বার্তাটির জন্য সিস্টেম লগগুলি পরীক্ষা করুন:
    Internode messaging enabled TLS protocols
    Internode messaging enabled cipher suites
    

সার্টিফিকেট ঘূর্ণন সঞ্চালন

শংসাপত্র ঘোরাতে, এই পদক্ষেপগুলি অনুসরণ করুন:

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

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

  2. একটি অনুলিপি ইউটিলিটি ব্যবহার করুন, যেমন scp, ক্লাস্টারের সমস্ত ক্যাসান্ড্রা নোডগুলিতে ট্রাস্টস্টোর বিতরণ করতে, প্রতিটি নোড দ্বারা ব্যবহৃত বিদ্যমান ট্রাস্টস্টোর প্রতিস্থাপন করুন।
  3. নতুন ট্রাস্টস্টোর লোড করার জন্য ক্লাস্টারের একটি রোলিং রিস্টার্ট সম্পাদন করুন এবং নতুন কীগুলি স্থাপন করার আগে তাদের জন্য বিশ্বাস স্থাপন করুন:
    /opt/apigee/apigee-service/bin/apigee-service \
    apigee-cassandra restart
    
  4. ক্লাস্টারের প্রতিটি ক্যাসান্ড্রা নোডে, 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. ক্যাসান্দ্রা পরিষেবা বন্ধ করুন:
    /opt/apigee/apigee-service/bin/apigee-service \
    apigee-cassandra stop
    
  6. ক্যাসান্দ্রা পরিষেবা পুনরায় চালু করুন:
    /opt/apigee/apigee-service/bin/apigee-service \
    apigee-cassandra start
    
  7. সমস্ত নোডের মধ্যে যোগাযোগ সফলভাবে প্রতিষ্ঠিত হলে, পরবর্তী ক্যাসান্দ্রা নোডে যান। দ্রষ্টব্য: সমস্ত নোডের মধ্যে যোগাযোগ সফলভাবে প্রতিষ্ঠিত হলে শুধুমাত্র পরবর্তী নোডে যান।

পরিশিষ্ট

নিম্নলিখিত উদাহরণ ব্যাখ্যা করে কিভাবে ইন্টারনোড এনক্রিপশন পদক্ষেপগুলি সম্পাদন করার জন্য প্রয়োজনীয় সার্ভার শংসাপত্র প্রস্তুত করতে হয়। উদাহরণে দেখানো কমান্ডগুলি নিম্নলিখিত পরামিতিগুলি ব্যবহার করে:

প্যারামিটার বর্ণনা
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. কোন কী ছাড়াই শংসাপত্রের একটি 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 কীস্টোর (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 জার ব্যবহার করা যেতে পারে, অথবা একই জার BouncyCastle এর সংগ্রহস্থল থেকে ডাউনলোড করা যেতে পারে। কিভাবে একটি 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