सुरक्षा कुंजी को एन्क्रिप्ट (सुरक्षित) करने की सुविधा चालू की जा रही है

इस दस्तावेज़ में Cassandra डेटाबेस में स्टोर किए गए डेवलपर ऐप्लिकेशन के उपभोक्ता सीक्रेट (क्लाइंट क्रेडेंशियल) को एन्क्रिप्ट (सुरक्षित) करने का तरीका बताया गया है.

खास जानकारी

पहले, Apigee Edge for Private Cloud में, की-वैल्यू मैप (केवीएम) डेटा और OAuth ऐक्सेस टोकन के लिए, एन्क्रिप्ट (सुरक्षित) करने का वैकल्पिक तरीका उपलब्ध कराया गया है.

यहां दी गई टेबल में, प्राइवेट क्लाउड के लिए Apigee में सेव किए गए डेटा को एन्क्रिप्ट (सुरक्षित) करने के विकल्पों के बारे में बताया गया है:

इकाई डिफ़ॉल्ट रूप से एन्क्रिप्ट (सुरक्षित) करने की सुविधा चालू रहती है एन्क्रिप्ट (सुरक्षित) करने का विकल्प उपलब्ध है इसी विषय से जुड़ा दस्तावेज़
केवीएम नहीं हां एन्क्रिप्ट (सुरक्षित) किए गए केवीएम के बारे में जानकारी देखें.
OAuth ऐक्सेस टोकन नहीं हां ज़्यादा सुरक्षा के लिए हैशिंग टोकन देखें.
डेवलपर ऐप्लिकेशन के उपभोक्ता की गोपनीय जानकारी नहीं हां चालू करने के लिए, इस दस्तावेज़ में कॉन्फ़िगरेशन के चरणों का पालन करें.

क्लाइंट क्रेडेंशियल को एन्क्रिप्ट (सुरक्षित) करने की सुविधा चालू करने के लिए, आपको सभी मैसेज प्रोसेसर और मैनेजमेंट सर्वर नोड पर नीचे दिए गए टास्क पूरे करने होंगे:

  • कुंजी एन्क्रिप्ट (सुरक्षित) करने वाली कुंजी (KEK) को सेव करने के लिए, कीस्टोर बनाएं. Apigee, एन्क्रिप्ट (सुरक्षित) की गई इस कुंजी का इस्तेमाल करके, आपके डेटा को एन्क्रिप्ट करने वाली ज़रूरी कुंजियों को एन्क्रिप्ट करता है.
  • सभी मैनेजमेंट सर्वर और मैसेज प्रोसेसर नोड पर कॉन्फ़िगरेशन प्रॉपर्टी में बदलाव करें.
  • पासकोड बनाने की सुविधा ट्रिगर करने के लिए, डेवलपर ऐप्लिकेशन बनाएं.
  • नोड रीस्टार्ट करें.

इस दस्तावेज़ में इन कामों के बारे में बताया गया है.

कुंजी को एन्क्रिप्ट (सुरक्षित) करने की सुविधा से जुड़ी ज़रूरी जानकारी

इस दस्तावेज़ में दिए गए चरणों में KEK सुविधा को चालू करने का तरीका बताया गया है. इस सुविधा की मदद से, Apigee को उन सीक्रेट पासकोड को एन्क्रिप्ट (सुरक्षित) कर पाता है जिनका इस्तेमाल करके, डेवलपर ऐप्लिकेशन के उपभोक्ता की सीक्रेट कुंजी को कैसंड्रा डेटाबेस में सेव किया जाता है.

डिफ़ॉल्ट रूप से, डेटाबेस में मौजूद सभी वैल्यू में कोई बदलाव (सादे टेक्स्ट में) नहीं होगा और पहले की तरह ही काम करता रहेगा.

अगर किसी ऐसी इकाई पर लिखने की कार्रवाई की जाती है जिसे एन्क्रिप्ट (सुरक्षित) नहीं किया गया है, तो कार्रवाई को सेव करते समय उसे एन्क्रिप्ट (सुरक्षित) कर दिया जाएगा. उदाहरण के लिए, अगर किसी एन्क्रिप्ट न किए गए टोकन को रद्द किया जाता है और फिर बाद में उसे मंज़ूरी दी जाती है, तो स्वीकार किए गए नए टोकन को एन्क्रिप्ट (सुरक्षित) किया जाएगा.

कुंजियों को सुरक्षित रखना

कीस्टोर की एक कॉपी सेव करना न भूलें, जिसमें KEK (केईके) को किसी सुरक्षित जगह पर सेव किया गया है. हमारा सुझाव है कि कीस्टोर की कॉपी को सेव करने के लिए, आप अपने सुरक्षित तरीके का इस्तेमाल करें. जैसा कि इस दस्तावेज़ में दिए गए निर्देशों में बताया गया है, कीस्टोर हर मैसेज प्रोसेसर और मैनेजमेंट सर्वर नोड पर होना चाहिए जहां लोकल कॉन्फ़िगरेशन फ़ाइल इसका रेफ़रंस दे सके. हालांकि, यह भी ज़रूरी है कि कीस्टोर की कॉपी को किसी दूसरी जगह सेव किया जाए, ताकि उसे सुरक्षित रखा जा सके और बैकअप के तौर पर रखा जा सके.

कुंजी को एन्क्रिप्ट (सुरक्षित) करने की सुविधा चालू की जा रही है

उपभोक्ता की सीक्रेट कुंजी को एन्क्रिप्ट (सुरक्षित) करने के लिए, यह तरीका अपनाएं:

ज़रूरी शर्तें

इस दस्तावेज़ में दिए गए चरणों को पूरा करने से पहले, आपको इन ज़रूरी शर्तों को पूरा करना होगा:

  • आपको Apigee Edge for Private Cloud 4.50.00.10 या इसके बाद के वर्शन को इंस्टॉल या अपग्रेड करना होगा.
  • निजी क्लाउड एडमिन के लिए, आपका 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. अगर आपने एक से ज़्यादा नोड पर मैसेज प्रोसेसर इंस्टॉल किया है, तो हर मैसेज प्रोसेसर नोड पर पहले से लेकर चौथे चरण तक दोहराएं.

खास जानकारी

अब से आपके बनाए गए किसी भी डेवलपर ऐप्लिकेशन के क्रेडेंशियल को कैसे एन्क्रिप्ट (सुरक्षित) किया जाएगा, बाद में उन्हें कैसंड्रा के डेटाबेस में ही एन्क्रिप्ट (सुरक्षित) किया जाएगा.

कॉन्फ़िगरेशन प्रॉपर्टी के लिए एनवायरमेंट वैरिएबल का इस्तेमाल करना

एनवायरमेंट वैरिएबल का इस्तेमाल करके, यहां दी गई मैसेज प्रोसेसर और मैनेजमेंट सर्वर कॉन्फ़िगरेशन प्रॉपर्टी सेट की जा सकती हैं. अगर एनवायरमेंट वैरिएबल सेट किए जाते हैं, तो वे मैसेज प्रोसेसर या मैनेजमेंट सर्वर कॉन्फ़िगरेशन फ़ाइल में सेट की गई प्रॉपर्टी को बदल देते हैं.

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 लागू नहीं अगर इन प्रॉपर्टी को सेट करने के लिए एनवायरमेंट वैरिएबल का इस्तेमाल किया जाता है, तो यह ज़रूरी नहीं है. कॉन्फ़िगरेशन प्रॉपर्टी के लिए, एनवायरमेंट वैरिएबल का इस्तेमाल करना लेख पढ़ें.