Cloud KMS के साथ शुरू करें

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

इस ट्यूटोरियल में, आप क्लाउड की सुरक्षा और निजता एपीआई की बेहतर सुविधाओं को इस्तेमाल करने का तरीका जानेंगे. इनमें ये शामिल हैं:

  • सुरक्षित Cloud Storage बकेट सेट अप करना
  • क्लाउड KMS का इस्तेमाल करके कुंजियों और एन्क्रिप्ट (सुरक्षित) किए गए डेटा को मैनेज करना
  • Cloud Storage के ऑडिट लॉग देखना

आप Enron Corpus से संक्षिप्त डेटा लेंगे, उसे एन्क्रिप्ट करें, और उसे Cloud Storage में लोड करेंगे.

आप जानेंगे

  • क्रिप्टोग्राफ़िक की मैनेजमेंट सेवा (केएमएस) का इस्तेमाल करके, डेटा को एन्क्रिप्ट (सुरक्षित) करने और एन्क्रिप्ट (सुरक्षित) करने की कुंजियों को मैनेज करने का तरीका

आप यह इस्तेमाल करेंगे

  • क्लाउड केएमएस (KMS)
  • Cloud Storage
  • Cloud SDK

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

अगर आपके पास पहले से कोई Google खाता (Gmail या Google Apps) नहीं है, तो आपको एक खाता बनाना होगा. Google Cloud Platform Console (console.cloud.google.com) में साइन इन करें और एक नया प्रोजेक्ट बनाएं:

10-02-2016 का स्क्रीनशॉट 12:45:26.png

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

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

इस कोडलैब के जवाब में कुछ डॉलर से ज़्यादा खर्च नहीं करना चाहिए. हालांकि, अगर आप संसाधनों का इस्तेमाल करना जारी रखते हैं या उन्हें चलाना बंद कर देते हैं, तो यह ज़्यादा भी हो सकता है.

Google Cloud Platform के नए उपयोगकर्ता, 300 डॉलर का मुफ़्त ट्रायल पा सकते हैं.

Cloud Shell शुरू करना

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

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

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

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

$ export BUCKET_NAME=${GOOGLE_CLOUD_PROJECT}_enron_emails

इसके बाद, बकेट बनाएं:

$ gsutil mb gs://${BUCKET_NAME}

Enron Corpus, 6,00,000 से ज़्यादा ईमेल का एक बड़ा डेटाबेस है. इसे Enron Corporation के 158 कर्मचारियों ने जनरेट किया है. यह डेटा gs://enron_emails/ नाम वाले Cloud Storage बकेट में कॉपी कर लिया गया है.

किसी एक ईमेल फ़ाइल को स्थानीय रूप से डाउनलोड करें:

$ gsutil cp gs://enron_emails/allen-p/inbox/1. . # <-- don't forget the dot!

डाउनलोड की गई फ़ाइल की जांच करके पुष्टि करें कि यह असल में ईमेल है:

$ tail 1.

ईमेल में यह मैसेज होगा:

Attached is the Delta position for 1/18...
# ...

बकेट में ईमेल के अलावा, इमेज भी होती हैं. इस ट्यूटोरियल में सादे टेक्स्ट वाले ईमेल और इमेज, दोनों का इस्तेमाल होता है.

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

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

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

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

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

अब आपने अभी-अभी जो 'की रिंग' बनाई है, उसके तहत encryption नाम के क्रिप्टोग्राफ़िक बटन बनाएं.

$ gcloud kms keys create "enron-emails" \
    --location "global" \
    --keyring "my-keyring" \
    --purpose "encryption"

Cryptographic Key Web UI खोलें और नए बनाए गए संसाधनों को देखें. यह मुख्य मेन्यू में IAM और एएमपी एडमिन के तहत उपलब्ध है.

आप Cloud Console में की-रिंग और क्रिप्टो बटन देख और मैनेज कर सकते हैं.

