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

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

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

You will learn

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

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

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

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

dMbN6g9RawQj_VXCSYpdYncY-DbaRzr2GbnwoV7jFf1u3avxJtmGPmKpMYgiaMH-qu80a_NJ9p2IIXFppYk8x3wyymZXavjglNLJJhuXieCem56H30hwXtd8PvXGpXJO9gEUDu3cZw

ci9Oe6PgnbNuSYlMyvbXF1JdQyiHoEgnhl4PlV_MFagm2ppzhueRkqX4eLjJllZco_2zCp0V0bpTupUSKji9KkQyWqj11pqit1K1faS1V6aFxLGQdkuzGp4rsQTan7F01iePL5DtqQ

8-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. केएमएस पासकोड बनाना

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

$ 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 जेनेरिक लाइसेंस के तहत लाइसेंस मिला है.