क्लाउड केएमएस की मदद से डेटा एन्क्रिप्ट (सुरक्षित) और डिक्रिप्ट करें

1. खास जानकारी

Cloud KMS, क्लाउड पर होस्ट की गई की मैनेजमेंट सेवा है. इसकी मदद से, अपनी क्लाउड सेवाओं के लिए क्रिप्टोग्राफ़िक कुंजियों को उसी तरह मैनेज किया जा सकता है जिस तरह ऑन-प्रिमाइसेस पर किया जाता है. इसमें एन्क्रिप्शन, डिक्रिप्शन, हस्ताक्षर करने, और पुष्टि करने की सुविधा शामिल है. इसके लिए, अलग-अलग तरह की कुंजियों और सोर्स का इस्तेमाल किया जाता है. जैसे, हार्डवेयर की मदद से सुरक्षित की गई कुंजियों के लिए Cloud HSM. इस ट्यूटोरियल में, Cloud KMS की सिमेट्रिक कुंजियों का इस्तेमाल करके डेटा को एन्क्रिप्ट और डिक्रिप्ट करने का तरीका बताया गया है.

आपको यह जानकारी मिलेगी

  • Cloud KMS API चालू करने का तरीका
  • Cloud KMS की-रिंग बनाने का तरीका
  • सिमेट्रिक एन्क्रिप्शन/डिक्रिप्शन के लिए, Cloud KMS की क्रिप्टोग्राफ़िक कुंजी बनाने का तरीका
  • Cloud KMS की सिमेट्रिक क्रिप्टोग्राफ़िक कुंजी को कैसे रोटेट करें

2. सेटअप और ज़रूरी शर्तें

अपने हिसाब से एनवायरमेंट सेट अप करना

  1. Cloud Console में साइन इन करें. इसके बाद, नया प्रोजेक्ट बनाएं या किसी मौजूदा प्रोजेक्ट का फिर से इस्तेमाल करें. (अगर आपके पास पहले से Gmail या G Suite खाता नहीं है, तो आपको एक खाता बनाना होगा.)

dMbN6g9RawQj_VXCSYpdYncY-DbaRzr2GbnwoV7jFf1u3avxJtmGPmKpMYgiaMH-qu80a_NJ9p2IIXFppYk8x3wyymZXavjglNLJJhuXieCem56H30hwXtd8PvXGpXJO9gEUDu3cZwci9Oe6PgnbNuSYlMyvbXF1JdQyiHoEgnhl4PlV_MFagm2ppzhueRkqX4eLjJllZco_2zCp0V0bpTupUSKji9KkQyWqj11pqit1K1faS1V6aFxLGQdkuzGp4rsQTan7F01iePL5DtqQ8-tA_Lheyo8SscAVKrGii2coplQp2_D1Iosb2ViABY0UUO1A8cimXUu6Wf1R9zJIRExL5OB2j946aIiFtyKTzxDcNnuznmR45vZ2HMoK3o67jxuoUJCAnqvEX6NgPGFjCVNgASc-lg

प्रोजेक्ट आईडी याद रखें. यह सभी Google Cloud प्रोजेक्ट के लिए एक यूनीक नाम होता है. ऊपर दिया गया नाम पहले ही इस्तेमाल किया जा चुका है. इसलिए, यह आपके लिए काम नहीं करेगा. माफ़ करें! इस कोडलैब में इसे बाद में PROJECT_ID के तौर पर दिखाया जाएगा.

  1. इसके बाद, Google Cloud संसाधनों का इस्तेमाल करने के लिए, आपको Cloud Console में बिलिंग चालू करनी होगी.

इस कोडलैब को पूरा करने में ज़्यादा खर्च नहीं आएगा. "सफ़ाई करना" सेक्शन में दिए गए निर्देशों का पालन करना न भूलें. इसमें आपको संसाधनों को बंद करने का तरीका बताया गया है, ताकि इस ट्यूटोरियल के बाद आपको बिलिंग न करनी पड़े. Google Cloud के नए उपयोगकर्ता, 300 डॉलर का क्रेडिट मुफ़्त में आज़माने के प्रोग्राम के लिए ज़रूरी शर्तें पूरी करते हैं.

