۱. مقدمه
Cloud KMS Autokey با خودکارسازی تأمین و تخصیص، ایجاد و استفاده از کلیدهای رمزگذاری مدیریتشده توسط مشتری (CMEK) را ساده میکند. با Autokey، حلقههای کلید، کلیدها و حسابهای سرویس شما نیازی به برنامهریزی و تأمین قبل از نیاز ندارند. در عوض، Autokey کلیدهای شما را بر اساس تقاضا، همزمان با ایجاد منابع شما، با تکیه بر مجوزهای تفویضشده به جای مدیران Cloud KMS، تولید میکند.
استفاده از کلیدهای تولید شده توسط Autokey میتواند به شما کمک کند تا به طور مداوم با استانداردهای صنعتی و شیوههای توصیه شده برای امنیت دادهها، از جمله سطح حفاظت HSM، تفکیک وظایف، چرخش کلید، مکان و ویژگی کلید، هماهنگ شوید. Autokey کلیدهایی ایجاد میکند که هم از دستورالعملهای عمومی و هم از دستورالعملهای خاص نوع منبع برای سرویسهای Google Cloud که با Cloud KMS Autokey ادغام میشوند، پیروی میکنند. پس از ایجاد، کلیدهای درخواست شده با استفاده از Autokey دقیقاً مانند سایر کلیدهای Cloud HSM با همان تنظیمات عمل میکنند.
آنچه خواهید ساخت
در این آزمایشگاه کد، شما قصد دارید منابع محافظتشده را با استفاده از Cloud KMS Autokey با ایجاد موارد زیر راهاندازی کنید:
- یک منبع پوشه
- پروژهای که شامل کلیدهای شما خواهد بود
- یک نماینده خدمات به عنوان دستیار مدیریت کلید شما
- پروژهای که میزبان منابع محافظتشده شما خواهد بود
- مجموعه دادههای BigQuery، دیسکهای پایدار و مخازن ذخیرهسازی ابری رمزگذاری شده با Cloud KMS Autokey
آنچه نیاز دارید
- سازمان ابری گوگل
- برای تکمیل این آزمایشگاه، مدیر ارشد Google Cloud شما باید نقشهای زیر را در سطح سازمان داشته باشد:
- مدیریت کلید خودکار KMS ابری (roles/cloudkms.autokeyAdmin)
- پوشه IAM Admin (roles/resourcemanager.folderIamAdmin)
- کاربر حساب صورتحساب (roles/billing.user)
- پروژههای گوگل کلود با قابلیت پرداخت صورتحساب
- تجربه اولیه لینوکس
۲. یک پوشه ایجاد کنید
پوشهها گرههایی در سلسله مراتب منابع پلتفرم ابری هستند. یک پوشه میتواند شامل پروژهها، پوشههای دیگر یا ترکیبی از هر دو باشد. منابع سازمانی میتوانند از پوشهها برای گروهبندی پروژهها تحت گره منابع سازمانی در یک سلسله مراتب استفاده کنند. برای ایجاد یک پوشه:
- به صفحه مدیریت منابع در کنسول Google Cloud بروید
- مطمئن شوید که نام منبع سازمان شما در فهرست کشویی سازمان در بالای صفحه انتخاب شده است.
- روی ایجاد پوشه کلیک کنید

- پوشه استاندارد را انتخاب کنید

- در کادر Folder name، نام پوشه جدید خود را وارد کنید. برای این آزمایش، "Autokey-Folder" را در نظر بگیرید.
- در قسمت مقصد، روی مرور کلیک کنید، سپس منبع یا پوشه سازمانی را که میخواهید پوشه جدید خود را در آن ایجاد کنید، انتخاب کنید.
- روی ایجاد کلیک کنید.
۳. یک پروژه منابع ایجاد کنید
ایجاد یک پروژه منبع برای در بر گرفتن منابعی - مانند مجموعه دادههای BigQuery، دیسکهای پایدار و سطلهای ذخیرهسازی ابری - که میخواهید با Cloud KMS Autokey رمزگذاری کنید، مهم است. اگر سعی کنید منابعی را که توسط Autokey محافظت میشوند در پروژه کلید ایجاد کنید، Autokey درخواست کلید جدید را رد میکند. برای ایجاد پروژه منبع:
- به صفحه مدیریت منابع در کنسول Google Cloud بروید
- روی ایجاد پروژه کلیک کنید.

