গোপন কী এনক্রিপশন চালু করা

Cassandra ডেটাবেসে স্টোর করা ডেভেলপার অ্যাপ গ্রাহকের গোপনীয় তথ্য (ক্লায়েন্ট ক্রেডেনশিয়াল) কীভাবে এনক্রিপ্ট করতে হয় তা এই ডকুমেন্ট থেকে জানতে পারবেন।

এক নজরে

সাধারণত, প্রাইভেট ক্লাউডের জন্য Apigee Edge, কী ভ্যালু ম্যাপ (KVM) ডেটা এবং OAuth অ্যাক্সেস টোকেনের জন্য ঐচ্ছিক এনক্রিপশন প্রদান করে।

নিম্নলিখিত সারণীতে Apigee for Private Cloud-এ ডেটা অ্যাট রেস্টের জন্য এনক্রিপশন বিকল্প বর্ণনা করা আছে:

এন্টিটি ডিফল্ট হিসেবে এনক্রিপশন চালু করা আছে এনক্রিপশন ঐচ্ছিকভাবে উপলভ্য এই ধরনের ডকুমেন্টেশন
KVM না হ্যাঁ এনক্রিপ্ট করা KVM সম্পর্কে দেখুন।
OAuth অ্যাক্সেস টোকেন না হ্যাঁ অতিরিক্ত সুরক্ষার জন্য টোকেন হ্যাশ করা দেখুন।
ডেভেলপার অ্যাপ গ্রাহকের গোপন তথ্য না হ্যাঁ চালু করতে, এই ডকুমেন্টে উল্লেখ করা কনফিগারেশন সংক্রান্ত ধাপগুলি অনুসরণ করুন।

ক্লায়েন্ট ক্রেডেনশিয়ালের এনক্রিপশন চালু করতে, আপনাকে সব মেসেজ প্রসেসর ও ম্যানেজমেন্ট সার্ভার নোডে নিম্নলিখিত টাস্কগুলি করতে হবে:

  • কী এনক্রিপশন কী (KEK) সেভ করার জন্য একটি কীস্টোর তৈরি করুন। আপনার ডেটা এনক্রিপ্ট করার জন্য প্রয়োজনীয় গোপন 'কী' এনক্রিপ্ট করতে Apigee এই এনক্রিপ্টেড 'কী' ব্যবহার করে।
  • সব ম্যানেজমেন্ট সার্ভার ও মেসেজ প্রসেসর নোডে কনফিগারেশন প্রপার্টি এডিট করুন।
  • কী তৈরি করার ট্রিগার করতে ডেভেলপার অ্যাপ তৈরি করুন।
  • নোড রিস্টার্ট করুন।

এই ডকুমেন্টে এইসব টাস্কের ব্যাপারে ব্যাখ্যা করা হয়েছে।

কী এনক্রিপশন ফিচার সম্পর্কে আপনার যা জানা প্রয়োজন

এই ডকুমেন্টের ধাপগুলি ব্যাখ্যা করে যে কীভাবে KEK ফিচার চালু করতে হয়, যা Apigee-কে ডেভেলপার অ্যাপের গ্রাহক সিক্রেট এনক্রিপ্ট করতে ব্যবহৃত সিক্রেট কী এনক্রিপ্ট করার অনুমতি দেয় যখন সেগুলি Cassandra ডেটাবেসে স্টোর করা হয়।

ডিফল্ট হিসেবে, ডেটাবেসে আগে থেকে থাকা যেকোনও ভ্যালু অপরিবর্তিত (প্লেন টেক্সট হিসেবে) থাকবে এবং আগের মতোই কাজ করতে থাকবে।

আপনি এনক্রিপ্ট না করা কোনও এন্টিটিতে কিছু লিখলে, অপারেশন সেভ করার সময় সেটি এনক্রিপ্ট করা হবে। যেমন, আপনি যদি কোনও এনক্রিপ্ট না করা টোকেন তুলে নেন এবং পরে সেটি অনুমোদন করেন, তাহলে নতুন অনুমোদিত টোকেনটি এনক্রিপ্ট করা হবে।

'কী' সুরক্ষিত রাখা

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

কী এনক্রিপশন চালু করা হচ্ছে

গ্রাহকের সিক্রেট কী এনক্রিপশন করতে এইসব ধাপ অনুসরণ করুন:

পূর্বশর্ত

