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

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

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

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

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

ستتعرّف على ما يلي:

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

ستستخدم

  • Cloud KMS
  • Cloud Storage
  • SDK للسحاب

إعداد البيئة بالسرعة التي تناسبك

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

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

تذكَّر معرّف المشروع، وهو اسم فريد في جميع مشاريع Google Cloud (الاسم أعلاه مستخدَم حاليًا ولن يكون متاحًا لك، نأسف لذلك). سيتم الإشارة إليه لاحقًا في هذا الدرس العملي باسم 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. بما أنّ أسماء حِزم Cloud Storage يجب أن تكون فريدة على مستوى العالم، أضِف معرّف مشروعك كبادئة لاسم الحزمة:

$ export BUCKET_NAME=${GOOGLE_CLOUD_PROJECT}_enron_emails

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

$ gsutil mb gs://${BUCKET_NAME}

مجموعة بيانات Enron هي قاعدة بيانات كبيرة تضمّ أكثر من 600,000 رسالة إلكترونية أنشأها 158 موظفًا في شركة Enron. تم نسخ هذه البيانات إلى حزمة 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}"

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

أنشئ سلسلة مفاتيح في Cloud KMS. في 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}

تتكامل خدمة Cloud KMS مع خدمة "إدارة الهوية وإمكانية الوصول" (IAM) في Google Cloud. تنقسم أدوار Cloud KMS IAM إلى فئتَين بشكل كبير:

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

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

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

في هذا التمرين، استخدِم هويتك:

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

امنح الهوية إذن إدارة موارد Cloud KMS في سلسلة المفاتيح التي تم إنشاؤها أعلاه باستخدام أداة سطر الأوامر 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 Crypto Key، اتّبِع الخطوات التالية:

$ 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. ينبغي أن تظهر لك على النحو التالي:

تتضمّن خدمة Cloud Audit Logging مصدرَين للسجلات، هما سجلّات نشاط المشرف وسجلّات الوصول إلى البيانات، وتنشئ خدمات Google Cloud هذين المصدرَين لمساعدتك في الإجابة عن السؤال "من نفّذ الإجراء وما هو الإجراء ومكانه وتاريخه؟" ضمن مشاريعك على Google Cloud Platform.

لعرض النشاط لأي مرجع في "خدمة إدارة المفاتيح" (KMS)، انقر على سلسلة المفاتيح واختَر عرض النشاط. سيتم نقلك إلى واجهة مستخدم "نشاط السحابة الإلكترونية"، حيث من المفترض أن يظهر لك إنشاء 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
  • استخدام Cloud KMS لتشفير البيانات
  • استخدام Cloud Storage لتخزين البيانات المشفَّرة
  • استخدام Cloud Audit Logging لعرض جميع الأنشطة المتعلقة بالمفاتيح وسلاسل المفاتيح

الخطوات التالية

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

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

الترخيص

يخضع هذا العمل لترخيص Creative Commons Attribution 2.0 Generic License.