- در فهرست کشویی «انتخاب سازمان» در بالای صفحه، پوشهی «Autokey-Folder» را انتخاب کنید.
- در پنجره پروژه جدید که ظاهر میشود، نام پروژه را وارد کنید و در صورت لزوم، یک حساب صورتحساب انتخاب کنید. برای این آزمایش، «منابع رمزگذاری شده خودکار» را در نظر بگیرید.
- در کادر Location، پوشه "Autokey-Folder" را انتخاب کنید. این منبع، والد سلسله مراتبی پروژه جدید خواهد بود. تنظیمات شما باید مشابه این باشد:

- شناسه پروژه - در مثال بالا شناسه پروژه "causal-hour-43319-m4" است اما شناسه شما متفاوت خواهد بود - را در ویرایشگر متن مورد نظر خود کپی کنید.
- روی ایجاد کلیک کنید
- آیکون Cloud Shell را در گوشه سمت راست بالای صفحه انتخاب کنید.

- پس از فعال شدن Cloud Shell، با اجرای دستور زیر، شناسه پروژه Autokey خود را به عنوان یک متغیر ذخیره کنید:
export RESOURCE_PROJECT=<paste your Resource Project ID>
از آنجا که شناسه پروژه من "key-management-433319" است، دستور من به این شکل خواهد بود:
export AUTOKEY_PROJECT=causal-hour-43319-m4
- برای اجرای دستورات از پروژه کلیدی خود، دستور زیر را اجرا کنید:
gcloud config set project $RESOURCE_PROJECT
وقتی از شما خواسته شد، با کلیک روی «مجاز کردن» Cloud Shell را مجاز کنید.

- از آنجا که این پروژه شامل منابعی خواهد بود، باید APIهای مربوط به سرویسهایی که Autokey از آنها محافظت خواهد کرد را فعال کنیم. دستور زیر را اجرا کنید:
gcloud services enable storage.googleapis.com bigquery.googleapis.com compute.googleapis.com
۴. یک پروژه کلیدی ایجاد کنید
توصیه میکنیم پروژهای ایجاد کنید که شامل منابع Cloud KMS ایجاد شده توسط Autokey باشد. از این به بعد به آن "پروژه کلیدی" گفته میشود. پروژه کلیدی را میتوان در همان پوشهای که قصد دارید Autokey را فعال کنید، ایجاد کرد. نباید منابع دیگری را در داخل پروژه کلیدی ایجاد کنید. اگر سعی کنید منابع محافظت شده توسط Autokey را در پروژه کلیدی ایجاد کنید، Autokey درخواست کلید جدید را رد میکند. برای ایجاد پروژه کلیدی:
- به صفحه مدیریت منابع در کنسول Google Cloud بروید
- روی ایجاد پروژه کلیک کنید.

- در فهرست کشویی «انتخاب سازمان» در بالای صفحه، پوشهی «Autokey-Folder» را انتخاب کنید.
- در پنجرهی «پروژهی جدید» که ظاهر میشود، نام پروژه را وارد کنید و در صورت لزوم، یک حساب پرداخت انتخاب کنید. برای این آزمایش، «مدیریت کلید» را در نظر بگیرید.
- در کادر Location، پوشه "Autokey-Folder" را انتخاب کنید. این منبع، والد سلسله مراتبی پروژه جدید خواهد بود. تنظیمات شما باید مشابه این باشد:

- شناسه پروژه - در مثال بالا شناسه پروژه "key-management-433319" است اما شناسه شما متفاوت خواهد بود - را در ویرایشگر متن مورد نظر خود کپی کنید.
- روی ایجاد کلیک کنید.
۵. پروژه کلید Autokey را آماده کنید
حالا که هر پروژه ایجاد شده است، وقت آن رسیده که پروژه کلیدی را برای استفاده از Cloud KMS Autokey پیکربندی کنیم.
- آیکون Cloud Shell را در گوشه سمت راست بالای صفحه انتخاب کنید.

