গোপন কী এনক্রিপশন সক্ষম করা হচ্ছে

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

ওভারভিউ

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

নিম্নলিখিত সারণীটি ব্যক্তিগত ক্লাউডের জন্য Apigee-এ বিশ্রামে থাকা ডেটার জন্য এনক্রিপশন বিকল্পগুলি বর্ণনা করে:

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

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

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

এই কাজগুলি এই নথিতে ব্যাখ্যা করা হয়েছে।

কী এনক্রিপশন বৈশিষ্ট্য সম্পর্কে আপনার যা জানা দরকার

এই নথির পদক্ষেপগুলি ব্যাখ্যা করে যে কীভাবে KEK বৈশিষ্ট্যটি সক্ষম করতে হয়, যা Apigee কে বিকাশকারী অ্যাপ ভোক্তার গোপনীয়তাগুলি এনক্রিপ্ট করতে ব্যবহৃত গোপন কীগুলিকে এনক্রিপ্ট করার অনুমতি দেয় যখন সেগুলি ক্যাসান্দ্রা ডাটাবেসে বিশ্রামে সংরক্ষণ করা হয়।

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

আপনি যদি একটি এনক্রিপ্ট করা সত্তার উপর কোনো লেখার অপারেশন করেন, অপারেশনটি সংরক্ষণ করা হলে এটি এনক্রিপ্ট করা হবে। উদাহরণস্বরূপ, আপনি যদি একটি আনক্রিপ্ট করা টোকেন প্রত্যাহার করেন এবং পরে এটি অনুমোদন করেন, নতুন অনুমোদিত টোকেনটি এনক্রিপ্ট করা হবে।

চাবিগুলো নিরাপদ রাখা

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

কী এনক্রিপশন সক্ষম করা হচ্ছে

ভোক্তা গোপন কী এনক্রিপশনের জন্য এই পদক্ষেপগুলি অনুসরণ করুন:

পূর্বশর্ত

এই নথিতে পদক্ষেপগুলি সম্পাদন করার আগে আপনাকে অবশ্যই এই প্রয়োজনীয়তাগুলি পূরণ করতে হবে:

  • আপনাকে অবশ্যই ব্যক্তিগত ক্লাউড 4.50.00.10 বা তার পরের জন্য Apigee এজ ইনস্টল বা আপগ্রেড করতে হবে।
  • ব্যক্তিগত ক্লাউড প্রশাসকের জন্য আপনাকে অবশ্যই একজন এপিজি এজ হতে হবে।

ধাপ 1: একটি কীস্টোর জেনারেট করুন

কী এনক্রিপশন কী (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

FIPS-সক্ষম অপারেটিং সিস্টেমের জন্য BCFKS কীস্টোরের সাথে কাজ করা

আপনি যদি একটি FIPS-সক্ষম অপারেটিং সিস্টেমে প্রাইভেট ক্লাউডের জন্য এজ ব্যবহার করেন, তাহলে আপনার BCFKS ধরনের একটি কীস্টোর তৈরি করা উচিত। এই ধরনের একটি কীস্টোর একটি নন-FIPS মেশিনে তৈরি করা যেতে পারে এবং তারপর একটি FIPS-সম্মত মেশিনে স্থানান্তরিত করা যেতে পারে। কীস্টোর তৈরি করতে, নিম্নলিখিত কমান্ডটি ব্যবহার করুন:

keytool -genseckey -alias <KEYSTORE_NAME> -keyalg AES -keysize 256 \
-storetype BCFKS -keystore keystore.bcfks \
-providerpath /opt/apigee/edge-gateway/lib/thirdparty/bc-fips-1.0.2.4.jar \
-providerclass org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider \
-keypass keystorepass -storepass keystorepass

আপনি যে মেশিনে এই কীস্টোর তৈরি করছেন সেখানে আপনাকে অতিরিক্ত জাভা সেটিংস সম্পাদন করতে হতে পারে। আপনাকে মেশিনের জাভা নিরাপত্তা ফাইল সম্পাদনা করতে হতে পারে (সাধারণত /usr/lib/jvm/jre/lib/security/java.security এ অবস্থিত)। এই ফাইলটিতে, নিম্নলিখিত বৈশিষ্ট্যগুলি খুঁজুন এবং সম্পাদনা করুন:

# Don't rely on /dev/random for generating random numbers
securerandom.source=file:/dev/urandom
securerandom.strongAlgorithms=PKCS11:SunPKCS11-NSS-FIPS

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

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

  1. ম্যানেজমেন্ট সার্ভার নোডের একটি ডিরেক্টরিতে ধাপ 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-4 পুনরাবৃত্তি করুন।

ধাপ 3: একটি ডেভেলপার অ্যাপ তৈরি করুন

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

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

ধাপ 4: বার্তা প্রসেসর কনফিগার করুন

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

  1. বার্তা প্রসেসর নোডের একটি ডিরেক্টরিতে ধাপ 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. আপনার একাধিক নোডে বার্তা প্রসেসর ইনস্টল করা থাকলে, প্রতিটি বার্তা প্রসেসর নোডে 1-4 ধাপ পুনরাবৃত্তি করুন।

সারাংশ

এখন থেকে আপনি যে কোনো ডেভেলপার অ্যাপ তৈরি করবেন তাদের শংসাপত্রের গোপনীয়তা 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 N/A বার্তা প্রসেসর বা ম্যানেজমেন্ট সার্ভার নোডে KEK কীস্টোরের পথ প্রদান করুন। ধাপ 2 দেখুন: ব্যবস্থাপনা সার্ভার কনফিগার করুন এবং ধাপ 3: বার্তা প্রসেসর কনফিগার করুন
conf_keymanagement_kmscred.encryption.kek.alias N/A উপনাম যার বিরুদ্ধে KEK কীস্টোরে সংরক্ষণ করা হয়।
conf_keymanagement_kmscred.encryption.keystore.pass N/A ঐচ্ছিক যদি আপনি এই বৈশিষ্ট্যগুলি সেট করতে পরিবেশ ভেরিয়েবল ব্যবহার করেন। কনফিগারেশন বৈশিষ্ট্যের জন্য পরিবেশ ভেরিয়েবল ব্যবহার করাও দেখুন।
conf_keymanagement_kmscred.encryption.kek.pass N/A ঐচ্ছিক যদি আপনি এই বৈশিষ্ট্যগুলি সেট করতে পরিবেশ ভেরিয়েবল ব্যবহার করেন। কনফিগারেশন বৈশিষ্ট্যের জন্য পরিবেশ ভেরিয়েবল ব্যবহার করাও দেখুন।