Cassandra নেটিভ mTLS কনফিগার করা

ভূমিকা

Edge for Private Cloud-এর বিভিন্ন কম্পোনেন্ট যেমন মেসেজ প্রসেসর, ম্যানেজমেন্ট সার্ভার ও রাউটার ডিফল্ট হিসেবে প্লেনটেক্সট চ্যানেলের মাধ্যমে Cassandra নোডের সাথে কানেক্ট করে। এই ধরনের চ্যানেলে, Cassandra-তে পাঠানো এবং সেখান থেকে পাওয়া ডেটা স্পষ্টভাবে কমিউনিকেট করা হয়। Apigee mTLS হল একটি কনসাল সার্ভিস-মেশ ভিত্তিক ফিচার যা প্রাইভেট ক্লাউড ক্লাস্টারের জন্য এজ-এ কম্পোনেন্টের মধ্যে কমিউনিকেশনে নিরাপত্তা যোগ করে। Apigee-এর এই অফারিং ক্লায়েন্ট কম্পোনেন্ট ও Cassandra-র মধ্যে কমিউনিকেশন চ্যানেলে TLS সুরক্ষা যোগ করে।

এই নিবন্ধে Apigee-এর দেওয়া একটি নতুন বিকল্পের কথা বলা হয়েছে যেখানে Edge for Private Cloud-এ ক্লায়েন্ট কম্পোনেন্ট ও Cassandra-র মধ্যে যোগাযোগ মিউচুয়াল TLS (যাকে ২-ওয়ে TLS-ও বলা হয়) ব্যবহার করে সুরক্ষিত করা হয়। এর জন্য Cassandra-তে আগে থেকেই উপলভ্য ফিচার ব্যবহার করা হয় এবং কোনও এক্সটার্নাল সার্ভিস মেশ ব্যবহার করা হয় না।

নেটিভ mTLS ফিচার

এই নিবন্ধে বর্ণিত Cassandra এবং ক্লায়েন্ট কম্পোনেন্টের মধ্যে mTLS চালু করা Apache Cassandra দ্বারা নেটিভভাবে প্রদান করা TLS ফিচারের উপর নির্ভর করে। চালু করা থাকলে, Cassandra-তে ক্লায়েন্ট কানেকশন (CQL নেটিভ ট্রান্সপোর্ট পোর্ট 9042-এ) কানেকশন স্থাপন করার অনুমতি দেওয়ার আগে ক্লায়েন্টের সাথে ২-ওয়ে TLS হ্যান্ডশেক করে। এই ২-ওয়ে TLS কানেকশনের জন্য, Cassandra সার্ভার হিসেবে কাজ করে এবং Cassandra-র সাথে কানেক্ট করা বিভিন্ন ক্লায়েন্ট (যেমন edge-message-processor, cqlsh টুল ইত্যাদি) ক্লায়েন্ট হিসেবে কাজ করে।

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

সার্টিফিকেট চেইনিং

সাধারণত, টু-ওয়ে TLS-এ, সার্ভার সার্টিফিকেট, ক্লায়েন্ট সার্টিফিকেট, সার্টিফিকেট চেন, কীস্টোর ও ট্রাস্টস্টোর বিভিন্ন উপায়ে তৈরি করা যেতে পারে। Cassandra এবং ক্লায়েন্ট নেটিভ mTLS-এর ক্ষেত্রেও একই কথা প্রযোজ্য। Private Cloud ক্লাস্টারের জন্য সংস্থাগুলি সাধারণত কীভাবে Edge অপারেট করে এবং Cassandra কানেকশন পেয়ারে কতগুলি অনন্য ক্লায়েন্ট তৈরি করা যেতে পারে তা বিবেচনা করে, Apigee এই ফিচারের জন্য কী ও সার্টিফিকেট কনফিগার করার জন্য নিম্নলিখিত সাধারণ পদ্ধতি গ্রহণ করার সাজেশন দেয়। অন্যান্য পদ্ধতিও কার্যকর, তবে নিচের পদ্ধতিটি সম্ভবত নিরাপত্তা এবং রক্ষণাবেক্ষণের ওভারহেডের একটি ভাল ভারসাম্য প্রদান করে।

  1. রুট সার্টিফিকেট এবং রুট দ্বারা স্বাক্ষরিত একটি অন্তর্বর্তী কী/সার্টিফিকেট পেয়ার সংগ্রহ করুন। আপনার কাছে আগে থেকেই এই ধরনের 'কী' ও সার্টিফিকেট থাকতে পারে। না হলে, পরিশিষ্ট ১-এ উল্লেখ করা ধাপগুলি অনুসরণ করে আপনি সেল্ফ-সাইনড রুট ও ইন্টারমিডিয়েট সার্টিফিকেট এবং কী তৈরি করতে পারবেন।

  2. সব অ্যাপ্লিকেশন-নির্দিষ্ট (লিফ) কী ও সার্টিফিকেটে স্বাক্ষর করতে, উপরে উল্লেখ করা সাধারণ ইন্টারমিডিয়েট কী/সার্টিফিকেট ব্যবহার করুন।