- پس از فعال شدن Cloud Shell، با اجرای دستور زیر، شناسه پروژه Autokey خود را به عنوان یک متغیر ذخیره کنید:
export AUTOKEY_PROJECT=<paste your Autokey Project ID>
از آنجا که شناسه پروژه من "key-management-433319" است، دستور من به این شکل خواهد بود:
export AUTOKEY_PROJECT=key-management-433319
- برای اجرای دستورات از پروژه کلیدی خود، دستور زیر را اجرا کنید:
gcloud config set project $AUTOKEY_PROJECT
وقتی از شما خواسته شد، با کلیک روی «مجاز کردن» Cloud Shell را مجاز کنید.

- با اجرای دستور زیر، Cloud KMS API را فعال کنید.
gcloud services enable cloudkms.googleapis.com kmsinventory.googleapis.com
- دستور زیر را اجرا کنید تا شماره پروژه شما به عنوان متغیری با نام AUTOKEY_PROJECT_NUMBER ذخیره شود.
export AUTOKEY_PROJECT_NUMBER=$(gcloud projects list \
--filter="$(gcloud config get-value project)" \
--format="value(PROJECT_NUMBER)")
- با اجرای دستور زیر، ایمیل مدیر اصلی خود را به عنوان یک متغیر ذخیره کنید:
export KEY_ADMIN_EMAIL=<paste your Principal's email>
- مجوزهای مدیریتی Cloud KMS را در پروژه کلیدی به کاربران مدیر Cloud KMS خود اعطا کنید.
gcloud projects add-iam-policy-binding $AUTOKEY_PROJECT_NUMBER \
--role=roles/cloudkms.admin \
--member=user:$KEY_ADMIN_EMAIL
۶. تنظیم نمایندگان سرویس Cloud KMS
عامل سرویس Cloud KMS برای یک پروژه کلیدی، کلیدها را ایجاد میکند و از طرف یک مدیر Cloud KMS انسانی، الزامات سیاست IAM را در طول ایجاد منابع اعمال میکند. برای ایجاد و اختصاص کلیدها، عامل سرویس Cloud KMS به مجوزهای مدیر Cloud KMS نیاز دارد.
- شناسه سازمان را با دستور زیر پیدا کنید:
gcloud organizations list | grep -P -i 'ID:' | grep -i '[0-9]'
- شناسه سازمان را کپی کنید - این نتیجه عددی است که با رنگ قرمز مشخص شده است
- شناسه سازمان را به عنوان متغیری با نام ORG_ID ذخیره کنید:
export ORG_ID=<paste your Organization ID>
- با اجرای دستور زیر، عامل سرویس Cloud KMS را ایجاد کنید:
gcloud beta services identity create --service=cloudkms.googleapis.com \
--project=$AUTOKEY_PROJECT_NUMBER
- اعطای نقش مدیر Cloud KMS به نماینده سرویس:
gcloud projects add-iam-policy-binding $AUTOKEY_PROJECT_NUMBER \
--role=roles/cloudkms.admin \
--member=serviceAccount:service-$AUTOKEY_PROJECT_NUMBER@gcp-sa-cloudkms.iam.gserviceaccount.com
- یک اتصال سیاست IAM اضافه کنید تا بتوانید میزان استفاده از کلید Cloud KMS خود را مشاهده کنید. میزان استفاده از کلید، اطلاعاتی را برای هر کلید، از جمله تعداد منابع محافظتشده، پروژهها و محصولات منحصر به فرد Google Cloud که از کلید استفاده میکنند، ارائه میدهد. این سطح از جزئیات برای هر کسی که نقش Cloud KMS Viewer را روی کلید داشته باشد، در دسترس است. دستور زیر را اجرا کنید:
gcloud organizations add-iam-policy-binding $ORGANIZATION_ID \
--member="serviceAccount:service-org-$ORGANIZATION_ID@gcp-sa-cloudkms.iam.gserviceaccount.com" \
--role='roles/cloudkms.orgServiceAgent'
- به حساب سرویس Cloud KMS خود، نقش Cloud KMS Organization Service Agent (cloudkms.orgServiceAgent) را در منابع سازمانی خود اعطا کنید.
gcloud organizations add-iam-policy-binding $ORG_ID \
--member="serviceAccount:service-org-$ORG_ID@gcp-sa-cloudkms.iam.gserviceaccount.com" \
--role='roles/cloudkms.orgServiceAgent'
- نقش Cloud KMS Protected Resources Viewer را در منابع سازمانی خود به هر کسی که نیاز به مشاهده جزئیات کلیدی استفاده دارد، اعطا کنید.
gcloud organizations add-iam-policy-binding $ORG_ID \
--member="user:$KEY_ADMIN_EMAIL" \
--role='roles/cloudkms.protectedResourcesViewer'
۷. اعطای نقشهای کاربری به Autokey
قبل از اینکه توسعهدهندگان شما بتوانند از Autokey استفاده کنند، باید نقش مورد نیاز را به آنها اعطا کنید. میتوانید این نقش را در سطح پوشه یا در سطح پروژه اعطا کنید. این نقش به توسعهدهندگان اجازه میدهد تا هنگام ایجاد منابع در آن پوشه یا پروژه، از عامل سرویس Cloud KMS درخواست کلید کنند.
اولین قدم برای اعطای نقش، ذخیره شناسه پوشه (Folder ID) است.
- با دستور زیر شناسه پوشه را پیدا کنید:
gcloud projects describe $AUTOKEY_PROJECT | grep 'id' | grep -P -i '[0-9]+'
- شناسه پوشه را کپی کنید - این بخشی است که با رنگ قرمز مشخص شده است
- شناسه پوشه را به عنوان متغیری با نام FOLDER_ID ذخیره کنید.
export FOLDER_ID=<paste the folder ID>
برای اهداف این آزمایش، مدیر کلید را به عنوان کاربر Autokey تعریف خواهیم کرد. با این حال، در موارد استفاده در محیط عملیاتی و در سازمانهایی که بیش از یک نفر دارند، مدیر کلید باید با توسعهدهندهای که از Autokey استفاده میکند متفاوت باشد.
- نقش roles/cloudkms.autokeyUser را در سطح پوشه اعطا کنید:
gcloud resource-manager folders add-iam-policy-binding \
$FOLDER_ID --role=roles/cloudkms.autokeyUser \
--member=user:$KEY_ADMIN_EMAIL
۸. فعال کردن Cloud KMS Autokey روی یک پوشه منبع
در این مرحله، شما Cloud KMS Autokey را روی یک پوشه منبع فعال میکنید و پروژه Cloud KMS که شامل منابع Autokey برای آن پوشه خواهد بود را شناسایی میکنید. فعال کردن Autokey روی این پوشه، Autokey را برای همه پروژههای منبع درون پوشه فعال میکند.
- در کنسول گوگل کلود، به صفحه کنترلهای KMS بروید.
- روی انتخاب پوشه کلیک کنید

