بدء استخدام Cloud KMS

Cloud KMS هي خدمة إدارة مفاتيح مُستضافة على السحابة الإلكترونية تتيح لك إدارة مفاتيح التشفير لخدمات السحابة الإلكترونية بالطريقة نفسها التي تتّبعها في مقر المؤسسة. ويتضمّن ذلك دعمًا للتشفير وفك التشفير والتوقيع وإثبات الهوية باستخدام مجموعة متنوعة من أنواع المصادر والمصادر، بما في ذلك Cloud HSM للمفاتيح المستندة إلى الأجهزة.

ستتعلّم في هذا البرنامج التعليمي كيفية استخدام الميزات المتقدّمة من Cloud Identity وواجهات برمجة تطبيقات الخصوصية، بما في ذلك:

  • إعداد حزمة تخزين آمنة في السحابة الإلكترونية
  • إدارة المفاتيح والبيانات المشفّرة باستخدام Cloud KMS
  • عرض سجلات تدقيق Cloud Storage

وستأخذ بيانات موجزة من Enron Corpus، وتشفّرها، ثم تحمّلها إلى Cloud Storage.

ستتعلّم

  • كيفية تشفير البيانات وإدارة مفاتيح التشفير باستخدام خدمة إدارة المفاتيح (KMS)

ستستخدم

  • Cloud KMS
  • Cloud Storage
  • Cloud SDK

إعداد البيئة الذاتية

إذا لم يكن لديك حساب على Google (Gmail أو Google Apps)، يجب إنشاء حساب. تسجيل الدخول إلى وحدة تحكُّم Google Cloud Platform (console.cloud.google.com) وإنشاء مشروع جديد:

لقطة شاشة من 2016-02-10 الساعة 12:45:26.png

عذرًا! وسيُشار إليه لاحقًا في هذا الدرس التطبيقي بعنوان PROJECT_ID.

بعد ذلك، ستحتاج إلى تفعيل الفوترة في Cloud Console لاستخدام موارد Google Cloud.

من المفترض ألا يكلفك العمل على هذا الدرس التطبيقي أكثر من بضعة دولارات، ولكن قد يترتّب عليك أكثر إذا قررت استخدام المزيد من الموارد أو إذا تركتها قيد التشغيل (راجع قسم "عرض الأسعار التقديري" في نهاية هذا المستند).

يكون المستخدمون الجدد لخدمة Google Cloud Platform مؤهَّلين للاستفادة من فترة تجريبية مجانية تبلغ 300 دولار أمريكي.

بدء Cloud Shell

في هذا الدرس التطبيقي حول الترميز، ستستخدم Cloud Shell، وهو بيئة افتراضية مجانية يتم تشغيلها على Google Cloud. من وحدة تحكّم Google Cloud Platform، انقر على رمز Cloud Shell في شريط الأدوات العلوي الأيسر:

قد يستغرق الأمر بضع لحظات فقط لإدارة البيئة والاتصال بها. وعند انتهاء العملية، من المفترض أن تظهر لك العناصر التالية:

يتم تحميل هذه الآلة الافتراضية مزوّدة بكل أدوات التطوير التي ستحتاج إليها. وتوفِّر هذه الآلة دليلاً رئيسيًا دائمًا بسعة 5 غيغابايت ويتمّ تشغيله على Google Cloud، ما يحسّن كثيرًا أداء الشبكة والمصادقة. شغِّل جميع الأوامر من واجهة المستخدم هذه، ما لم تنص التعليمات على خلاف ذلك.

لتخزين بيانات هذا البرنامج التعليمي، أنشئ حزمة Cloud Storage. وبما أن أسماء حزمة Google Cloud يجب أن تكون فريدة من نوعها عالميًا، يمكنك وضع اسم الحزمة قبل معرِّف المشروع:

$ export BUCKET_NAME=${GOOGLE_CLOUD_PROJECT}_enron_emails

بعد ذلك، أنشِئ الحزمة:

$ gsutil mb gs://${BUCKET_NAME}

Enron Corpus هي قاعدة بيانات كبيرة تضم أكثر من 600000 رسالة إلكترونية ينشئها 158 موظفًا في Enron Corporation. تم نسخ هذه البيانات إلى حزمة Cloud Storage باسم gs://enron_emails/.

تنزيل أحد ملفات البريد الإلكتروني محليًا:

$ 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}"

يمكن أن يستغرق تفعيل هذه الميزة مدة تصل إلى دقيقة واحدة. وسيبلغ الأمر عن النجاح عند الانتهاء.

يمكنك إنشاء سلسلة مفاتيح لنظام التشغيل KMS Cloud. في Cloud KMS، تكون "سلسلة المفاتيح" عبارة عن مجموعة منطقية من مفاتيح التشفير. تحتوي سلسلة المفاتيح على بيانات وصفية حول المفاتيح، مثل موقعها الجغرافي. إنشاء "سلسلة مفاتيح" باسم my-keyring في المنطقة global:

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