১টি ক্লাস্টার জুড়ে একটি সাধারণ ইন্টারমিডিয়েট কী/সার্টিফিকেট থাকলে, প্রতিটি Cassandra ও ক্লায়েন্ট নোডে একটি সাধারণ ট্রাস্টস্টোর (একই রুট ও ইন্টারমিডিয়েট সার্টিফিকেট চেন সহ) কনফিগার করা হয়। প্রতিটি Cassandra নোড এবং ক্লায়েন্ট অ্যাপ্লিকেশন তার নিজস্ব অনন্য লিফ কী এবং সাধারণ ইন্টারমিডিয়েট কী/সার্টিফিকেট দ্বারা স্বাক্ষরিত সার্টিফিকেট পায়।

  1. Cassandra নোড বা ক্লায়েন্ট অ্যাপ্লিকেশনের লিফ সার্টিফিকেট রোটেট করা খুব সহজ।
  2. অন্তর্বর্তী বা মূল সার্টিফিকেট রোটেট করা এখনও বেশ জটিল অপারেশন, তবে এই ধরনের রোটেশনের ফ্রিকোয়েন্সি লিফ সার্টিফিকেটের তুলনায় অনেক কম হবে।

বিভিন্ন প্রাইভেট ক্লাউড ক্লাস্টার জুড়ে সাধারণ রুট এবং অন্তর্বর্তী সার্টিফিকেট ব্যবহার করবেন কিনা তা সিদ্ধান্ত নিতে আপনার সংস্থার নিরাপত্তা অনুশীলন ব্যবহার করুন। বিকল্প সার্টিফিকেট সেট-আপের জন্য আপনি পরিশিষ্ট ২ দেখতে পারেন।

এই নিবন্ধের বাকি ধাপগুলি 'কী' ও সার্টিফিকেট ডিজাইন করার উপরোক্ত পদ্ধতির বিবরণ প্রদান করে।

সীমাবদ্ধতা ও শর্ত

এই ফিচারের ক্ষেত্রে নিম্নলিখিত সীমাবদ্ধতা প্রযোজ্য।

  • ক্লায়েন্ট কম্পোনেন্ট ও Cassandra-এর মধ্যে নেটিভ mTLS-এর এই অফার apigee-mtls-এর সাথে মানানসই নয়। আপনি এই ফিচার ব্যবহার করলে, apigee-mtls ব্যবহার করতে পারবেন না এবং এর বিপরীতও হতে পারে।
  • ক্লায়েন্ট কম্পোনেন্ট ও Cassandra-র মধ্যে mTLS চালু করলে, ক্লায়েন্ট ও Cassandra-র মধ্যে কানেকশন তৈরি করার সময় পারফর্ম্যান্সের উপর কিছুটা প্রভাব পড়বে। ক্লায়েন্ট বুটআপ বা Cassandra কানেকশন স্কেল করার মতো অপারেশন ধীরগতির হতে পারে, কারণ Cassandra ও ক্লায়েন্টকে কমিউনিকেশন শুরু করার আগে TLS নিয়ে আলোচনা করতে হয়। প্রভাবটি ছোটখাটো এবং সাধারণত লক্ষণীয় নয়।
  • Cassandra-তে, ইনবাউন্ড ক্লায়েন্ট কানেকশনে mTLS ঐচ্ছিকভাবে এনফোর্স করা যেতে পারে। এনফোর্সমেন্ট চালু করা গেলেও, Apigee সফ্টওয়্যার আপগ্রেড করা, TLS ফিচার চালু/বন্ধ করা এবং নির্দিষ্ট ধরনের সার্টিফিকেট রোটেশনের মতো অপারেশনাল টাস্কের সময় এটি বন্ধ রাখতে হবে। আরও তথ্যের জন্য অপারেশন ও কনফিগারেশন বিভাগ দেখুন।
  • সার্টিফিকেট ম্যানেজ ও বজায় রাখার দায়িত্ব গ্রাহকের।
  • সার্টিফিকেট রোটেট করার বিভিন্ন সূক্ষ্ম বিষয় রয়েছে। আরও বিবরণের জন্য সার্টিফিকেট রোটেশন বিভাগ দেখুন