Cloud Shell शुरू करें

इस कोडलैब में, आपको Cloud Shell का इस्तेमाल करना होगा. यह Google Cloud पर चलने वाला एक मुफ़्त वर्चुअलाइज्ड एनवायरमेंट है. GCP Console में, सबसे ऊपर दाईं ओर मौजूद टूलबार पर मौजूद Cloud Shell आइकॉन पर क्लिक करें:

vezHz_9nBUSt_0pD8eMHkzgHehRa83ILgMpcztEJtGZspECiZTk47O02PYk6Zp7jyStful3AIDEZU8qcCNbiXF4WcpkUdJi2LoUbxTWg4cZ4skDnvGKNywBZlDBzzWha111IZ1KqXQ

इसे चालू करने और एनवायरमेंट से कनेक्ट करने में सिर्फ़ कुछ सेकंड लगते हैं. यह प्रोसेस पूरी होने के बाद, आपको कुछ ऐसा दिखेगा:

wQQCzLZ7_omk2cuoBaKVPnniKDFG6MsP8h2OA0j3Iw9LRSFQ9TkD6Ccq4dcUASPoD5UKe1Ur7bIgYn5gAh2r6BlQDnpFmgyAtv9x2D6ppXS0pfjfxViuEfoetgLvgVeduekc2hgU2Q

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

3. Cloud KMS सेवा चालू करना

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

$ gcloud services enable cloudkms.googleapis.com \
    --project "${GOOGLE_CLOUD_PROJECT}"

इसे चालू होने में एक मिनट लग सकता है. यह निर्देश पूरा होने पर, आपको इसकी सूचना दी जाएगी.

4. KMS कुंजी बनाना

Cloud KMS की-रिंग बनाएं. Cloud KMS में, की-रिंग क्रिप्टोग्राफ़िक कुंजियों का लॉजिकल कलेक्शन होता है. की-रिंग में कुंजियों के बारे में मेटाडेटा होता है. जैसे, उनकी जगह की जानकारी. global क्षेत्र में my-keyring नाम की की-रिंग बनाएं:

$ gcloud kms keyrings create "my-keyring" \
    --location "global"

अब, आपने जो की-रिंग बनाई है उसमें my-symmetric-key नाम की क्रिप्टो कुंजी बनाएं. इसका मकसद encryption होना चाहिए.

$ gcloud kms keys create "my-symmetric-key" \
    --location "global" \
    --keyring "my-keyring" \
    --purpose "encryption"

5. डेटा एन्क्रिप्ट (सुरक्षित) करना

एन्क्रिप्ट करने के लिए डेटा वाली फ़ाइल बनाएं. इसके बाद, फ़ाइल में मौजूद डेटा को एन्क्रिप्ट करने के लिए, gcloud कमांड लाइन टूल का इस्तेमाल करें:

$ echo "my-contents" > ./data.txt
$ gcloud kms encrypt \
    --location "global" \
    --keyring "my-keyring" \
    --key "my-symmetric-key" \
    --plaintext-file ./data.txt \
    --ciphertext-file ./data.txt.enc

सुरक्षित किया गया डेटा (इसे "साइफ़रटेक्स्ट" भी कहा जाता है) को डिस्क पर data.txt.enc में सेव किया जाता है. data.txt.enc फ़ाइल खोलने पर, आपको पता चलेगा कि इसमें अजीब और प्रिंट न किए जा सकने वाले वर्ण हैं. ऐसा इसलिए है, क्योंकि नतीजे के तौर पर मिला डेटा बाइनरी फ़ॉर्मैट में होता है.

डेटाबेस में सिफ़रटेक्स्ट सेव करते समय या एचटीटीपी अनुरोध के हिस्से के तौर पर उसे ट्रांसमिट करते समय, आपको डेटा को कोड में बदलना पड़ सकता है. base64, कोड में बदलने का एक सामान्य तरीका है.