- از کادر انتخاب، پوشهای را که میخواهید Autokey را در آن فعال کنید، انتخاب کنید. این همان پوشهای است که قبلاً ایجاد کردهاید و شامل پروژه منابع و پروژه مدیریت کلید شما میشود. باید چیزی شبیه به این باشد:

- روی فعال کردن کلیک کنید.
- برای انتخاب پروژه کلیدی، روی مرور کلیک کنید
- پروژه مدیریت کلید خود را انتخاب کنید و سپس روی ارسال کلیک کنید.

پیامی مبنی بر فعال بودن Cloud KMS Autokey در پوشه نمایش داده میشود. صفحه KMS Controls باید به شکل زیر باشد:

۹. ایجاد منابع محافظتشده با استفاده از Cloud KMS Autokey
دیسکهای پایدار موتور محاسباتی
Autokey برای هر دیسک، ایمیج و ایمیج ماشین، در همان مکانی که منبع در حال ایجاد است، یک کلید جدید ایجاد میکند.
برای ایجاد دیسک، مراحل زیر را انجام دهید:
- در کنسول گوگل کلود، به صفحه دیسکها بروید.
- روی ایجاد دیسک کلیک کنید و مشخصات دیسک جدید را وارد کنید.
- در قسمت رمزگذاری، کلید Cloud KMS را انتخاب کنید.