নেটিভ mTLS চালু করা

মোটামুটিভাবে, নেটিভ mTLS চালু করার জন্য নিচে উল্লেখ করা ৩টি ধাপ অনুসরণ করতে হয়:

  1. একটি মূল সার্টিফিকেট এবং একটি অন্তর্বর্তী কী/সার্টিফিকেট পেয়ার সংগ্রহ করুন।
  2. ১টি Cassandra নোডের লিফ কী/সার্টিফিকেট পেয়ার তৈরি করুন, এটিতে স্বাক্ষর করুন, একটি কীস্টোরে এটি স্টোর করুন এবং ঐচ্ছিক mTLS-এর জন্য Cassandra কনফিগার করুন। প্রতিটি Cassandra নোডের জন্য এক এক করে ধাপগুলি পুনরাবৃত্তি করুন।
  3. ১টি ক্লায়েন্ট অ্যাপ্লিকেশনের লিফ কী/সার্টিফিকেট পেয়ার তৈরি করুন, এটিতে স্বাক্ষর করুন, এটি একটি কীস্টোরে স্টোর করুন এবং mTLS-এর জন্য ক্লায়েন্ট অ্যাপ্লিকেশন কনফিগার করুন। প্রতিটি ক্লায়েন্ট অ্যাপ্লিকেশনে এক এক করে ধাপগুলি পুনরাবৃত্তি করুন। ক্লায়েন্ট অ্যাপ্লিকেশন:
    1. edge-management-server
    2. edge-message-processor
    3. এজ-রাউটার

এইসব ধাপের বিবরণ নিচে দেওয়া হল:

রুট ও ইন্টারমিডিয়েট সার্টিফিকেট সংগ্রহ করুন

রুট সার্টিফিকেট এবং রুট দ্বারা স্বাক্ষরিত একটি অন্তর্বর্তী কী/সার্টিফিকেট পেয়ার সংগ্রহ করুন। আপনার সংস্থার CA স্বাক্ষরিত রুট ও অন্তর্বর্তী সার্টিফিকেট ব্যবহার করুন অথবা সেল্ফ-সাইনড সার্টিফিকেট তৈরি করুন। ট্রাস্টস্টোরে রুট ও অন্তর্বর্তী সার্টিফিকেট চেন স্টোর করুন। সহায়ক কমান্ডের জন্য পরিশিষ্ট ১ দেখুন। পরবর্তী কমান্ডগুলি ধরে নেয় যে আপনার কাছে নিম্নলিখিত ফাইলগুলির অ্যাক্সেস আছে:

  • intermediate.key - লিফ সার্টিফিকেটে স্বাক্ষর করার জন্য ইন্টারমিডিয়েট সার্টিফিকেটের 'কী' ফাইল
  • intermediate-cert.pem- অন্তর্বর্তী সার্টিফিকেট