Cloud KMS, आपके दिए गए किसी भी प्लेनटेक्स्ट को स्टोर नहीं करता है. आपको इस सिफ़रटेक्स्ट को किसी सुरक्षित जगह पर सेव करना होगा, क्योंकि इसकी ज़रूरत प्लेनटेक्स्ट वैल्यू को वापस पाने के लिए होगी.

6. डेटा डिक्रिप्ट करना

gcloud कमांड-लाइन टूल का इस्तेमाल करके, फ़ाइल से साइफ़रटेक्स्ट को डिक्रिप्ट करें:

$ gcloud kms decrypt \
    --location "global" \
    --keyring "my-keyring" \
    --key "my-symmetric-key" \
    --plaintext-file - \
    --ciphertext-file ./data.txt.enc

gcloud कमांड लाइन टूल, फ़ाइल से सिफ़रटेक्स्ट को पढ़ता है और Cloud KMS का इस्तेमाल करके उसे डिक्रिप्ट करता है. ध्यान दें कि इस उदाहरण में, --plaintext-file आर्ग्युमेंट को - के तौर पर तय किया गया है. इससे gcloud को टर्मिनल पर नतीजा प्रिंट करने का निर्देश मिलता है.

कंसोल, my-contents प्रिंट करेगा. यह ऊपर दी गई फ़ाइल में मौजूद, सादे टेक्स्ट वाली वैल्यू के बराबर है.

7. कुंजियों को घुमाएं

Cloud KMS में, क्रिप्टोग्राफ़िक कुंजी असल में क्रिप्टोग्राफ़िक कुंजी के वर्शन का कलेक्शन होती है. की रोटेशन करने के लिए, नए क्रिप्टो कुंजी वर्शन बनाए जा सकते हैं. Cloud KMS, शेड्यूल के हिसाब से कुंजियों को अपने-आप रोटेट भी कर सकता है.

किसी कुंजी को मैन्युअल तरीके से रोटेट करने के लिए, नया क्रिप्टोग्राफ़िक कुंजी वर्शन बनाएं और उसे प्राइमरी वर्शन के तौर पर सेट करें:

$ gcloud kms keys versions create \
    --location "global" \
    --keyring "my-keyring" \
    --key "my-symmetric-key" \
    --primary

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

अगर आपको Cloud KMS का इस्तेमाल करके, पुराने Crypto Key Version से एन्क्रिप्ट (सुरक्षित) की गई सिफ़रटेक्स्ट वैल्यू को डिक्रिप्ट होने से रोकना है, तो उस Crypto Key Version को बंद करें या मिटाएं. बंद करने की सुविधा को फिर से चालू किया जा सकता है, जबकि मिटाने की सुविधा को पहले जैसा नहीं किया जा सकता. किसी वर्शन को बंद करने के लिए:

$ gcloud kms keys versions disable "1" \
    --location "global" \
    --keyring "my-keyring" \
    --key "my-symmetric-key"

8. बधाई हो!

आपने Cloud KMS API चालू किया, सिमेट्रिक एन्क्रिप्शन कुंजी बनाई, और डेटा को एन्क्रिप्ट और डिक्रिप्ट किया! Cloud KMS एक बेहतरीन प्रॉडक्ट है. एन्क्रिप्शन/डिक्रिप्शन तो इसकी क्षमताओं का सिर्फ़ एक हिस्सा है.

खाली करने के लिए जगह

अगर आपने एक्सप्लोर कर लिया है, तो कृपया अपना प्रोजेक्ट मिटा दें.

  • Cloud Platform Console पर जाएं
  • वह प्रोजेक्ट चुनें जिसे बंद करना है. इसके बाद, सबसे ऊपर मौजूद "मिटाएं" पर क्लिक करें. इससे प्रोजेक्ट को मिटाने के लिए शेड्यूल किया जाता है.

ज़्यादा जानें

लाइसेंस

इस काम के लिए, Creative Commons एट्रिब्यूशन 2.0 जेनेरिक लाइसेंस के तहत लाइसेंस मिला है.