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

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

खास जानकारी

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

इस टेबल में, Apigee for Private Cloud में मौजूद, स्टोर किए गए डेटा को एन्क्रिप्ट (सुरक्षित) करने के विकल्पों के बारे में बताया गया है:

इकाई डिफ़ॉल्ट रूप से, एन्क्रिप्ट (सुरक्षित) करने की सुविधा चालू रहती है एन्क्रिप्ट (सुरक्षित) करने का विकल्प उपलब्ध नहीं है इसी विषय से जुड़े दस्तावेज़
केवीएम नहीं हां एन्क्रिप्ट (सुरक्षित) किए गए KVM के बारे में जानकारी देखें.
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

एफ़आईपीएस की सुविधा वाले ऑपरेटिंग सिस्टम के लिए, BCFKS की-स्टोर के साथ काम करना

अगर एफ़आईपीएस की सुविधा वाले ऑपरेटिंग सिस्टम पर प्राइवेट क्लाउड के लिए Edge इस्तेमाल किया जा रहा है, तो आपको 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

आपको उस मशीन पर Java की अतिरिक्त सेटिंग करनी पड़ सकती है जहां यह पासकोड जनरेट किया जा रहा है. आपको मशीन की Java सुरक्षा फ़ाइल में बदलाव करना पड़ सकता है. आम तौर पर, यह फ़ाइल /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

दूसरा चरण: मैनेजमेंट सर्वर को कॉन्फ़िगर करना

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

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