Cassandra নোড কনফিগার করুন

  1. একটি Cassandra নোড বেছে নিন
  2. লিফ কী ও সার্টিফিকেট পেয়ার জেনারেট করে অন্তর্বর্তী সার্টিফিকেট দিয়ে স্বাক্ষর করুন। কী এবং স্বাক্ষরিত সার্টিফিকেট একটি কীস্টোরে সেভ করুন। নিচে উদাহরণ দেওয়া হল:
    
    # Generate Leaf key and csr
    openssl req -newkey rsa:2048 -keyout cass-node1.key -out cass-node1-req.pem -sha256 -days 365 -nodes -subj "/C=yourc/ST=yourst/L=yourl/O=youro/OU=yourou/CN=yourip/emailAddress=cassnode1@yourorg.com"
    
    # leaf cert signed by intermediate
    openssl x509 -req -in cass-node1-req.pem -CAkey intermediate.key -CA intermediate-cert.pem -days 365 -CAcreateserial -out cass-node1-cert.pem
    
    # keystore packaging leaf key and cert
    openssl pkcs12 -export -clcerts -in cass-node1-cert.pem -inkey cass-node1.key -out cass-node1-keystore.pfx -name nativemtls -password pass:keystorepass

    নোডের একটি নির্দিষ্ট লোকেশনে keystore এবং truststore ফাইল রাখুন এবং apigee ব্যবহারকারী সেগুলি অ্যাক্সেস করতে পারছেন কিনা তা নিশ্চিত করুন

    cp cass-node1-keystore.pfx /opt/apigee/customer/application/
    cp truststore.pfx /opt/apigee/customer/application/
    
    chown apigee:apigee /opt/apigee/customer/application/cass-node1-keystore.pfx
    chown apigee:apigee /opt/apigee/customer/application/truststore.pfx

  3. ফাইল তৈরি বা এডিট করুন /opt/apigee/customer/application/cassandra.properties। এই ফাইলে নিম্নলিখিত কন্টেন্ট যোগ করুন:
    ### Enable Cassandra TLS on CQL connections
    conf_cassandra_client_encryption_enabled=true
    
    ### Optional TLS - true or false
    conf_cassandra_client_encryption_optional=true
    
    ### Keystore details
    conf_cassandra_client_encryption_keystore=/opt/apigee/customer/application/cass-node1-keystore.pfx
    conf_cassandra_client_encryption_keystore_password=keystorepass
    conf_cassandra_server_encryption_store_type=PKCS12
    
    ### Whether to enable 2-way TLS (or mTLS) - true or false
    conf_cassandra_client_encryption_require_client_auth=true
    
    ### When 2-way TLS is enabled, client certificate details need to be provided via a truststore
    conf_cassandra_client_encryption_truststore=/opt/apigee/customer/application/truststore.pfx
    conf_cassandra_client_encryption_truststore_password=trustpass
    conf_cassandra_client_encryption_store_type=PKCS12
    

    দেখে নিন যে ফাইলটি apigee ব্যবহারকারীর মালিকানাধীন এবং সেটি পড়া যাচ্ছে কিনা:

    chown apigee:apigee /opt/apigee/customer/application/cassandra.properties
  4. Cassandra নোড কনফিগার ও রিস্টার্ট করুন
    apigee-service apigee-cassandra configure
    apigee-service apigee-cassandra restart
    
  5. প্রতিটি Cassandra নোডে উপরের ধাপগুলি এক এক করে রিপিট করুন

ক্লায়েন্ট অ্যাপ্লিকেশন কনফিগার করুন

এই বিভাগটি Cassandra-র সাথে কানেক্ট করা নিম্নলিখিত ক্লায়েন্ট কম্পোনেন্টের ক্ষেত্রে প্রযোজ্য:

  • edge-management-server
  • edge-message-processor
  • এজ-রাউটার

  1. একটি ক্লায়েন্ট কম্পোনেন্ট বেছে নিন
  2. লিফ কী ও সার্টিফিকেট পেয়ার জেনারেট করে অন্তর্বর্তী সার্টিফিকেট দিয়ে স্বাক্ষর করুন। কীস্টোরে কী ও স্বাক্ষরিত সার্টিফিকেট সেভ করুন। নিচে উদাহরণ দেওয়া হল:
    
    # Generate Leaf key and csr
    openssl req -newkey rsa:2048 -keyout mgmt-node1.key -out mgmt-node1-req.pem -sha256 -days 365 -nodes -subj "/C=yourc/ST=yourst/L=yourl/O=youro/OU=yourou/CN=yourip/emailAddress=mgmtnode1@yourorg.com"
    
    # leaf cert signed by intermediate
    openssl x509 -req -in mgmt-node1-req.pem -CAkey intermediate.key -CA intermediate-cert.pem -days 365 -CAcreateserial -out mgmt-node1-cert.pem
    
    # keystore packaging leaf key and cert
    openssl pkcs12 -export -clcerts -in mgmt-node1-cert.pem -inkey mgmt-node1.key -out mgmt-node1-keystore.pfx -name nativemtls -password pass:keystorepass
    

    নোডের একটি নির্দিষ্ট লোকেশনে keystore এবং truststore ফাইল রাখুন এবং apigee ব্যবহারকারী সেগুলি অ্যাক্সেস করতে পারছেন কিনা তা নিশ্চিত করুন

    cp mgmt-node1-keystore.pfx /opt/apigee/customer/application/
    cp truststore.pfx /opt/apigee/customer/application/
    
    chown apigee:apigee /opt/apigee/customer/application/mgmt-node1-keystore.pfx
    chown apigee:apigee /opt/apigee/customer/application/truststore.pfx

  3. আপনি যে অ্যাপ্লিকেশন কনফিগার করছেন তার উপর ভিত্তি করে কনফিগারেশন ফাইল তৈরি ও এডিট করা
    অ্যাপ্লিকেশন কনফিগারেশন ফাইল
    ম্যানেজমেন্ট সার্ভার /opt/apigee/customer/application/management-server.properties
    ম্যানেজমেন্ট প্রসেসর /opt/apigee/customer/application/message-processor.properties
    রাউটার /opt/apigee/customer/application/router.properties

    ফাইলে নিম্নলিখিত কনফিগারেশন যোগ করুন:

    ### Enable TLS on CQL connections
    conf_cassandra_sslconfig.enable.tls=true
    conf_cassandra_sslconfig.enable.mtls=true
    
    ### Keystore Details
    conf_cassandra_sslconfig.keystore.path=/opt/apigee/customer/application/mgmt-node1-keystore.pfx
    conf_cassandra_sslconfig.keystore.password=keystorepass
    conf_cassandra_sslconfig.keystore.type=PKCS12
    
    ### Truststore Details
    conf_cassandra_sslconfig.truststore.path=/opt/apigee/customer/application/truststore.pfx
    conf_cassandra_sslconfig.truststore.password=trustpass
    conf_cassandra_sslconfig.truststore.type=PKCS12
    

    কনফিগারেশন ফাইলটি apigee ব্যবহারকারীর মালিকানাধীন এবং তার দ্বারা পাঠযোগ্য কিনা তা নিশ্চিত করুন

    chown apigee:apigee configuration file
    
    ### Example:
    chown apigee:apigee /opt/apigee/customer/application/management-server.properties
    

  4. ক্লায়েন্ট অ্যাপ্লিকেশন রিস্টার্ট করুন
    # Configure and restart service:
    apigee-service component configure
    apigee-service component restart
    # Example, to configure and restart message processor application
    apigee-service edge-message-processor configure
    apigee-service edge-message-processor restart
    
  5. উপযুক্ত অ্যাপ্লিকেশনের সিস্টেম লগে নিচের লাইনের সাথে লগ খুঁজে আপনি ক্লায়েন্ট অ্যাপ্লিকেশনে SSL সঠিকভাবে কনফিগার করা হয়েছে কিনা তা যাচাই করতে পারেন:

    cassandra কানেকশনে SSL বিকল্প যোগ করা হয়েছে

  6. প্রতিটি ক্লায়েন্ট অ্যাপ্লিকেশনে এক এক করে উপরের ধাপগুলি আবার করুন

