Cloud KMS یک سرویس مدیریت کلید میزبانی شده در فضای ابری است که به شما امکان می دهد کلیدهای رمزنگاری را برای سرویس های ابری خود به همان روشی که در محل انجام می دهید مدیریت کنید. این شامل پشتیبانی از رمزگذاری، رمزگشایی، امضا و تأیید با استفاده از انواع کلیدها و منابع مختلف از جمله Cloud HSM برای کلیدهای سخت افزاری است.
در این آموزش، نحوه استفاده از ویژگی های پیشرفته Cloud Security و Privacy API ها از جمله:
- راه اندازی یک سطل ذخیره سازی ابری امن
- مدیریت کلیدها و داده های رمزگذاری شده با استفاده از Cloud KMS
- مشاهده گزارش های حسابرسی Cloud Storage
دادههای خلاصهشده را از Enron Corpus میگیرید، آنها را رمزگذاری میکنید و در Cloud Storage بارگذاری میکنید.
یاد خواهید گرفت
- نحوه رمزگذاری داده ها و مدیریت کلیدهای رمزگذاری با استفاده از سرویس مدیریت کلید (KMS)
استفاده خواهید کرد
- Cloud KMS
- فضای ذخیره ابری
- Cloud SDK
تنظیم محیط خود به خود
اگر قبلاً یک حساب Google (Gmail یا Google Apps) ندارید، باید یک حساب ایجاد کنید . به کنسول Google Cloud Platform ( consol.cloud.google.com ) وارد شوید و یک پروژه جدید ایجاد کنید:
شناسه پروژه را به خاطر بسپارید، یک نام منحصر به فرد در تمام پروژه های Google Cloud (نام بالا قبلاً گرفته شده است و برای شما کار نخواهد کرد، متأسفیم!). بعداً در این آزمایشگاه کد به عنوان PROJECT_ID
خواهد شد.
در مرحله بعد، برای استفاده از منابع Google Cloud، باید صورتحساب را در کنسول Cloud فعال کنید.
گذراندن این کد نباید بیش از چند دلار هزینه داشته باشد، اما اگر تصمیم به استفاده از منابع بیشتری داشته باشید یا اگر آنها را در حال اجرا رها کنید، ممکن است بیشتر باشد (به بخش "پاکسازی" در انتهای این سند مراجعه کنید).
کاربران جدید Google Cloud Platform واجد شرایط استفاده آزمایشی رایگان 300 دلاری هستند.
Cloud Shell را راه اندازی کنید
در این کد لبه از Cloud Shell ، یک محیط مجازی رایگان که در Google Cloud اجرا می شود، استفاده خواهید کرد. از کنسول GCP روی نماد Cloud Shell در نوار ابزار بالا سمت راست کلیک کنید:
تهیه و اتصال به محیط فقط چند لحظه طول می کشد. وقتی تمام شد، باید چیزی شبیه به این را ببینید:
این ماشین مجازی با تمام ابزارهای توسعه که شما نیاز دارید بارگذاری شده است. این یک فهرست اصلی 5 گیگابایتی دائمی را ارائه می دهد و در Google Cloud اجرا می شود و عملکرد و احراز هویت شبکه را بسیار افزایش می دهد. مگر اینکه دستور دیگری داده شده باشد، تمام دستورات را از این پوسته اجرا کنید.
برای ذخیره داده های این آموزش، یک سطل ذخیره سازی ابری ایجاد کنید. از آنجایی که نامهای سطل فضای ذخیرهسازی ابری باید در سطح جهانی منحصربهفرد باشند، پیشوند نام سطل را با شناسه پروژه خود وارد کنید:
$ export BUCKET_NAME=${GOOGLE_CLOUD_PROJECT}_enron_emails
سپس سطل را ایجاد کنید:
$ gsutil mb gs://${BUCKET_NAME}
Enron Corpus یک پایگاه داده بزرگ از بیش از 600000 ایمیل است که توسط 158 کارمند شرکت Enron ایجاد شده است. این داده ها در سطل فضای ذخیره سازی ابری به نام 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"
رابط کاربری وب کلیدهای رمزنگاری را باز کنید و منابع جدید ایجاد شده را مشاهده کنید. این در زیر IAM & Admin در منوی اصلی موجود است.
میتوانید حلقههای کلید و کلیدهای رمزنگاری را در 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 با Google Cloud Identity and Access Management (IAM) یکپارچه شده است. نقشهای Cloud KMS IAM تا حد زیادی به دو دسته تقسیم میشوند:
- اجازه مدیریت کلیدها
- اجازه استفاده از کلیدها
به عنوان مثال، roles/cloudkms.admin
به دارنده اجازه میدهد تا حلقههای کلید، کلیدهای رمزنگاری را ایجاد کند، سیاستهای IAM را تنظیم کند و عملیاتهای مرتبط با مدیریت را انجام دهد. 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 را در حلقه کلید ایجاد شده در بالا با استفاده از ابزار خط فرمان 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 enron-emails
Crypto Key.
همچنین می توانید نقش ها را در Cloud KMS UI در Cloud Console مشاهده و اختصاص دهید.
علاوه بر رمزگذاری یک فایل، می توانید مجموعه ای از فایل ها را با مقداری اسکریپت رمزگذاری کنید. این مثال همه ایمیلها را برای allen-p پخش میکند، آنها را رمزگذاری میکند و مقادیر رمزگذاریشده حاصل را در سطل ذخیرهسازی ابری آپلود میکند:
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 مشاهده کنید. شما باید چیزی شبیه به این را ببینید:
Cloud Audit Logging دارای دو جریان گزارش است – گزارشهای فعالیت مدیریت و گزارشهای دسترسی به داده – که توسط سرویسهای Google Cloud تولید میشوند تا به شما کمک کنند به این سؤال پاسخ دهید که "چه کسی چه کاری، کجا و چه زمانی انجام داد؟" در پروژه های Google Cloud Platform شما.
برای مشاهده فعالیت برای هر منبعی در KMS، روی حلقه کلید کلیک کنید و View Activity را انتخاب کنید. این شما را به رابط کاربری Cloud Activity می برد، جایی که باید ایجاد و تمام تغییرات انجام شده در KeyRing را ببینید.
شما با استفاده از Cloud KMS داده ها را با موفقیت رمزگذاری کرده اید و داده های رمزگذاری شده را در Cloud Storage ذخیره کرده اید.
پاک کردن
منابع ایجاد شده در طول این آموزش را آزاد کنید. سطل Cloud Storage که قبلا ایجاد شده را حذف کنید:
$ gsutil rm -r gs://${BUCKET_NAME}
منابع 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 خود تنظیم کنید
بیشتر بدانید
- درباره نحوه چرخاندن کلیدهای رمزگذاری بیشتر بدانید
- درباره رمزگذاری پاکت بخوانید
- درباره رمزگذاری سمت سرور برای سطلهای ذخیرهسازی ابری بخوانید
- در Stackoverflow زیر برچسب google-cloud-kms سؤالات ارسال کنید و پاسخها را بیابید
مجوز
این اثر تحت مجوز Creative Commons Attribution 2.0 Generic مجوز دارد.