يمكنك الآن إنشاء مفتاح تشفير باسم enron-emails ويكون الغرض encryption داخل سلسلة المفاتيح التي أنشأتها للتو.

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

افتح واجهة مستخدم مفاتيح التشفير على الإنترنت واطِّلع على الموارد التي تم إنشاؤها حديثًا. تتوفّر هذه الميزة في المشرف وإدارة الهوية وإمكانية الوصول في القائمة الرئيسية.

يمكنك عرض حلقات المفاتيح ومفاتيح التشفير وإدارتها في Cloud Console.

يمكنك تشفير محتوى الرسالة الإلكترونية التي نزّلناها سابقًا باستخدام Cloud KMS. يستخدم هذا البرنامج التعليمي أداة سطر الأوامر gcloud، ولكن يمكنك أيضًا ترميز البيانات باستخدام Cloud KMS API.

$ 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}

تم دمج خدمة KMS مع Cloud Identity وإدارة أذونات الوصول (IAM). تنقسم أدوار Cloud KMS IAM إلى حد كبير إلى فئتين:

  • إذن إدارة المفاتيح
  • إذن لاستخدام المفاتيح

على سبيل المثال، يسمح دور roles/cloudkms.admin للمالك بإنشاء حلقات المفاتيح ومفاتيح التشفير وإعداد سياسات إدارة الهوية وإمكانية الوصول وتنفيذ العمليات المتعلقة بالإدارة. تمنح roles/cloudkms.cryptoKeyEncrypterDecrypter حامل البيانات وفك التشفير، ولكنها لا تتضمن أذونات الإدارة.

يتم اكتساب أدوار إدارة الهوية وإمكانية الوصول (IAM) من المورد الرئيسي. إذا كان لدى أحد الأشخاص دور roles/cloudkms.admin في مشروع Google Cloud، يكون هو مشرف جميع المفاتيح في هذا المشروع. إذا كان لديهم roles/cloudkms.admin على سلسلة مفاتيح، يكون مشرفًا لجميع المفاتيح في سلسلة المفاتيح هذه. إذا كان لديهم roles/cloudkms.admin على مفتاح تشفير واحد، يكونون مشرفي هذا المفتاح فقط.

بالنسبة إلى هذا التمرين، استخدِم هويتك:

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

يمكنك تحديد الهوية لإدارة موارد Cloud KMS في Key Key التي تم إنشاؤها أعلاه باستخدام أداة سطر أوامر gcloud:

$ 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 KMS في Cloud Console.

بالإضافة إلى تشفير ملف واحد، يمكنك أيضًا تشفير مجموعة من الملفات باستخدام بعض النصوص البرمجية. يبث هذا المثال جميع الرسائل الإلكترونية لـ 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 Storage، ثم يتم تشفيرها باستخدام Cloud KMS، ثم تحميلها إلى Google Cloud Storage.

بعد اكتمال النص البرمجي، يمكنك عرض الملفات المشفّرة في واجهة مستخدم Cloud Storage. ينبغي أن تظهر لك على النحو التالي:

يشتمل تسجيل تدقيق السحابة الإلكترونية على مصدري بيانات السجلّ - سجلات نشاط المشرف وسجلات الوصول إلى البيانات - التي يتم إنشاؤها من خلال خدمات Google Cloud لمساعدتك في الإجابة عن سؤال &;مَن أجرى المهام وأين ومتى{7/} في مشاريع Google Cloud Platform.

لعرض النشاط لأي مورد في KMS، انقر على سلسلة المفاتيح واختَر عرض النشاط. سيتم نقلك إلى واجهة مستخدم Cloud Identity، حيث يمكنك الاطّلاع على الإنشاء وجميع التعديلات التي تم إجراؤها على KeyRing.

لقد تمكّنت من تشفير البيانات بنجاح باستخدام Cloud KMS وتخزين البيانات المشفّرة في Cloud Storage.

إزالة البرامج غير المرغوب فيها

إلغاء حجز الموارد التي تم إنشاؤها خلال هذا البرنامج التعليمي. حذف حزمة Cloud Storage التي تم إنشاؤها سابقًا:

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

لا يمكن حذف موارد Cloud KMS. ومع ذلك، يمكنك إتلاف المادة الأساسية حتى لا يمكن استخدامها مرة أخرى:

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

تناولنا

  • استخدام Cloud IAM لإدارة أذونات Cloud KMS
  • استخدام KMS على السحابة الإلكترونية لتشفير البيانات
  • استخدام Cloud Storage لتخزين البيانات المشفّرة
  • استخدام ميزة "التسجيل في التدقيق في السحابة الإلكترونية" لعرض جميع أنشطة المفاتيح وحلقات المفاتيح

الخطوات اللاحقة

  • استخدام Cloud KMS لتشفير عمود في قاعدة بيانات مثل BigQuery
  • ضبط جدول عرض الإعلانات بالتناوب التلقائي على مفاتيح Cloud KMS

مزيد من المعلومات

الترخيص

يخضع هذا العمل لترخيص بموجب رخصة المشاع الإبداعي مع نسب العمل إلى مؤلفه 2.0.