অপারেশন ও কনফিগারেশন

mTLS প্রয়োগ করা

Cassandra-তে mTLS প্রয়োগ করা না হলে, Cassandra ক্লায়েন্টদের থেকে প্লেনটেক্সট কানেকশন বা এমন ক্লায়েন্টদের কানেকশন গ্রহণ করে যাদের সাথে এটি সফলভাবে ২-ওয়ে TLS হ্যান্ডশেক করতে পারে। mTLS এনফোর্সমেন্ট কাজ করার জন্য, প্রথমে Cassandra-তে mTLS কনফিগার করতে হবে। আপনি নিচে উল্লেখ করা ধাপগুলি অনুসরণ করে Cassandra-তে mTLS এনফোর্সমেন্ট সেট করতে পারবেন:

  1. একটি Cassandra নোড বেছে নিন
  2. ফাইল তৈরি বা এডিট করুন /opt/apigee/customer/application/cassandra.properties। এই ফাইলে নিম্নলিখিত প্রপার্টি যোগ করুন বা এডিট করুন:
    ### Optional TLS - true or false
    conf_cassandra_client_encryption_optional=false
    

    ফাইলটি apigee ব্যবহারকারীর মালিকানাধীন এবং তার দ্বারা পাঠযোগ্য কিনা তা নিশ্চিত করুন

    chown apigee:apigee /opt/apigee/customer/application/cassandra.properties
    
  3. Cassandra নোড কনফিগার ও রিস্টার্ট করা
    apigee-service apigee-cassandra configure
    apigee-service apigee-cassandra restart
    
  4. প্রতিটি Cassandra নোডে এক এক করে উপরের ধাপগুলি পুনরাবৃত্তি করুন