क्लाउड KMS का इस्तेमाल करके, पहले डाउनलोड किए गए ईमेल के कॉन्टेंट को एन्क्रिप्ट (सुरक्षित) करें. यह ट्यूटोरियल gcloud कमांड लाइन टूल का इस्तेमाल करता है, लेकिन क्लाउड केएमएस एपीआई का इस्तेमाल करके, डेटा को एन्क्रिप्ट भी किया जा सकता है.

$ gcloud kms encrypt \
    --location "global" \
    --keyring "my-keyring" \
    --key "enron-emails" \
    --plaintext-file ./1. \
    --ciphertext-file ./1.enc

इससे, डिस्क 1.enc पर एक नई फ़ाइल बन जाएगी, जिसमें एन्क्रिप्ट (सुरक्षित) की गई फ़ाइल का कॉन्टेंट शामिल है. अब डेटा को Cloud KMS से एन्क्रिप्ट (सुरक्षित) किया गया है. इसलिए, एन्क्रिप्ट (सुरक्षित) की गई फ़ाइल को Cloud Storage बकेट में अपलोड करें.

$ gsutil cp ./1.enc gs://${BUCKET_NAME}

Cloud KMS, Google Cloud Identity और ऐक्सेस मैनेजमेंट (IAM) के साथ जुड़ा हुआ है. Cloud KMS IAM भूमिकाओं को ज़्यादातर दो कैटगरी में बांटा जाता है:

  • कुंजियों को मैनेज करने की अनुमति
  • कुंजियों के इस्तेमाल की अनुमति

उदाहरण के लिए, roles/cloudkms.admin की भूमिका वाली इकाई, कुंजी की अंगूठियां, क्रिप्टो कुंजी बना सकती है, आईएएम नीतियां सेट कर सकती है, और मैनेजमेंट से जुड़े काम कर सकती है. roles/cloudkms.cryptoKeyEncrypterDecrypter, होल्डर को एन्क्रिप्ट (सुरक्षित) करने और डेटा को सबकी पहुंच में लाने की अनुमति देता है. हालांकि, इसमें मैनेजमेंट की अनुमतियां शामिल नहीं होती हैं.

आईएएम की भूमिकाएं उनके पैरंट संसाधन से मिलती हैं. अगर Google Cloud प्रोजेक्ट में किसी के पास roles/cloudkms.admin की भूमिका है, तो वह उस प्रोजेक्ट की सभी कुंजियों का एडमिन होगा. अगर उनके पास कुंजी की घंटी पर roles/cloudkms.admin है, तो वे उस कुंजी की घंटी की सभी कुंजियों का एडमिन हैं. अगर किसी एक क्रिप्टो कुंजी पर roles/cloudkms.admin है, तो वह सिर्फ़ उस कुंजी का एडमिन होगा.

इस व्यायाम के लिए, अपनी पहचान का इस्तेमाल करें:

$ export MY_IDENTITY=you@gmail.com # or you@example.com

gcloud कमांड लाइन टूल का इस्तेमाल करके, ऊपर बनाए गए बटन के रिंग में Cloud KMS संसाधनों को प्रबंधित करने की पहचान असाइन करें:

$ gcloud kms keyrings add-iam-policy-binding "my-keyring" \
    --location "global" \
    --member "user:${MY_IDENTITY}" \
    --role "roles/cloudkms.admin"

roles/cloudkms.admin की भूमिका में, बटन को इस्तेमाल करने की अनुमति शामिल नहीं है, बल्कि उन्हें मैनेज करने की अनुमति है. enron-emails की क्रिप्टो कुंजी का इस्तेमाल करके अपनी पहचान को एन्क्रिप्ट (सुरक्षित) करने और सबकी पहुंच में लाने की क्षमता देने के लिए:

$ gcloud kms keys add-iam-policy-binding "enron-emails" \
    --location "global" \
    --keyring "my-keyring" \
    --member "user:${MY_IDENTITY}" \
    --role "roles/cloudkms.cryptoKeyEncrypterDecrypter"

