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

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