Cassandra-তে mTLS প্রয়োগ করা হলে, স্ট্যান্ডার্ড Cassandra কোয়েরি টুল cqlsh সরাসরি Cassandra-র সাথে কানেক্ট করতে পারবে না। SSL-এর জন্য cqlsh কনফিগার করতে, নতুন লিফ কী ও সার্টিফিকেট (ক্লায়েন্ট অ্যাপ্লিকেশনের জন্য লিফ কী ও সার্টিফিকেটের মতো) তৈরি করুন এবং নিম্নলিখিত ধাপগুলি অনুসরণ করুন:

  1. ফাইল তৈরি বা এডিট করা $HOME/.cassandra/cqlshrc
  2. ফাইলে নিম্নলিখিত কন্টেন্ট যোগ করুন:
    [ssl]
    certfile = /home/admin-user/certs/inter-root.pem
    validate = false
    userkey = /home/admin-user/certs/cqlsh1.key
    usercert = /home/admin-user/certs/cqlsh1-cert.pem
    
    • certfile - রুট ও অন্তর্বর্তী সার্টিফিকেট চেন সহ সার্টিফিকেট ফাইল
    • userkey - cqlsh-এর ব্যবহার করার জন্য ক্লায়েন্ট কী। এটি এমন একটি লিফ কী/সার্টিফিকেট পেয়ার হতে হবে যা আপনি অন্তর্বর্তী সার্টিফিকেট দিয়ে তৈরি ও সাইন করতে পারবেন।
    • usercert - cqlsh-এর ব্যবহার করার জন্য ক্লায়েন্ট সার্টিফিকেট। এটি একটি লিফ কী/সার্টিফিকেট হতে হবে যা আপনি অন্তর্বর্তী সার্টিফিকেটের মাধ্যমে তৈরি ও স্বাক্ষর করতে পারবেন।
  3. --ssl আর্গুমেন্ট দেওয়ার সময় স্বাভাবিকের মতো cqlsh কমান্ড রান করুন। যেমন:
    $  /opt/apigee/apigee-cassandra/bin/cqlsh --ssl X.X.X.X
    Connected to Apigee at X.X.X.X:9042
    [cqlsh 6.0.0 | Cassandra 4.0.13 | CQL spec 3.4.5 | Native protocol v5]
    Use HELP for help.
    cqlsh>
    

Cassandra-তে mTLS-এর এনফোর্সমেন্ট বন্ধ করুন

Cassandra-তে mTLS এনফোর্সমেন্ট বন্ধ করতে, নিচে উল্লেখ করা ধাপগুলি অনুসরণ করুন:

  1. একটি Cassandra নোড বেছে নিন
  2. /opt/apigee/customer/application/cassandra.properties ফাইল তৈরি বা এডিট করুন। এই ফাইলে নিম্নলিখিত প্রপার্টি যোগ বা এডিট করুন:
    ### Optional TLS - true or false
    conf_cassandra_client_encryption_optional=true
    

    দেখে নিন যে apigee ব্যবহারকারী ফাইলটির মালিক এবং সেটি পড়তে পারছেন কিনা

    chown apigee:apigee /opt/apigee/customer/application/cassandra.properties
    
  3. Cassandra নোড কনফিগার ও রিস্টার্ট করুন
    apigee-service apigee-cassandra configure
    apigee-service apigee-cassandra restart
    
  4. প্রতিটি Cassandra নোডে এক এক করে উপরের ধাপগুলি পুনরাবৃত্তি করুন

নেটিভ mTLS বন্ধ করা