ध्यान दें कि पहले निर्देश में, कुंजी की घंटी पर roles/cloudkms.admin का ऐक्सेस होता है. इसमें, बच्चे के लिए क्रिप्टो कुंजी के संसाधन भी शामिल होंगे. दूसरा निर्देश roles/cloudkms.cryptoKeyEncrypterDecrypter देता है, लेकिन सिर्फ़ enron-emails क्रिप्टो कुंजी पर.

आप Cloud Console के Cloud KMS यूज़र इंटरफ़ेस (यूआई) में भी भूमिकाएं देख और असाइन कर सकते हैं.

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

DIR="gs://enron_emails/allen-p"
for file in $(gsutil ls ${DIR}/**); do
  ENC_NAME="$(basename ${file}).enc"
  gsutil cat ${file} \
  | \

  gcloud kms encrypt \
    --location "global" \
    --keyring "my-keyring" \
    --key "enron-emails" \
    --plaintext-file - \
    --ciphertext-file - \
    | \

    gsutil -q cp - gs://${BUCKET_NAME}/${ENC_NAME}
    echo "Copied ${ENC_NAME}"
done

यह नमूना क्लाउड स्टोरेज बकेट में दी गई डायरेक्ट्री में सभी फ़ाइलों पर इटरेट होता है, Cloud KMS का इस्तेमाल करके उन्हें एन्क्रिप्ट करता है, और उन्हें आपके Google Cloud Storage पर अपलोड करता है.

स्क्रिप्ट पूरी हो जाने के बाद, आप Cloud Storage यूज़र इंटरफ़ेस (यूआई) में एन्क्रिप्ट (सुरक्षित) की गई फ़ाइलें देख सकते हैं. आपको कुछ ऐसा दिखेगा:

क्लाउड ऑडिट लॉग में दो लॉग स्ट्रीम होती हैं – एडमिन गतिविधि लॉग और डेटा ऐक्सेस लॉग – जो Google Cloud सेवाओं के ज़रिए जनरेट किए जाते हैं. इससे आपको अपने Google Cloud Platform प्रोजेक्ट में &"कौन, क्या, कहां, और कब बॉटकोट; के सवाल का जवाब मिलता है.

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

आपने Cloud KMS का इस्तेमाल करके डेटा को सुरक्षित कर लिया है और Cloud Storage में एन्क्रिप्ट (सुरक्षित) किया गया डेटा सेव कर लिया है.

क्लीनअप

इस ट्यूटोरियल के दौरान बनाए गए संसाधनों को रिलीज़ करें. वह क्लाउड स्टोरेज बकेट मिटाएं जिसे पहले बनाया गया था:

$ gsutil rm -r gs://${BUCKET_NAME}

क्लाउड KMS संसाधनों को हटाया नहीं जा सकता. हालांकि, आप मुख्य कॉन्टेंट को बंद कर सकते हैं, ताकि उसे दोबारा इस्तेमाल न किया जा सके:

$ gcloud kms keys versions destroy "1" \
    --location "global" \
    --key "enron-emails" \
    --keyring "my-keyring"

हमने दी है

  • Cloud KMS अनुमतियों को प्रबंधित करने के लिए Cloud IAM का इस्तेमाल करना
  • डेटा को एन्क्रिप्ट (सुरक्षित) करने के लिए, Cloud KMS का इस्तेमाल करना
  • एन्क्रिप्ट (सुरक्षित) किए गए डेटा को सेव करने के लिए, Cloud Storage का इस्तेमाल करना
  • कुंजियों और बटन की घंटी बजने की सभी गतिविधियां देखने के लिए, Cloud Audit Loging का इस्तेमाल करना

अगले चरण

  • BigQuery जैसे डेटाबेस में कॉलम को एन्क्रिप्ट (सुरक्षित) करने के लिए, Cloud KMS का इस्तेमाल करें
  • अपनी क्लाउड KMS कुंजियों पर ऑटोमैटिक रोटेशन शेड्यूल सेट करें

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

लाइसेंस

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