- برای نوع کلید، Cloud KMS with Autokey را انتخاب کنید و سپس روی درخواست کلید جدید کلیک کنید. پیامی نشان میدهد که کلید شما با موفقیت ایجاد شده و آماده استفاده است.

- برای تکمیل ایجاد دیسک، روی «ایجاد» کلیک کنید.
شما میتوانید فرآیند مشابهی را برای ایجاد نمونه ماشین مجازی، تصویر و منابع تصویر ماشین محافظتشده دنبال کنید.
سطلهای ذخیرهسازی ابری گوگل
Autokey یک کلید جدید در همان محل bucket ایجاد میکند. کلید ایجاد شده توسط Autokey به عنوان کلید پیشفرض bucket تعیین میشود.
Autokey برای اشیاء کلید ایجاد نمیکند. به طور پیشفرض، اشیاء ایجاد شده در یک سطل از کلید پیشفرض سطل استفاده میکنند. اگر میخواهید یک شیء را با استفاده از کلیدی غیر از کلید پیشفرض سطل رمزگذاری کنید، میتوانید به صورت دستی یک CMEK ایجاد کنید و هنگام ایجاد شیء از آن کلید استفاده کنید.
- در کنسول گوگل کلود، به صفحه ایجاد یک سطل (Create a bucket) بروید.
- یک نام جهانی منحصر به فرد و دائمی انتخاب کنید.
- یک مکان داده انتخاب کنید.
- به بخش «انتخاب نحوه محافظت از دادههای شیء» بروید

- برای باز کردن بخش، روی «انتخاب نحوه محافظت از دادههای شیء» کلیک کنید.

- بخش رمزگذاری دادهها را گسترش دهید و کلید Cloud KMS را انتخاب کنید.

- برای نوع کلید، Cloud KMS with Autokey را انتخاب کنید و سپس روی درخواست کلید جدید کلیک کنید. پیامی نشان میدهد که کلید شما با موفقیت ایجاد شده و آماده استفاده است.