নেটিভ mTLS বন্ধ করা হল একটি মাল্টি-স্টেপ প্রসেস, যা নেটিভ mTLS চালু করার মতোই। উচ্চ লেভেলের ধাপগুলি হল:

  1. Cassandra-তে mTLS-এর এনফোর্সমেন্ট বন্ধ করুন (যদি এনফোর্স করা থাকে)
  2. নিম্নলিখিত ক্লায়েন্ট অ্যাপ্লিকেশনের সব নোডে mTLS এক এক করে বন্ধ করুন:
    • edge-management-server
    • edge-message-processor
    • এজ-রাউটার
    1. আপনি যে অ্যাপ্লিকেশন কনফিগার করছেন তার উপর ভিত্তি করে কনফিগারেশন ফাইল তৈরি ও এডিট করুন:
      অ্যাপ্লিকেশন কনফিগারেশন ফাইল
      ম্যানেজমেন্ট সার্ভার /opt/apigee/customer/application/management-server.properties
      ম্যানেজমেন্ট প্রসেসর /opt/apigee/customer/application/message-processor.properties
      রাউটার /opt/apigee/customer/application/router.properties
    2. কনফিগারেশন ফাইলে নিম্নলিখিত প্রপার্টি যোগ বা এডিট করুন:
      ### TLS on CQL connections
      conf_cassandra_sslconfig.enable.tls=false
      conf_cassandra_sslconfig.enable.mtls=false
      
    3. কনফিগারেশন ফাইলের মালিকানা apigee ব্যবহারকারীর কাছে আছে এবং তিনি সেটি পড়তে পারেন কিনা তা নিশ্চিত করুন:
      chown apigee:apigee configuration file
      
      ### Example:
      chown apigee:apigee /opt/apigee/customer/application/management-server.properties
    4. ক্লায়েন্ট অ্যাপ্লিকেশন রিস্টার্ট করুন:
      
      # Configure and restart service:
      apigee-service component configure
      apigee-service component restart
      
      # Example, to configure and restart message processor application
      apigee-service edge-message-processor configure
      apigee-service edge-message-processor restart
      
    5. প্রতিটি ক্লায়েন্ট অ্যাপ্লিকেশনে এক এক করে #a থেকে #d পর্যন্ত ধাপগুলি আবার করুন।
  3. সব Cassandra নোডে এক এক করে mTLS বন্ধ করুন:
    1. একটি Cassandra নোড বেছে নিন।
    2. /opt/apigee/customer/application/cassandra.properties ফাইল তৈরি বা এডিট করুন। এই ফাইলে নিম্নলিখিত প্রপার্টি যোগ বা এডিট করুন:
      ### Cassandra TLS on CQL connections
      conf_cassandra_client_encryption_enabled=false
      

      ফাইলটি apigee ব্যবহারকারীর মালিকানাধীন এবং তার দ্বারা পাঠযোগ্য কিনা তা নিশ্চিত করুন

      chown apigee:apigee /opt/apigee/customer/application/cassandra.properties
      
    3. Cassandra নোড কনফিগার ও রিস্টার্ট করুন
    4. apigee-service apigee-cassandra configure
      apigee-service apigee-cassandra restart
      
    5. প্রতিটি Cassandra নোডে, এক এক করে #a থেকে #c ধাপগুলি পুনরাবৃত্তি করুন।

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

শুধুমাত্র লিফ সার্টিফিকেটের জন্য রোটেশন (একই ইন্টারমিডিয়েট ও মূল সার্টিফিকেট রেখে)

ক্লায়েন্ট অ্যাপ্লিকেশন কনফিগার করুন বিকল্পের মতো ধাপ অনুসরণ করা যেতে পারে:

  1. একই ইন্টারমিডিয়েট কী/সার্টিফিকেট ব্যবহার করে কোনও অ্যাপ্লিকেশনের জন্য নতুন লিফ কী/সার্টিফিকেট জেনারেট করুন
  2. পাসওয়ার্ড ও কীস্টোরের ধরন সহ অ্যাপ্লিকেশনে নতুন লিফ কী/সার্টিফিকেটের পাথ কনফিগার করুন
  3. অ্যাপ্লিকেশন রিস্টার্ট করুন
রুট বা অন্তর্বর্তী সার্টিফিকেটের জন্য রোটেশন

আপনি যদি ইন্টারমিডিয়েট বা মূল সার্টিফিকেট রোটেট করার পরিকল্পনা করেন, তাহলে এটি একাধিক ধাপের প্রসেস হিসেবে করার জন্য সাজেস্ট করা হয়:

  1. আপনার ক্লাস্টার জুড়ে Cassandra নেটিভ mTLS বন্ধ করুন।
  2. সম্পূর্ণ নতুন লিফ বা অ্যাপ্লিকেশন সার্টিফিকেট তৈরি করতে নতুন রুট ও ইন্টারমিডিয়েট সার্টিফিকেট ব্যবহার করুন।
  3. নতুন সেট 'কী' ও সার্টিফিকেট ব্যবহার করে Cassandra নেটিভ mTLS চালু করতে ধাপগুলি অনুসরণ করুন।

সাধারণ Apigee অপারেশন

Apigee সফ্টওয়্যার আপগ্রেড করা, Cassandra নোড যোগ করা বা সরানো, ডেটা সেন্টার যোগ করা বা সরানো, Cassandra প্রমাণীকরণ চালু বা বন্ধ করা ইত্যাদির মতো সাধারণ Apigee অপারেশনগুলি সম্পাদন করতে, নিশ্চিত করুন যে Cassandra-তে mTLS প্রয়োগ করা হয়নি। আপনি mTLS প্রয়োগ করে থাকলে, এইসব অপারেশন নিয়ে এগিয়ে যাওয়ার আগে প্রয়োগ করা বন্ধ করুন।

পরিশিষ্ট ১