এই ডকুমেন্টে উল্লেখ করা ধাপগুলি অনুসরণ করার আগে আপনাকে এইসব প্রয়োজনীয়তা পূরণ করতে হবে:

  • আপনাকে অবশ্যই Apigee Edge for Private Cloud 4.50.00.10 বা তার পরবর্তী যেকোনও ভার্সনে ইনস্টল বা আপগ্রেড করতে হবে।
  • আপনাকে অবশ্যই Apigee Edge for Private Cloud-এর অ্যাডমিনিস্ট্রেটর হতে হবে।

ধাপ ১: Keystore তৈরি করা

'কী' এনক্রিপশন 'কী' (KEK) রাখার জন্য keystore তৈরি করতে এইসব ধাপ অনুসরণ করুন:

  1. KEK এনক্রিপ্ট করার জন্য ব্যবহার করা হবে এমন একটি 'কী' স্টোর করার জন্য 'কী' স্টোর তৈরি করতে নিম্নলিখিত কমান্ডটি এক্সিকিউট করুন। ঠিক যেমন দেখানো হয়েছে সেইভাবে কমান্ড লিখুন। (আপনি নিজের ইচ্ছেমতো যেকোনও keystore-এর নাম দিতে পারেন):
    keytool -genseckey -alias KEYSTORE_NAME -keyalg AES -keysize 256 \
    -keystore kekstore.p12 -storetype PKCS12

    প্রম্পট করা হলে, পাসওয়ার্ড লিখুন। আপনি ম্যানেজমেন্ট সার্ভার ও মেসেজ প্রসেসর কনফিগার করার সময় পরবর্তী বিভাগে এই পাসওয়ার্ড ব্যবহার করবেন।

    এই কমান্ড kekstore.p12 কীস্টোর ফাইল তৈরি করে যাতে KEYSTORE_NAME অ্যালিয়াস সহ কী থাকে।

  2. (ঐচ্ছিক) নিম্নলিখিত কমান্ডের মাধ্যমে ফাইলটি সঠিকভাবে তৈরি করা হয়েছে কিনা তা যাচাই করুন। ফাইলটি সঠিক হলে, কমান্ডটি KEYSTORE_NAME অ্যালিয়াস সহ একটি কী রিটার্ন করে:
    keytool -list -keystore kekstore.p12

ধাপ ২: ম্যানেজমেন্ট সার্ভার কনফিগার করা

এরপর, ম্যানেজমেন্ট সার্ভার কনফিগার করুন। একাধিক নোডে ম্যানেজমেন্ট সার্ভার ইনস্টল করা থাকলে, আপনাকে প্রতিটি নোডে এইসব ধাপ আবার করতে হবে।

  1. ধাপ ১-এ আপনার তৈরি করা কীস্টোর ফাইলটি ম্যানেজমেন্ট সার্ভার নোডের একটি ডিরেক্টরিতে কপি করুন, যেমন /opt/apigee/customer/application। যেমন:
    cp certs/kekstore.p12 /opt/apigee/customer/application
  2. apigee ব্যবহারকারী ফাইলটি পড়তে পারছেন কিনা তা নিশ্চিত করুন:
    chown apigee:apigee /opt/apigee/customer/application/kekstore.p12
    chmod 400 /opt/apigee/customer/application/kekstore.p12
  3. /opt/apigee/customer/application/management-server.properties-এ নিম্নলিখিত প্রপার্টি যোগ করুন। ফাইলটি না থাকলে, এটি তৈরি করুন। এছাড়াও, প্রপার্টি ফাইল রেফারেন্স দেখুন।
    conf_keymanagement_kmscred.encryption.enabled=true
    
    # Fallback is true to ensure your existing plaintext credentials continue to work
    conf_keymanagement_kmscred.encryption.allowFallback=true
    
    conf_keymanagement_kmscred.encryption.keystore.path=PATH_TO_KEYSTORE_FILE
    conf_keymanagement_kmscred.encryption.kek.alias=KEYSTORE_NAME
    
    # These could alternately be set as environment variables. These variables should be
    # accessible to Apigee user during bootup of the Java process. If environment
    # variables are specified, you can skip the password configs below.
    # KMSCRED_ENCRYPTION_KEYSTORE_PASS=
    # KMSCRED_ENCRYPTION_KEK_PASS=
    See also Using environment variables for configuration properties.
    
    conf_keymanagement_kmscred.encryption.keystore.pass=KEYSTORE_PASSWORD
    conf_keymanagement_kmscred.encryption.kek.pass=KEK_PASSWORD

    মনে রাখবেন, কীস্টোর তৈরি করার জন্য ব্যবহৃত টুলের উপর নির্ভর করে KEK_PASSWORD ও KEYSTORE_PASSWORD একই হতে পারে।

  4. এই কমান্ডগুলি ব্যবহার করে ম্যানেজমেন্ট সার্ভার রিস্টার্ট করুন:
    /opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
    /opt/apigee/apigee-service/bin/apigee-service edge-management-server wait_for_ready

    ম্যানেজমেন্ট সার্ভার রেডি হয়ে গেলে wait_for_ready কমান্ড নিম্নলিখিত মেসেজটি রিটার্ন করে:

    Checking if management-server is up: management-server is up.
  5. একাধিক নোডে ম্যানেজমেন্ট সার্ভার ইনস্টল করা থাকলে, প্রতিটি ম্যানেজমেন্ট সার্ভার নোডে উপরে উল্লেখ করা ১-৪ নম্বর ধাপ অনুসরণ করুন।

