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

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

खास जानकारी

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

यहां दी गई टेबल में, Apigee for Private Cloud में सेव किए गए डेटा को एन्क्रिप्ट करने के विकल्पों के बारे में बताया गया है:

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

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

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

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

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

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

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

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

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

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

कुंजी को एन्क्रिप्ट करने की सुविधा चालू करना

कंज्यूमर सीक्रेट कुंजी को एन्क्रिप्ट करने के लिए, यह तरीका अपनाएं:

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

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

  • आपको Apigee Edge for Private Cloud 4.50.00.10 या इसके बाद के वर्शन को इंस्टॉल या अपग्रेड करना होगा.
  • आपके पास Apigee Edge for Private Cloud के एडमिन की भूमिका होनी चाहिए.

पहला चरण: कीस्टोर जनरेट करना

की एन्क्रिप्शन की (केईके) को सेव करने के लिए, कीस्टोर बनाने का तरीका यहां बताया गया है:

  1. केईके को एन्क्रिप्ट (सुरक्षित) करने के लिए इस्तेमाल की जाने वाली कुंजी को सेव करने के लिए, कीस्टोर जनरेट करें. इसके लिए, यह कमांड चलाएं. कमांड को ठीक उसी तरह डालें जैसा दिखाया गया है. (अपनी पसंद के मुताबिक, कीस्टोर का कोई भी नाम दिया जा सकता है):
    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. डेटा एन्क्रिप्शन की (केईके) बनाने के लिए, कोई डेवलपर ऐप्लिकेशन बनाएं. इसका तरीका जानने के लिए, ऐप्लिकेशन रजिस्टर करना लेख पढ़ें.
  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 लागू नहीं मैसेज प्रोसेसर या मैनेजमेंट सर्वर नोड पर, केईके कीस्टोर का पाथ दें. दूसरा चरण: मैनेजमेंट सर्वर को कॉन्फ़िगर करना और तीसरा चरण: मैसेज प्रोसेसर को कॉन्फ़िगर करना देखें.
conf_keymanagement_kmscred.encryption.kek.alias लागू नहीं वह उपनाम जिसके लिए, कीस्टोर में केईके को सेव किया गया है.
conf_keymanagement_kmscred.encryption.keystore.pass लागू नहीं अगर इन प्रॉपर्टी को सेट करने के लिए एनवायरमेंट वैरिएबल का इस्तेमाल किया जाता है, तो यह ज़रूरी नहीं है. कॉन्फ़िगरेशन प्रॉपर्टी के लिए एनवायरमेंट वैरिएबल का इस्तेमाल करना भी देखें.
conf_keymanagement_kmscred.encryption.kek.pass लागू नहीं अगर इन प्रॉपर्टी को सेट करने के लिए एनवायरमेंट वैरिएबल का इस्तेमाल किया जाता है, तो यह ज़रूरी नहीं है. कॉन्फ़िगरेशन प्रॉपर्टी के लिए एनवायरमेंट वैरिएबल का इस्तेमाल करना भी देखें.