এই পরিশিষ্টে দেওয়া ধাপগুলি অনুসরণ করে সেল্ফ-সাইন করা রুট ও ইন্টারমিডিয়েট কী/সার্টিফিকেট পেয়ার তৈরি করা এবং এই সার্টিফিকেট চেইনকে ট্রাস্টস্টোরে যোগ করা যায়।

নিজেই সই করা রুট ও অন্তর্বর্তী সার্টিফিকেট তৈরি করা

# Create self-signed root key and cert
openssl req -x509 -newkey rsa:2048 -keyout root.key -out root-cert.pem -sha256 -days 3650 -nodes -subj "/C=yourc/ST=yourst/L=yourl/O=youro/OU=yourou/CN=root.yourorg.com/emailAddress=apigeeroot@yourorg.com"

# Create intermediate key and cert (signed by root)
openssl req -newkey rsa:2048 -keyout intermediate.key -out intermediate-req.pem -sha256 -days 3650 -nodes -subj "/C=yourc/ST=yourst/L=yourl/O=youro/OU=yourou/CN=inter.yourorg.com/emailAddress=apigeeinter@yourorg.com"

openssl x509 -req -in intermediate-req.pem -CAkey root.key -CA root-cert.pem -days 3650 -CAcreateserial -out intermediate-cert.pem

truststore জেনারেট করুন

# Merge root and intermediate cert into 1 file
cat intermediate-cert.pem > inter-root.pem
cat root-cert.pem >> inter-root.pem

# Create truststore to be used everywhere
keytool -keystore truststore.pfx -storetype PKCS12 -importcert -file inter-root.pem -keypass trustpass -storepass trustpass -alias nativemtls -noprompt

পরিশিষ্ট ২: বিকল্প সার্টিফিকেট চেইনিং সেট-আপ

এই নিবন্ধে একটি নির্দিষ্ট সার্টিফিকেট চেইনিং সেট-আপ সাজেস্ট করা হয়েছে যা নিরাপত্তা ও অপারেশন সহজ করার মধ্যে ভারসাম্য বজায় রাখে, তবে এর বিকল্পও আছে এবং নিচে তা বর্ণনা করা হয়েছে। বেশিরভাগ সাধারণ নীতি অন্যান্য পদ্ধতির ক্ষেত্রেও প্রযোজ্য, যেমন:

  1. প্রতিটি Cassandra নোড বা ক্লায়েন্ট অ্যাপ্লিকেশনের জন্য সরাসরি লিফ কী এবং সার্টিফিকেট থাকা (কোনও সাইনিং রুট বা ইন্টারমিডিয়েট সার্টিফিকেট ছাড়াই)। এর ফলে সার্টিফিকেট রোটেশন জটিল হয়ে যাবে।
  2. বিভিন্ন ব্যবহারের ক্ষেত্রে একাধিক রুট ও ইন্টারমিডিয়েট সেট থাকা। যেমন, Cassandra নোডে ১টি রুট/অন্তর্বর্তী সার্টিফিকেট সেট থাকে যা ব্যবহার করে Cassandra-এর সব লিফ সার্টিফিকেট স্বাক্ষর করা হয়। একইভাবে, সমস্ত ক্লায়েন্ট অ্যাপ্লিকেশনে অ্যাপ্লিকেশন লিফ সার্টিফিকেট সাইন করার জন্য একটি আলাদা রুট/ইন্টারমিডিয়েট সেট থাকতে পারে। এই ধরনের সেট-আপ কার্যকর হলেও, উপযুক্ত ট্রাস্টস্টোরে রুট/অন্তর্বর্তী সার্টিফিকেট চেইন যোগ করতে হয়। এই উদাহরণে, Cassandra-এর ট্রাস্টস্টোরে ক্লায়েন্টের রুট/অন্তর্বর্তী সার্টিফিকেট থাকতে হবে এবং ক্লায়েন্ট অ্যাপ্লিকেশনের ট্রাস্টস্টোরে Cassandra নোডের রুট/অন্তর্বর্তী চেইন থাকতে হবে।
  3. উপরে উল্লেখ করা বিষয়ের মতো, আপনার বিভিন্ন অঞ্চলের জন্য একাধিক মূল ও মধ্যবর্তী সার্টিফিকেট সেট থাকতে পারে, কিন্তু সব অঞ্চলের সব ক্লায়েন্ট ও সব অঞ্চলের সব সার্ভারকে কনফিগার করা ট্রাস্টস্টোরে এগুলি যোগ করে সব মূল ও মধ্যবর্তী চেনের ব্যাপারে জানাতে হবে।