ধাপ ৩: ডেভেলপার অ্যাপ তৈরি করা

ম্যানেজমেন্ট সার্ভার আপডেট করা হয়ে গেছে, তাই ক্লায়েন্ট ক্রেডেনশিয়াল ডেটা এনক্রিপ্ট করার জন্য ব্যবহৃত 'কী' জেনারেট করার ট্রিগার হিসেবে আপনাকে একটি ডেভেলপার অ্যাপ তৈরি করতে হবে:

  1. ডেটা এনক্রিপশন কী (KEK) তৈরি করার ট্রিগার হিসেবে একটি ডেভেলপার অ্যাপ তৈরি করুন। ধাপগুলি জানতে, অ্যাপ রেজিস্টার করা দেখুন।
  2. আপনি চাইলে ডেভেলপার অ্যাপ মুছে দিতে পারেন। এনক্রিপশন কী তৈরি হয়ে গেলে, এটি আর রাখার প্রয়োজন নেই।

ধাপ ৪: মেসেজ প্রসেসর কনফিগার করা

মেসেজ প্রসেসরে এনক্রিপশন চালু না করা পর্যন্ত, রানটাইম অনুরোধ কোনও এনক্রিপ্ট করা ক্রেডেনশিয়াল প্রসেস করতে পারবে না।

  1. ধাপ ১-এ আপনার তৈরি করা কীস্টোর ফাইলটি মেসেজ প্রসেসর নোডের একটি ডিরেক্টরিতে কপি করুন, যেমন /opt/apigee/customer/application। যেমন:
    cp certs/kekstore.p12 /opt/apigee/customer/application
  2. apigee ব্যবহারকারী ফাইলটি পড়তে পারছেন কিনা তা নিশ্চিত করুন:
    chown apigee:apigee /opt/apigee/customer/application/kekstore.p12
  3. /opt/apigee/customer/application/message-processor.properties-এ নিম্নলিখিত প্রপার্টি যোগ করুন। ফাইলটি না থাকলে, এটি তৈরি করুন। এছাড়াও, প্রপার্টি ফাইল রেফারেন্স দেখুন।
    conf_keymanagement_kmscred.encryption.enabled=true
    
    # Fallback is true to ensure your existing plaintext credentials continue to work
    conf_keymanagement_kmscred.encryption.allowFallback=true
    
    conf_keymanagement_kmscred.encryption.keystore.path=PATH_TO_KEYSTORE_FILE
    conf_keymanagement_kmscred.encryption.kek.alias=KEYSTORE_NAME
    
    # These could alternately be set as environment variables. These variables should be
    # accessible to Apigee user during bootup of the Java process. If environment
    # variables are specified, you can skip the password configs below.
    # KMSCRED_ENCRYPTION_KEYSTORE_PASS=
    # KMSCRED_ENCRYPTION_KEK_PASS=
    See also Using environment variables for configuration properties.
    
    
    conf_keymanagement_kmscred.encryption.keystore.pass=KEYSTORE_PASSWORD
    conf_keymanagement_kmscred.encryption.kek.pass=KEK_PASSWORD

    মনে রাখবেন যে, কীস্টোর তৈরি করার জন্য ব্যবহৃত টুলের উপর নির্ভর করে KEK_PASSWORD এবং KEYSTORE_PASSWORD একই হতে পারে।

  4. নিম্নলিখিত কমান্ড ব্যবহার করে মেসেজ প্রসেসর রিস্টার্ট করুন:
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor wait_for_ready

    মেসেজ প্রসেসর মেসেজ প্রসেস করার জন্য রেডি থাকলে wait_for_ready কমান্ড নিম্নলিখিত মেসেজ রিটার্ন করে:

    Checking if message-processor is up: message-processor is up.
  5. একাধিক নোডে মেসেজ প্রসেসর ইনস্টল করা থাকলে, প্রতিটি মেসেজ প্রসেসর নোডে ১-৪ ধাপ রিপিট করুন।