- برای تکمیل ایجاد سطل، روی ایجاد کلیک کنید. اگر با کادر محاورهای مبنی بر «دسترسی عمومی مسدود خواهد شد» مواجه شدید، روی تأیید کلیک کنید.
مجموعه داده BigQuery
برای هر مجموعه داده جدید، Autokey یک کلید جدید، در همان محل خود منبع، ایجاد میکند که به کلید پیشفرض مجموعه داده تبدیل میشود. Autokey برای جداول، پرسوجوها، جداول موقت یا مدلها کلید ایجاد نمیکند. بهطور پیشفرض، این منابع توسط کلید پیشفرض مجموعه داده محافظت میشوند. اگر میخواهید از یک منبع در یک مجموعه داده با استفاده از کلیدی غیر از کلید پیشفرض مجموعه داده محافظت کنید، میتوانید بهصورت دستی یک CMEK ایجاد کنید و هنگام ایجاد منبع از آن کلید استفاده کنید.
برای ایجاد یک مجموعه داده BigQuery، ابتدا باید نقش کاربری BigQuery را داشته باشید.
- بازگشت به پوسته ابری
- Cloud Shell خود را طوری تنظیم کنید که دستورات را از پروژه منبع اجرا کند
gcloud config set project $RESOURCE_PROJECT
- دستور زیر را اجرا کنید تا شماره پروژه شما به عنوان متغیری با نام RESOURCE_PROJECT_NUMBER ذخیره شود.
export RESOURCE_PROJECT_NUMBER=$(gcloud projects list --filter="$(gcloud config get-value project)" --format="value(PROJECT_NUMBER)")
- به خودتان نقش کاربری BigQuery بدهید
gcloud projects add-iam-policy-binding $RESOURCE_PROJECT_NUMBER \
--role=roles/bigquery.user \
--member=user:$KEY_ADMIN_EMAIL
حالا که نقش کاربری BigQuery را دارید، میتوانید یک مجموعه داده ایجاد کنید و با Autokey از آن محافظت کنید!
- در کنسول گوگل کلود، به صفحه BigQuery بروید.
- دستورالعملهای ایجاد مجموعه داده را دنبال کنید تا به گزینههای پیشرفته > رمزگذاری برسید.
- در قسمت رمزگذاری، کلید Cloud KMS را انتخاب کنید.
- برای نوع کلید، Cloud KMS with Autokey را انتخاب کنید و سپس روی درخواست کلید جدید کلیک کنید. پیامی نشان میدهد که کلید شما با موفقیت ایجاد شده و آماده استفاده است.
- برای تکمیل ایجاد مجموعه داده، روی ایجاد مجموعه داده کلیک کنید.
۱۰. کلیدهایتان را کشف کنید
در این مرحله، با مراجعه به صفحه موجودی کلید، کلیدهای Cloud KMS Autokey ایجاد شده از طرف خود را بررسی خواهید کرد. صفحه موجودی کلید اطلاعات جامعی در مورد کلیدهای رمزنگاری در پروژه شما ارائه میدهد. توجه داشته باشید که دادهها ممکن است با تأخیر ارائه شوند. به عنوان مثال، اگر یک منبع محافظتشده جدید ایجاد کنید، منبع محافظتشده و نسخه کلید مرتبط بلافاصله به برگه ردیابی استفاده اضافه نمیشوند. محدودیتهای بیشتر را اینجا ببینید.
- در کنسول گوگل کلود، به صفحه موجودی کلید (Key Inventory) بروید.
- اختیاری: برای فیلتر کردن لیست کلیدها، عبارات جستجوی خود را در کادر فیلتر filter_list وارد کنید و سپس enter را فشار دهید. به عنوان مثال، میتوانید بر اساس مکان، حلقه کلید، وضعیت یا سایر ویژگیهای کلیدها فیلتر کنید.
- روی نام کلیدی که میخواهید اطلاعات استفاده از آن را مشاهده کنید، کلیک کنید.
- روی «نمای کلی» کلیک کنید. توجه داشته باشید که برای هر منبع ایجاد شده یک کلید دارید. نام هر کلید شامل نام منبعی است که کلید از آن محافظت میکند (مثلاً «compute-disk» یا «storage-bucket»). Cloud KMS Autokey تضمین میکند که هر کلید ۳۶۵ روز پس از ایجاد برای چرخش برنامهریزی شده و به هر کلید سطح حفاظت «HSM» اختصاص داده شده است.

- روی برگه «ردیابی استفاده» کلیک کنید. به سطح اطلاعات ارائه شده توجه کنید: هر منبعی که کلید رمزگذاری میکند، در اینجا، در کنار پروژه، مکان و تاریخ ایجاد، نشان داده شده است.
- اختیاری: برای فیلتر کردن لیست منابع محافظتشده، عبارت جستجوی خود را در کادر فیلتر filter_list وارد کنید و سپس Enter را فشار دهید.

۱۱. تبریک
تبریک میگوییم، شما با موفقیت منابع Google Cloud را ایجاد کردید و آنها را به صورت خودکار با Cloud KMS Autokey رمزگذاری کردید!
اکنون مراحل کلیدی مورد نیاز برای راهاندازی Autokey و استفاده از آن برای رمزگذاری خودکار منابع خود با کلیدهای Cloud KMS را میدانید.
۱۲. قدم بعدی چیست؟
دادهها را در منابع رمزگذاریشده با Autokey خود بارگذاری کنید
- یک نمونه از موتور محاسباتی گوگل (GCE) ایجاد کنید
- دیسک پایدار محافظتشده با Autokey خود را به نمونه GCE خود متصل کنید
- دادهها را در مجموعه داده BigQuery خود بارگذاری کنید
- اشیاء را در یک سطل ذخیرهسازی ابری گوگل آپلود کنید
- بارگذاری دادههای فضای ذخیرهسازی ابری گوگل در BigQuery