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

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

এক নজরে

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

নিম্নলিখিত সারণীতে প্রাইভেট ক্লাউডের জন্য Apigee-তে স্টোর করা ডেটা এনক্রিপশন বিকল্পের বিবরণ দেওয়া আছে:

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

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

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

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

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

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

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

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

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

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

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

কনজিউমার সিক্রেট কী এনক্রিপশনের জন্য এইসব ধাপ অনুসরণ করুন:

পূর্বশর্ত

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

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

ধাপ ১: কীস্টোর তৈরি করা

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

  1. KEK এনক্রিপ্ট করার জন্য ব্যবহার করা হবে এমন একটি কী সেভ করতে কীস্টোর জেনারেট করতে নিম্নলিখিত কমান্ডটি এক্সিকিউট করুন। ঠিক যেভাবে দেখানো হয়েছে সেইভাবে কমান্ড লিখুন। (আপনি নিজের পছন্দমতো যেকোনও কীস্টোরের নাম দিতে পারেন):
    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 প্রযোজ্য নয় এইসব প্রপার্টি সেট করার জন্য এনভায়রনমেন্ট ভেরিয়েবল ব্যবহার করলে এটি ঐচ্ছিক। এছাড়াও দেখুন কনফিগারেশন প্রপার্টির জন্য এনভায়রনমেন্ট ভেরিয়েবল ব্যবহার করা।