1. खास जानकारी
Cloud KMS, क्लाउड पर होस्ट की गई की मैनेजमेंट सेवा है. इसकी मदद से, अपनी क्लाउड सेवाओं के लिए क्रिप्टोग्राफ़िक कुंजियों को उसी तरह मैनेज किया जा सकता है जिस तरह ऑन-प्रिमाइसेस पर किया जाता है. इसमें एन्क्रिप्शन, डिक्रिप्शन, हस्ताक्षर करने, और पुष्टि करने की सुविधा शामिल है. इसके लिए, अलग-अलग तरह की कुंजियों और सोर्स का इस्तेमाल किया जाता है. जैसे, हार्डवेयर की मदद से सुरक्षित की गई कुंजियों के लिए Cloud HSM. इस ट्यूटोरियल में, Cloud KMS की एसिमेट्रिक कुंजियों का इस्तेमाल करके डेटा को एन्क्रिप्ट और डिक्रिप्ट करने का तरीका बताया गया है.
आपको यह जानकारी मिलेगी
- Cloud KMS API चालू करने का तरीका
- की-रिंग बनाने का तरीका
- एसिमेट्रिक एन्क्रिप्शन/डिक्रिप्शन के लिए क्रिप्टो कुंजी बनाने का तरीका
2. सेटअप और ज़रूरी शर्तें
अपने हिसाब से एनवायरमेंट सेट अप करना
- Cloud Console में साइन इन करें. इसके बाद, नया प्रोजेक्ट बनाएं या किसी मौजूदा प्रोजेक्ट का फिर से इस्तेमाल करें. (अगर आपके पास पहले से Gmail या G Suite खाता नहीं है, तो आपको एक खाता बनाना होगा.)
प्रोजेक्ट आईडी याद रखें. यह सभी Google Cloud प्रोजेक्ट के लिए एक यूनीक नाम होता है. ऊपर दिया गया नाम पहले ही इस्तेमाल किया जा चुका है. इसलिए, यह आपके लिए काम नहीं करेगा. माफ़ करें! इस कोडलैब में इसे बाद में PROJECT_ID के तौर पर दिखाया जाएगा.
- इसके बाद, Google Cloud संसाधनों का इस्तेमाल करने के लिए, आपको Cloud Console में बिलिंग चालू करनी होगी.
इस कोडलैब को पूरा करने में ज़्यादा खर्च नहीं आएगा. "सफ़ाई करना" सेक्शन में दिए गए निर्देशों का पालन करना न भूलें. इसमें आपको संसाधनों को बंद करने का तरीका बताया गया है, ताकि इस ट्यूटोरियल के बाद आपको बिलिंग न करनी पड़े. Google Cloud के नए उपयोगकर्ता, 300 डॉलर का क्रेडिट मुफ़्त में आज़माने के प्रोग्राम के लिए ज़रूरी शर्तें पूरी करते हैं.
Cloud Shell शुरू करें
इस कोडलैब में, आपको Cloud Shell का इस्तेमाल करना होगा. यह Google Cloud पर चलने वाला एक मुफ़्त वर्चुअलाइज्ड एनवायरमेंट है. GCP Console में, सबसे ऊपर दाईं ओर मौजूद टूलबार पर मौजूद Cloud Shell आइकॉन पर क्लिक करें:
इसे चालू करने और एनवायरमेंट से कनेक्ट करने में सिर्फ़ कुछ सेकंड लगते हैं. यह प्रोसेस पूरी होने के बाद, आपको कुछ ऐसा दिखेगा:
इस वर्चुअल मशीन में, डेवलपमेंट के लिए ज़रूरी सभी टूल पहले से मौजूद होते हैं. इसमें 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-asymmetric-encryption-key नाम की क्रिप्टो कुंजी बनाएं. इसका मकसद asymmetric-encryption होना चाहिए.
$ gcloud kms keys create "my-asymmetric-encryption-key" \
--location "global" \
--keyring "my-keyring" \
--purpose "asymmetric-encryption" \
--default-algorithm "rsa-decrypt-oaep-4096-sha512"
5. डेटा एन्क्रिप्ट (सुरक्षित) करना
एसिमेट्रिक कुंजियों के साथ, Cloud KMS एन्क्रिप्शन नहीं करता है. इसके बजाय, यह सार्वजनिक पासकोड का ऐक्सेस देता है. साथ ही, सार्वजनिक पासकोड क्रिप्टोग्राफ़ी का इस्तेमाल करके, उस सार्वजनिक पासकोड की मदद से डेटा को एन्क्रिप्ट (सुरक्षित) किया जाता है. एसिमेट्रिक कुंजियों की मदद से, एन्क्रिप्शन पूरी तरह से ऑफ़लाइन किया जा सकता है. इसके लिए, Cloud KMS या किसी अन्य Google Cloud API को ऐक्सेस करने की ज़रूरत नहीं होती. एन्क्रिप्शन, openssl जैसे क्रिप्टोग्राफ़िक टूल का इस्तेमाल करके किया जाता है. इसके अलावा, इसे किसी ऐसी प्रोग्रामिंग लैंग्वेज या लाइब्रेरी की मदद से भी किया जा सकता है जो सार्वजनिक पासकोड क्रिप्टोग्राफ़ी के साथ काम करती है.
Cloud KMS से सार्वजनिक कुंजी डाउनलोड करें:
$ gcloud kms keys versions get-public-key "1" \
--location "global" \
--keyring "my-keyring" \
--key "my-asymmetric-encryption-key" \
--output-file ./key.pub
एन्क्रिप्ट करने के लिए डेटा वाली फ़ाइल बनाएं. इसके बाद, फ़ाइल में मौजूद डेटा को एन्क्रिप्ट करने के लिए, openssl कमांड लाइन टूल का इस्तेमाल करें:
$ echo "my-contents" > ./data.txt
$ openssl pkeyutl -encrypt -pubin \
-in ./data.txt \
-inkey ./key.pub \
-pkeyopt "rsa_padding_mode:oaep" \
-pkeyopt "rsa_oaep_md:sha512" \
-pkeyopt "rsa_mgf1_md:sha512" > ./data.txt.enc
एन्क्रिप्ट (सुरक्षित) किए गए डेटा को डिस्क पर data.txt.enc में सेव किया जाएगा. इसे "साइफ़रटेक्स्ट" भी कहा जाता है. data.txt.enc फ़ाइल खोलने पर, आपको पता चलेगा कि इसमें अजीब और प्रिंट न किए जा सकने वाले वर्ण हैं. ऐसा इसलिए है, क्योंकि नतीजे के तौर पर मिला डेटा बाइनरी फ़ॉर्मैट में होता है.
डेटाबेस में सिफ़रटेक्स्ट सेव करते समय या एचटीटीपी अनुरोध के हिस्से के तौर पर उसे ट्रांसमिट करते समय, आपको डेटा को कोड में बदलना पड़ सकता है. साइफ़रटेक्स्ट को कोड में बदलने के लिए, Base64 का इस्तेमाल सबसे ज़्यादा किया जाता है.
Cloud KMS, आपके दिए गए किसी भी प्लेनटेक्स्ट को स्टोर नहीं करता है. आपको इस सिफ़रटेक्स्ट को किसी सुरक्षित जगह पर सेव करना होगा, क्योंकि इसकी ज़रूरत प्लेनटेक्स्ट वैल्यू को वापस पाने के लिए होगी.
6. डेटा डिक्रिप्ट करना
एन्क्रिप्शन के उलट, Cloud KMS की एसिमेट्रिक कुंजी का इस्तेमाल करके एन्क्रिप्ट किए गए डेटा को डिक्रिप्ट करने के लिए, Cloud KMS सेवा का ऑनलाइन ऐक्सेस होना ज़रूरी है. gcloud कमांड-लाइन टूल का इस्तेमाल करके, फ़ाइल से साइफ़रटेक्स्ट को डिक्रिप्ट करें:
$ gcloud kms asymmetric-decrypt \
--location "global" \
--keyring "my-keyring" \
--key "my-asymmetric-encryption-key" \
--version "1" \
--plaintext-file - \
--ciphertext-file ./data.txt.enc
gcloud कमांड लाइन टूल, फ़ाइल से सिफ़रटेक्स्ट को पढ़ता है और Cloud KMS का इस्तेमाल करके उसे डिक्रिप्ट करता है. ध्यान दें कि इस उदाहरण में, --plaintext-file आर्ग्युमेंट को - के तौर पर तय किया गया है. इससे gcloud को टर्मिनल पर नतीजा प्रिंट करने का निर्देश मिलता है.
कंसोल, my-contents प्रिंट करेगा. यह ऊपर दी गई फ़ाइल में मौजूद, सादे टेक्स्ट वाली वैल्यू के बराबर है.
7. बधाई हो!
आपने Cloud KMS API चालू कर दिया है. साथ ही, एसिमेट्रिक एन्क्रिप्शन कुंजी बना ली है. इसके अलावा, आपने डेटा को एन्क्रिप्ट और डिक्रिप्ट भी कर लिया है! Cloud KMS एक बेहतरीन प्रॉडक्ट है. एन्क्रिप्शन/डिक्रिप्शन तो इसकी क्षमताओं का सिर्फ़ एक हिस्सा है.
खाली करने के लिए जगह
अगर आपने एक्सप्लोर कर लिया है, तो कृपया अपना प्रोजेक्ट मिटा दें.
- Cloud Platform Console पर जाएं
- वह प्रोजेक्ट चुनें जिसे बंद करना है. इसके बाद, सबसे ऊपर मौजूद "मिटाएं" पर क्लिक करें. इससे प्रोजेक्ट को मिटाने के लिए शेड्यूल किया जाता है.
ज़्यादा जानें
लाइसेंस
इस काम के लिए, Creative Commons एट्रिब्यूशन 2.0 जेनेरिक लाइसेंस के तहत लाइसेंस मिला है.