সারাংশ

এখন থেকে আপনার তৈরি করা যেকোনও ডেভেলপার অ্যাপের ক্রেডেনশিয়াল সিক্রেট Cassandra ডেটাবেসে এনক্রিপ্ট করা থাকবে।

কনফিগারেশন প্রপার্টির জন্য এনভায়রনমেন্ট ভেরিয়েবল ব্যবহার করা

এছাড়াও, আপনি এনভায়রনমেন্ট ভেরিয়েবল ব্যবহার করে নিম্নলিখিত মেসেজ প্রসেসর ও ম্যানেজমেন্ট সার্ভার কনফিগারেশন প্রপার্টি সেট করতে পারবেন। সেট করা থাকলে, এনভায়রনমেন্ট ভেরিয়েবেল মেসেজ প্রসেসর বা ম্যানেজমেন্ট সার্ভার কনফিগারেশন ফাইলে সেট করা প্রপার্টি ওভাররাইড করে।

conf_keymanagement_kmscred.encryption.keystore.pass=
conf_keymanagement_kmscred.encryption.kek.pass=

সংশ্লিষ্ট এনভায়রনমেন্ট ভেরিয়েবলগুলি হল:

export KMSCRED_ENCRYPTION_KEYSTORE_PASS=KEYSTORE_PASSWORD
export KMSCRED_ENCRYPTION_KEK_PASS=KEK_PASSWORD

আপনি যদি এই এনভায়রনমেন্ট ভেরিয়েবল সেট করেন, তাহলে মেসেজ প্রসেসর ও ম্যানেজমেন্ট সার্ভার নোডের কনফিগারেশন ফাইল থেকে এই কনফিগারেশন প্রপার্টি বাদ দিতে পারবেন, কারণ এগুলি উপেক্ষা করা হবে:

conf_keymanagement_kmscred.encryption.keystore.pass
conf_keymanagement_kmscred.encryption.kek.pass

প্রপার্টি ফাইলের রেফারেন্স

এই বিভাগে কনফিগারেশন প্রপার্টি বর্ণনা করা হয়েছে যা আপনাকে অবশ্যই সব মেসেজ প্রসেসর ও ম্যানেজমেন্ট সার্ভার নোডে সেট করতে হবে, যেমনটি এই ডকুমেন্টে আগে ব্যাখ্যা করা হয়েছে।

প্রপার্টি ডিফল্ট বিবরণ
conf_keymanagement_kmscred.encryption.enabled false কী এনক্রিপশন চালু করতে হলে true হতে হবে।
conf_keymanagement_kmscred.encryption.allowFallback false আপনার আগে থেকে থাকা প্লেইনটেক্সট ক্রেডেনশিয়াল যাতে কাজ করতে থাকে তা নিশ্চিত করতে allowFallback-কে true-এ সেট করুন।
conf_keymanagement_kmscred.encryption.keystore.path প্রযোজ্য নয় মেসেজ প্রসেসর বা ম্যানেজমেন্ট সার্ভার নোডে KEK কীস্টোরের পাথ প্রদান করুন। ধাপ ২: ম্যানেজমেন্ট সার্ভার কনফিগার করুন এবং ধাপ ৩: মেসেজ প্রসেসর কনফিগার করুন দেখুন।
conf_keymanagement_kmscred.encryption.kek.alias প্রযোজ্য নয় যে উপনামের বিপরীতে KEK কীস্টোরে স্টোর করা হয়।
conf_keymanagement_kmscred.encryption.keystore.pass প্রযোজ্য নয় এইসব প্রপার্টি সেট করার জন্য এনভায়রনমেন্ট ভেরিয়েবল ব্যবহার করলে এটি ঐচ্ছিক। এছাড়াও, কনফিগারেশন প্রপার্টির জন্য এনভায়রনমেন্ট ভেরিয়েবল ব্যবহার করা দেখুন।
conf_keymanagement_kmscred.encryption.kek.pass প্রযোজ্য নয় এইসব প্রপার্টি সেট করার জন্য এনভায়রনমেন্ট ভেরিয়েবল ব্যবহার করলে এটি ঐচ্ছিক। এছাড়াও, কনফিগারেশন প্রপার্টির জন্য এনভায়রনমেন্ট ভেরিয়েবল ব্যবহার করা দেখুন।