1. بررسی اجمالی
Cloud KMS یک سرویس مدیریت کلید میزبانی شده در فضای ابری است که به شما امکان می دهد کلیدهای رمزنگاری را برای سرویس های ابری خود به همان روشی که در محل انجام می دهید مدیریت کنید. این شامل پشتیبانی از رمزگذاری، رمزگشایی، امضا و تأیید با استفاده از انواع و منابع کلیدی از جمله Cloud HSM برای کلیدهای سخت افزاری است. این آموزش به شما می آموزد که چگونه داده ها را با استفاده از کلیدهای متقارن Cloud KMS رمزگذاری و رمزگشایی کنید.
شما یاد خواهید گرفت
- نحوه فعال کردن Cloud KMS API
- نحوه ایجاد حلقه کلید Cloud KMS
- نحوه ایجاد یک Cloud KMS Crypto Key برای رمزگذاری/رمزگشایی متقارن
- نحوه چرخش یک کلید متقارن Cloud KMS Crypto
2. راه اندازی و الزامات
تنظیم محیط خود به خود
- به کنسول Cloud وارد شوید و یک پروژه جدید ایجاد کنید یا از یک موجود استفاده مجدد کنید. (اگر قبلاً یک حساب Gmail یا G Suite ندارید، باید یک حساب ایجاد کنید .)
شناسه پروژه را به خاطر بسپارید، یک نام منحصر به فرد در تمام پروژه های Google Cloud (نام بالا قبلاً گرفته شده است و برای شما کار نخواهد کرد، متأسفیم!). بعداً در این آزمایشگاه کد به عنوان PROJECT_ID
نامیده خواهد شد.
- در مرحله بعد، برای استفاده از منابع Google Cloud، باید صورتحساب را در Cloud Console فعال کنید .
اجرا کردن از طریق این کد لبه نباید هزینه زیادی داشته باشد، اگر اصلاً باشد. حتماً دستورالعملهای موجود در بخش «تمیز کردن» را دنبال کنید که به شما توصیه میکند چگونه منابع را خاموش کنید تا بیش از این آموزش متحمل صورتحساب نشوید. کاربران جدید Google Cloud واجد شرایط برنامه آزمایشی رایگان 300 دلاری هستند.
Cloud Shell را راه اندازی کنید
در این کد لبه از Cloud Shell استفاده خواهید کرد، یک محیط مجازی رایگان که در Google Cloud اجرا می شود. از کنسول GCP روی نماد Cloud Shell در نوار ابزار بالا سمت راست کلیک کنید:
تهیه و اتصال به محیط فقط چند لحظه طول می کشد. وقتی تمام شد، باید چیزی شبیه به این را ببینید:
این ماشین مجازی با تمام ابزارهای توسعه که شما نیاز دارید بارگذاری شده است. این یک فهرست اصلی 5 گیگابایتی دائمی را ارائه می دهد و در Google Cloud اجرا می شود و عملکرد و احراز هویت شبکه را بسیار افزایش می دهد. مگر اینکه دستور دیگری داده شود، تمام دستورات را از این پوسته اجرا کنید.
3. Cloud KMS Service را فعال کنید
قبل از اینکه بتوانید از Cloud KMS استفاده کنید، ابتدا باید سرویس را در پروژه خود فعال کنید. این کار فقط باید یک بار در هر پروژه انجام شود. برای فعال کردن سرویس Cloud KMS، دستور زیر را اجرا کنید:
$ gcloud services enable cloudkms.googleapis.com \ --project "${GOOGLE_CLOUD_PROJECT}"
فعال کردن آن ممکن است تا یک دقیقه طول بکشد. فرمان پس از پایان کار موفقیت را گزارش می کند.
4. کلید KMS ایجاد کنید
یک حلقه کلید Cloud KMS ایجاد کنید. در Cloud KMS، حلقه کلید مجموعه ای منطقی از کلیدهای رمزنگاری است. حلقه کلید حاوی ابرداده در مورد کلیدها مانند مکان آنها است. یک حلقه کلید به نام my-keyring
در منطقه global
ایجاد کنید:
$ gcloud kms keyrings create "my-keyring" \ --location "global"
اکنون یک کلید رمزنگاری به نام my-symmetric-key
با encryption
هدف در داخل حلقه کلیدی که ایجاد کرده اید ایجاد کنید.
$ gcloud kms keys create "my-symmetric-key" \ --location "global" \ --keyring "my-keyring" \ --purpose "encryption"
5. داده ها را رمزگذاری کنید
یک فایل با داده ها برای رمزگذاری ایجاد کنید و از ابزار خط فرمان gcloud
برای رمزگذاری داده های موجود در فایل استفاده کنید:
$ echo "my-contents" > ./data.txt
$ gcloud kms encrypt \ --location "global" \ --keyring "my-keyring" \ --key "my-symmetric-key" \ --plaintext-file ./data.txt \ --ciphertext-file ./data.txt.enc
داده های رمزگذاری شده (همچنین به عنوان "متن رمز" شناخته می شود) در data.txt.enc
روی دیسک ذخیره می شود. اگر فایل data.txt.enc
را باز کنید، متوجه خواهید شد که دارای کاراکترهای عجیب و غیرقابل چاپ است. دلیل آن این است که داده های حاصل در قالب باینری هستند.
هنگام ذخیره متن رمزنگاری شده در پایگاه داده یا انتقال آن به عنوان بخشی از درخواست HTTP، ممکن است لازم باشد داده ها را رمزگذاری کنید . یک مکانیسم رمزگذاری رایج base64 است.
Cloud KMS هیچ یک از متن ساده شما را ذخیره نمی کند. شما باید این متن رمزی را در مکانی امن ذخیره کنید زیرا برای بازیابی مقدار متن ساده لازم است.
6. رمزگشایی داده ها
رمزگشایی متن رمز شده از فایل با استفاده از ابزار خط فرمان gcloud
:
$ gcloud kms decrypt \ --location "global" \ --keyring "my-keyring" \ --key "my-symmetric-key" \ --plaintext-file - \ --ciphertext-file ./data.txt.enc
ابزار خط فرمان gcloud
متن رمز شده را از فایل می خواند و با استفاده از Cloud KMS رمزگشایی می کند. توجه کنید که این مثال آرگومان --plaintext-file
را به عنوان -
مشخص می کند. این به gcloud
دستور می دهد تا نتیجه را در ترمینال چاپ کند.
کنسول my-contents
را چاپ می کند که همان مقدار متن ساده فایل بالا است.
7. چرخش کلیدها
در Cloud KMS، یک Crypto Key در واقع مجموعهای از نسخههای Crypto Key است. برای انجام چرخش کلید ، می توانید نسخه های کلیدی رمزنگاری جدید ایجاد کنید. Cloud KMS همچنین می تواند به طور خودکار کلیدها را بر اساس یک برنامه بچرخاند .
برای چرخاندن یک کلید به صورت دستی، یک نسخه جدید Crypto Key ایجاد کنید و آن را به عنوان نسخه اصلی تنظیم کنید:
$ gcloud kms keys versions create \ --location "global" \ --keyring "my-keyring" \ --key "my-symmetric-key" \ --primary
تمام درخواستهای آینده برای رمزگذاری دادهها از این کلید جدید استفاده خواهند کرد. کلیدهای قدیمی هنوز برای رمزگشایی داده هایی که قبلاً با استفاده از آن کلیدها رمزگذاری شده بودند در دسترس هستند. Cloud KMS به طور خودکار کلید رمزگشایی مناسب را بر اساس متن رمزی ارائه شده تعیین می کند - لازم نیست مشخص کنید از کدام نسخه کلید رمزگذاری برای رمزگشایی استفاده کنید.
برای جلوگیری از رمزگشایی مقادیر متن رمزی که با استفاده از نسخه کلید رمزنگاری قدیمیتر با استفاده از Cloud KMS رمزگشایی شدهاند، میتوانید آن نسخه کلید رمزنگاری را غیرفعال یا از بین ببرید. غیرفعال کردن یک عملیات برگشت پذیر است در حالی که تخریب دائمی است. برای غیرفعال کردن یک نسخه:
$ gcloud kms keys versions disable "1" \ --location "global" \ --keyring "my-keyring" \ --key "my-symmetric-key"
8. تبریک!
شما Cloud KMS API را فعال کردید، یک کلید رمزگذاری متقارن ایجاد کردید و داده ها را رمزگذاری و رمزگشایی کردید! Cloud KMS یک محصول قدرتمند است و رمزگذاری/رمزگشایی فقط سطح قابلیت های آن را خنثی می کند.
پاک کن
اگر کاوش را تمام کرده اید، لطفاً پروژه خود را حذف کنید.
- به کنسول Cloud Platform بروید
- پروژه ای را که می خواهید تعطیل کنید انتخاب کنید، سپس روی "حذف" در بالا کلیک کنید. این برنامه پروژه را برای حذف برنامه ریزی می کند.
بیشتر بدانید
مجوز
این اثر تحت مجوز Creative Commons Attribution 2.0 Generic مجوز دارد.